[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] PCI: move pdev_list field to common structure
commit f3f862f9b720abd6795986651a5b10e1a7e05f81 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu Jun 6 11:14:58 2019 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Jun 6 11:14:58 2019 +0200 PCI: move pdev_list field to common structure Its management shouldn't be arch-specific, and in particular there should be no need for special precautions when creating the special domains. At this occasion - correct parenthesization of for_each_pdev(), - stop open-coding for_each_pdev() in vPCI code. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Acked-by: Julien Grall <julien.grall@xxxxxxx> Acked-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/arch/x86/domain.c | 1 - xen/arch/x86/mm.c | 1 - xen/common/domain.c | 4 ++++ xen/drivers/passthrough/amd/pci_amd_iommu.c | 2 +- xen/drivers/passthrough/pci.c | 6 +++--- xen/drivers/passthrough/vtd/iommu.c | 2 +- xen/drivers/vpci/header.c | 2 +- xen/drivers/vpci/msi.c | 2 +- xen/include/asm-x86/domain.h | 4 ---- xen/include/xen/pci.h | 4 +++- xen/include/xen/sched.h | 4 ++++ 11 files changed, 18 insertions(+), 14 deletions(-) diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 9485a17ddd..d505d2e456 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -496,7 +496,6 @@ int arch_domain_create(struct domain *d, uint32_t emflags; int rc; - INIT_LIST_HEAD(&d->arch.pdev_list); INIT_PAGE_LIST_HEAD(&d->arch.relmem_list); spin_lock_init(&d->arch.e820_lock); diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 2f620d9aeb..8b933da35a 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -291,7 +291,6 @@ void __init arch_init_memory(void) */ dom_xen = domain_create(DOMID_XEN, NULL, false); BUG_ON(IS_ERR(dom_xen)); - INIT_LIST_HEAD(&dom_xen->arch.pdev_list); /* * Initialise our DOMID_IO domain. diff --git a/xen/common/domain.c b/xen/common/domain.c index 90c66079f9..29cd44ac27 100644 --- a/xen/common/domain.c +++ b/xen/common/domain.c @@ -389,6 +389,10 @@ struct domain *domain_create(domid_t domid, rwlock_init(&d->vnuma_rwlock); +#ifdef CONFIG_HAS_PCI + INIT_LIST_HEAD(&d->pdev_list); +#endif + err = -ENOMEM; if ( !zalloc_cpumask_var(&d->dirty_cpumask) ) goto fail; diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c index 6ddeb790a0..dc51d66769 100644 --- a/xen/drivers/passthrough/amd/pci_amd_iommu.c +++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c @@ -315,7 +315,7 @@ static int reassign_device(struct domain *source, struct domain *target, if ( devfn == pdev->devfn ) { - list_move(&pdev->domain_list, &target->arch.pdev_list); + list_move(&pdev->domain_list, &target->pdev_list); pdev->domain = target; } diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 061b20103f..20bfa971a9 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -467,7 +467,7 @@ static void _pci_hide_device(struct pci_dev *pdev) if ( pdev->domain ) return; pdev->domain = dom_xen; - list_add(&pdev->domain_list, &dom_xen->arch.pdev_list); + list_add(&pdev->domain_list, &dom_xen->pdev_list); } int __init pci_hide_device(unsigned int seg, unsigned int bus, @@ -803,7 +803,7 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn, goto out; } - list_add(&pdev->domain_list, &hardware_domain->arch.pdev_list); + list_add(&pdev->domain_list, &hardware_domain->pdev_list); } else iommu_enable_device(pdev); @@ -1153,7 +1153,7 @@ static int __hwdom_init _setup_hwdom_pci_devices(struct pci_seg *pseg, void *arg if ( !pdev->domain ) { pdev->domain = ctxt->d; - list_add(&pdev->domain_list, &ctxt->d->arch.pdev_list); + list_add(&pdev->domain_list, &ctxt->d->pdev_list); setup_one_hwdom_device(ctxt, pdev); } else if ( pdev->domain == dom_xen ) diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 4caf63c7fa..8b27d7e775 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -2453,7 +2453,7 @@ static int reassign_device_ownership( if ( devfn == pdev->devfn ) { - list_move(&pdev->domain_list, &target->arch.pdev_list); + list_move(&pdev->domain_list, &target->pdev_list); pdev->domain = target; } diff --git a/xen/drivers/vpci/header.c b/xen/drivers/vpci/header.c index efb6ca90e3..94094f5579 100644 --- a/xen/drivers/vpci/header.c +++ b/xen/drivers/vpci/header.c @@ -267,7 +267,7 @@ static int modify_bars(const struct pci_dev *pdev, uint16_t cmd, bool rom_only) * Check for overlaps with other BARs. Note that only BARs that are * currently mapped (enabled) are checked for overlaps. */ - list_for_each_entry(tmp, &pdev->domain->arch.pdev_list, domain_list) + for_each_pdev ( pdev->domain, tmp ) { if ( tmp == pdev ) { diff --git a/xen/drivers/vpci/msi.c b/xen/drivers/vpci/msi.c index 8f15ad7bf2..c4e1d2a411 100644 --- a/xen/drivers/vpci/msi.c +++ b/xen/drivers/vpci/msi.c @@ -282,7 +282,7 @@ void vpci_dump_msi(void) printk("vPCI MSI/MSI-X d%d\n", d->domain_id); - list_for_each_entry ( pdev, &d->arch.pdev_list, domain_list ) + for_each_pdev ( d, pdev ) { const struct vpci_msi *msi; const struct vpci_msix *msix; diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h index 72dea80b7c..933b85901f 100644 --- a/xen/include/asm-x86/domain.h +++ b/xen/include/asm-x86/domain.h @@ -298,8 +298,6 @@ struct arch_domain bool_t s3_integrity; - struct list_head pdev_list; - union { struct pv_domain pv; struct hvm_domain hvm; @@ -476,8 +474,6 @@ struct arch_domain #define has_pirq(d) (!!((d)->arch.emulation_flags & X86_EMU_USE_PIRQ)) #define has_vpci(d) (!!((d)->arch.emulation_flags & X86_EMU_VPCI)) -#define has_arch_pdevs(d) (!list_empty(&(d)->arch.pdev_list)) - #define gdt_ldt_pt_idx(v) \ ((v)->vcpu_id >> (PAGETABLE_ORDER - GDT_LDT_VCPU_SHIFT)) #define pv_gdt_ptes(v) \ diff --git a/xen/include/xen/pci.h b/xen/include/xen/pci.h index 8b21e8dc84..53f50d89e7 100644 --- a/xen/include/xen/pci.h +++ b/xen/include/xen/pci.h @@ -121,7 +121,9 @@ struct pci_dev { }; #define for_each_pdev(domain, pdev) \ - list_for_each_entry(pdev, &(domain->arch.pdev_list), domain_list) + list_for_each_entry(pdev, &(domain)->pdev_list, domain_list) + +#define has_arch_pdevs(d) (!list_empty(&(d)->pdev_list)) /* * The pcidevs_lock protect alldevs_list, and the assignment for the diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index b9691fc96e..ccd5347303 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -369,6 +369,10 @@ struct domain int64_t time_offset_seconds; +#ifdef CONFIG_HAS_PCI + struct list_head pdev_list; +#endif + #ifdef CONFIG_HAS_PASSTHROUGH struct domain_iommu iommu; #endif -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |