qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] 9f07e4: target/i386: remove PCOMMIT from TCG,


From: Richard Henderson
Subject: [Qemu-commits] [qemu/qemu] 9f07e4: target/i386: remove PCOMMIT from TCG, deprecate pr...
Date: Sun, 12 May 2024 04:43:36 -0700

  Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: 9f07e47a5e96c88c1d2892fbdcbc8ff0437b7ac3
      
https://github.com/qemu/qemu/commit/9f07e47a5e96c88c1d2892fbdcbc8ff0437b7ac3
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M docs/about/deprecated.rst
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: remove PCOMMIT from TCG, deprecate property

The PCOMMIT instruction was never included in any physical processor.
TCG implements it as a no-op instruction, but its utility is debatable
to say the least.  Drop it from the decoder since it is only available
with "-cpu max", which does not guarantee migration compatibility
across versions, and deprecate the property just in case someone is
using it as "pcommit=off".

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 41c685dc59bb611096f3bb6a663cfa82e4cba97b
      
https://github.com/qemu/qemu/commit/41c685dc59bb611096f3bb6a663cfa82e4cba97b
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: fix operand size for DATA16 REX.W POPCNT

According to the manual, 32-bit vs 64-bit is governed by REX.W
and REX ignores the 0x66 prefix.  This can be confirmed with this
program:

    #include <stdio.h>
    int main()
    {
       int x = 0x12340000;
       int y;
       asm("popcntl %1, %0" : "=r" (y) : "r" (x)); printf("%x\n", y);
       asm("mov $-1, %0; .byte 0x66; popcntl %1, %0" : "+r" (y) : "r" (x)); 
printf("%x\n", y);
       asm("mov $-1, %0; .byte 0x66; popcntq %q1, %q0" : "+r" (y) : "r" (x)); 
printf("%x\n", y);
    }

which prints 5/ffff0000/5 on real hardware and 5/ffff0000/ffff0000
on QEMU.

Cc: qemu-stable@nongnu.org
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 40a3ec7b5ffde500789d016660a171057d6b467c
      
https://github.com/qemu/qemu/commit/40a3ec7b5ffde500789d016660a171057d6b467c
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: rdpkru/wrpkru are no-prefix instructions

Reject 0x66/0xf3/0xf2 in front of them.

Cc: qemu-stable@nongnu.org
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 3fabbe0b7d458d6380f4b3246b8b32400f6bd1d9
      
https://github.com/qemu/qemu/commit/3fabbe0b7d458d6380f4b3246b8b32400f6bd1d9
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M target/i386/tcg/decode-new.c.inc
    M target/i386/tcg/decode-new.h
    M target/i386/tcg/emit.c.inc
    M target/i386/tcg/translate.c

  Log Message:
  -----------
  target/i386: move prefetch and multi-byte UD/NOP to new decoder

These are trivial to add, and moving them to the new decoder fixes some
corner cases: raising #UD instead of an instruction fetch page fault for
the undefined opcodes, and incorrectly rejecting 0F 18 prefetches with
register operands (which are treated as reserved NOPs).

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: fe01af5d47d4cf7fdf90c54d43f784e5068c8d72
      
https://github.com/qemu/qemu/commit/fe01af5d47d4cf7fdf90c54d43f784e5068c8d72
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M target/i386/cpu.c

  Log Message:
  -----------
  target/i386: fix feature dependency for WAITPKG

The VMX feature bit depends on general availability of WAITPKG,
not the other way round.

Fixes: 33cc88261c3 ("target/i386: add support for 
VMX_SECONDARY_EXEC_ENABLE_USER_WAIT_PAUSE", 2023-08-28)
Cc: qemu-stable@nongnu.org
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: ff5b5739f97d08d9ca984ec8016b54487a76401b
      
https://github.com/qemu/qemu/commit/ff5b5739f97d08d9ca984ec8016b54487a76401b
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M tests/tcg/i386/test-i386.c

  Log Message:
  -----------
  tests/tcg: cover lzcnt/tzcnt/popcnt

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 23b1f53c2c8990ed745acede171e49645af3d6d0
      
https://github.com/qemu/qemu/commit/23b1f53c2c8990ed745acede171e49645af3d6d0
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M configure

  Log Message:
  -----------
  configure: quote -D options that are passed through to meson

Ensure that they go through unmodified, instead of removing one layer
of quoting.

-D is a pretty specialized option and most options that can have spaces
do not need it (for example, c_args is covered by --extra-cflags).
Therefore it's unlikely that this causes actual trouble.  However,
a somewhat realistic failure case would be with -Dpkg_config_path
and a pkg-config directory that contains spaces.

Cc: qemu-stable@nongnu.org
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: d1b223dd07637621f0439701d7d248f87995a275
      
https://github.com/qemu/qemu/commit/d1b223dd07637621f0439701d7d248f87995a275
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    M hw/sh4/meson.build
    M target/sh4/Kconfig

  Log Message:
  -----------
  sh4: select correct components for no-board build

Acked-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: ef7c4a97bfdfdb913b03720d3be3c49579cf1835
      
https://github.com/qemu/qemu/commit/ef7c4a97bfdfdb913b03720d3be3c49579cf1835
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/s390x/s390-virtio-ccw.c
    M target/s390x/sigp.c

  Log Message:
  -----------
  s390x: move s390_cpu_addr2state to target/s390x/sigp.c

This function has no dependency on the virtio-ccw machine type, though it
assumes that the CPU address corresponds to the core_id and the index.

If there is any need of something different or more fancy (unlikely)
S390 can include a MachineClass subclass and implement it there.  For
now, move it to sigp.c for simplicity.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20240509170044.190795-2-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 9d1b0f5bf515a0dd8e4174d9f3aca2c549727ef6
      
https://github.com/qemu/qemu/commit/9d1b0f5bf515a0dd8e4174d9f3aca2c549727ef6
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/intc/s390_flic.c
    M hw/s390x/s390-virtio-ccw.c
    M include/hw/s390x/s390_flic.h

  Log Message:
  -----------
  s390_flic: add migration-enabled property

Instead of mucking with css_migration_enabled(), add a property specific to
the FLIC device, similar to what is done for TYPE_S390_STATTRIB.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20240509170044.190795-3-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: a55ae46683f289c46a0c0a807dbb89229a1e00cd
      
https://github.com/qemu/qemu/commit/a55ae46683f289c46a0c0a807dbb89229a1e00cd
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/s390x/css.c
    M hw/s390x/s390-virtio-ccw.c
    M include/hw/s390x/css.h
    M include/hw/s390x/s390-virtio-ccw.h

  Log Message:
  -----------
  s390: move css_migration_enabled from machine to css.c

The CSS subsystem uses global variables, just face the truth and use
a variable also for whether the CSS vmstate is in use; remove the
indirection of fetching it from the machine type, which makes the
TCG code depend unnecessarily on the virtio-ccw machine.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20240509170044.190795-4-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: e799b65faef129f2905bd9bf66c30aaaa7115dac
      
https://github.com/qemu/qemu/commit/e799b65faef129f2905bd9bf66c30aaaa7115dac
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    M target/s390x/Kconfig

  Log Message:
  -----------
  s390x: select correct components for no-board build

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20240509170044.190795-5-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: fa5365e8b6eff888e99f31cd65afefd3643e5d0e
      
https://github.com/qemu/qemu/commit/fa5365e8b6eff888e99f31cd65afefd3643e5d0e
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M tests/qtest/drive_del-test.c

  Log Message:
  -----------
  tests/qtest: s390x: fix operation in a build without any boards or devices

Do the bare minimum to ensure that at least a vanilla
--without-default-devices build works for all targets except i386,
x86_64 and ppc64.  In particular this fixes s390x-softmmu; i386 and
x86_64 have about a dozen failing tests that do not pass -M and therefore
require a default machine type; ppc64 has the same issue, though only
with numa-test.

If we can for now ignore the cases where boards and devices are picked
by hand, drive_del-test however can be fixed easily; almost all tests
check for the virtio-blk or virtio-scsi device that they use, and are
already skipped.  Only one didn't get the memo; plus another one does
not need a machine at all and can be run with -M none.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20240509170044.190795-6-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 0973996fe47bfca8f0bf552728e36682d642c9cc
      
https://github.com/qemu/qemu/commit/0973996fe47bfca8f0bf552728e36682d642c9cc
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/i386/pc.c
    M hw/xen/xen-bus.c
    M hw/xen/xen-hvm-common.c
    M hw/xenpv/xen_machine_pv.c

  Log Message:
  -----------
  xen: initialize legacy backends from xen_bus_init()

Prepare for moving the calls to xen_be_register() under the
control of xen_bus_init(), using the normal xen_backend_init()
method that is used by the "modern" backends.

This requires the xenstore global variable to be initialized,
which is done by xen_be_init().  To ensure that everything is
ready at the time the xen_backend_init() functions are called,
remove the xen_be_init() function from all the boards and
place it directly in xen_bus_init().

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240509170044.190795-7-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 88f5ed7017897bc3108463e75e3b4828032a3992
      
https://github.com/qemu/qemu/commit/88f5ed7017897bc3108463e75e3b4828032a3992
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/9pfs/xen-9p-backend.c
    M hw/display/xenfb.c
    M hw/usb/xen-usb.c
    M hw/xen/xen-legacy-backend.c
    M include/hw/xen/xen-legacy-backend.h
    M include/hw/xen/xen_pvdev.h

  Log Message:
  -----------
  xen: register legacy backends via xen_backend_init

It is okay to register legacy backends in the middle of xen_bus_init().
All that the registration does is record the existence of the backend
in xenstore.

This makes it possible to remove them from the build without introducing
undefined symbols in xen_be_init().  It also removes the need for the
backend_register callback, whose only purpose is to avoid registering
nonfunctional backends.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240509170044.190795-8-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 7974e51342775c87f6e759a8c525db1045ddfa24
      
https://github.com/qemu/qemu/commit/7974e51342775c87f6e759a8c525db1045ddfa24
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/i386/fw_cfg.c
    M hw/i386/meson.build

  Log Message:
  -----------
  i386: correctly select code in hw/i386 that depends on other components

fw_cfg.c and vapic.c are currently included unconditionally but
depend on other components.  vapic.c depends on the local APIC,
while fw_cfg.c includes a piece of AML builder code that depends
on CONFIG_ACPI.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-ID: <20240509170044.190795-9-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: b348fdcdac9f9fc70be9ae56c54e41765e9aae24
      
https://github.com/qemu/qemu/commit/b348fdcdac9f9fc70be9ae56c54e41765e9aae24
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/i386/pc.c
    M hw/i386/x86.c
    M include/hw/i386/x86.h

  Log Message:
  -----------
  i386: pc: remove unnecessary MachineClass overrides

There is no need to override these fields of MachineClass because they are
already set to the right value in the superclass.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-ID: <20240509170044.190795-10-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: b061f0598b9231f7992aff4fcdf3f336f9747d11
      
https://github.com/qemu/qemu/commit/b061f0598b9231f7992aff4fcdf3f336f9747d11
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/i386/meson.build
    A hw/i386/x86-common.c
    A hw/i386/x86-cpu.c
    M hw/i386/x86.c
    M include/hw/i386/x86.h

  Log Message:
  -----------
  hw/i386: split x86.c in multiple parts

Keep the basic X86MachineState definition in x86.c.  Move out functions that
are only needed by other files: x86-common.c for the pc and microvm machines,
x86-cpu.c for those used by accelerator code.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-ID: <20240509170044.190795-11-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: d0be0ac2c37eb978ed51c822b4a8a7dc9015e1e0
      
https://github.com/qemu/qemu/commit/d0be0ac2c37eb978ed51c822b4a8a7dc9015e1e0
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/i386/meson.build
    A hw/i386/monitor.c
    M hw/rtc/mc146818rtc.c
    M include/hw/rtc/mc146818rtc.h

  Log Message:
  -----------
  hw/i386: move rtc-reset-reinjection command out of hw/rtc

The rtc-reset-reinjection QMP command is specific to x86, other boards do not
have the ACK tracking functionality that is needed for RTC interrupt
reinjection.  Therefore the QMP command is only included in x86, but
qmp_rtc_reset_reinjection() is implemented by hw/rtc/mc146818rtc.c
and requires tracking of all created RTC devices.  Move the implementation
to hw/i386, so that 1) it is available even if no RTC device exist
2) the only RTC that exists is easily found in x86ms->rtc.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-ID: <20240509170044.190795-12-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 1b1badf3c523105d4cf5e6ccf8413d1be1dbadc4
      
https://github.com/qemu/qemu/commit/1b1badf3c523105d4cf5e6ccf8413d1be1dbadc4
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    A hw/intc/ioapic-stub.c
    M hw/intc/meson.build
    M target/i386/Kconfig

  Log Message:
  -----------
  i386: select correct components for no-board build

The local APIC is a part of the CPU and has callbacks that are invoked
from multiple accelerators.

The IOAPIC on the other hand is optional, but ioapic_eoi_broadcast is
used by common x86 code to implement the IOAPIC's implicit EOI mode.
Add a stub in case the IOAPIC device is not included but the APIC is.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Message-ID: <20240509170044.190795-13-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 6bd92a7c62648eb37053ccc809c3cab7d7629584
      
https://github.com/qemu/qemu/commit/6bd92a7c62648eb37053ccc809c3cab7d7629584
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M tests/qtest/arm-cpu-features.c
    M tests/qtest/migration-test.c
    M tests/qtest/numa-test.c

  Log Message:
  -----------
  tests/qtest: arm: fix operation in a build without any boards or devices

ARM/aarch64 are easy to fix because they already have to pass a machine
type by hand.  Just guard the tests with a check that the machine actually
exists.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20240509170044.190795-14-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 727bb5b477e66b6cd8a558bf2cdf9a666b914f27
      
https://github.com/qemu/qemu/commit/727bb5b477e66b6cd8a558bf2cdf9a666b914f27
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/arm/meson.build
    M hw/loongarch/meson.build
    M hw/mips/meson.build
    M hw/openrisc/meson.build
    M hw/ppc/meson.build
    M hw/riscv/meson.build
    M meson.build

  Log Message:
  -----------
  meson: pick libfdt from common_ss when building target-specific files

Avoid having to list dependencies such as libfdt twice, both on common_ss
and specific_ss.  Instead, just take all the dependencies in common_ss
and allow the target-specific libqemu-*.fa library to use them.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 7a6f3343b6f140c945b62a972b36d22efa14bdba
      
https://github.com/qemu/qemu/commit/7a6f3343b6f140c945b62a972b36d22efa14bdba
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M meson.build

  Log Message:
  -----------
  meson: move libfdt together with other dependencies

Move the libfdt detection code together with other dependencies instead
of keeping it with subprojects.  This has the disadvantage of performing
the detection even if no target requires libfdt; but it has the advantage
that Kconfig will be able to observe the availability of the library.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 1935b7ead18dbcbf459dbe7a8fd4253fbe1ed4d0
      
https://github.com/qemu/qemu/commit/1935b7ead18dbcbf459dbe7a8fd4253fbe1ed4d0
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M Kconfig.host
    M hw/core/Kconfig
    M hw/core/meson.build
    M include/monitor/hmp.h
    M include/sysemu/device_tree.h
    M meson.build
    M monitor/hmp-cmds.c
    A system/device_tree-stub.c
    M system/device_tree.c
    M system/meson.build

  Log Message:
  -----------
  kconfig: allow compiling out QEMU device tree code per target

Introduce a new Kconfig symbol, CONFIG_DEVICE_TREE, that specifies whether
to include the common device tree code in system/device_tree.c and to
link to libfdt.  For now, include it unconditionally if libfdt is
available.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: d641ec30be4963f43bffe033f5265a57cb8f4c90
      
https://github.com/qemu/qemu/commit/d641ec30be4963f43bffe033f5265a57cb8f4c90
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M Kconfig.host
    M hw/arm/Kconfig
    M hw/i386/Kconfig
    M hw/loongarch/Kconfig
    M hw/mips/Kconfig
    M hw/openrisc/Kconfig
    M hw/ppc/Kconfig
    M hw/riscv/Kconfig
    M hw/rx/Kconfig
    M hw/xtensa/Kconfig
    M target/arm/Kconfig
    M target/microblaze/Kconfig
    M target/openrisc/Kconfig
    M target/riscv/Kconfig

  Log Message:
  -----------
  kconfig: express dependency of individual boards on libfdt

Now that boards are enabled by default and the "CONFIG_FOO=y"
entries are gone from configs/devices/, there cannot be any more
a conflicts between the default contents of configs/devices/
and a failed "depends on" clause.

With this change, each individual board or target can express
whether it needs FDT.  It can then include the common code in the
build via "select DEVICE_TREE", which will also as tell meson to link
with libfdt.

This allows building non-microvm x86 emulators without having
libfdt available.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 47771d67563dc48753d275249d0764144d56357d
      
https://github.com/qemu/qemu/commit/47771d67563dc48753d275249d0764144d56357d
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M hw/xtensa/Kconfig
    M hw/xtensa/xtfpga.c

  Log Message:
  -----------
  hw/xtensa: require libfdt

All other boards require libfdt if it can be used (including for example
i386/x86_64), so change the "imply" to "select" and always allow -dtb
in qemu-system-xtensa.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 9b089d254a5623baef01f7d0ec37331c1155f1ce
      
https://github.com/qemu/qemu/commit/9b089d254a5623baef01f7d0ec37331c1155f1ce
  Author: Paolo Bonzini <pbonzini@redhat.com>
  Date:   2024-05-10 (Fri, 10 May 2024)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    M configs/targets/aarch64-softmmu.mak
    M configs/targets/arm-softmmu.mak
    M configs/targets/i386-softmmu.mak
    M configs/targets/loongarch64-softmmu.mak
    M configs/targets/microblaze-softmmu.mak
    M configs/targets/microblazeel-softmmu.mak
    M configs/targets/mips64el-softmmu.mak
    M configs/targets/or1k-softmmu.mak
    M configs/targets/ppc-softmmu.mak
    M configs/targets/ppc64-softmmu.mak
    M configs/targets/riscv32-softmmu.mak
    M configs/targets/riscv64-softmmu.mak
    M configs/targets/rx-softmmu.mak
    M configs/targets/x86_64-softmmu.mak
    M meson.build

  Log Message:
  -----------
  configs: disable emulators that require it if libfdt is not found

Since boards can express their dependency on libfdt and
system/device_tree.c, only leave TARGET_NEED_FDT if the target has a
hard dependency.

Those emulators will be skipped if libfdt is disabled, or if it
is "auto" and not found and --disable-download is passed; unless
the target is mentioned explicitly in --target-list, in which case
the build will fail.

Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>


  Commit: 9360070196789cc8b9404b2efaf319384e64b107
      
https://github.com/qemu/qemu/commit/9360070196789cc8b9404b2efaf319384e64b107
  Author: Richard Henderson <richard.henderson@linaro.org>
  Date:   2024-05-12 (Sun, 12 May 2024)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    M Kconfig.host
    M configs/targets/aarch64-softmmu.mak
    M configs/targets/arm-softmmu.mak
    M configs/targets/i386-softmmu.mak
    M configs/targets/loongarch64-softmmu.mak
    M configs/targets/microblaze-softmmu.mak
    M configs/targets/microblazeel-softmmu.mak
    M configs/targets/mips64el-softmmu.mak
    M configs/targets/or1k-softmmu.mak
    M configs/targets/ppc-softmmu.mak
    M configs/targets/ppc64-softmmu.mak
    M configs/targets/riscv32-softmmu.mak
    M configs/targets/riscv64-softmmu.mak
    M configs/targets/rx-softmmu.mak
    M configs/targets/x86_64-softmmu.mak
    M configure
    M docs/about/deprecated.rst
    M hw/9pfs/xen-9p-backend.c
    M hw/arm/Kconfig
    M hw/arm/meson.build
    M hw/core/Kconfig
    M hw/core/meson.build
    M hw/display/xenfb.c
    M hw/i386/Kconfig
    M hw/i386/fw_cfg.c
    M hw/i386/meson.build
    A hw/i386/monitor.c
    M hw/i386/pc.c
    A hw/i386/x86-common.c
    A hw/i386/x86-cpu.c
    M hw/i386/x86.c
    A hw/intc/ioapic-stub.c
    M hw/intc/meson.build
    M hw/intc/s390_flic.c
    M hw/loongarch/Kconfig
    M hw/loongarch/meson.build
    M hw/mips/Kconfig
    M hw/mips/meson.build
    M hw/openrisc/Kconfig
    M hw/openrisc/meson.build
    M hw/ppc/Kconfig
    M hw/ppc/meson.build
    M hw/riscv/Kconfig
    M hw/riscv/meson.build
    M hw/rtc/mc146818rtc.c
    M hw/rx/Kconfig
    M hw/s390x/css.c
    M hw/s390x/s390-virtio-ccw.c
    M hw/sh4/meson.build
    M hw/usb/xen-usb.c
    M hw/xen/xen-bus.c
    M hw/xen/xen-hvm-common.c
    M hw/xen/xen-legacy-backend.c
    M hw/xenpv/xen_machine_pv.c
    M hw/xtensa/Kconfig
    M hw/xtensa/xtfpga.c
    M include/hw/i386/x86.h
    M include/hw/rtc/mc146818rtc.h
    M include/hw/s390x/css.h
    M include/hw/s390x/s390-virtio-ccw.h
    M include/hw/s390x/s390_flic.h
    M include/hw/xen/xen-legacy-backend.h
    M include/hw/xen/xen_pvdev.h
    M include/monitor/hmp.h
    M include/sysemu/device_tree.h
    M meson.build
    M monitor/hmp-cmds.c
    A system/device_tree-stub.c
    M system/device_tree.c
    M system/meson.build
    M target/arm/Kconfig
    M target/i386/Kconfig
    M target/i386/cpu.c
    M target/i386/cpu.h
    M target/i386/tcg/decode-new.c.inc
    M target/i386/tcg/decode-new.h
    M target/i386/tcg/emit.c.inc
    M target/i386/tcg/translate.c
    M target/microblaze/Kconfig
    M target/openrisc/Kconfig
    M target/riscv/Kconfig
    M target/s390x/Kconfig
    M target/s390x/sigp.c
    M target/sh4/Kconfig
    M tests/qtest/arm-cpu-features.c
    M tests/qtest/drive_del-test.c
    M tests/qtest/migration-test.c
    M tests/qtest/numa-test.c
    M tests/tcg/i386/test-i386.c

  Log Message:
  -----------
  Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

* target/i386: miscellaneous changes, mostly TCG-related
* fix --without-default-devices build
* fix --without-default-devices qtests on s390x and arm

# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmY+JWIUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroOGmwf+JKY/i7ihXvfINQIRSKaz+H7KM3Br
# BGv/iXj4hrRA+zflcZswwoWmPrkrXM3J5JqGG6zTqqhGne+fRKt60KBFwn+lRaMY
# n48icR4zOSaEcGKBOFKs9CB1JgL7SWMe+fZ8d02amYlIZ005af0d69ACenF9r/oX
# pTxYIrR90FdZStbF4Yl0G5CzMLBdHZd/b6bMNmbefVPv3/d2zuL7VgqLX3y3J0ee
# ASYkYjn8Wpda4KX9s2rvH9ENXj80Q7EqhuDvoBlyK72/2lE5aTojbUiyGB4n5AuX
# 5OHA+0HEpuCXXToijOeDXD1NDOk9E5DP8cEwwZfZ2gjWKjja0U6OODGLVw==
# =woTe
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 10 May 2024 03:47:14 PM CEST
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "pbonzini@redhat.com"
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full]
# gpg:                 aka "Paolo Bonzini <pbonzini@redhat.com>" [full]

* tag 'for-upstream' of https://gitlab.com/bonzini/qemu: (27 commits)
  configs: disable emulators that require it if libfdt is not found
  hw/xtensa: require libfdt
  kconfig: express dependency of individual boards on libfdt
  kconfig: allow compiling out QEMU device tree code per target
  meson: move libfdt together with other dependencies
  meson: pick libfdt from common_ss when building target-specific files
  tests/qtest: arm: fix operation in a build without any boards or devices
  i386: select correct components for no-board build
  hw/i386: move rtc-reset-reinjection command out of hw/rtc
  hw/i386: split x86.c in multiple parts
  i386: pc: remove unnecessary MachineClass overrides
  i386: correctly select code in hw/i386 that depends on other components
  xen: register legacy backends via xen_backend_init
  xen: initialize legacy backends from xen_bus_init()
  tests/qtest: s390x: fix operation in a build without any boards or devices
  s390x: select correct components for no-board build
  s390: move css_migration_enabled from machine to css.c
  s390_flic: add migration-enabled property
  s390x: move s390_cpu_addr2state to target/s390x/sigp.c
  sh4: select correct components for no-board build
  ...

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>


Compare: https://github.com/qemu/qemu/compare/dafec285bdbf...936007019678

To unsubscribe from these emails, change your notification settings at 
https://github.com/qemu/qemu/settings/notifications



reply via email to

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