Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-09-03 Thread Benjamin Herrenschmidt
On Wed, 2008-09-03 at 10:10 -0500, Becky Bruce wrote: > Actually, PTE_SIZE is already defined in hash_low_32.S, and it's the > size of the HPTE. I'll rename that to HPTE_SIZE and use PTE_SIZE for > the linux PTE. Good idea. Thanks. Cheers, Ben.

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-09-03 Thread Becky Bruce
On Sep 2, 2008, at 4:21 PM, Benjamin Herrenschmidt wrote: The reason I did that was to distinguish between the size of a software PTE entry, and the actual size of the hardware entry. In the case of 36b physical, the hardware PTE size is the same as it always is; but we've grown the Linux

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-09-02 Thread Benjamin Herrenschmidt
> The reason I did that was to distinguish between the size of a > software PTE entry, and the actual size of the hardware entry. In the > case of 36b physical, the hardware PTE size is the same as it always > is; but we've grown the Linux PTE. We can call it something else, or > I can c

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-09-02 Thread Becky Bruce
On Sep 1, 2008, at 12:19 AM, Benjamin Herrenschmidt wrote: Thanks for taking the time to dig through this :) +#ifdef CONFIG_PTE_64BIT +#define PTE_FLAGS_OFFSET 4 /* offset of PTE flags, in bytes */ +#define LNX_PTE_SIZE 8 /* size of a linux PTE, in bytes */ +#else

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-31 Thread Benjamin Herrenschmidt
> Could the stw to the same reservation granule as the stwcx cancel the > reservation on some implementations? It might I suppose ... In any case, see my replies to Becky. > Plus, if you're assuming that the > entry is currently invalid and all callers have the page table lock, do > we need

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-31 Thread Benjamin Herrenschmidt
> +#ifdef CONFIG_PTE_64BIT > +#define PTE_FLAGS_OFFSET 4 /* offset of PTE flags, in bytes */ > +#define LNX_PTE_SIZE 8 /* size of a linux PTE, in bytes */ > +#else > +#define PTE_FLAGS_OFFSET 0 > +#define LNX_PTE_SIZE 4 > +#endif s/LNX_PTE_SIZE/PTE_BYTES or PTE

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-31 Thread Benjamin Herrenschmidt
On Sat, 2008-08-30 at 11:24 -0500, Scott Wood wrote: > On Fri, Aug 29, 2008 at 08:42:01AM +1000, Benjamin Herrenschmidt wrote: > > For the non-SMP case, I think it should be possible to optimize it. The > > only thing that can happen at interrupt time is hashing of kernel or > > vmalloc/ioremap pag

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-30 Thread Scott Wood
On Fri, Aug 29, 2008 at 08:42:01AM +1000, Benjamin Herrenschmidt wrote: > For the non-SMP case, I think it should be possible to optimize it. The > only thing that can happen at interrupt time is hashing of kernel or > vmalloc/ioremap pages, which shouldn't compete with set_pte on those > pages, so

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-28 Thread Benjamin Herrenschmidt
> I understand what you're saying, I've been here before :) However, I > was never able to convince myself that it's safe without the lwarx/ > stwcx. There's hashing code that wanks around with the HASHPTE bit > doing a RMW without holding any lock (other than lwarx/stwcx-ing the > PTE it

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-28 Thread Becky Bruce
On Aug 28, 2008, at 11:07 AM, Scott Wood wrote: Becky Bruce wrote: I'm pretty sure I went through this in great detail at one point and concluded that I did in fact need the lwarx/stwcx. IIRC, it has to do with other non-set_pte_at writers not necessarily holding the page table lock. FYI

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-28 Thread Becky Bruce
Great, so *you* got my email, and I did not. I love our mailserver! On Aug 28, 2008, at 3:28 PM, Scott Wood wrote: Becky Bruce wrote: On Aug 28, 2008, at 11:07 AM, Scott Wood wrote: Becky Bruce wrote: I'm pretty sure I went through this in great detail at one point and concluded that I did

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-28 Thread Scott Wood
Becky Bruce wrote: On Aug 28, 2008, at 11:07 AM, Scott Wood wrote: Becky Bruce wrote: I'm pretty sure I went through this in great detail at one point and concluded that I did in fact need the lwarx/stwcx. IIRC, it has to do with other non-set_pte_at writers not necessarily holding the page t

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-28 Thread Scott Wood
Becky Bruce wrote: I'm pretty sure I went through this in great detail at one point and concluded that I did in fact need the lwarx/stwcx. IIRC, it has to do with other non-set_pte_at writers not necessarily holding the page table lock. FYI, the existing 32-bit PTE code is doing atomic updates

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-28 Thread Becky Bruce
On Aug 27, 2008, at 6:43 PM, Scott Wood wrote: Becky Bruce wrote: #if _PAGE_HASHPTE != 0 +#ifndef CONFIG_PTE_64BIT pte_update(ptep, ~_PAGE_HASHPTE, pte_val(pte) & ~_PAGE_HASHPTE); #else + /* +* We have to do the write of the 64b pte as 2 stores. This +* code assu

Re: [PATCH v2] POWERPC: Allow 32-bit pgtable code to support 36-bit physical

2008-08-27 Thread Scott Wood
Becky Bruce wrote: #if _PAGE_HASHPTE != 0 +#ifndef CONFIG_PTE_64BIT pte_update(ptep, ~_PAGE_HASHPTE, pte_val(pte) & ~_PAGE_HASHPTE); #else + /* +* We have to do the write of the 64b pte as 2 stores. This +* code assumes that the entry we're storing to is currently