diff options
author | Jan Beulich <jbeulich@suse.com> | 2012-09-13 10:23:17 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2012-09-13 10:23:17 +0200 |
commit | f28cf4d6ce350ff364d1e9e2cce0e93025a5e372 (patch) | |
tree | 563d13610f0c1075d4a745cc3310cd892f9dc8ff | |
parent | 4e11d97bd9eb1d8b3aaf5458a303d4da917af59b (diff) | |
download | xen-f28cf4d6ce350ff364d1e9e2cce0e93025a5e372.tar.gz xen-f28cf4d6ce350ff364d1e9e2cce0e93025a5e372.tar.bz2 xen-f28cf4d6ce350ff364d1e9e2cce0e93025a5e372.zip |
amd iommu: use PCI macros
... instead of open coding them.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Wei Wang <wei.wang2@amd.com>
Acked-by: Keir Fraser <keir@xen.org>
-rw-r--r-- | xen/drivers/passthrough/amd/iommu_init.c | 14 | ||||
-rw-r--r-- | xen/drivers/passthrough/amd/iommu_intr.c | 11 | ||||
-rw-r--r-- | xen/drivers/passthrough/amd/iommu_map.c | 2 | ||||
-rw-r--r-- | xen/drivers/passthrough/amd/pci_amd_iommu.c | 11 |
4 files changed, 17 insertions, 21 deletions
diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c index f78ff13053..4e03c25e82 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -455,9 +455,9 @@ static void iommu_msi_set_affinity(struct irq_desc *desc, const cpumask_t *mask) unsigned int dest; struct amd_iommu *iommu = desc->action->dev_id; u16 seg = iommu->seg; - u8 bus = (iommu->bdf >> 8) & 0xff; - u8 dev = PCI_SLOT(iommu->bdf & 0xff); - u8 func = PCI_FUNC(iommu->bdf & 0xff); + u8 bus = PCI_BUS(iommu->bdf); + u8 dev = PCI_SLOT(iommu->bdf); + u8 func = PCI_FUNC(iommu->bdf); dest = set_desc_affinity(desc, mask); @@ -495,13 +495,13 @@ static void iommu_msi_set_affinity(struct irq_desc *desc, const cpumask_t *mask) static void amd_iommu_msi_enable(struct amd_iommu *iommu, int flag) { u16 control; - int bus = (iommu->bdf >> 8) & 0xff; - int dev = PCI_SLOT(iommu->bdf & 0xff); - int func = PCI_FUNC(iommu->bdf & 0xff); + int bus = PCI_BUS(iommu->bdf); + int dev = PCI_SLOT(iommu->bdf); + int func = PCI_FUNC(iommu->bdf); control = pci_conf_read16(iommu->seg, bus, dev, func, iommu->msi_cap + PCI_MSI_FLAGS); - control &= ~(1); + control &= ~PCI_MSI_FLAGS_ENABLE; if ( flag ) control |= flag; pci_conf_write16(iommu->seg, bus, dev, func, diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthrough/amd/iommu_intr.c index 13ce9a464f..23cb1eaa24 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -272,7 +272,7 @@ static void update_intremap_entry_from_msi_msg( spinlock_t *lock; int offset; - bdf = (pdev->bus << 8) | pdev->devfn; + bdf = PCI_BDF2(pdev->bus, pdev->devfn); req_id = get_dma_requestor_id(pdev->seg, bdf); alias_id = get_intremap_requestor_id(pdev->seg, bdf); @@ -340,17 +340,16 @@ void amd_iommu_msi_msg_update_ire( struct msi_desc *msi_desc, struct msi_msg *msg) { struct pci_dev *pdev = msi_desc->dev; - struct amd_iommu *iommu = NULL; + int bdf = PCI_BDF2(pdev->bus, pdev->devfn); + struct amd_iommu *iommu; if ( !iommu_intremap ) return; - iommu = find_iommu_for_device(pdev->seg, (pdev->bus << 8) | pdev->devfn); - + iommu = find_iommu_for_device(pdev->seg, bdf); if ( !iommu ) { - AMD_IOMMU_DEBUG("Fail to find iommu for MSI device id = 0x%x\n", - (pdev->bus << 8) | pdev->devfn); + AMD_IOMMU_DEBUG("Fail to find iommu for MSI device id = %#x\n", bdf); return; } diff --git a/xen/drivers/passthrough/amd/iommu_map.c b/xen/drivers/passthrough/amd/iommu_map.c index 542f88bc5b..0e480bbe89 100644 --- a/xen/drivers/passthrough/amd/iommu_map.c +++ b/xen/drivers/passthrough/amd/iommu_map.c @@ -597,7 +597,7 @@ static int update_paging_mode(struct domain *d, unsigned long gfn) /* Update device table entries using new root table and paging mode */ for_each_pdev( d, pdev ) { - bdf = (pdev->bus << 8) | pdev->devfn; + bdf = PCI_BDF2(pdev->bus, pdev->devfn); req_id = get_dma_requestor_id(pdev->seg, bdf); iommu = find_iommu_for_device(pdev->seg, bdf); if ( !iommu ) diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c index 4cdd491750..c043e35c68 100644 --- a/xen/drivers/passthrough/amd/pci_amd_iommu.c +++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c @@ -373,7 +373,7 @@ static int reassign_device( struct domain *source, struct domain *target, static int amd_iommu_assign_device(struct domain *d, u16 seg, u8 bus, u8 devfn) { struct ivrs_mappings *ivrs_mappings = get_ivrs_mappings(seg); - int bdf = (bus << 8) | devfn; + int bdf = PCI_BDF2(bus, devfn); int req_id = get_dma_requestor_id(seg, bdf); if ( ivrs_mappings[req_id].unity_map_enable ) @@ -499,12 +499,9 @@ static int amd_iommu_remove_device(struct pci_dev *pdev) static int amd_iommu_group_id(u16 seg, u8 bus, u8 devfn) { - int rt; - int bdf = (bus << 8) | devfn; - rt = ( bdf < ivrs_bdf_entries ) ? - get_dma_requestor_id(seg, bdf) : - bdf; - return rt; + int bdf = PCI_BDF2(bus, devfn); + + return (bdf < ivrs_bdf_entries) ? get_dma_requestor_id(seg, bdf) : bdf; } #include <asm/io_apic.h> |