# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1181053183 -32400 # Node ID 6278e52f8cb6aa4c61635acf7a324b5d7c288eb5 # Parent d537f6f5a5de527613b4d2045e0f8d5a24c05cf1 gnttab_dma_map/unmap_page() should use dma_addr_t, not maddr_t PATCHNAME: dma_addr_t_gnttab_dma_map_unmap_page Signed-off-by: Isaku Yamahata diff -r d537f6f5a5de -r 6278e52f8cb6 linux-2.6-xen-sparse/drivers/xen/core/gnttab.c --- a/linux-2.6-xen-sparse/drivers/xen/core/gnttab.c Tue Jun 05 15:44:51 2007 +0900 +++ b/linux-2.6-xen-sparse/drivers/xen/core/gnttab.c Tue Jun 05 23:19:43 2007 +0900 @@ -591,15 +591,14 @@ EXPORT_SYMBOL(gnttab_copy_grant_page); * * All other pages are simply returned as is. */ -maddr_t gnttab_dma_map_page(struct page *page) -{ - maddr_t mfn = pfn_to_mfn(page_to_pfn(page)), mfn2; - - if (!PageForeign(page)) - return mfn << PAGE_SHIFT; - - if (pfn_valid(mfn_to_local_pfn(mfn))) - return mfn << PAGE_SHIFT; +dma_addr_t gnttab_dma_map_page(struct page *page) +{ + dma_addr_t dma_address = page_to_bus(page); + maddr_t mfn = pfn_to_mfn(page_to_pfn(page)); + + if (!is_running_on_xen() || + !PageForeign(page) || pfn_valid(mfn_to_local_pfn(mfn))) + return dma_address; atomic_set(&page->_mapcount, 0); @@ -607,9 +606,7 @@ maddr_t gnttab_dma_map_page(struct page smp_mb(); /* Has this page been copied in the mean time? */ - mfn2 = pfn_to_mfn(page_to_pfn(page)); - - return mfn2 << PAGE_SHIFT; + return page_to_bus(page); } int gnttab_resume(void) diff -r d537f6f5a5de -r 6278e52f8cb6 linux-2.6-xen-sparse/include/xen/gnttab.h --- a/linux-2.6-xen-sparse/include/xen/gnttab.h Tue Jun 05 15:44:51 2007 +0900 +++ b/linux-2.6-xen-sparse/include/xen/gnttab.h Tue Jun 05 23:19:43 2007 +0900 @@ -103,9 +103,9 @@ void gnttab_grant_foreign_transfer_ref(g unsigned long pfn); int gnttab_copy_grant_page(grant_ref_t ref, struct page **pagep); -maddr_t gnttab_dma_map_page(struct page *page); +dma_addr_t gnttab_dma_map_page(struct page *page); -static inline void gnttab_dma_unmap_page(maddr_t mfn) +static inline void gnttab_dma_unmap_page(dma_addr_t mfn) { }