[coreboot] patch: init gx cache earlier.
Marc Jones
Marc.Jones at AMD.com
Wed Feb 6 02:38:46 CET 2008
Carl-Daniel Hailfinger wrote:
> On 05.02.2008 00:27, Marc Jones wrote:
>
>> ron minnich wrote:
>>
>>> Why can't we shadow?
>>>
>> We could.
>>
>
> Even at the top of the 4G address range? If that is possible, I'd vote
> to shadow the bootblock only to save RAM.
>
> Some comments on the patch:
>
>
>> Cache the ROM to speed up stage2 and payload decompression.
>>
>> Due to some cache coherency snoop problems across PCI GeodeLc needs the ROM cache properties to be write-serialize + cache disabled by runtime.
>> Add pre_payload() call to each mainboard as the final coreboot function before the payload is called.
>>
>> Signed-off by: Marc Jones <marc.jones at amd.com>
>>
>> Index: coreboot-v3/northbridge/amd/geodelx/geodelxinit.c
>> ===================================================================
>> --- coreboot-v3.orig/northbridge/amd/geodelx/geodelxinit.c 2008-02-04 13:35:52.000000000 -0700
>> +++ coreboot-v3/northbridge/amd/geodelx/geodelxinit.c 2008-02-04 13:36:12.000000000 -0700
>> @@ -658,7 +658,7 @@
>> #define SYSMEM_RCONF_WRITETHROUGH 8
>> #define DEVRC_RCONF_DEFAULT 0x21
>> #define ROMBASE_RCONF_DEFAULT 0xFFFC0000
>> -#define ROMRC_RCONF_DEFAULT 0x25
>> +#define ROMRC_RCONF_DEFAULT 0x04
>>
>>
>
> Maybe keep the 0x25 as ROMRC_RCONF_SAFE?
>
>
ok
>>
>> /**
>> * TODO.
>> Index: coreboot-v3/mainboard/adl/msm800sev/stage1.c
>> ===================================================================
>> --- coreboot-v3.orig/mainboard/adl/msm800sev/stage1.c 2008-02-04 15:41:14.000000000 -0700
>> +++ coreboot-v3/mainboard/adl/msm800sev/stage1.c 2008-02-04 15:50:04.000000000 -0700
>> @@ -53,3 +53,15 @@
>> cs5536_disable_internal_uart();
>> w83627hf_enable_serial(0x2e, SERIAL_DEV, SERIAL_IOBASE);
>> }
>> +
>> +void pre_payload(void)
>> +{
>> + struct msr msr;
>> +
>> + /* Set ROM cache properties for runtime. */
>> + msr = rdmsr(CPU_RCONF_DEFAULT);
>> + msr.hi &= ~(0xFF << 24); // clear ROMRC
>> + msr.hi |= 0x25 << 24; // set WS, CD, WP
>>
>>
>
> Use ROMRC_RCONF_SAFE instead of 0x25?
>
>
sure
>> + wrmsr(CPU_RCONF_DEFAULT, msr);
>> + banner(BIOS_DEBUG, "pre_payload: done");
>> +}
>>
>
>
> pre_payload() is not board specific, but Geode LX-specific.
> geodelxinit.c may be a more appropriate location.
>
>
Correct, but I foresee other non-Geode platforms needing a call just
prior to the payload running but I am flexible on this.
Do others have an opinion?
Marc
--
Marc Jones
Senior Firmware Engineer
(970) 226-9684 Office
mailto:Marc.Jones at amd.com
http://www.amd.com/embeddedprocessors
More information about the coreboot
mailing list