Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-11 Thread Benjamin Herrenschmidt

> Are you *sure* you can see all 4GB?  I thought we lost some of the 32- 
> bit PCI address space for PCI IO..  Disclaimer: I'm no expert on  
> PCI :)

You are right. I didn't think that through when I replied. We do lose
some of it for MMIO (not IO). So we cannot really go all the way to 4G
because we can't DMA to all of it, right.

> FYI, I'm *very* close to having swiotlb fully functional on powerpc to  
> support larger RAM - I am able to boot with 6GB on 8641 right now.   
> There are some bugs that I'm still shaking out - I hope to push this  
> out in the next couple of weeks.

That won't make .27 then ?

Cheers,
Ben.


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-10 Thread Becky Bruce


On Jul 9, 2008, at 7:44 PM, Josh Boyer wrote:


On Thu, 10 Jul 2008 06:39:39 +1000
Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:


On Wed, 2008-07-09 at 16:22 -0400, Josh Boyer wrote:

On Thu, 10 Jul 2008 06:02:38 +1000
Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:


On Wed, 2008-07-09 at 15:44 +0200, Stefan Roese wrote:
This patch enables 32bit PPC's (with 36bit physical address  
space, e.g.

IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
replacing types (unsigned long -> phys_addr_t).

Tested on an AMCC Katmai with 4GB of DDR2.

Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>


But DMAs will break no ?


How?


Hrm... forget it. It's fine up to 4G of RAM... (ie. as long as DMA is
below 32 bits).


Right.  We haven't really dealt with anything larger than 4 GiB, and  
we

certainly aren't dealing with discontiguous DRAM due to I/O ranges.


Are you *sure* you can see all 4GB?  I thought we lost some of the 32- 
bit PCI address space for PCI IO..  Disclaimer: I'm no expert on  
PCI :)


FYI, I'm *very* close to having swiotlb fully functional on powerpc to  
support larger RAM - I am able to boot with 6GB on 8641 right now.   
There are some bugs that I'm still shaking out - I hope to push this  
out in the next couple of weeks.


Cheers,
B

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-09 Thread Josh Boyer
On Thu, 10 Jul 2008 06:39:39 +1000
Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:

> On Wed, 2008-07-09 at 16:22 -0400, Josh Boyer wrote:
> > On Thu, 10 Jul 2008 06:02:38 +1000
> > Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:
> > 
> > > On Wed, 2008-07-09 at 15:44 +0200, Stefan Roese wrote:
> > > > This patch enables 32bit PPC's (with 36bit physical address space, e.g.
> > > > IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
> > > > replacing types (unsigned long -> phys_addr_t).
> > > > 
> > > > Tested on an AMCC Katmai with 4GB of DDR2.
> > > > 
> > > > Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>
> > > 
> > > But DMAs will break no ?
> > 
> > How?
> 
> Hrm... forget it. It's fine up to 4G of RAM... (ie. as long as DMA is
> below 32 bits).

Right.  We haven't really dealt with anything larger than 4 GiB, and we
certainly aren't dealing with discontiguous DRAM due to I/O ranges.

josh
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-09 Thread Benjamin Herrenschmidt
On Wed, 2008-07-09 at 16:22 -0400, Josh Boyer wrote:
> On Thu, 10 Jul 2008 06:02:38 +1000
> Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:
> 
> > On Wed, 2008-07-09 at 15:44 +0200, Stefan Roese wrote:
> > > This patch enables 32bit PPC's (with 36bit physical address space, e.g.
> > > IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
> > > replacing types (unsigned long -> phys_addr_t).
> > > 
> > > Tested on an AMCC Katmai with 4GB of DDR2.
> > > 
> > > Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>
> > 
> > But DMAs will break no ?
> 
> How?

Hrm... forget it. It's fine up to 4G of RAM... (ie. as long as DMA is
below 32 bits).

Ben.


___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-09 Thread Josh Boyer
On Thu, 10 Jul 2008 06:02:38 +1000
Benjamin Herrenschmidt <[EMAIL PROTECTED]> wrote:

> On Wed, 2008-07-09 at 15:44 +0200, Stefan Roese wrote:
> > This patch enables 32bit PPC's (with 36bit physical address space, e.g.
> > IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
> > replacing types (unsigned long -> phys_addr_t).
> > 
> > Tested on an AMCC Katmai with 4GB of DDR2.
> > 
> > Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>
> 
> But DMAs will break no ?

How?

josh
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-09 Thread Benjamin Herrenschmidt
On Wed, 2008-07-09 at 15:44 +0200, Stefan Roese wrote:
> This patch enables 32bit PPC's (with 36bit physical address space, e.g.
> IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
> replacing types (unsigned long -> phys_addr_t).
> 
> Tested on an AMCC Katmai with 4GB of DDR2.
> 
> Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>

But DMAs will break no ?

Ben.

> ---
>  arch/powerpc/mm/init_32.c  |4 ++--
>  arch/powerpc/mm/mem.c  |8 
>  arch/powerpc/mm/mmu_decl.h |4 ++--
>  3 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
> index 1952b4d..325ccdd 100644
> --- a/arch/powerpc/mm/init_32.c
> +++ b/arch/powerpc/mm/init_32.c
> @@ -56,8 +56,8 @@
>  
>  DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
>  
> -unsigned long total_memory;
> -unsigned long total_lowmem;
> +phys_addr_t total_memory;
> +phys_addr_t total_lowmem;
>  
>  phys_addr_t memstart_addr = (phys_addr_t)~0ull;
>  EXPORT_SYMBOL(memstart_addr);
> diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
> index 51f82d8..55ef772 100644
> --- a/arch/powerpc/mm/mem.c
> +++ b/arch/powerpc/mm/mem.c
> @@ -329,7 +329,7 @@ static int __init mark_nonram_nosave(void)
>  void __init paging_init(void)
>  {
>   unsigned long total_ram = lmb_phys_mem_size();
> - unsigned long top_of_ram = lmb_end_of_DRAM();
> + phys_addr_t top_of_ram = lmb_end_of_DRAM();
>   unsigned long max_zone_pfns[MAX_NR_ZONES];
>  
>  #ifdef CONFIG_PPC32
> @@ -348,10 +348,10 @@ void __init paging_init(void)
>   kmap_prot = PAGE_KERNEL;
>  #endif /* CONFIG_HIGHMEM */
>  
> - printk(KERN_DEBUG "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
> -top_of_ram, total_ram);
> + printk(KERN_DEBUG "Top of RAM: 0x%llx, Total RAM: 0x%lx\n",
> +(u64)top_of_ram, total_ram);
>   printk(KERN_DEBUG "Memory hole size: %ldMB\n",
> -(top_of_ram - total_ram) >> 20);
> +(long int)((top_of_ram - total_ram) >> 20));
>   memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
>  #ifdef CONFIG_HIGHMEM
>   max_zone_pfns[ZONE_DMA] = lowmem_end_addr >> PAGE_SHIFT;
> diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
> index 0480225..4e46c63 100644
> --- a/arch/powerpc/mm/mmu_decl.h
> +++ b/arch/powerpc/mm/mmu_decl.h
> @@ -49,8 +49,8 @@ extern unsigned int num_tlbcam_entries;
>  extern unsigned long ioremap_bot;
>  extern unsigned long __max_low_memory;
>  extern phys_addr_t __initial_memory_limit_addr;
> -extern unsigned long total_memory;
> -extern unsigned long total_lowmem;
> +extern phys_addr_t total_memory;
> +extern phys_addr_t total_lowmem;
>  extern phys_addr_t memstart_addr;
>  extern phys_addr_t lowmem_end_addr;
>  

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-09 Thread Stefan Roese
On Wednesday 09 July 2008, Kumar Gala wrote:
> On Jul 9, 2008, at 8:44 AM, Stefan Roese wrote:
> > This patch enables 32bit PPC's (with 36bit physical address space,
> > e.g.
> > IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
> > replacing types (unsigned long -> phys_addr_t).
>
> should the commit header really be >= 4G.  I don't think there is any
> issue with 2-4G support as it stands.

Right. I'll fix this up and resubmit.

Thanks.

Best regards,
Stefan
___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


Re: [PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-09 Thread Kumar Gala


On Jul 9, 2008, at 8:44 AM, Stefan Roese wrote:

This patch enables 32bit PPC's (with 36bit physical address space,  
e.g.

IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
replacing types (unsigned long -> phys_addr_t).


should the commit header really be >= 4G.  I don't think there is any  
issue with 2-4G support as it stands.



Tested on an AMCC Katmai with 4GB of DDR2.

Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>


- k

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev


[PATCH] powerpc: Fix problems with 32bit PPC's running with more than 2GB of RAM

2008-07-09 Thread Stefan Roese
This patch enables 32bit PPC's (with 36bit physical address space, e.g.
IBM/AMCC PPC44x) to run with more than 2GB of RAM. Mostly its just
replacing types (unsigned long -> phys_addr_t).

Tested on an AMCC Katmai with 4GB of DDR2.

Signed-off-by: Stefan Roese <[EMAIL PROTECTED]>
---
 arch/powerpc/mm/init_32.c  |4 ++--
 arch/powerpc/mm/mem.c  |8 
 arch/powerpc/mm/mmu_decl.h |4 ++--
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c
index 1952b4d..325ccdd 100644
--- a/arch/powerpc/mm/init_32.c
+++ b/arch/powerpc/mm/init_32.c
@@ -56,8 +56,8 @@
 
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
 
-unsigned long total_memory;
-unsigned long total_lowmem;
+phys_addr_t total_memory;
+phys_addr_t total_lowmem;
 
 phys_addr_t memstart_addr = (phys_addr_t)~0ull;
 EXPORT_SYMBOL(memstart_addr);
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 51f82d8..55ef772 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -329,7 +329,7 @@ static int __init mark_nonram_nosave(void)
 void __init paging_init(void)
 {
unsigned long total_ram = lmb_phys_mem_size();
-   unsigned long top_of_ram = lmb_end_of_DRAM();
+   phys_addr_t top_of_ram = lmb_end_of_DRAM();
unsigned long max_zone_pfns[MAX_NR_ZONES];
 
 #ifdef CONFIG_PPC32
@@ -348,10 +348,10 @@ void __init paging_init(void)
kmap_prot = PAGE_KERNEL;
 #endif /* CONFIG_HIGHMEM */
 
-   printk(KERN_DEBUG "Top of RAM: 0x%lx, Total RAM: 0x%lx\n",
-  top_of_ram, total_ram);
+   printk(KERN_DEBUG "Top of RAM: 0x%llx, Total RAM: 0x%lx\n",
+  (u64)top_of_ram, total_ram);
printk(KERN_DEBUG "Memory hole size: %ldMB\n",
-  (top_of_ram - total_ram) >> 20);
+  (long int)((top_of_ram - total_ram) >> 20));
memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
 #ifdef CONFIG_HIGHMEM
max_zone_pfns[ZONE_DMA] = lowmem_end_addr >> PAGE_SHIFT;
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h
index 0480225..4e46c63 100644
--- a/arch/powerpc/mm/mmu_decl.h
+++ b/arch/powerpc/mm/mmu_decl.h
@@ -49,8 +49,8 @@ extern unsigned int num_tlbcam_entries;
 extern unsigned long ioremap_bot;
 extern unsigned long __max_low_memory;
 extern phys_addr_t __initial_memory_limit_addr;
-extern unsigned long total_memory;
-extern unsigned long total_lowmem;
+extern phys_addr_t total_memory;
+extern phys_addr_t total_lowmem;
 extern phys_addr_t memstart_addr;
 extern phys_addr_t lowmem_end_addr;
 
-- 
1.5.6.2

___
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev