qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 00/10] pc: do not create invalid MADT.LAPIC/Processor entries
@ 2016-02-26 13:59 Igor Mammedov
  2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 01/10] tests: pc: acpi: piix4: add sparse CPU hotplug case Igor Mammedov
                   ` (9 more replies)
  0 siblings, 10 replies; 25+ messages in thread
From: Igor Mammedov @ 2016-02-26 13:59 UTC (permalink / raw)
  To: qemu-devel; +Cc: marcel, ehabkost, mst

Changes since v3:
 - replace possible-cpus QOM interface with
   MachineClass.possible_cpu_arch_ids() hook
     Eduardo Habkost <ehabkost@redhat.com>
 - add ACPI tables test case for sparse topology
Changes since v2:
 - build possible CPUs list only once.
     Marcel Apfelbaum <marcel@redhat.com>
 - replace MachineClass possible_cpu_arch_ids() hook with
   QOM interface, so only targets that need it would implement it
 - fix ^2 times present CPU lookup for initial CPUs
    Eduardo Habkost <ehabkost@redhat.com>
 - drop found_cpus bitmap altogether

Changes since v1:
 - rebased on top of PCI tree that contains
   Eduardo's guest_info removel series
 - fix ^2 times present CPU lookup when creating CPON
   package (spotted-by: Eduardo Habkost <ehabkost@redhat.com>)

It's mostly clean up series that removes invalid CPU
entries from MADT/DSDT/SRAT tables when APIC IDs are
sparse distributed*.
Series also removes intermediate present CPUs bitmap
in ACPI tables generation code, replacing it with
machine reported presence status. That should
help later for consolidating and sharing CPU hotplug
codebase and extending supported CPU count above 256
on ACPI side, where I'm going to replace current
"not scalable" bitmap based CPU hotplug MMIO interface
with memory-hotplug like one, which could easily
scale and provide additional info for ACPI CPU device
objects.

Tested hoptlug with: RHEL72 and WS2003 / WS2012R2.
Git tree for testing:
https://github.com/imammedo/qemu.git pc_madt_dsdt_lapic_cleanups_v4

* example topology with sparse APIC IDs:
  -smp X,sockets=2,cores=3,maxcpus=6

* it's not possible to remove notion of apic_ad_limit
  since guest visible interfaces like CPU hoptlug MMIO
  (CPON array in ACPI + corresponding MMIO in QEMU) and
  FWCFG should stay the same for compat reasons with
  current setups and legacy SeaBIOS.

Igor Mammedov (10):
  tests: pc: acpi: piix4: add sparse CPU hotplug case
  pc: init pcms->apic_id_limit once and use it throughout pc.c
  machine: introduce MachineClass.possible_cpu_arch_ids() hook
  pc: acpi: cleanup qdev_get_machine() calls
  pc: acpi: SRAT: create only valid processor lapic entries
  pc: acpi: create MADT.lapic entries only for valid lapics
  pc: acpi: create Processor and Notify objects only for valid lapics
  pc: acpi: drop cpu->found_cpus bitmap
  pc: acpi: clarify why possible LAPIC entries must be present in MADT
  tests: update ACPI tables blobs for cpuhp_sparse case

 hw/i386/acpi-build.c                      | 147 +++++++++++++++---------------
 hw/i386/pc.c                              |  89 ++++++++++++------
 include/hw/boards.h                       |  26 ++++++
 include/hw/i386/pc.h                      |   1 +
 tests/acpi-test-data/pc/APIC.cpuhp_sparse | Bin 0 -> 160 bytes
 tests/acpi-test-data/pc/DSDT.cpuhp_sparse | Bin 0 -> 5821 bytes
 tests/acpi-test-data/pc/SRAT.cpuhp_sparse | Bin 0 -> 264 bytes
 tests/bios-tables-test.c                  |  16 ++++
 8 files changed, 175 insertions(+), 104 deletions(-)
 create mode 100644 tests/acpi-test-data/pc/APIC.cpuhp_sparse
 create mode 100644 tests/acpi-test-data/pc/DSDT.cpuhp_sparse
 create mode 100644 tests/acpi-test-data/pc/SRAT.cpuhp_sparse

-- 
1.8.3.1

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2016-03-11 13:48 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-26 13:59 [Qemu-devel] [PATCH v4 00/10] pc: do not create invalid MADT.LAPIC/Processor entries Igor Mammedov
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 01/10] tests: pc: acpi: piix4: add sparse CPU hotplug case Igor Mammedov
2016-03-03 11:36   ` Marcel Apfelbaum
2016-03-08 14:05   ` Marcel Apfelbaum
2016-03-11 13:48   ` Michael S. Tsirkin
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 02/10] pc: init pcms->apic_id_limit once and use it throughout pc.c Igor Mammedov
2016-02-28 20:11   ` Marcel Apfelbaum
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 03/10] machine: introduce MachineClass.possible_cpu_arch_ids() hook Igor Mammedov
2016-03-03 11:27   ` Marcel Apfelbaum
2016-03-03 14:13     ` Igor Mammedov
2016-03-03 14:28   ` [Qemu-devel] [PATCH v5 " Igor Mammedov
     [not found]     ` <20160308132850.2fbe25bd@nial.brq.redhat.com>
     [not found]       ` <56DEDBBF.9050203@redhat.com>
     [not found]         ` <20160308154317.72a695a4@nial.brq.redhat.com>
2016-03-08 15:16           ` Marcel Apfelbaum
2016-03-08 16:29     ` Igor Mammedov
2016-03-08 17:40       ` Marcel Apfelbaum
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 04/10] pc: acpi: cleanup qdev_get_machine() calls Igor Mammedov
2016-02-28 20:05   ` Marcel Apfelbaum
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 05/10] pc: acpi: SRAT: create only valid processor lapic entries Igor Mammedov
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 06/10] pc: acpi: create MADT.lapic entries only for valid lapics Igor Mammedov
2016-03-03 10:35   ` Marcel Apfelbaum
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 07/10] pc: acpi: create Processor and Notify objects " Igor Mammedov
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 08/10] pc: acpi: drop cpu->found_cpus bitmap Igor Mammedov
2016-03-03 11:33   ` Marcel Apfelbaum
2016-03-03 14:24     ` Igor Mammedov
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 09/10] pc: acpi: clarify why possible LAPIC entries must be present in MADT Igor Mammedov
2016-02-26 13:59 ` [Qemu-devel] [PATCH v4 10/10] tests: update ACPI tables blobs for cpuhp_sparse case Igor Mammedov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).