Hello,
Following patch (fidvid.patch) adds support for FID/VID changes messages. Upon incoming SMAF message from CPU (C3 or FID/VID change), the SB will assert SLP# which is connected to LDTSTOP_L on K8 CPUs. Question is for how long. Imho for 100us. Which is more than plenty (2us required) I will try to justify this once I know what bios to set in SB.
Signed-off-by: Rudolf Marek r.marek@assembler.cz
Second patch just gives an example what needs to be in DSDT to make it actually work. Usually this part is stored in secondary DSDT table (SSDT), which is build in runtime in BIOS. The values are computed for the CPU used in the system and cannon be static. I dont know how to do the computations yet.
Rudolf
On Fri, Nov 09, 2007 at 11:03:07PM +0100, Rudolf Marek wrote:
Hello,
Following patch (fidvid.patch) adds support for FID/VID changes messages. Upon incoming SMAF message from CPU (C3 or FID/VID change), the SB will assert SLP# which is connected to LDTSTOP_L on K8 CPUs. Question is for how long. Imho for 100us. Which is more than plenty (2us required) I will try to justify this once I know what bios to set in SB.
Signed-off-by: Rudolf Marek r.marek@assembler.cz
Thanks, r2965.
I only committed the first patch for now; is the second one ready for being committed too or is it work in progress? Does it work?
Index: mainboard/asus/a8v-e_se/cache_as_ram_auto.c
--- mainboard/asus/a8v-e_se/cache_as_ram_auto.c (revision 2953) +++ mainboard/asus/a8v-e_se/cache_as_ram_auto.c (working copy) @@ -309,6 +309,12 @@ #endif init_timer(); ht_setup_chains_x(sysinfo); // it will init sblnk and sbbusn, nodes, sbdn
+#if K8_SET_FIDVID == 1
enable_fid_change();
init_fidvid_bsp(bsp_apicid);
+#endif
I dropped the '#if' part, the whole file where those two functions are defined is placed in a '#if K8_SET_FIDVID == 1'. Either way, your board sets K8_SET_FIDVID to 1, so it doesn't really matter.
Uwe.
I only committed the first patch for now; is the second one ready for being committed too or is it work in progress? Does it work?
Yes this is OK. Second is just for illustration. The LB should construct the bytecode of the second patch in runtime, because the content must be changed when processor is changed.
This code in second patch should be placed as "external symbols" in SSDT table. Putting them into the DSDT will work, but user is forced to grab correct values specific for his/her processor. This patch is for Opteron 175 CPUID 00020f32 I dont know yet how to construct those tables at runtime, nor I'm not sure how to create valid data for all processors.
I dropped the '#if' part, the whole file where those two functions are defined is placed in a '#if K8_SET_FIDVID == 1'. Either way, your board sets K8_SET_FIDVID to 1, so it doesn't really matter.
Ok. Thanks,
Rudolf