Discussion:
[PATCH] m68knommu: Correct page_to_phys when PAGE_OFFSET is non-zero.
Steven King
2014-06-12 03:01:10 UTC
Permalink
The definition of page_to_phys for nommu produces an incorrect value when
PAGE_OFFSET is non-zero. The nommu version of page_to_pfn works correctly
for non-zero PAGE_OFFSET, so use that instead.


Signed-off-by: Steven King <***@fdwdc.com>

---
arch/m68k/include/asm/virtconvert.h | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/arch/m68k/include/asm/virtconvert.h b/arch/m68k/include/asm/virtconvert.h
index f35229b..b8a82fb 100644
--- a/arch/m68k/include/asm/virtconvert.h
+++ b/arch/m68k/include/asm/virtconvert.h
@@ -26,16 +26,12 @@ static inline void *phys_to_virt(unsigned long address)
}

/* Permanent address of a page. */
-#ifdef CONFIG_MMU
-#ifdef CONFIG_SINGLE_MEMORY_CHUNK
+#if defined(CONFIG_MMU) && defined(CONFIG_SINGLE_MEMORY_CHUNK)
#define page_to_phys(page) \
__pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))
#else
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
#endif
-#else
-#define page_to_phys(page) (((page) - mem_map) << PAGE_SHIFT)
-#endif

/*
* IO bus memory addresses are 1:1 with the physical address,
Greg Ungerer
2014-06-20 05:16:19 UTC
Permalink
Hi Steven,
Post by Steven King
The definition of page_to_phys for nommu produces an incorrect value when
PAGE_OFFSET is non-zero. The nommu version of page_to_pfn works correctly
for non-zero PAGE_OFFSET, so use that instead.
Looks good, thanks. Applied to m68knommu git tree, for-next branch.

Regards
Greg
Post by Steven King
---
arch/m68k/include/asm/virtconvert.h | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/arch/m68k/include/asm/virtconvert.h b/arch/m68k/include/asm/virtconvert.h
index f35229b..b8a82fb 100644
--- a/arch/m68k/include/asm/virtconvert.h
+++ b/arch/m68k/include/asm/virtconvert.h
@@ -26,16 +26,12 @@ static inline void *phys_to_virt(unsigned long address)
}
/* Permanent address of a page. */
-#ifdef CONFIG_MMU
-#ifdef CONFIG_SINGLE_MEMORY_CHUNK
+#if defined(CONFIG_MMU) && defined(CONFIG_SINGLE_MEMORY_CHUNK)
#define page_to_phys(page) \
__pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))
#else
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
#endif
-#else
-#define page_to_phys(page) (((page) - mem_map) << PAGE_SHIFT)
-#endif
/*
* IO bus memory addresses are 1:1 with the physical address,
Loading...