All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: ehabkost@redhat.com, x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Make PFN_PHYS return a properly-formed physical address
Date: Thu, 07 Aug 2008 16:45:12 -0700	[thread overview]
Message-ID: <489B8908.2010007@goop.org> (raw)
In-Reply-To: <20080807162741.8dfcd336.akpm@linux-foundation.org>

Andrew Morton wrote:
> Yes, but resource_size_t is for IO addressing, not for memory addressing.
>
> Lots of X86_32 machines can happily support 32-bit physical addresses
> for IO while needing >32 bit addresses for physical memory.
>   

Really?  The resource tree treats normal memory as just another 
resource.  Is it expected that you could have usable memory not 
represented by /proc/iomem?

Hm, looks like memory hotplug assumes that resource_size_t is always 
64-bits, but the e820->resource conversion simply skips over-large 
addresses.

>>>>  #define PFN_ALIGN(x)	(((unsigned long)(x) + (PAGE_SIZE - 1)) & PAGE_MASK)
>>>>  #define PFN_UP(x)	(((x) + PAGE_SIZE-1) >> PAGE_SHIFT)
>>>>  #define PFN_DOWN(x)	((x) >> PAGE_SHIFT)
>>>> -#define PFN_PHYS(x)	((x) << PAGE_SHIFT)
>>>> +#define PFN_PHYS(x)	((resource_size_t)(x) << PAGE_SHIFT)
>>>>     
>>>>         
>>> Busted on PAE with CONFIG_RESOURCES_64BIT=n, surely?
>>>   
>>>       
>> Not an option:
>>
>> config X86_PAE
>> 	def_bool n
>> 	prompt "PAE (Physical Address Extension) Support"
>> 	depends on X86_32 && !HIGHMEM4G
>> 	select RESOURCES_64BIT
>>
>>     
>
> err, OK, that was a bit arbitrary of us.
>
> Oh well, scrub the above assertion.
>
> Then again, do all architectures disallow 32-bit resource_size_t on
> 64-bit?  And there's ppc32's CONFIG_HIGHMEM option to think about.
>   

x86 and ppc were the only archs to touch it; they otherwise use the 
default of "default 64BIT".

I didn't look at the ppc use case.   I wasn't terribly concerned about 
current users of PFN_PHYS, because it presumably works OK for them.

>> "Properly" would be to define a phys_addr_t which can always represent a 
>> physical address.  We have one in x86-land, but I hesitate to add it for 
>> everyone else.
>>     
>
> hm.  It is a distinct and singular concept - it makes sense to have a
> specific type to represet "a physical address for memory".
>   

Yes.  We had to be particularly careful with it on x86 because of all 
the problems it's caused, but it is a generally useful thing to be able 
to talk about.

Shall we go with just using plain u64 (or unsigned long long if we want 
a really consistent type) in the meantime, and then waffle about 
introducing a new type everywhere?

Or we could redefine resource_size_t to be big enough to refer to any 
resource, including all memory.  It's close to being that anyway.

> nope ;) We don't know what type u64 has - some architectures use
> `unsigned long' (we might fix this soon).
>
> For now, a full cast to `unsigned long long' is needed.
>   

Yep.

    J


  reply	other threads:[~2008-08-07 23:45 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <489B6B40.5050705@goop.org>
     [not found] ` <20080807145648.ab3dfa90.akpm@linux-foundation.org>
2008-08-07 22:10   ` [PATCH] Make PFN_PHYS return a properly-formed physical address Jeremy Fitzhardinge
2008-08-07 23:27     ` Andrew Morton
2008-08-07 23:45       ` Jeremy Fitzhardinge [this message]
2008-08-08  0:06         ` Andrew Morton
2008-08-08  0:16           ` Jeremy Fitzhardinge
2008-08-11 19:38           ` [PATCH 1/2] add phys_addr_t for holding physical addresses Jeremy Fitzhardinge
2008-08-11 21:58             ` Benjamin Herrenschmidt
2008-08-11 22:15               ` Jeremy Fitzhardinge
2008-08-11 22:32                 ` Benjamin Herrenschmidt
2008-08-11 22:50                   ` Jeremy Fitzhardinge
2008-08-11 22:53                     ` Benjamin Herrenschmidt
2008-08-11 23:02                       ` Jeremy Fitzhardinge
2008-08-11 23:17                         ` Benjamin Herrenschmidt
2008-08-11 19:38           ` [PATCH 2/2] make PFN_PHYS explicitly return phys_addr_t Jeremy Fitzhardinge

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=489B8908.2010007@goop.org \
    --to=jeremy@goop.org \
    --cc=akpm@linux-foundation.org \
    --cc=ehabkost@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=x86@kernel.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.