All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20200417191513.GD4952@habkost.net>

diff --git a/a/1.txt b/N1/1.txt
index 3d2237d..c29283f 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -98,3 +98,75 @@ References:
 
 -- 
 Eduardo
+
+-- 
+You received this bug notification because you are a member of qemu-
+devel-ml, which is subscribed to QEMU.
+https://bugs.launchpad.net/bugs/1871842
+
+Title:
+  AMD CPUID leaf 0x8000'0008 reported number of cores  inconsistent with
+  ACPI.MADT
+
+Status in QEMU:
+  New
+
+Bug description:
+  Setup:
+  CPU: AMD EPYC-v2 or host's EPYC cpu
+  Linux 64-bit fedora host; Kernel version 5.5.15-200.fc31
+  qemu version: self build
+  git-head: f3bac27cc1e303e1860cc55b9b6889ba39dee587
+  config: Configured with: '../configure' '--target-list=x86_64-softmmu,mips64el-softmmu,mips64-softmmu,mipsel-softmmu,mips-softmmu,i386-softmmu,aarch64-softmmu,arm-softmmu' '--prefix=/opt/qemu-master'
+
+  Cmdline: 
+  qemu-system-x86_64 -kernel /home/peppelt/code/l4/internal/.build-x86_64/bin/amd64_gen/bootstrap -append "" -initrd "./fiasco/.build-x86_64/fiasco , ... " -serial stdio -nographic -monitor none -nographic -monitor none -cpu EPYC-v2 -m 4G -smp 4 
+
+  Issue:
+  We are developing an microkernel operating system called L4Re. We recently got an AMD EPYC server for testing and we couldn't execute SMP tests of our system when running Linux + qemu + VM w/ L4Re.
+  In fact, the kernel did not recognize any APs at all. On AMD CPUs the kernel checks for the number of cores reported in CPUID leaf 0x8000_0008.ECX[NC] or [ApicIdSize].  [0][1]
+
+  The physical machine reports for leaf 0x8000_0008:  EAX: 0x3030 EBX: 0x18cf757 ECX: 0x703f EDX: 0x1000
+  The lower four bits of ECX are the [NC] field and all set.
+
+  When querying inside qemu with -enable-kvm -cpu host -smp 4 (basically as replacement and addition to the above cmdline) the CPUID leaf shows: EAX: 0x3024, EBX: 0x1001000, ECX: 0x0, EDX: 0x0
+  Note, ECX is zero. Indicating that this is no SMP capabale CPU.
+
+  I'm debugging it using my local machine and the QEMU provided EPYC-v2
+  CPU model and it is reproducible there as well and reports:  EAX:
+  0x3028, EBX: 0x0, ECX: 0x0, EDX: 0x0
+
+  I checked other AMD based CPU models (phenom, opteron_g3/g5) and they behave the same. [2] shows the CPUID 0x8000'0008 handling in the QEMU source.
+  I believe that behavior here is wrong as ECX[NC] should report the number of cores per processor, as stated in the AMD manual [2] p.584. In my understanding -smp 4 should then lead to ECX[NC] = 0x3.
+
+  The following table shows my findings with the -smp option:
+  Option | Qemu guest observed ECX value
+  -smp 4 | 0x0
+  -smp 4,cores=4  | 0x3
+  -smp 4,cores=2,thread=2 | 0x3
+  -smp 4,cores=4,threads=2 | QEMU boot error: topology false.
+
+  Now, I'm asking myself how the terminology of the AMD manual maps to QEMU's -smp option.
+  Obviously, nr_cores and nr_threads correspond to the cores and threads options on the cmdline and cores * threads <= 4 (in this example), but what corresponds the X in -smp X to?
+
+  Querying 0x8000'0008 on the physical processor results in different
+  reports than quering QEMU's model as does it with -enable-kvm -cpu
+  host.
+
+  Furthermore, the ACPI.MADT shows 4 local APICs to be present while the
+  CPU leave reports a single core processor.
+
+  This leads me to the conclusion that CPUID 0x8000'0008.ECX reports the
+  wrong number.
+
+  
+  Please let me know, if you need more information from my side.
+
+  
+  [0] https://github.com/kernkonzept/fiasco/blob/522ccc5f29ab120213cf02d71328e2b879cbbd19/src/kern/ia32/kernel_thread-ia32.cpp#L109
+  [1] https://github.com/kernkonzept/fiasco/blob/522ccc5f29ab120213cf02d71328e2b879cbbd19/src/kern/ia32/cpu-ia32.cpp#L1120
+  [2] https://github.com/qemu/qemu/blob/f2a8261110c32c4dccd84e774d8dd7a0524e00fb/target/i386/cpu.c#L5835
+  [3] https://www.amd.com/system/files/TechDocs/24594.pdf
+
+To manage notifications about this bug go to:
+https://bugs.launchpad.net/qemu/+bug/1871842/+subscriptions
diff --git a/a/content_digest b/N1/content_digest
index 3dc22f9..31f7d09 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,13 +1,9 @@
+ "ref\0158643709116.17430.15995069125716778943.malonedeb@wampee.canonical.com\0"
  "ref\020200417151432.46867.72601.stgit@localhost.localdomain\0"
  "From\0Eduardo Habkost <ehabkost@redhat.com>\0"
- "Subject\0Re: [PATCH] target/i386: Fix the CPUID leaf CPUID_Fn80000008\0"
- "Date\0Fri, 17 Apr 2020 15:15:13 -0400\0"
- "To\0Babu Moger <babu.moger@amd.com>\0"
- "Cc\0pbonzini@redhat.com"
-  imammedo@redhat.com
-  1871842@bugs.launchpad.net
-  qemu-devel@nongnu.org
- " rth@twiddle.net\0"
+ "Subject\0[Bug 1871842] Re: [PATCH] target/i386: Fix the CPUID leaf CPUID_Fn80000008\0"
+ "Date\0Fri, 17 Apr 2020 19:15:13 -0000\0"
+ "To\0qemu-devel@nongnu.org\0"
  "\00:1\0"
  "b\0"
  "Good catch, thanks for the patch.  Comments below:\n"
@@ -109,6 +105,78 @@
  "\n"
  "\n"
  "-- \n"
- Eduardo
+ "Eduardo\n"
+ "\n"
+ "-- \n"
+ "You received this bug notification because you are a member of qemu-\n"
+ "devel-ml, which is subscribed to QEMU.\n"
+ "https://bugs.launchpad.net/bugs/1871842\n"
+ "\n"
+ "Title:\n"
+ "  AMD CPUID leaf 0x8000'0008 reported number of cores  inconsistent with\n"
+ "  ACPI.MADT\n"
+ "\n"
+ "Status in QEMU:\n"
+ "  New\n"
+ "\n"
+ "Bug description:\n"
+ "  Setup:\n"
+ "  CPU: AMD EPYC-v2 or host's EPYC cpu\n"
+ "  Linux 64-bit fedora host; Kernel version 5.5.15-200.fc31\n"
+ "  qemu version: self build\n"
+ "  git-head: f3bac27cc1e303e1860cc55b9b6889ba39dee587\n"
+ "  config: Configured with: '../configure' '--target-list=x86_64-softmmu,mips64el-softmmu,mips64-softmmu,mipsel-softmmu,mips-softmmu,i386-softmmu,aarch64-softmmu,arm-softmmu' '--prefix=/opt/qemu-master'\n"
+ "\n"
+ "  Cmdline: \n"
+ "  qemu-system-x86_64 -kernel /home/peppelt/code/l4/internal/.build-x86_64/bin/amd64_gen/bootstrap -append \"\" -initrd \"./fiasco/.build-x86_64/fiasco , ... \" -serial stdio -nographic -monitor none -nographic -monitor none -cpu EPYC-v2 -m 4G -smp 4 \n"
+ "\n"
+ "  Issue:\n"
+ "  We are developing an microkernel operating system called L4Re. We recently got an AMD EPYC server for testing and we couldn't execute SMP tests of our system when running Linux + qemu + VM w/ L4Re.\n"
+ "  In fact, the kernel did not recognize any APs at all. On AMD CPUs the kernel checks for the number of cores reported in CPUID leaf 0x8000_0008.ECX[NC] or [ApicIdSize].  [0][1]\n"
+ "\n"
+ "  The physical machine reports for leaf 0x8000_0008:  EAX: 0x3030 EBX: 0x18cf757 ECX: 0x703f EDX: 0x1000\n"
+ "  The lower four bits of ECX are the [NC] field and all set.\n"
+ "\n"
+ "  When querying inside qemu with -enable-kvm -cpu host -smp 4 (basically as replacement and addition to the above cmdline) the CPUID leaf shows: EAX: 0x3024, EBX: 0x1001000, ECX: 0x0, EDX: 0x0\n"
+ "  Note, ECX is zero. Indicating that this is no SMP capabale CPU.\n"
+ "\n"
+ "  I'm debugging it using my local machine and the QEMU provided EPYC-v2\n"
+ "  CPU model and it is reproducible there as well and reports:  EAX:\n"
+ "  0x3028, EBX: 0x0, ECX: 0x0, EDX: 0x0\n"
+ "\n"
+ "  I checked other AMD based CPU models (phenom, opteron_g3/g5) and they behave the same. [2] shows the CPUID 0x8000'0008 handling in the QEMU source.\n"
+ "  I believe that behavior here is wrong as ECX[NC] should report the number of cores per processor, as stated in the AMD manual [2] p.584. In my understanding -smp 4 should then lead to ECX[NC] = 0x3.\n"
+ "\n"
+ "  The following table shows my findings with the -smp option:\n"
+ "  Option | Qemu guest observed ECX value\n"
+ "  -smp 4 | 0x0\n"
+ "  -smp 4,cores=4  | 0x3\n"
+ "  -smp 4,cores=2,thread=2 | 0x3\n"
+ "  -smp 4,cores=4,threads=2 | QEMU boot error: topology false.\n"
+ "\n"
+ "  Now, I'm asking myself how the terminology of the AMD manual maps to QEMU's -smp option.\n"
+ "  Obviously, nr_cores and nr_threads correspond to the cores and threads options on the cmdline and cores * threads <= 4 (in this example), but what corresponds the X in -smp X to?\n"
+ "\n"
+ "  Querying 0x8000'0008 on the physical processor results in different\n"
+ "  reports than quering QEMU's model as does it with -enable-kvm -cpu\n"
+ "  host.\n"
+ "\n"
+ "  Furthermore, the ACPI.MADT shows 4 local APICs to be present while the\n"
+ "  CPU leave reports a single core processor.\n"
+ "\n"
+ "  This leads me to the conclusion that CPUID 0x8000'0008.ECX reports the\n"
+ "  wrong number.\n"
+ "\n"
+ "  \n"
+ "  Please let me know, if you need more information from my side.\n"
+ "\n"
+ "  \n"
+ "  [0] https://github.com/kernkonzept/fiasco/blob/522ccc5f29ab120213cf02d71328e2b879cbbd19/src/kern/ia32/kernel_thread-ia32.cpp#L109\n"
+ "  [1] https://github.com/kernkonzept/fiasco/blob/522ccc5f29ab120213cf02d71328e2b879cbbd19/src/kern/ia32/cpu-ia32.cpp#L1120\n"
+ "  [2] https://github.com/qemu/qemu/blob/f2a8261110c32c4dccd84e774d8dd7a0524e00fb/target/i386/cpu.c#L5835\n"
+ "  [3] https://www.amd.com/system/files/TechDocs/24594.pdf\n"
+ "\n"
+ "To manage notifications about this bug go to:\n"
+ https://bugs.launchpad.net/qemu/+bug/1871842/+subscriptions
 
-f47ac1ef588550dc4ab6489bc01f706cd7e3c8a3854dea5d2c0deb61e21d615d
+3a04aa0819008afeba741eaa003f73bceb912bb7d6b0aeea20f1977cdd6e1fd1

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.