Since you have 2G of RAM available according to your boot log, I suspect that you're having a conflict with UMA again. I would start there.
Yes, that seemed to be it.
I'm glad that narrowed it down for you.
I added excplicit specification for high tables in mainboard.c as follows:
high_tables_base = uma_memory_base - 0x4000000; high_tables_size = HIGH_TABLES_SIZE * 1024;
I also tried setting uma_memory_base to
uma_memory_base = msr.lo / 2;
instead of
uma_memory_base = msr.lo - uma_memory_size;
I wouldn't change that. I think it's easier to leave UMA at the end.
With 2048 MB RAM this sets UMA to 0x40000000.
From your log:
[ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] BIOS-e820: 0000000000001000 - 00000000000a0000 (usable) [ 0.000000] BIOS-e820: 00000000000c0000 - 00000000000f0000 (usable) [ 0.000000] BIOS-e820: 00000000000f0000 - 00000000000f1000 (reserved) [ 0.000000] BIOS-e820: 00000000000f1000 - 0000000080000000 (usable)
Until you see the correct areas reserved in the RAM map for high_tables and UMA, there's not much point in booting Linux. When those areas are reserved correctly they will show up in the table.
Thanks, Myles