HIGHMEM4G config for 1GB RAM on desktop?
[Resend because my fingers STILL type "@vger.rutgers.edu" if I'm not paying attention...]
Quoted 4 lines
In practice, I suspect 2/2 will do exactly what you want ... and what 99.9% of people want actually ;-) We could add more options, but be sure to mark anything that's not 1GB aligned as not suitable for PAE (as the 0.5 split was).
But if you're using PAE, you've got > 4G of RAM, so there's no need to be clever trying to avoid HIGHMEM options.
Unfortunately, I just had a server with Con's patch detonate overnight (Oops in interrupt -> panic; details in separate e-mail), and wli tells me that there are additional places in the code that need fixing.
I notice that all previous patches had the kernel range a power of 2 in size. Is this required somewhere? I thought it was just that the kernel had to start at a PGD boundary (4M on normal x86, 1G on PAE).
If 128M is always enough, a split at 0xb800000 seems possible, but giving it an extra 128M seems like a nice bit of safety for PCI devices.
PATCH 1/1 (was Re: HIGHMEM4G config for 1GB RAM on desktop?)
Quoted 2 lines
wli tells me that there are additional places in the code that need fixing.
Looks like arch/i386/kernel/doublefault.c is one place in the code that hardcodes the assumption that PAGE_OFFSET == 0xC0000000. Here's a patch that fixes that.
(Of course this doesn't really fix anything except debugging output)
- Roland
arch/i386/kernel/doublefault.c +1 -1
@@ -13,7 +13,7 @@static unsigned long doublefault_stack[DOUBLEFAULT_STACKSIZE ];#define STACK_START (unsigned long)(doublefault_stack+DOUBLEFAULT_STACKSIZE) -#define ptr_ok (x) ((x) > 0xc0000000 && (x) < 0xc1000000) +#define ptr_ok (x) ((x) > PAGE_OFFSET && (x) < PAGE_OFFSET + 0x1000000)static void doublefault_fn (void ) {
Quoted 2 lines · On Fri, 06 Aug 2004 12:52:36 -0000, [email protected] said:
But if you're using PAE, you've got > 4G of RAM, so there's no need to be clever trying to avoid HIGHMEM options.
Poking around in arch/i386/mm/init.c finds this:
#ifdef CONFIG_X86_PAE
int nx_enabled = 0;
static void __init set_nx(void)
{
unsigned int v[4], l, h;
if (cpu_has_pae && (cpuid_eax(0x80000000) > 0x80000001)) {I could certainly see somebody wanting to use the NX stuff with only 2G of RAM.....