From: Thomas Lange <thomas@corelatus.se>
To: ralf@linux-mips.org
Cc: linux-mips@linux-mips.org
Subject: c17a6554 broke 64BIT_PHYS_ADDR for 32 bit systems
Date: Wed, 17 Apr 2013 20:11:48 +0200 [thread overview]
Message-ID: <516EE5E4.1010605@corelatus.se> (raw)
Dear Ralf,
commit c17a6554 unintentionally(?) modified the PAGE_MASK type
from (int) to (long unsigned int).
This breaks ioremap (and possibly more) when using 64BIT_PHYS_ADDR on
32 bit systems.
Example of failing code from ioremap.c:
phys_addr &= PAGE_MASK;
Since phys_addr is 64 bit (unsigned long long) when 64BIT_PHYS_ADDR and
PAGE_MASK is 32bit (long unsigned int), the upper 32 bits will always
be zeroed which is not what we want/expect.
The code above works if PAGE_MASK is a _signed_ 32bit int though.
Some possible fixes:
A) Simply revert the commit. Makes ioremap work again, but then PAGE_MASK
is a signed int. Do we really want a mask that is 'signed'?
B) Don't use PAGE_MASK for physical addresses. x86 defines this:
/* Cast PAGE_MASK to a signed type so that it is sign-extended if
virtual addresses are 32-bits but physical addresses are larger
(ie, 32-bit PAE). */
#define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK)
Perhaps mips need something similar?
This is an issue with 3.8 and doesn't seem to be solved in master either.
Regards,
/Thomas
next reply other threads:[~2013-04-23 15:09 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-17 18:11 Thomas Lange [this message]
2013-04-23 15:14 ` c17a6554 broke 64BIT_PHYS_ADDR for 32 bit systems Geert Uytterhoeven
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=516EE5E4.1010605@corelatus.se \
--to=thomas@corelatus.se \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.