diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/include/asm/dma-mapping.h | 10 | ||||
-rw-r--r-- | arch/arm/include/asm/xen/page.h | 2 | ||||
-rw-r--r-- | arch/arm/xen/p2m.c | 2 |
3 files changed, 5 insertions, 9 deletions
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h index f5945d4e4e9f..8acfef48124a 100644 --- a/arch/arm/include/asm/dma-mapping.h +++ b/arch/arm/include/asm/dma-mapping.h @@ -10,7 +10,6 @@ #include <asm-generic/dma-coherent.h> #include <asm/memory.h> -#include <asm/cacheflush.h> #include <xen/xen.h> #include <asm/xen/hypervisor.h> @@ -113,15 +112,12 @@ static inline phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dev_addr) static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size) { u64 limit, mask; - - if (dev->dma_mask) - mask = *dev->dma_mask; - else - mask = dev->coherent_dma_mask; - if (mask == 0) + if (!dev->dma_mask) return 0; + mask = *dev->dma_mask; + limit = (mask + 1) & ~mask; if (limit && size > limit) return 0; diff --git a/arch/arm/include/asm/xen/page.h b/arch/arm/include/asm/xen/page.h index 5d0e4c5dc711..71bb779f2761 100644 --- a/arch/arm/include/asm/xen/page.h +++ b/arch/arm/include/asm/xen/page.h @@ -39,7 +39,7 @@ extern struct rb_root phys_to_mach; static inline unsigned long pfn_to_mfn(unsigned long pfn) { unsigned long mfn; - + if (phys_to_mach.rb_node != NULL) { mfn = __pfn_to_mfn(pfn); if (mfn != INVALID_P2M_ENTRY) diff --git a/arch/arm/xen/p2m.c b/arch/arm/xen/p2m.c index 5df4a9afb8c6..23732cdff551 100644 --- a/arch/arm/xen/p2m.c +++ b/arch/arm/xen/p2m.c @@ -162,7 +162,7 @@ bool __set_phys_to_machine_multi(unsigned long pfn, rb_erase(&p2m_entry->rbnode_mach, &mach_to_phys); rb_erase(&p2m_entry->rbnode_phys, &phys_to_mach); write_unlock_irqrestore(&p2m_lock, irqflags); - kfree(p2m_entry); + kfree(p2m_entry); return true; } if (pfn < p2m_entry->pfn) |