Hello, I have a PPC board with an address width fixed to 32bits, so I can address 4GB.
M M M M M M M 0 0 0 0 0 1 e 0 2 8 c e e f --------------------------------------------------------------------------- --- | Physical | | PCI | Kernel | Kernel | User | Peripheral | | RAM | unused | memory | memory | reserved | memory | mapping | | | | | kmalloc | | vmalloc | | | ex 512MB | | ex 1GB | ex 512MB | 16MB | | ex 32MB | | 2GB max | 1GB max | max ? | | 464MB max | | --------------------------------------------------------------------------- --- (0) (1) (2) 00M stand for 0x00000000 (0) kernel_base (1) vmalloc_start (2) vmalloc_end The exemple above shows a classical(?) mapping with a physical RAM of 512MB. The physical RAM can growth up to 2GB, but if the kernel maps a Kernel memory of 2GB, there is no more place for the other items. The 4GB are eated. Even with only 512MB of RAM, the kernel can't fully vmalloc it for user. I know that the kernel and drivers kmalloc in Kernel memory which has the full space but when the users wants more RAM, it is for vmallocations. Now when the physical RAM increases, the User memory is reduced for vmalloc. And I don't talk about Peripheral mappings which also reduce the User memory. So I'm under the impression to be cornered in my shoes. Any idea, book, article, prediction would be welcome. Thanks Laurent