From: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>, Matthew Wilcox <matthew@wil.cx>,
tglx@linutronix.de, mingo@redhat.com,
linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,
macro@linux-mips.org, kamezawa.hiroyu@jp.fujitsu.com,
eike-kernel@sf-tec.de
Subject: Re: [PATCH 1/2] x86: ioremap: fix wrong physical address handling
Date: Fri, 18 Jun 2010 09:22:26 +0900 [thread overview]
Message-ID: <4C1ABC42.9020106@jp.fujitsu.com> (raw)
In-Reply-To: <4C19EC57.3000409@goop.org>
(2010/06/17 18:35), Jeremy Fitzhardinge wrote:
> On 06/17/2010 07:03 AM, H. Peter Anvin wrote:
>> On 06/16/2010 09:55 PM, Kenji Kaneshige wrote:
>>
>>>> I think they might be. Kenji?
>>>>
>>> No. My addresses are in the 44-bits range (around fc000000000). So it is
>>> not required for my problem. This change assumes that phys_addr can be
>>> above 44-bits (up to 52-bits (and higher in the future?)).
>>>
>>> By the way, is there linux kernel limit regarding above 44-bits physical
>>> address in x86_32 PAE? For example, pfn above 32-bits is not supported?
>>>
>>>
>
> That's an awkward situation. I would tend to suggest that you not
> support this type of machine with a 32-bit kernel. Is it a sparse
> memory system, or is there a device mapped in that range?
>
Device mapped range in my case.
Fortunately, the address is in 44-bits range. I'd like to focus on
making 2^44 work correctly this time.
Thanks,
Kenji Kaneshige
> I guess it would be possible to special-case ioremap to allow the
> creation of such mappings, but I don't know what kind of system-wide
> fallout would happen as a result. The consequences of something trying
> to extract a pfn from one of those ptes would be
>
>> There are probably places at which PFNs are held in 32-bit numbers,
>> although it would be good to track them down if it isn't too expensive
>> to fix them (i.e. doesn't affect generic code.)
>>
>
> There are many places which hold pfns in 32 bit variables on 32 bit
> systems; the standard type for pfns is "unsigned long", pretty much
> everywhere in the kernel. It might be worth defining a pfn_t and
> converting usage over to that, but it would be a pervasive change.
>
>> This also affects paravirt systems, i.e. right now Xen has to locate all
>> 32-bit guests below 64 GB, which limits its usefulness.
>>
>
> I don't think the limit is 64GB. A 32-bit PFN limits us to 2^44, which
> is 16TB. (32-bit PV Xen guests have another unrelated limit of around
> 160GB physical memory because that as much m2p table will fit into the
> Xen hole in the kernel mapping.)
>
>>> #ifdef CONFIG_X86_PAE
>>> /* 44=32+12, the limit we can fit into an unsigned long pfn */
>>> #define __PHYSICAL_MASK_SHIFT 44
>>> #define __VIRTUAL_MASK_SHIFT 32
>>>
>>> If there is 44-bits physical address limit, I think it's better to use
>>> PHYSICAL_PAGE_MASK for masking physical address, instead of "(phys_addr
>>>
>>>>> PAGE_SHIFT)<< PAGE_SHIFT)". The PHYSICAL_PAGE_MASK would become
>>>>>
>>> greater value when 44-bits physical address limit is eliminated. And
>>> maybe we need to change phys_addr_valid() returns error if physical
>>> address is above (1<< __PHYSICAL_MASK_SHIFT)?
>>>
>> The real question is how much we can fix without an unreasonable cost.
>>
>
> I think it would be a pretty large change. From the Xen's perspective,
> any machine even approximately approaching the 2^44 limit will be
> capable of running Xen guests in hvm mode, so PV isn't really a concern.
>
> J
>
>
next prev parent reply other threads:[~2010-06-18 0:23 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-17 1:28 [BUG][PATCH 0/2 (v.2)] x86: ioremap() problem in X86_32 PAE Kenji Kaneshige
2010-06-17 1:30 ` [PATCH 1/2] x86: ioremap: fix wrong physical address handling Kenji Kaneshige
2010-06-17 2:50 ` Matthew Wilcox
2010-06-17 4:22 ` H. Peter Anvin
2010-06-17 4:55 ` Kenji Kaneshige
2010-06-17 6:03 ` H. Peter Anvin
2010-06-17 6:21 ` Kenji Kaneshige
2010-06-17 9:35 ` Jeremy Fitzhardinge
2010-06-17 9:38 ` Jeremy Fitzhardinge
2010-06-17 13:46 ` H. Peter Anvin
2010-06-18 0:32 ` Kenji Kaneshige
2010-06-18 0:22 ` Kenji Kaneshige [this message]
2010-07-09 4:24 ` Simon Horman
2010-07-09 5:33 ` Jeremy Fitzhardinge
2010-07-09 6:10 ` Simon Horman
2010-06-17 6:28 ` Kenji Kaneshige
2010-07-09 18:31 ` [tip:x86/mm] x86, pae: Fix handling of large physical addresses in ioremap tip-bot for Kenji Kaneshige
2010-07-09 18:43 ` H. Peter Anvin
2010-06-17 1:31 ` [PATCH 2/2] x86: ioremap: fix normal ram range check Kenji Kaneshige
2010-07-09 18:31 ` [tip:x86/mm] x86, ioremap: Fix " tip-bot for Kenji Kaneshige
-- strict thread matches above, loose matches on Subject: below --
2010-06-18 3:21 [BUG][PATCH 0/2 (v.3)] x86: ioremap() problem in X86_32 PAE Kenji Kaneshige
2010-06-18 3:22 ` [PATCH 1/2] x86: ioremap: fix wrong physical address handling Kenji Kaneshige
2010-06-18 11:07 ` Jeremy Fitzhardinge
2010-06-21 1:40 ` Kenji Kaneshige
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=4C1ABC42.9020106@jp.fujitsu.com \
--to=kaneshige.kenji@jp.fujitsu.com \
--cc=eike-kernel@sf-tec.de \
--cc=hpa@zytor.com \
--cc=jeremy@goop.org \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=macro@linux-mips.org \
--cc=matthew@wil.cx \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
/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.