From: Kevin O'Connor <kevin@koconnor.net> To: "Dr. David Alan Gilbert" <dgilbert@redhat.com> Cc: Bandan Das <bsd@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, kraxel@redhat.com, Andrey Korolyov <andrey@xdel.ru>, "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, "kvm@vger.kernel.org" <kvm@vger.kernel.org> Subject: Re: [Qemu-devel] E5-2620v2 - emulation stop error Date: Wed, 11 Mar 2015 14:40:39 -0400 [thread overview] Message-ID: <20150311184039.GA7341@morn.localdomain> (raw) In-Reply-To: <20150311175904.GN2334@work-vm> On Wed, Mar 11, 2015 at 05:59:04PM +0000, Dr. David Alan Gilbert wrote: > * Kevin O'Connor (kevin@koconnor.net) wrote: > > On Wed, Mar 11, 2015 at 04:52:03PM +0000, Dr. David Alan Gilbert wrote: > > > * Kevin O'Connor (kevin@koconnor.net) wrote: > > > > So, I couldn't get this to fail on my older AMD machine at all with > > > > the default SeaBIOS code. But, when I change the code with the patch > > > > below, it failed right away. > > [...] > > > > And the failed debug output looks like: > > > > > > > > SeaBIOS (version rel-1.8.0-7-gd23eba6-dirty-20150311_121819-morn.localdomain) > > > > [...] > > > > cmos_smp_count0=20 > > > > [...] > > > > cmos_smp_count=1 > > > > cmos_smp_count2=1/20 > > > > Found 1 cpu(s) max supported 20 cpu(s) > > > > > > > > I'm going to check the assembly for a compiler error, but is it > > > > possible QEMU is returning incorrect data in cmos index 0x5f? > > > > I checked the SeaBIOS assembler and it looks sane. So, I think the > > question is, why is QEMU sometimes returning a 0 instead of 127 from > > cmos 0x5f. > > My reading of the logs I've just created is that qemu doesn't think > it's ever being asked to read 5f in the failed case: > > good: > > pc_cmos_init 5f setting smp_cpus=20 > cmos: read index=0x0f val=0x00 > cmos: read index=0x34 val=0x00 > cmos: read index=0x35 val=0x3f > cmos: read index=0x38 val=0x30 > cmos: read index=0x3d val=0x12 > cmos: read index=0x38 val=0x30 > cmos: read index=0x0b val=0x02 > cmos: read index=0x0d val=0x80 > cmos: read index=0x5f val=0x13 Yeh! > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 > > bad: > pc_cmos_init 5f setting smp_cpus=20 > cmos: read index=0x0f val=0x00 > cmos: read index=0x34 val=0x00 > cmos: read index=0x35 val=0x3f > cmos: read index=0x38 val=0x30 > cmos: read index=0x3d val=0x12 > cmos: read index=0x38 val=0x30 > cmos: read index=0x0b val=0x02 > cmos: read index=0x0d val=0x80 Oh! > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 For what it's worth, I can't seem to trigger the problem if I move the cmos read above the SIPI/LAPIC code (see patch below). I used this command line: while true; do (sleep 5; echo -e '\001cq\n')| ../qemu/qemu-git/x86_64-softmmu/qemu-system-x86_64 -chardev file,path=foo.`date +%s`,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios -machine pc-i440fx-2.0,accel=kvm -m 1024 -smp 128 -nographic -device sga -L test 2>&1 | tee /tmp/qemu.op; grep "internal error" /tmp/qemu.op -q && break; done This is on an "AMD Phenom(tm) II X6 1090T Processor" machine. -Kevin --- a/src/fw/smp.c +++ b/src/fw/smp.c @@ -107,6 +107,8 @@ smp_setup(void) | (((u32)entry_smp - BUILD_BIOS_ADDR) << 8)); *(u64*)BUILD_AP_BOOT_ADDR = new; + u8 cmos_smp_count = rtc_read(CMOS_BIOS_SMP_COUNT) + 1; + // enable local APIC u32 val = readl(APIC_SVR); writel(APIC_SVR, val | APIC_ENABLED); @@ -127,7 +129,7 @@ smp_setup(void) writel(APIC_ICR_LOW, 0x000C4600 | sipi_vector); // Wait for other CPUs to process the SIPI. - u8 cmos_smp_count = rtc_read(CMOS_BIOS_SMP_COUNT) + 1; + dprintf(1, "cmos_smp_count=%d\n", cmos_smp_count); while (cmos_smp_count != CountCPUs) asm volatile( // Release lock and allow other processors to use the stack. @@ -140,6 +142,8 @@ smp_setup(void) : "+m" (SMPLock), "+m" (SMPStack) : : "cc", "memory"); yield(); + dprintf(1, "cmos_smp_count2=%d/%d\n", cmos_smp_count + , rtc_read(CMOS_BIOS_SMP_COUNT) + 1); // Restore memory. *(u64*)BUILD_AP_BOOT_ADDR = old; diff --git a/src/post.c b/src/post.c index 9ea5620..dc11c72 100644 --- a/src/post.c +++ b/src/post.c @@ -170,6 +170,7 @@ platform_hardware_setup(void) clock_setup(); // Platform specific setup + dprintf(1, "cmos_smp_count0=%d\n", rtc_read(CMOS_BIOS_SMP_COUNT) + 1); qemu_platform_setup(); coreboot_platform_setup(); }
WARNING: multiple messages have this Message-ID (diff)
From: Kevin O'Connor <kevin@koconnor.net> To: "Dr. David Alan Gilbert" <dgilbert@redhat.com> Cc: Andrey Korolyov <andrey@xdel.ru>, "kvm@vger.kernel.org" <kvm@vger.kernel.org>, "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>, Bandan Das <bsd@redhat.com>, kraxel@redhat.com, Paolo Bonzini <pbonzini@redhat.com> Subject: Re: [Qemu-devel] E5-2620v2 - emulation stop error Date: Wed, 11 Mar 2015 14:40:39 -0400 [thread overview] Message-ID: <20150311184039.GA7341@morn.localdomain> (raw) In-Reply-To: <20150311175904.GN2334@work-vm> On Wed, Mar 11, 2015 at 05:59:04PM +0000, Dr. David Alan Gilbert wrote: > * Kevin O'Connor (kevin@koconnor.net) wrote: > > On Wed, Mar 11, 2015 at 04:52:03PM +0000, Dr. David Alan Gilbert wrote: > > > * Kevin O'Connor (kevin@koconnor.net) wrote: > > > > So, I couldn't get this to fail on my older AMD machine at all with > > > > the default SeaBIOS code. But, when I change the code with the patch > > > > below, it failed right away. > > [...] > > > > And the failed debug output looks like: > > > > > > > > SeaBIOS (version rel-1.8.0-7-gd23eba6-dirty-20150311_121819-morn.localdomain) > > > > [...] > > > > cmos_smp_count0=20 > > > > [...] > > > > cmos_smp_count=1 > > > > cmos_smp_count2=1/20 > > > > Found 1 cpu(s) max supported 20 cpu(s) > > > > > > > > I'm going to check the assembly for a compiler error, but is it > > > > possible QEMU is returning incorrect data in cmos index 0x5f? > > > > I checked the SeaBIOS assembler and it looks sane. So, I think the > > question is, why is QEMU sometimes returning a 0 instead of 127 from > > cmos 0x5f. > > My reading of the logs I've just created is that qemu doesn't think > it's ever being asked to read 5f in the failed case: > > good: > > pc_cmos_init 5f setting smp_cpus=20 > cmos: read index=0x0f val=0x00 > cmos: read index=0x34 val=0x00 > cmos: read index=0x35 val=0x3f > cmos: read index=0x38 val=0x30 > cmos: read index=0x3d val=0x12 > cmos: read index=0x38 val=0x30 > cmos: read index=0x0b val=0x02 > cmos: read index=0x0d val=0x80 > cmos: read index=0x5f val=0x13 Yeh! > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 > > bad: > pc_cmos_init 5f setting smp_cpus=20 > cmos: read index=0x0f val=0x00 > cmos: read index=0x34 val=0x00 > cmos: read index=0x35 val=0x3f > cmos: read index=0x38 val=0x30 > cmos: read index=0x3d val=0x12 > cmos: read index=0x38 val=0x30 > cmos: read index=0x0b val=0x02 > cmos: read index=0x0d val=0x80 Oh! > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 > cmos: read index=0x0f val=0x00 For what it's worth, I can't seem to trigger the problem if I move the cmos read above the SIPI/LAPIC code (see patch below). I used this command line: while true; do (sleep 5; echo -e '\001cq\n')| ../qemu/qemu-git/x86_64-softmmu/qemu-system-x86_64 -chardev file,path=foo.`date +%s`,id=seabios -device isa-debugcon,iobase=0x402,chardev=seabios -machine pc-i440fx-2.0,accel=kvm -m 1024 -smp 128 -nographic -device sga -L test 2>&1 | tee /tmp/qemu.op; grep "internal error" /tmp/qemu.op -q && break; done This is on an "AMD Phenom(tm) II X6 1090T Processor" machine. -Kevin --- a/src/fw/smp.c +++ b/src/fw/smp.c @@ -107,6 +107,8 @@ smp_setup(void) | (((u32)entry_smp - BUILD_BIOS_ADDR) << 8)); *(u64*)BUILD_AP_BOOT_ADDR = new; + u8 cmos_smp_count = rtc_read(CMOS_BIOS_SMP_COUNT) + 1; + // enable local APIC u32 val = readl(APIC_SVR); writel(APIC_SVR, val | APIC_ENABLED); @@ -127,7 +129,7 @@ smp_setup(void) writel(APIC_ICR_LOW, 0x000C4600 | sipi_vector); // Wait for other CPUs to process the SIPI. - u8 cmos_smp_count = rtc_read(CMOS_BIOS_SMP_COUNT) + 1; + dprintf(1, "cmos_smp_count=%d\n", cmos_smp_count); while (cmos_smp_count != CountCPUs) asm volatile( // Release lock and allow other processors to use the stack. @@ -140,6 +142,8 @@ smp_setup(void) : "+m" (SMPLock), "+m" (SMPStack) : : "cc", "memory"); yield(); + dprintf(1, "cmos_smp_count2=%d/%d\n", cmos_smp_count + , rtc_read(CMOS_BIOS_SMP_COUNT) + 1); // Restore memory. *(u64*)BUILD_AP_BOOT_ADDR = old; diff --git a/src/post.c b/src/post.c index 9ea5620..dc11c72 100644 --- a/src/post.c +++ b/src/post.c @@ -170,6 +170,7 @@ platform_hardware_setup(void) clock_setup(); // Platform specific setup + dprintf(1, "cmos_smp_count0=%d\n", rtc_read(CMOS_BIOS_SMP_COUNT) + 1); qemu_platform_setup(); coreboot_platform_setup(); }
next prev parent reply other threads:[~2015-03-11 18:40 UTC|newest] Thread overview: 157+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-03-05 22:14 E5-2620v2 - emulation stop error Andrey Korolyov 2015-03-05 22:14 ` [Qemu-devel] " Andrey Korolyov 2015-03-05 23:44 ` Andrey Korolyov 2015-03-05 23:44 ` [Qemu-devel] " Andrey Korolyov 2015-03-06 16:57 ` Bandan Das 2015-03-06 16:57 ` Bandan Das 2015-03-07 0:00 ` Andrey Korolyov 2015-03-10 14:24 ` Andrey Korolyov 2015-03-10 16:57 ` Dr. David Alan Gilbert 2015-03-10 18:08 ` Andrey Korolyov 2015-03-10 18:16 ` Dr. David Alan Gilbert 2015-03-10 18:21 ` Andrey Korolyov 2015-03-10 19:30 ` Paolo Bonzini 2015-03-10 18:10 ` Paolo Bonzini 2015-03-10 18:21 ` Bandan Das 2015-03-10 18:21 ` Bandan Das 2015-03-10 19:25 ` Paolo Bonzini 2015-03-10 19:25 ` Paolo Bonzini 2015-03-10 19:37 ` Dr. David Alan Gilbert 2015-03-10 20:29 ` Dr. David Alan Gilbert 2015-03-10 20:29 ` Dr. David Alan Gilbert 2015-03-11 2:38 ` Bandan Das 2015-03-11 2:38 ` Bandan Das 2015-03-11 13:45 ` Dr. David Alan Gilbert 2015-03-11 13:45 ` Dr. David Alan Gilbert 2015-03-11 15:42 ` Kevin O'Connor 2015-03-11 15:42 ` Kevin O'Connor 2015-03-11 15:53 ` Dr. David Alan Gilbert 2015-03-11 15:53 ` Dr. David Alan Gilbert 2015-03-11 16:37 ` Kevin O'Connor 2015-03-11 16:37 ` [Qemu-devel] " Kevin O'Connor 2015-03-11 16:52 ` Dr. David Alan Gilbert 2015-03-11 16:52 ` Dr. David Alan Gilbert 2015-03-11 17:37 ` Kevin O'Connor 2015-03-11 17:37 ` Kevin O'Connor 2015-03-11 17:41 ` Paolo Bonzini 2015-03-11 17:41 ` Paolo Bonzini 2015-03-11 17:59 ` Dr. David Alan Gilbert 2015-03-11 17:59 ` Dr. David Alan Gilbert 2015-03-11 18:24 ` Bandan Das 2015-03-11 18:24 ` Bandan Das 2015-03-11 18:40 ` Kevin O'Connor [this message] 2015-03-11 18:40 ` Kevin O'Connor 2015-03-11 18:45 ` Kevin O'Connor 2015-03-11 18:45 ` Kevin O'Connor 2015-03-11 19:19 ` Kevin O'Connor 2015-03-11 19:19 ` Kevin O'Connor 2015-03-11 19:33 ` Dr. David Alan Gilbert 2015-03-11 19:33 ` Dr. David Alan Gilbert 2015-03-11 19:47 ` Bandan Das 2015-03-11 19:47 ` Bandan Das 2015-03-11 19:47 ` Andrey Korolyov 2015-03-11 19:47 ` Andrey Korolyov 2015-03-11 19:59 ` Dr. David Alan Gilbert 2015-03-11 19:59 ` Dr. David Alan Gilbert 2015-03-11 20:09 ` Andrey Korolyov 2015-03-11 20:09 ` Andrey Korolyov 2015-03-12 9:59 ` Dr. David Alan Gilbert 2015-03-12 9:59 ` Dr. David Alan Gilbert 2015-03-12 10:47 ` Andrey Korolyov 2015-03-12 10:47 ` Andrey Korolyov 2015-03-16 19:17 ` Andrey Korolyov 2015-03-16 19:17 ` Andrey Korolyov 2015-03-16 19:26 ` Dr. David Alan Gilbert 2015-03-16 19:26 ` Dr. David Alan Gilbert 2015-03-25 20:43 ` Andrey Korolyov 2015-03-25 20:43 ` [Qemu-devel] " Andrey Korolyov 2015-03-25 20:46 ` Andrey Korolyov 2015-03-25 20:46 ` [Qemu-devel] " Andrey Korolyov 2015-03-25 20:54 ` Kevin O'Connor 2015-03-25 20:54 ` Kevin O'Connor 2015-03-25 22:31 ` Andrey Korolyov 2015-03-25 22:31 ` Andrey Korolyov 2015-03-25 23:02 ` Kevin O'Connor 2015-03-25 23:02 ` Kevin O'Connor 2015-03-25 23:35 ` Andrey Korolyov 2015-03-25 23:35 ` Andrey Korolyov 2015-03-26 0:05 ` Kevin O'Connor 2015-03-26 0:05 ` Kevin O'Connor 2015-03-26 15:58 ` Radim Krčmář 2015-03-26 15:58 ` Radim Krčmář 2015-03-26 16:36 ` Kevin O'Connor 2015-03-26 16:36 ` [Qemu-devel] " Kevin O'Connor 2015-03-26 16:48 ` Andrey Korolyov 2015-03-26 16:48 ` Andrey Korolyov 2015-03-26 17:06 ` Kevin O'Connor 2015-03-26 17:06 ` Kevin O'Connor 2015-03-26 17:08 ` Andrey Korolyov 2015-03-26 17:08 ` Andrey Korolyov 2015-03-26 17:18 ` Kevin O'Connor 2015-03-26 17:18 ` Kevin O'Connor 2015-03-26 17:33 ` Andrey Korolyov 2015-03-26 17:33 ` Andrey Korolyov 2015-03-26 17:40 ` Radim Krčmář 2015-03-26 17:40 ` Radim Krčmář 2015-03-26 18:24 ` Andrey Korolyov 2015-03-26 18:24 ` Andrey Korolyov 2015-03-26 20:40 ` Radim Krčmář 2015-03-26 20:40 ` Radim Krčmář 2015-03-26 21:03 ` Bandan Das 2015-03-26 21:03 ` Bandan Das 2015-03-27 10:16 ` Andrey Korolyov 2015-03-27 10:16 ` Andrey Korolyov 2015-03-30 18:56 ` Radim Krčmář 2015-03-30 18:56 ` [Qemu-devel] " Radim Krčmář 2015-03-30 19:32 ` Andrey Korolyov 2015-03-30 19:32 ` Andrey Korolyov 2015-03-31 13:45 ` Radim Krčmář 2015-03-31 13:45 ` [Qemu-devel] " Radim Krčmář 2015-03-31 14:56 ` Andrey Korolyov 2015-03-31 14:56 ` Andrey Korolyov 2015-03-31 16:45 ` Radim Krčmář 2015-03-31 16:45 ` [Qemu-devel] " Radim Krčmář 2015-03-31 17:40 ` Andrey Korolyov 2015-03-31 17:40 ` Andrey Korolyov 2015-03-31 18:01 ` Bandan Das 2015-03-31 18:01 ` Bandan Das 2015-03-31 18:04 ` Bandan Das 2015-03-31 18:04 ` [Qemu-devel] " Bandan Das 2015-03-31 18:23 ` Andrey Korolyov 2015-03-31 18:23 ` Andrey Korolyov 2015-04-01 11:49 ` Radim Krčmář 2015-04-01 11:49 ` Radim Krčmář 2015-04-01 12:05 ` Paolo Bonzini 2015-04-01 12:05 ` Paolo Bonzini 2015-04-01 12:26 ` Andrey Korolyov 2015-04-01 12:26 ` Andrey Korolyov 2015-04-01 13:19 ` Paolo Bonzini 2015-04-01 13:19 ` Paolo Bonzini 2015-04-01 15:37 ` Andrey Korolyov 2015-04-01 15:37 ` Andrey Korolyov 2015-04-01 16:29 ` Andrey Korolyov 2015-04-01 16:29 ` Andrey Korolyov 2015-04-01 22:58 ` Andrey Korolyov 2015-04-01 22:58 ` Andrey Korolyov 2015-04-05 14:12 ` Andrey Korolyov 2015-04-05 14:12 ` [Qemu-devel] " Andrey Korolyov 2015-03-27 11:54 ` Andrey Korolyov 2015-03-27 11:54 ` Andrey Korolyov 2015-03-30 19:28 ` Radim Krčmář 2015-03-30 19:28 ` Radim Krčmář 2015-03-26 17:35 ` Radim Krčmář 2015-03-26 17:35 ` Radim Krčmář 2015-03-26 17:34 ` Radim Krčmář 2015-03-26 17:34 ` Radim Krčmář 2015-03-26 2:47 ` Bandan Das 2015-03-26 2:47 ` Bandan Das 2015-03-26 9:18 ` Andrey Korolyov 2015-03-26 9:18 ` Andrey Korolyov 2015-03-26 15:05 ` Andrey Korolyov 2015-03-26 15:05 ` Andrey Korolyov 2015-03-11 17:09 ` Bandan Das 2015-03-11 17:09 ` Bandan Das 2015-03-11 17:32 ` Kevin O'Connor 2015-03-11 17:32 ` Kevin O'Connor 2015-03-11 18:01 ` Bandan Das 2015-03-11 18:01 ` Bandan Das
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20150311184039.GA7341@morn.localdomain \ --to=kevin@koconnor.net \ --cc=andrey@xdel.ru \ --cc=bsd@redhat.com \ --cc=dgilbert@redhat.com \ --cc=kraxel@redhat.com \ --cc=kvm@vger.kernel.org \ --cc=pbonzini@redhat.com \ --cc=qemu-devel@nongnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.