On Mon, Mar 12, 2012 at 02:09:02PM +0100, Igor Mammedov wrote: > On 03/12/2012 11:14 AM, Gleb Natapov wrote: > >On Mon, Mar 12, 2012 at 10:52:18AM +0100, Igor Mammedov wrote: > >>On 03/11/2012 11:36 AM, Gleb Natapov wrote: > >>>On Sat, Mar 10, 2012 at 12:47:26PM +0100, Igor Mammedov wrote: > >>>>Reduce amount of consumed cpu time (i.e. don't spin forever) if > >>>>number of started cpus are more then expected. And print a bug > >>>>message into debug port. > >>>> > >>>>Signed-off-by: Igor Mammedov<imamm...@redhat.com> > >>>>--- > >>>> src/smp.c | 8 +++++++- > >>>> 1 files changed, 7 insertions(+), 1 deletions(-) > >>>> > >>>>diff --git a/src/smp.c b/src/smp.c > >>>>index 8c077a1..9933ac6 100644 > >>>>--- a/src/smp.c > >>>>+++ b/src/smp.c > >>>>@@ -115,8 +115,14 @@ smp_probe(void) > >>>> msleep(10); > >>>> } else { > >>>> u8 cmos_smp_count = inb_cmos(CMOS_BIOS_SMP_COUNT); > >>>>- while (cmos_smp_count + 1 != readl(&CountCPUs)) > >>>>+ while (cmos_smp_count + 1 != readl(&CountCPUs)) { > >>>>+ if (cmos_smp_count + 1< readl(&CountCPUs)) { > >>>>+ dprintf(1, "BUG: Expected %d cpu(s) but %d cpus > >>>>started\n", > >>>>+ cmos_smp_count + 1, readl(&CountCPUs)); > >>>Shouldn't we print it to the console too? > >>I'm not sure if it's possible to print at this stage, but I'll try and > >>re-post if it works. > >> > >If it is not possible currently may be we should move smp detection to > >later stage. Or do not hlt here and report error later. The easier for a > >user to see this error the easier it is for us to debug user's problems. > > It looks safe to move vga_setup() right after pci_setup() in post(). > However I can't tell what structures various option roms might access so > I'm not completely sure if it right thing to do. > Well you move it above "Setup interfaces that option roms may need" comment, so we can be sure it is not safe :)
I think moving smp detection to later stage should be safer. But now I am not even sure we should halt at all. May be warn the user and continue booting with cmos_smp_count = CountCPUs? > Does something like this look good to you? > (kvm guest boots without any issue and error prints as well if condition is > met) > > diff --git a/src/post.c b/src/post.c > index 43523dd..9358b49 100644 > --- a/src/post.c > +++ b/src/post.c > @@ -208,6 +208,9 @@ post(void) > pci_setup(); > smm_init(); > > + // Run vga option rom > + vga_setup(); > + > // Initialize internal tables > boot_setup(); > drive_setup(); > @@ -227,9 +230,6 @@ post(void) > mouse_setup(); > init_bios_tables(); > > - // Run vga option rom > - vga_setup(); > - > // Do hardware initialization (if running synchronously) > if (!CONFIG_THREADS || !CONFIG_THREAD_OPTIONROMS) { > init_hw(); > diff --git a/src/smp.c b/src/smp.c > index 42184a4..b11cb95 100644 > --- a/src/smp.c > +++ b/src/smp.c > @@ -138,8 +138,9 @@ smp_probe(void) > > while (cmos_smp_count + 1 != readl(&CountCPUs)) { > if (cmos_smp_count + 1 < readl(&CountCPUs)) { > - dprintf(1, "BUG: Expected %d cpu(s) but %d cpus started\n", > + printf("ERROR: Expected %d cpu(s) but %d cpus started.\n", > cmos_smp_count + 1, readl(&CountCPUs)); > + printf("Machine halted.\n"); > hlt(); > } > yield(); > > > > -- > ----- > Igor -- Gleb. _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org http://www.seabios.org/mailman/listinfo/seabios