All of lore.kernel.org
 help / color / mirror / Atom feed
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();
 }

  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: link
Be 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.