LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Kernel (http://www.linuxquestions.org/questions/linux-kernel-70/)
-   -   PAE support in linux-2.6.29.* (http://www.linuxquestions.org/questions/linux-kernel-70/pae-support-in-linux-2-6-29-%2A-722430/)

vonbiber 04-29-2009 04:22 AM

PAE support in linux-2.6.29.*
 
I have a laptop with 4GB of RAM.
I use slackware 12.2.
I built a recent kernel (2.6.29.1) which I currently use.
Only 3GB of RAM are displayed when I
# free
I read somewhere after googling that you could have
linux see up to 64GB even on 32-bit if you set up
CONFIG_X86_PAE while building the kernel

I did a grep of PAE in my current config
and grep 'CONFIG_X86_'
None of these showed any PAE string

Does anybody know where this setting is located?
Perhaps they changed the name recently?

syg00 04-29-2009 04:55 AM

If you are seeing 3 Gig, you have the appropriate option selected. I don't have access to 32-bit system, but try a grep for highmem.
The missing memory is probably a motherboard limitation.

johnsfine 04-29-2009 07:33 AM

Quote:

Originally Posted by syg00 (Post 3524484)
If you are seeing 3 Gig, you have the appropriate option selected.

I don't think that is correct, but I'm not certain. I just did some more google searches on
CONFIG_HIGHMEM64G
and
CONFIG_X86_PAE

But I still can't figure out which config options enable which actual features.

I do understand the underlying features. Without using PAE, you only have access to 4GB of physical address space which gives you access to less than 4GB (typically 3.25GB) of ram.

The only 32 bit system I have handy with 4GB of ram is an old Centos system. Its config has CONFIG_HIGHMEM64G set and doesn't mention CONFIG_X86_PAE at all.

There is some feature that I think may be part of CONFIG_HIGHMEM64G that makes the kernel use a separate 4GB virtual address from the process 4GB virtual address space. (To support more than 16GB physical, the kernel needs a larger virtual address space). I hope I don't have that enabled on that old Centos system, but I'm not sure. I hope you can have PAE without that (I know on other old Centos systems I had PAE without splitting the address space).

Quote:

The missing memory is probably a motherboard limitation.
That is possible and worth checking. See my post at
http://www.linuxquestions.org/questi...40#post3411940

If that table of data from the BIOS includes the extra chunk outside 4GB of address space then the motherboard and BIOS are OK for a full 4GB of ram and your problem is lack of PAE in the kernel. If that table doesn't include the extra chunk, then the problem is in the motherboard or BIOS.

johnsfine 04-30-2009 06:25 AM

Quote:

Originally Posted by vonbiber (Post 3524454)
I built a recent kernel (2.6.29.1) which I currently use.

I was either reading carelessly, or confusing this thread with a similar one.

I didn't notice until just now the important detail that you already have all the files and knowledge needed to build a new kernel.

So that means the easiest path is try it and see.

From your post at
http://www.linuxquestions.org/questi...96#post3525496
I see
Quote:

# CONFIG_HIGHMEM64G is not set
and I see your BIOS and motherboard are not the problem.

I'm pretty sure CONFIG_HIGHMEM64G will add PAE support. Try it and see whether it just adds PAE support or also does anything you don't want.

Quakeboy02 04-30-2009 11:37 AM

Quote:

Originally Posted by johnsfine (Post 3525706)
I'm pretty sure CONFIG_HIGHMEM64G will add PAE support. Try it and see whether it just adds PAE support or also does anything you don't want.

I haven't tried 2.6.29, but in 2.6.28, if you use make menuconfig or xconfig, rather than just editing the config file, then, yes, that enables PAE.

vonbiber 05-02-2009 03:47 AM

figured it out
 
yesterday I built linux-2.6.29.2
and this time in
# make menuconfig
instead of checking 'up to 4GB' of RAM I checked '64GB'
After building and rebooting I got the right total
amount of RAM displayed

Excerpts from my config

# Linux kernel version: 2.6.29.2
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
# CONFIG_X86_64 is not set
CONFIG_X86=y
CONFIG_ARCH_DEFCONFIG="arch/x86/configs/i386_defconfig"
#
CONFIG_MCORE2=y
# CONFIG_GENERIC_CPU is not set
CONFIG_X86_GENERIC=y
CONFIG_X86_CPU=y
...
#
CONFIG_X86_CMPXCHG64=y
...
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_HIGHMEM=y
CONFIG_X86_PAE=y
CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
...
CONFIG_PHYS_ADDR_T_64BIT=y

Quakeboy02 05-02-2009 12:14 PM

Glad to see it worked!


All times are GMT -5. The time now is 07:18 PM.