
hulk inclusion category: cleanup bugzilla: https://gitee.com/openeuler/kernel/issues/IBWQ24 -------------------------------- To backport CCA guest feature and reduce conflicts, revert virtcca commit. And there is a compile error, when CONFIG_HISI_VIRTCCA_GUEST=n, enable_swiotlb_for_cvm_dev is defined in include/linux/virtcca_cvm_domain.h but not use static inline. To avoid compile error: redefinition, don't revert "static inline" before enable_swiotlb_for_cvm_dev under CONFIG_HISI_VIRTCCA_GUEST=n. This reverts commit 77313e84cc513055342c5e92ac8854e78bc15276. Signed-off-by: Cai Xinchen <caixinchen1@huawei.com> --- arch/arm64/kernel/virtcca_cvm_guest.c | 28 --------------------------- drivers/base/core.c | 2 -- drivers/irqchip/irq-gic-v3-its.c | 2 -- drivers/virtio/virtio_mmio.c | 3 +-- drivers/virtio/virtio_pci_common.c | 2 -- drivers/virtio/virtio_pci_common.h | 1 - include/linux/virtcca_cvm_domain.h | 2 +- 7 files changed, 2 insertions(+), 38 deletions(-) diff --git a/arch/arm64/kernel/virtcca_cvm_guest.c b/arch/arm64/kernel/virtcca_cvm_guest.c index e5368d3e1bfe..2d4a26a297b6 100644 --- a/arch/arm64/kernel/virtcca_cvm_guest.c +++ b/arch/arm64/kernel/virtcca_cvm_guest.c @@ -7,7 +7,6 @@ #include <linux/module.h> #include <linux/sched.h> #include <linux/vmalloc.h> -#include <linux/swiotlb.h> #include <asm/cacheflush.h> #include <asm/set_memory.h> @@ -70,7 +69,6 @@ bool is_virtcca_cvm_world(void) { return cvm_guest_enable && static_branch_likely(&cvm_tsi_present); } -EXPORT_SYMBOL_GPL(is_virtcca_cvm_world); static int change_page_range_cvm(pte_t *ptep, unsigned long addr, void *data) { @@ -122,32 +120,6 @@ int set_cvm_memory_decrypted(unsigned long addr, int numpages) return __set_memory_encrypted(addr, numpages, false); } -/* - * struct io_tlb_no_swiotlb_mem - whether use the - * bounce buffer mechanism or not - * @for_alloc: %true if the pool is used for memory allocation. - * Here it is set to %false, to force devices to use direct dma operations. - * - * @force_bounce: %true if swiotlb bouncing is forced. - * Here it is set to %false, to force devices to use direct dma operations. - */ -static struct io_tlb_mem io_tlb_no_swiotlb_mem = { - .for_alloc = false, - .force_bounce = false, -}; - -void enable_swiotlb_for_cvm_dev(struct device *dev, bool enable) -{ - if (!is_virtcca_cvm_world()) - return; - - if (enable) - swiotlb_dev_init(dev); - else - dev->dma_io_tlb_mem = &io_tlb_no_swiotlb_mem; -} -EXPORT_SYMBOL_GPL(enable_swiotlb_for_cvm_dev); - void swiotlb_unmap_notify(unsigned long paddr, unsigned long size) { struct arm_smccc_res res; diff --git a/drivers/base/core.c b/drivers/base/core.c index 4c8094dd8fe5..21bbcacf7820 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -32,7 +32,6 @@ #include <linux/swiotlb.h> #include <linux/sysfs.h> #include <linux/dma-map-ops.h> /* for dma_default_coherent */ -#include <linux/virtcca_cvm_domain.h> #include "base.h" #include "physical_location.h" @@ -3146,7 +3145,6 @@ void device_initialize(struct device *dev) dev->dma_coherent = dma_default_coherent; #endif swiotlb_dev_init(dev); - enable_swiotlb_for_cvm_dev(dev, false); } EXPORT_SYMBOL_GPL(device_initialize); diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c index 9b5103d0e6de..b14914e4dfc3 100644 --- a/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c @@ -32,7 +32,6 @@ #ifdef CONFIG_HISI_VIRTCCA_GUEST #include <linux/swiotlb.h> #include <asm/virtcca_cvm_guest.h> -#include <linux/virtcca_cvm_domain.h> #endif #include <linux/irqchip.h> @@ -6327,7 +6326,6 @@ int __init its_init(struct fwnode_handle *handle, struct rdists *rdists, #ifdef CONFIG_HISI_VIRTCCA_GUEST if (is_virtcca_cvm_world()) { device_initialize(&cvm_alloc_device); - enable_swiotlb_for_cvm_dev(&cvm_alloc_device, true); raw_spin_lock_init(&cvm_its_lock); } #endif diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c index fb4abd2afc46..59892a31cf76 100644 --- a/drivers/virtio/virtio_mmio.c +++ b/drivers/virtio/virtio_mmio.c @@ -70,7 +70,7 @@ #include <linux/virtio_config.h> #include <uapi/linux/virtio_mmio.h> #include <linux/virtio_ring.h> -#include <linux/virtcca_cvm_domain.h> + /* The alignment to use between consumer and producer parts of vring. @@ -619,7 +619,6 @@ static int virtio_mmio_probe(struct platform_device *pdev) unsigned long magic; int rc; - enable_swiotlb_for_cvm_dev(&pdev->dev, true); vm_dev = kzalloc(sizeof(*vm_dev), GFP_KERNEL); if (!vm_dev) return -ENOMEM; diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c index 95d9a3aed68c..64dfa54d702f 100644 --- a/drivers/virtio/virtio_pci_common.c +++ b/drivers/virtio/virtio_pci_common.c @@ -525,8 +525,6 @@ static int virtio_pci_probe(struct pci_dev *pci_dev, struct virtio_pci_device *vp_dev, *reg_dev = NULL; int rc; - enable_swiotlb_for_cvm_dev(&pci_dev->dev, true); - /* allocate our structure and fill it out */ vp_dev = kzalloc(sizeof(struct virtio_pci_device), GFP_KERNEL); if (!vp_dev) diff --git a/drivers/virtio/virtio_pci_common.h b/drivers/virtio/virtio_pci_common.h index 0f0e19f94d30..4b773bd7c58c 100644 --- a/drivers/virtio/virtio_pci_common.h +++ b/drivers/virtio/virtio_pci_common.h @@ -29,7 +29,6 @@ #include <linux/virtio_pci_modern.h> #include <linux/highmem.h> #include <linux/spinlock.h> -#include <linux/virtcca_cvm_domain.h> struct virtio_pci_vq_info { /* the actual virtqueue */ diff --git a/include/linux/virtcca_cvm_domain.h b/include/linux/virtcca_cvm_domain.h index 5b6d6dfac05e..62dbb88db5fd 100644 --- a/include/linux/virtcca_cvm_domain.h +++ b/include/linux/virtcca_cvm_domain.h @@ -14,7 +14,7 @@ static inline bool virtcca_cvm_domain(void) return is_virtcca_cvm_world(); } -extern void enable_swiotlb_for_cvm_dev(struct device *dev, bool enable); +void enable_swiotlb_for_cvm_dev(struct device *dev, bool enable); #else static inline bool virtcca_cvm_domain(void) -- 2.18.0.huawei.25