# HG changeset patch # Parent 0d4a60bf37b95b58bbae7019e0c263c556999131 # User Wei Wang cleanup get_gfn_from_base_reg() function. Signed-off-by: Wei Wang diff -r 0d4a60bf37b9 -r 87ab207e4833 xen/drivers/passthrough/amd/iommu_guest.c --- a/xen/drivers/passthrough/amd/iommu_guest.c Mon Jan 16 09:55:05 2012 +0100 +++ b/xen/drivers/passthrough/amd/iommu_guest.c Mon Jan 16 10:15:39 2012 +0100 @@ -121,16 +121,9 @@ static unsigned int host_domid(struct do static unsigned long get_gfn_from_base_reg(uint64_t base_raw) { - struct mmio_reg reg; - uint64_t addr64; - - reg.lo = iommu_get_addr_lo_from_reg(base_raw & DMA_32BIT_MASK); - reg.hi = iommu_get_addr_hi_from_reg(base_raw >> 32); - addr64 = reg_to_u64(reg); - - ASSERT ( addr64 != 0 ); - - return addr64 >> PAGE_SHIFT; + base_raw &= ~(0xFFFULL << 52); + ASSERT ( base_raw != 0 ); + return base_raw >> PAGE_SHIFT; } static void guest_iommu_deliver_msi(struct domain *d) diff -r 0d4a60bf37b9 -r 87ab207e4833 xen/include/asm-x86/hvm/svm/amd-iommu-proto.h --- a/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h Mon Jan 16 09:55:05 2012 +0100 +++ b/xen/include/asm-x86/hvm/svm/amd-iommu-proto.h Mon Jan 16 10:15:39 2012 +0100 @@ -257,16 +257,4 @@ static inline void iommu_set_addr_hi_to_ IOMMU_REG_BASE_ADDR_HIGH_SHIFT, reg); } -static inline uint32_t iommu_get_addr_lo_from_reg(uint32_t reg) -{ - return get_field_from_reg_u32(reg, IOMMU_REG_BASE_ADDR_LOW_MASK, - IOMMU_REG_BASE_ADDR_LOW_SHIFT); -} - -static inline uint32_t iommu_get_addr_hi_from_reg(uint32_t reg) -{ - return get_field_from_reg_u32(reg, IOMMU_REG_BASE_ADDR_HIGH_MASK, - IOMMU_REG_BASE_ADDR_HIGH_SHIFT); -} - #endif /* _ASM_X86_64_AMD_IOMMU_PROTO_H */