Submitter | Scott |
---|---|
Date | 2010-10-18 20:24:11 |
Message ID | <35B52E279BF8432189BEEB5D66BCA31F@m3a78> |
Download | mbox | patch |
Permalink | /patch/2141/ |
State | Accepted |
Headers | show |
Comments
On Mon, Oct 18, 2010 at 2:24 PM, Scott Duplichan <scott@notabs.org> wrote: > ] > ]> To reduce boot time, removing the double startup IPI and 10 ms > ]> delay from lapic_cpu_init.c should be considered. Because I can > ]> test this code only on recent AMD cpu models, it is only safe > ]> to apply the change in those cases. The following patch uses > ]> a compile time check to identify CPUs where the change is known > ]> to work. > Signed-off-by: Scott Duplichan <scott@notabs.org> Acked-by: Myles Watson <mylesgw@gmail.com> Thanks, Myles
Patch
Index: src/cpu/x86/lapic/lapic_cpu_init.c =================================================================== --- src/cpu/x86/lapic/lapic_cpu_init.c (revision 5965) +++ src/cpu/x86/lapic/lapic_cpu_init.c (working copy) @@ -113,7 +113,9 @@ } return 0; } +#if !defined (CONFIG_CPU_AMD_MODEL_10XXX) && !defined (CONFIG_CPU_AMD_MODEL_14XXX) mdelay(10); +#endif printk(BIOS_SPEW, "Deasserting INIT.\n"); @@ -143,7 +145,11 @@ start_eip = (unsigned long)_secondary_start; #endif +#if !defined (CONFIG_CPU_AMD_MODEL_10XXX) && !defined (CONFIG_CPU_AMD_MODEL_14XXX) num_starts = 2; +#else + num_starts = 1; +#endif /* * Run STARTUP IPI loop.
] ]> To reduce boot time, removing the double startup IPI and 10 ms ]> delay from lapic_cpu_init.c should be considered. Because I can ]> test this code only on recent AMD cpu models, it is only safe ]> to apply the change in those cases. The following patch uses ]> a compile time check to identify CPUs where the change is known ]> to work. Would a runtime check be better? ]Until Fam10 and K8 can use the same image, compile time is probably the ]correct way to do it. If there ends up being a long list of processors that ]don't need the wait, we could add a Kconfig option like ]CONFIG_NO_LAPIC_DELAY. ] ]> Signed-off-by: Scott Duplichan <scott@notabs.org> ]Acked-by: Myles Watson <mylesgw@gmail.com> ] ]> + #if !defined (CONFIG_CPU_AMD_MODEL_10XXX) && !defined ]> (CONFIG_CPU_AMD_MODEL_14XXX) ]> mdelay(10); ]> + #endif ]> ]> printk(BIOS_SPEW, "Deasserting INIT.\n"); ]> ]> @@ -144,6 +146,9 @@ ]> #endif ]> ]> num_starts = 2; ]> + #if defined (CONFIG_CPU_AMD_MODEL_10XXX) || defined ]> (CONFIG_CPU_AMD_MODEL_14XXX) ]> + num_starts = 1; ]> + #endif ] ]I'd prefer it if they both used the same logic. I think it will make it ]easier to update in the future. Maybe something like this: ] ]#if !defined (CONFIG_CPU_AMD_MODEL_10XXX) && !defined ](CONFIG_CPU_AMD_MODEL_14XXX) ] num_starts = 2; ]#else ] num_starts = 1; ]#endif ] ]Thanks, ]Myles ] Hello Myles, Thanks. Of course you are right, consistent logic is best... I also tried to make the indentation match the surrounding code. Signed-off-by: Scott Duplichan <scott@notabs.org>