[Top] [All Lists]

[PATCH] Always use virt_to_phys() when translating kernel addresses

To: Ralf Baechle <>
Subject: [PATCH] Always use virt_to_phys() when translating kernel addresses
From: Franck Bui-Huu <>
Date: Mon, 19 Mar 2007 10:41:46 +0100
Cc:, linux-mips <>
Dkim-signature: a=rsa-sha1; c=relaxed/relaxed;; s=beta; h=domainkey-signature:received:received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:content-type:content-transfer-encoding:from; b=sSyNLopgDOhdC0d3OhpVVpfogDiIO+ilG14mqfiJJ9PlRlxtMS08s80Ob7/ska9DUYOWLYSNod8TrbddYELxYvDWmSYIDRs/DiqNcrBaQBf5yIHFU3+ZyB2XSKwNY2VQfq3vW26T5zE7C6pbl4err7aX0FA3BaF0bu4WXRN9DY8=
Domainkey-signature: a=rsa-sha1; c=nofws;; s=beta; h=received:message-id:date:reply-to:user-agent:mime-version:to:cc:subject:content-type:content-transfer-encoding:from; b=FnSueOZOt5A2hmHLskTRws4MFkU9edbMcM/Uz4J4WZhl1rjfb3MontarNW6gIaUtVDmNuc1GmdvIc84es49v95SHlBnDN/G/kxG+S73WHM44pzBL4v3TJTeucZrgUTByEzYj9v4kp9m6ulmIcWAhVPP61NugZgGubd5+bPIrp7o=
Original-recipient: rfc822;
Reply-to: Franck <>
User-agent: Thunderbird (X11/20060614)
From: Franck Bui-Huu <>

This patch fixes two places where we used plain 'x - PAGE_OFFSET' to
achieve virtual to physical address convertion. This type of convertion
is no more allowed since commit 6f284a2ce7b8bc49cb8455b1763357897a899abb.

Reported-by: Maxime Bizon <>
Signed-off-by: Franck Bui-Huu <>


 Could you apply this patch. Unfortunately I failed to report back these
 changes when submitting the original patch, and without it, platforms
 which are using (or trying to use) PHYS_OFFSET will break.


 include/asm-mips/pgtable-64.h |    2 +-
 include/asm-mips/pgtable.h    |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/asm-mips/pgtable-64.h b/include/asm-mips/pgtable-64.h
index a5b1871..49f5a1a 100644
--- a/include/asm-mips/pgtable-64.h
+++ b/include/asm-mips/pgtable-64.h
@@ -199,7 +199,7 @@ static inline unsigned long pud_page_vaddr(pud_t pud)
        return pud_val(pud);
-#define pud_phys(pud)          (pud_val(pud) - PAGE_OFFSET)
+#define pud_phys(pud)          virt_to_phys((void *)pud_val(pud))
 #define pud_page(pud)          (pfn_to_page(pud_phys(pud) >> PAGE_SHIFT))
 /* Find an entry in the second-level page table.. */
diff --git a/include/asm-mips/pgtable.h b/include/asm-mips/pgtable.h
index 3fcfd79..0d3295f 100644
--- a/include/asm-mips/pgtable.h
+++ b/include/asm-mips/pgtable.h
@@ -75,7 +75,7 @@ extern void paging_init(void);
  * Conversion functions: convert a page and protection to a page entry,
  * and a page entry and page directory to the page they refer to.
-#define pmd_phys(pmd)          (pmd_val(pmd) - PAGE_OFFSET)
+#define pmd_phys(pmd)          virt_to_phys((void *)pmd_val(pmd))
 #define pmd_page(pmd)          (pfn_to_page(pmd_phys(pmd) >> PAGE_SHIFT))
 #define pmd_page_vaddr(pmd)    pmd_val(pmd)

<Prev in Thread] Current Thread [Next in Thread>