qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] 1f4357: pc: Use "min-[x]level" on compat_prop


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 1f4357: pc: Use "min-[x]level" on compat_props
Date: Tue, 06 Jun 2017 04:05:43 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 1f43571604da85c62f25f3ba6d275b1b5ea76ca2
      
https://github.com/qemu/qemu/commit/1f43571604da85c62f25f3ba6d275b1b5ea76ca2
  Author: Eduardo Habkost <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M include/hw/i386/pc.h
    M tests/test-x86-cpuid-compat.c

  Log Message:
  -----------
  pc: Use "min-[x]level" on compat_props

Since the automatic cpuid-level code was introduced in commit
c39c0edf9bb3b968ba95484465a50c7b19f4aa3a ("target-i386: Automatically
set level/xlevel/xlevel2 when needed"), the CPU model tables just define
the default CPUID level code (set using "min-level").  Setting
"[x]level" forces CPUID level to a specific value and disable the
automatic-level logic.

But the PC compat code was not updated and the existing "[x]level"
compat properties broke compatibility for people using features that
triggered the auto-level code.  To keep previous behavior, we should set
"min-[x]level" instead of "[x]level" on compat_props.

This was not a problem for most cases, because old machine-types don't
have full-cpuid-auto-level enabled.  The only common use case it broke
was the CPUID[7] auto-level code, that was already enabled since the
first CPUID[7] feature was introduced (in QEMU 1.4.0).

This causes the regression reported at:
https://bugzilla.redhat.com/show_bug.cgi?id=1454641

Change the PC compat code to use "min-[x]level" instead of "[x]level" on
compat_props, and add new test cases to ensure we don't break this
again.

Reported-by: "Guo, Zhiyi" <address@hidden>
Fixes: c39c0edf9bb ("target-i386: Automatically set level/xlevel/xlevel2 when 
needed")
Cc: address@hidden
Acked-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: a0ceb640d083ab583d115fbd2ded14c089044ae8
      
https://github.com/qemu/qemu/commit/a0ceb640d083ab583d115fbd2ded14c089044ae8
  Author: Igor Mammedov <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M hw/arm/virt.c
    M hw/i386/pc.c
    M hw/ppc/spapr.c
    M include/sysemu/numa.h
    M numa.c

  Log Message:
  -----------
  numa: consolidate cpu_preplug fixups/checks for pc/arm/spapr

Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: David Gibson <address@hidden>
Message-Id: <address@hidden>
[ehabkost: Fix indentation]
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: 60bed6a30aa8341cbc8fae4bdc53b9eb99d80586
      
https://github.com/qemu/qemu/commit/60bed6a30aa8341cbc8fae4bdc53b9eb99d80586
  Author: Igor Mammedov <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M hw/core/machine.c
    M numa.c

  Log Message:
  -----------
  numa: move default mapping init to machine

there is no need use cpu_index_to_instance_props() for setting
default cpu -> node mapping. Generic machine code can do it
without cpu_index by just enabling already preset defaults
in possible_cpus.

PS:
as bonus it makes one less user of cpu_index_to_instance_props()

Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: d41f3e750d2c06c613cb1b8db7724f0fbc0a2b14
      
https://github.com/qemu/qemu/commit/d41f3e750d2c06c613cb1b8db7724f0fbc0a2b14
  Author: Igor Mammedov <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M hw/arm/virt-acpi-build.c
    M hw/core/machine.c
    M hw/i386/acpi-build.c
    M hw/i386/pc.c
    M numa.c

  Log Message:
  -----------
  numa: make sure that all cpus have has_node_id set if numa is enabled

It fixes/add missing _PXM object for non mapped CPU (x86)
and missing fdt node (virt-arm).

It ensures that possible_cpus contains complete mapping if
numa is enabled by the time machine_init() is executed.

As result non completely mapped CPUs:
 1) appear in ACPI/fdt blobs
 2) QMP query-hotpluggable-cpus command shows bound nodes for such CPUs
 3) allows to drop checks for has_node_id in numa only code,
   reducing number of invariants incomplete mapping could produce
 4) moves fixup/implicit node init from runtime numa_cpu_pre_plug()
   (when CPU object is created) to machine_numa_finish_init() which
   helps to fix [1, 2] and make possible_cpus complete source
   of numa mapping available even before CPUs are created.

Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: f75cd44de0ec20d72dc9eef5e6e48a8874c40727
      
https://github.com/qemu/qemu/commit/f75cd44de0ec20d72dc9eef5e6e48a8874c40727
  Author: Igor Mammedov <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M monitor.c

  Log Message:
  -----------
  numa: make hmp 'info numa' fetch numa nodes from qmp_query_cpus() result

HMP command 'info numa' is the last external user that access
CPUState::numa_node field directly. In order to move it to CPU
classes that actually use it, eliminate direct access and use
an alternative approach by using result of qmp_query_cpus(),
which provides topology properties CPU threads are associated
with (including node-id).

Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: 15f8b14228b856850df3fa5ba999ad96521f2208
      
https://github.com/qemu/qemu/commit/15f8b14228b856850df3fa5ba999ad96521f2208
  Author: Igor Mammedov <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M hw/ppc/spapr.c
    M hw/ppc/spapr_cpu_core.c
    M include/qom/cpu.h
    M target/arm/cpu.c
    M target/arm/cpu.h
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/ppc/cpu.h

  Log Message:
  -----------
  numa: move numa_node from CPUState into target specific classes

Move vcpu's associated numa_node field out of generic CPUState
into inherited classes that actually care about cpu<->numa mapping,
i.e: ARMCPU, PowerPCCPU, X86CPU.

Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
[ehabkost: s/CPU is belonging to/CPU belongs to/ on comments]
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: 99861ecbc53c705fff5e4ea774f0da1193e81da8
      
https://github.com/qemu/qemu/commit/99861ecbc53c705fff5e4ea774f0da1193e81da8
  Author: Igor Mammedov <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M hw/ppc/spapr.c

  Log Message:
  -----------
  spapr: cleanup spapr_fixup_cpu_numa_dt() usage

even though spapr_fixup_cpu_numa_dt() has no effect on FDT
if numa is disabled, don't call it uselessly. It makes it
obvious at call sites that function is needed only when numa
is enabled.

Signed-off-by: Igor Mammedov <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Greg Kurz <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: 37bbcd575745d9bea4f840164e75dd2f40e5ee91
      
https://github.com/qemu/qemu/commit/37bbcd575745d9bea4f840164e75dd2f40e5ee91
  Author: Eduardo Habkost <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M scripts/qemu.py

  Log Message:
  -----------
  qemu.py: Don't set _popen=None on error/shutdown

Keep the Popen object around to we can query its exit code later.

To keep the existing 'self._popen is None' checks working, add a
is_running() method, that will check if the process is still running.

Signed-off-by: Eduardo Habkost <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: b2b8d986753ceb20437457dfe51dd75285328373
      
https://github.com/qemu/qemu/commit/b2b8d986753ceb20437457dfe51dd75285328373
  Author: Eduardo Habkost <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    M scripts/qemu.py

  Log Message:
  -----------
  qemu.py: Add QEMUMachine.exitcode() method

Allow the exit code of QEMU to be queried by scripts.

Signed-off-by: Eduardo Habkost <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: 23ea4f30320bbd36a5d202ee469374ec3c747286
      
https://github.com/qemu/qemu/commit/23ea4f30320bbd36a5d202ee469374ec3c747286
  Author: Eduardo Habkost <address@hidden>
  Date:   2017-06-05 (Mon, 05 Jun 2017)

  Changed paths:
    A scripts/device-crash-test

  Log Message:
  -----------
  scripts: Test script to look for -device crashes

Test code to check if we can crash QEMU using -device. It will
test all accel/machine/device combinations by default, which may
take a few hours (it's more than 90k test cases). There's a "-r"
option that makes it test a random sample of combinations.

The scripts contains a whitelist for: 1) known error messages
that make QEMU exit cleanly; 2) known QEMU crashes.

This is the behavior when the script finds a failure:

* Known clean (exitcode=1) errors generate DEBUG messages
  (hidden by default)
* Unknown clean (exitcode=1) errors will generate INFO messages
  (visible by default)
* Known crashes generate error messages, but are not fatal
  (unless --strict mode is used)
* Unknown crashes generate fatal error messages

Having an updated whitelist of known clean errors is useful to make the
script less verbose and run faster when in --quick mode, but the
whitelist doesn't need to be always up to date.

Signed-off-by: Eduardo Habkost <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eduardo Habkost <address@hidden>


  Commit: a65afaae0fd6754a80fe8c9aad6a066fe84b537d
      
https://github.com/qemu/qemu/commit/a65afaae0fd6754a80fe8c9aad6a066fe84b537d
  Author: Peter Maydell <address@hidden>
  Date:   2017-06-06 (Tue, 06 Jun 2017)

  Changed paths:
    M hw/arm/virt-acpi-build.c
    M hw/arm/virt.c
    M hw/core/machine.c
    M hw/i386/acpi-build.c
    M hw/i386/pc.c
    M hw/ppc/spapr.c
    M hw/ppc/spapr_cpu_core.c
    M include/hw/i386/pc.h
    M include/qom/cpu.h
    M include/sysemu/numa.h
    M monitor.c
    M numa.c
    A scripts/device-crash-test
    M scripts/qemu.py
    M target/arm/cpu.c
    M target/arm/cpu.h
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/ppc/cpu.h
    M tests/test-x86-cpuid-compat.c

  Log Message:
  -----------
  Merge remote-tracking branch 
'remotes/ehabkost/tags/x86-and-machine-pull-request' into staging

x86 and machine queue, 2017-06-05

# gpg: Signature made Mon 05 Jun 2017 19:58:01 BST
# gpg:                using RSA key 0x2807936F984DC5A6
# gpg: Good signature from "Eduardo Habkost <address@hidden>"
# Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF  D1AA 2807 936F 984D C5A6

* remotes/ehabkost/tags/x86-and-machine-pull-request:
  scripts: Test script to look for -device crashes
  qemu.py: Add QEMUMachine.exitcode() method
  qemu.py: Don't set _popen=None on error/shutdown
  spapr: cleanup spapr_fixup_cpu_numa_dt() usage
  numa: move numa_node from CPUState into target specific classes
  numa: make hmp 'info numa' fetch numa nodes from qmp_query_cpus() result
  numa: make sure that all cpus have has_node_id set if numa is enabled
  numa: move default mapping init to machine
  numa: consolidate cpu_preplug fixups/checks for pc/arm/spapr
  pc: Use "min-[x]level" on compat_props

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/a0d4aac7467d...a65afaae0fd6

reply via email to

[Prev in Thread] Current Thread [Next in Thread]