[PATCH v4 00/21] microvm: add acpi support

Gerd Hoffmann posted 21 patches 3 years, 9 months ago
Test FreeBSD passed
Test docker-quick@centos7 passed
Test checkpatch failed
Test docker-mingw@fedora passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200702204859.9876-1-kraxel@redhat.com
Maintainers: Richard Henderson <rth@twiddle.net>, Thomas Huth <thuth@redhat.com>, Sergio Lopez <slp@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Eduardo Habkost <ehabkost@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Igor Mammedov <imammedo@redhat.com>
There is a newer version of this series
hw/i386/acpi-microvm.h                      |   8 +
include/hw/acpi/generic_event_device.h      |  12 +
include/hw/i386/microvm.h                   |  10 +-
include/hw/i386/pc.h                        |   1 -
include/hw/i386/x86.h                       |  11 +-
tests/qtest/bios-tables-test-allowed-diff.h |  18 --
hw/acpi/generic_event_device.c              |  52 ++++
hw/arm/virt-acpi-build.c                    |   8 -
hw/i386/acpi-build.c                        |   2 +-
hw/i386/acpi-microvm.c                      | 234 ++++++++++++++++++
hw/i386/generic_event_device_x86.c          |  36 +++
hw/i386/microvm.c                           | 105 +++++++-
hw/i386/pc.c                                | 260 ++------------------
hw/i386/pc_piix.c                           |   2 +-
hw/i386/pc_q35.c                            |   2 +-
hw/i386/x86.c                               | 226 ++++++++++++++++-
tests/qtest/bios-tables-test.c              |  21 +-
hw/i386/Kconfig                             |   1 +
hw/i386/Makefile.objs                       |   2 +
pc-bios/bios-microvm.bin                    | Bin 65536 -> 131072 bytes
pc-bios/qboot.rom                           | Bin 0 -> 65536 bytes
roms/Makefile                               |  11 +-
roms/config.seabios-microvm                 |  26 ++
tests/data/acpi/microvm/APIC                | Bin 0 -> 70 bytes
tests/data/acpi/microvm/DSDT                | Bin 0 -> 365 bytes
tests/data/acpi/microvm/FACP                | Bin 0 -> 268 bytes
26 files changed, 761 insertions(+), 287 deletions(-)
create mode 100644 hw/i386/acpi-microvm.h
create mode 100644 hw/i386/acpi-microvm.c
create mode 100644 hw/i386/generic_event_device_x86.c
create mode 100644 pc-bios/qboot.rom
create mode 100644 roms/config.seabios-microvm
create mode 100644 tests/data/acpi/microvm/APIC
create mode 100644 tests/data/acpi/microvm/DSDT
create mode 100644 tests/data/acpi/microvm/FACP
[PATCH v4 00/21] microvm: add acpi support
Posted by Gerd Hoffmann 3 years, 9 months ago
I know that not supporting ACPI in microvm is intentional.  If you still
don't want ACPI this is perfectly fine, you can use the usual -no-acpi
switch to toggle ACPI support.

These are the advantages you are going to loose then:

  (1) virtio-mmio device discovery without command line hacks (tweaking
      the command line is a problem when not using direct kernel boot).
  (2) Better IO-APIC support, we can use IRQ lines 16-23.
  (3) ACPI power button (aka powerdown request) works.
  (4) machine poweroff (aka S5 state) works.

Together with seabios patches for virtio-mmio support this allows to
boot standard fedora images (cloud, coreos, workstation live) with the
microvm machine type.

git branch for testing (including updated seabios):
	https://git.kraxel.org/cgit/qemu/log/?h=sirius/microvm

changes in v2:
  * some acpi cleanups are an separate patch series now.
  * switched to hw reduced acpi & generic event device.
  * misc fixes here and there.

changes in v3:
  * depeds on "[PATCH v6 00/16] acpi: i386 tweaks" series.
  * renamed qboot to qboot.bin
  * updated seabios to master branch snapshot.
    - this version boots fine with rtc=off
  * generic event device tweaks (Igor's comments).
  * make SMP work.
  * add RfC patches to turn off acpi by default for microvm.
  * misc fixes here and there.

changes in v4
  * rebase to latest master
    - this also depends on the pending seabios update
  * drop some patches which got cherry-picked.
  * wire up cpu hotplug (also does coldplug cpu init).
  * add microvm acpi test case.
  * dropped RfC patches to turn off acpi by default for microvm.
  * misc fixes here and there.

take care,
  Gerd

Gerd Hoffmann (21):
  microvm: name qboot binary qboot.rom
  seabios: add microvm config, update build rules
  seabios: add bios-microvm.bin binary
  acpi: ged: add control regs
  acpi: ged: add x86 device variant.
  acpi: move acpi_dsdt_add_power_button() to ged
  microvm: make virtio irq base runtime configurable
  microvm/acpi: add minimal acpi support
  microvm/acpi: add acpi_dsdt_add_virtio() for x86
  microvm/acpi: use GSI 16-23 for virtio
  microvm/acpi: use seabios with acpi=on
  microvm/acpi: disable virtio-mmio cmdline hack
  x86: constify x86_machine_is_*_enabled
  x86: move acpi_dev from pc/microvm
  x86: move cpu plug from pc to x86
  microvm: wire up hotplug
  tests/acpi: clear bios-tables-test-allowed-diff.h
  tests/acpi: allow microvm test data updates.
  tests/acpi: allow override blkdev
  tests/acpi: add microvm test
  tests/acpi: update expected data files for microvm

 hw/i386/acpi-microvm.h                      |   8 +
 include/hw/acpi/generic_event_device.h      |  12 +
 include/hw/i386/microvm.h                   |  10 +-
 include/hw/i386/pc.h                        |   1 -
 include/hw/i386/x86.h                       |  11 +-
 tests/qtest/bios-tables-test-allowed-diff.h |  18 --
 hw/acpi/generic_event_device.c              |  52 ++++
 hw/arm/virt-acpi-build.c                    |   8 -
 hw/i386/acpi-build.c                        |   2 +-
 hw/i386/acpi-microvm.c                      | 234 ++++++++++++++++++
 hw/i386/generic_event_device_x86.c          |  36 +++
 hw/i386/microvm.c                           | 105 +++++++-
 hw/i386/pc.c                                | 260 ++------------------
 hw/i386/pc_piix.c                           |   2 +-
 hw/i386/pc_q35.c                            |   2 +-
 hw/i386/x86.c                               | 226 ++++++++++++++++-
 tests/qtest/bios-tables-test.c              |  21 +-
 hw/i386/Kconfig                             |   1 +
 hw/i386/Makefile.objs                       |   2 +
 pc-bios/bios-microvm.bin                    | Bin 65536 -> 131072 bytes
 pc-bios/qboot.rom                           | Bin 0 -> 65536 bytes
 roms/Makefile                               |  11 +-
 roms/config.seabios-microvm                 |  26 ++
 tests/data/acpi/microvm/APIC                | Bin 0 -> 70 bytes
 tests/data/acpi/microvm/DSDT                | Bin 0 -> 365 bytes
 tests/data/acpi/microvm/FACP                | Bin 0 -> 268 bytes
 26 files changed, 761 insertions(+), 287 deletions(-)
 create mode 100644 hw/i386/acpi-microvm.h
 create mode 100644 hw/i386/acpi-microvm.c
 create mode 100644 hw/i386/generic_event_device_x86.c
 create mode 100644 pc-bios/qboot.rom
 create mode 100644 roms/config.seabios-microvm
 create mode 100644 tests/data/acpi/microvm/APIC
 create mode 100644 tests/data/acpi/microvm/DSDT
 create mode 100644 tests/data/acpi/microvm/FACP

-- 
2.18.4


Re: [PATCH v4 00/21] microvm: add acpi support
Posted by no-reply@patchew.org 3 years, 9 months ago
Patchew URL: https://patchew.org/QEMU/20200702204859.9876-1-kraxel@redhat.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH v4 00/21] microvm: add acpi support
Type: series
Message-id: 20200702204859.9876-1-kraxel@redhat.com

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

From https://github.com/patchew-project/qemu
 * [new tag]         patchew/20200702204859.9876-1-kraxel@redhat.com -> patchew/20200702204859.9876-1-kraxel@redhat.com
Switched to a new branch 'test'
6d5eb94 tests/acpi: update expected data files for microvm
bc45791 tests/acpi: add microvm test
c4b1e12 tests/acpi: allow override blkdev
afb44f2 tests/acpi: allow microvm test data updates.
ef356bd tests/acpi: clear bios-tables-test-allowed-diff.h
b80aa70 microvm: wire up hotplug
8f80d76 x86: move cpu plug from pc to x86
e3d689d x86: move acpi_dev from pc/microvm
2ca513e x86: constify x86_machine_is_*_enabled
dff3286 microvm/acpi: disable virtio-mmio cmdline hack
ee2b30f microvm/acpi: use seabios with acpi=on
ec0fefa microvm/acpi: use GSI 16-23 for virtio
35a5595 microvm/acpi: add acpi_dsdt_add_virtio() for x86
ef52f38 microvm/acpi: add minimal acpi support
9c5c1a3 microvm: make virtio irq base runtime configurable
dfbba95 acpi: move acpi_dsdt_add_power_button() to ged
9350314 acpi: ged: add x86 device variant.
7e7cbaa acpi: ged: add control regs
0d6d2dd seabios: add bios-microvm.bin binary
f847401 seabios: add microvm config, update build rules
1aa4e76 microvm: name qboot binary qboot.rom

=== OUTPUT BEGIN ===
1/21 Checking commit 1aa4e767856e (microvm: name qboot binary qboot.rom)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#36: 
rename from pc-bios/bios-microvm.bin

total: 0 errors, 1 warnings, 35 lines checked

Patch 1/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
2/21 Checking commit f84740183b7c (seabios: add microvm config, update build rules)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#29: 
new file mode 100644

total: 0 errors, 1 warnings, 39 lines checked

Patch 2/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
3/21 Checking commit 0d6d2ddc3815 (seabios: add bios-microvm.bin binary)
4/21 Checking commit 7e7cbaa1cf2a (acpi: ged: add control regs)
5/21 Checking commit 9350314a8c62 (acpi: ged: add x86 device variant.)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#25: 
new file mode 100644

total: 0 errors, 1 warnings, 51 lines checked

Patch 5/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
6/21 Checking commit dfbba956d1bc (acpi: move acpi_dsdt_add_power_button() to ged)
7/21 Checking commit 9c5c1a34efc7 (microvm: make virtio irq base runtime configurable)
8/21 Checking commit ef52f38efb11 (microvm/acpi: add minimal acpi support)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#34: 
new file mode 100644

WARNING: Block comments use a leading /* on a separate line
#39: FILE: hw/i386/acpi-microvm.c:1:
+/* Support for generating ACPI tables and passing them to Guests

WARNING: Block comments use a leading /* on a separate line
#150: FILE: hw/i386/acpi-microvm.c:112:
+    table_offsets = g_array_new(false, true /* clear */,

WARNING: Block comments use a leading /* on a separate line
#154: FILE: hw/i386/acpi-microvm.c:116:
+                             64 /* Ensure FACS is aligned */,

WARNING: Block comments use a leading /* on a separate line
#155: FILE: hw/i386/acpi-microvm.c:117:
+                             false /* high memory */);

total: 0 errors, 5 warnings, 297 lines checked

Patch 8/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
9/21 Checking commit 35a55956c365 (microvm/acpi: add acpi_dsdt_add_virtio() for x86)
10/21 Checking commit ec0fefa9351d (microvm/acpi: use GSI 16-23 for virtio)
11/21 Checking commit ee2b30f1d829 (microvm/acpi: use seabios with acpi=on)
12/21 Checking commit dff3286bf4a4 (microvm/acpi: disable virtio-mmio cmdline hack)
13/21 Checking commit 2ca513ea5407 (x86: constify x86_machine_is_*_enabled)
14/21 Checking commit e3d689d93ee0 (x86: move acpi_dev from pc/microvm)
15/21 Checking commit 8f80d768dea4 (x86: move cpu plug from pc to x86)
ERROR: space required before the open parenthesis '('
#344: FILE: hw/i386/x86.c:187:
+    if(!object_dynamic_cast(OBJECT(cpu), ms->cpu_type)) {

WARNING: Block comments use a leading /* on a separate line
#431: FILE: hw/i386/x86.c:274:
+    /* if 'address' properties socket-id/core-id/thread-id are not set, set them

WARNING: Block comments use a leading /* on a separate line
#434: FILE: hw/i386/x86.c:277:
+    /* TODO: move socket_id/core_id/thread_id checks into x86_cpu_realizefn()

WARNING: Block comments use a trailing */ on a separate line
#436: FILE: hw/i386/x86.c:279:
+     * CPUState::nr_cores and CPUState::nr_threads fields instead of globals */

WARNING: Block comments use a leading /* on a separate line
#484: FILE: hw/i386/x86.c:327:
+        /* If the number of CPUs can't be represented in 8 bits, the

WARNING: Block comments use a leading /* on a separate line
#502: FILE: hw/i386/x86.c:345:
+/* returns pointer to CPUArchId descriptor that matches CPU's apic_id

total: 1 errors, 5 warnings, 533 lines checked

Patch 15/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

16/21 Checking commit b80aa70e374f (microvm: wire up hotplug)
17/21 Checking commit ef356bd1fb47 (tests/acpi: clear bios-tables-test-allowed-diff.h)
18/21 Checking commit afb44f2d850b (tests/acpi: allow microvm test data updates.)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#13: 
new file mode 100644

total: 0 errors, 1 warnings, 4 lines checked

Patch 18/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
19/21 Checking commit c4b1e125fc0e (tests/acpi: allow override blkdev)
20/21 Checking commit bc457914cb9c (tests/acpi: add microvm test)
21/21 Checking commit 6d5eb9469a97 (tests/acpi: update expected data files for microvm)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200702204859.9876-1-kraxel@redhat.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Re: [PATCH v4 00/21] microvm: add acpi support
Posted by no-reply@patchew.org 3 years, 9 months ago
Patchew URL: https://patchew.org/QEMU/20200702204859.9876-1-kraxel@redhat.com/



Hi,

This series seems to have some coding style problems. See output below for
more information:

Subject: [PATCH v4 00/21] microvm: add acpi support
Type: series
Message-id: 20200702204859.9876-1-kraxel@redhat.com

=== TEST SCRIPT BEGIN ===
#!/bin/bash
git rev-parse base > /dev/null || exit 0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
./scripts/checkpatch.pl --mailback base..
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
From https://github.com/patchew-project/qemu
 - [tag update]      patchew/20200702204859.9876-1-kraxel@redhat.com -> patchew/20200702204859.9876-1-kraxel@redhat.com
Switched to a new branch 'test'
1e173ac tests/acpi: update expected data files for microvm
7f4d75c tests/acpi: add microvm test
7933c7d tests/acpi: allow override blkdev
8246d8e tests/acpi: allow microvm test data updates.
09ff54c tests/acpi: clear bios-tables-test-allowed-diff.h
a6ac3a9 microvm: wire up hotplug
37fe132 x86: move cpu plug from pc to x86
18502ab x86: move acpi_dev from pc/microvm
e25eb4c x86: constify x86_machine_is_*_enabled
3144c4e microvm/acpi: disable virtio-mmio cmdline hack
488512b microvm/acpi: use seabios with acpi=on
4dce0b0 microvm/acpi: use GSI 16-23 for virtio
6c1e43a microvm/acpi: add acpi_dsdt_add_virtio() for x86
7e90f10 microvm/acpi: add minimal acpi support
91fb357 microvm: make virtio irq base runtime configurable
75d0e28 acpi: move acpi_dsdt_add_power_button() to ged
b1b3872 acpi: ged: add x86 device variant.
2f82b96 acpi: ged: add control regs
7b24784 seabios: add bios-microvm.bin binary
be06767 seabios: add microvm config, update build rules
30aa71d microvm: name qboot binary qboot.rom

=== OUTPUT BEGIN ===
1/21 Checking commit 30aa71d445e7 (microvm: name qboot binary qboot.rom)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#36: 
rename from pc-bios/bios-microvm.bin

total: 0 errors, 1 warnings, 35 lines checked

Patch 1/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
2/21 Checking commit be0676767e5e (seabios: add microvm config, update build rules)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#29: 
new file mode 100644

total: 0 errors, 1 warnings, 39 lines checked

Patch 2/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
3/21 Checking commit 7b247849b125 (seabios: add bios-microvm.bin binary)
4/21 Checking commit 2f82b96fc4fb (acpi: ged: add control regs)
5/21 Checking commit b1b387286c9d (acpi: ged: add x86 device variant.)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#25: 
new file mode 100644

total: 0 errors, 1 warnings, 51 lines checked

Patch 5/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
6/21 Checking commit 75d0e28f4afe (acpi: move acpi_dsdt_add_power_button() to ged)
7/21 Checking commit 91fb3578211e (microvm: make virtio irq base runtime configurable)
8/21 Checking commit 7e90f10773b4 (microvm/acpi: add minimal acpi support)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#34: 
new file mode 100644

WARNING: Block comments use a leading /* on a separate line
#39: FILE: hw/i386/acpi-microvm.c:1:
+/* Support for generating ACPI tables and passing them to Guests

WARNING: Block comments use a leading /* on a separate line
#150: FILE: hw/i386/acpi-microvm.c:112:
+    table_offsets = g_array_new(false, true /* clear */,

WARNING: Block comments use a leading /* on a separate line
#154: FILE: hw/i386/acpi-microvm.c:116:
+                             64 /* Ensure FACS is aligned */,

WARNING: Block comments use a leading /* on a separate line
#155: FILE: hw/i386/acpi-microvm.c:117:
+                             false /* high memory */);

total: 0 errors, 5 warnings, 297 lines checked

Patch 8/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
9/21 Checking commit 6c1e43a0b904 (microvm/acpi: add acpi_dsdt_add_virtio() for x86)
10/21 Checking commit 4dce0b04d88f (microvm/acpi: use GSI 16-23 for virtio)
11/21 Checking commit 488512b60cfb (microvm/acpi: use seabios with acpi=on)
12/21 Checking commit 3144c4ef8a34 (microvm/acpi: disable virtio-mmio cmdline hack)
13/21 Checking commit e25eb4c6c1ca (x86: constify x86_machine_is_*_enabled)
14/21 Checking commit 18502ab064f4 (x86: move acpi_dev from pc/microvm)
15/21 Checking commit 37fe132c446b (x86: move cpu plug from pc to x86)
ERROR: space required before the open parenthesis '('
#344: FILE: hw/i386/x86.c:187:
+    if(!object_dynamic_cast(OBJECT(cpu), ms->cpu_type)) {

WARNING: Block comments use a leading /* on a separate line
#431: FILE: hw/i386/x86.c:274:
+    /* if 'address' properties socket-id/core-id/thread-id are not set, set them

WARNING: Block comments use a leading /* on a separate line
#434: FILE: hw/i386/x86.c:277:
+    /* TODO: move socket_id/core_id/thread_id checks into x86_cpu_realizefn()

WARNING: Block comments use a trailing */ on a separate line
#436: FILE: hw/i386/x86.c:279:
+     * CPUState::nr_cores and CPUState::nr_threads fields instead of globals */

WARNING: Block comments use a leading /* on a separate line
#484: FILE: hw/i386/x86.c:327:
+        /* If the number of CPUs can't be represented in 8 bits, the

WARNING: Block comments use a leading /* on a separate line
#502: FILE: hw/i386/x86.c:345:
+/* returns pointer to CPUArchId descriptor that matches CPU's apic_id

total: 1 errors, 5 warnings, 533 lines checked

Patch 15/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

16/21 Checking commit a6ac3a966c0d (microvm: wire up hotplug)
17/21 Checking commit 09ff54c06666 (tests/acpi: clear bios-tables-test-allowed-diff.h)
18/21 Checking commit 8246d8e472f7 (tests/acpi: allow microvm test data updates.)
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#13: 
new file mode 100644

total: 0 errors, 1 warnings, 4 lines checked

Patch 18/21 has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
19/21 Checking commit 7933c7d34c9f (tests/acpi: allow override blkdev)
20/21 Checking commit 7f4d75c92df2 (tests/acpi: add microvm test)
21/21 Checking commit 1e173acb1faa (tests/acpi: update expected data files for microvm)
=== OUTPUT END ===

Test command exited with code: 1


The full log is available at
http://patchew.org/logs/20200702204859.9876-1-kraxel@redhat.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com