]> pilppa.com Git - linux-2.6-omap-h63xx.git/commitdiff
AMD IOMMU: some set_device_domain cleanups
authorJoerg Roedel <joerg.roedel@amd.com>
Thu, 11 Sep 2008 08:38:32 +0000 (10:38 +0200)
committerIngo Molnar <mingo@elte.hu>
Fri, 19 Sep 2008 10:59:22 +0000 (12:59 +0200)
Remove some magic numbers and split the pte_root using standard
functions.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/amd_iommu.c
include/asm-x86/amd_iommu_types.h

index 7c17914474517f921156b97944a6e4d630303a45..a34d8e915e3add50442eae3b5244afef64e9519d 100644 (file)
@@ -739,12 +739,13 @@ static void set_device_domain(struct amd_iommu *iommu,
 
        u64 pte_root = virt_to_phys(domain->pt_root);
 
-       pte_root |= (domain->mode & 0x07) << 9;
-       pte_root |= IOMMU_PTE_IR | IOMMU_PTE_IW | IOMMU_PTE_P | 2;
+       pte_root |= (domain->mode & DEV_ENTRY_MODE_MASK)
+                   << DEV_ENTRY_MODE_SHIFT;
+       pte_root |= IOMMU_PTE_IR | IOMMU_PTE_IW | IOMMU_PTE_P | IOMMU_PTE_TV;
 
        write_lock_irqsave(&amd_iommu_devtable_lock, flags);
-       amd_iommu_dev_table[devid].data[0] = pte_root;
-       amd_iommu_dev_table[devid].data[1] = pte_root >> 32;
+       amd_iommu_dev_table[devid].data[0] = lower_32_bits(pte_root);
+       amd_iommu_dev_table[devid].data[1] = upper_32_bits(pte_root);
        amd_iommu_dev_table[devid].data[2] = domain->id;
 
        amd_iommu_pd_table[devid] = domain;
index 9aa22ead22f380c45d3301cb56ce45e6bce44007..f953309a636e6897c9abbbf7cc0efaa61846a3fb 100644 (file)
 #define DEV_ENTRY_NMI_PASS      0xba
 #define DEV_ENTRY_LINT0_PASS    0xbe
 #define DEV_ENTRY_LINT1_PASS    0xbf
+#define DEV_ENTRY_MODE_MASK    0x07
+#define DEV_ENTRY_MODE_SHIFT   0x09
 
 /* constants to configure the command buffer */
 #define CMD_BUFFER_SIZE    8192
 #define IOMMU_MAP_SIZE_L3 (1ULL << 39)
 
 #define IOMMU_PTE_P  (1ULL << 0)
+#define IOMMU_PTE_TV (1ULL << 1)
 #define IOMMU_PTE_U  (1ULL << 59)
 #define IOMMU_PTE_FC (1ULL << 60)
 #define IOMMU_PTE_IR (1ULL << 61)