|
[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 |