All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode
@ 2016-10-13  9:52 Igor Mammedov
  2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 01/13] pc: acpi: x2APIC support for MADT table Igor Mammedov
                   ` (15 more replies)
  0 siblings, 16 replies; 68+ messages in thread
From: Igor Mammedov @ 2016-10-13  9:52 UTC (permalink / raw)
  To: qemu-devel
  Cc: kraxel, ehabkost, liuxiaojian6, mst, rkrcmar, peterx, kevin,
	pbonzini, lersek, chao.gao

Changes since v2:
  - rebase on top of EIM fixes
  - drop kvm_has_x2apic_ids() and reuse kvm_enable_x2apic()
    from Radim's EIM fixes
  - fix hang on reboot in BIOS due to not updated 'etc/boot-cpus' fwcfg file
    after CPU hotplug
  - drop not used anymore pc_present_cpus_count() and incrementally count
    present VCPUs as they are added/removed at (un)plug callbacks time

Changes since v1:
  - rebase on top of 2.7
  - drop add 2.8 machine and linux headers update patches
  - drop numa related patches (will post separately as unrelated)
  - change default mc->maxcpus only for q35

Changes since RFC:
  - use new KVM_CAP_X2APIC_API to detect x2APIC IDs support
  - rebase on top of 2.7-rc1, since many deps were merged
  - fix etc/boot-cpus to account for -device provided cpus
  - include not yet merged _PXM fix as prereq
  - add 2.8 machine type and bump up maxcpus count since it

Series extends current CPU/kvm_apic/Q35 machine
code to support x2APIC and upto 288 VCPUs when QEMU
is used with KVM's lapic.

Due to FW_CFG_MAX_CPUS (which is actually apic_id_limit)
being limited to uint16_t, the max possible APIC ID is
limitted to 2^16 with this series but that should
be sufficient for bumping VCPUs number for quite a while.

Not yet fixed x2APIC issues:
CPU hotplug doesn't work for CPUs where APIC ID > 254
(guest has to be rebooted to pickup hotplugged CPUs)
due to kernel_irqchip loosing directed IPIs (INIT/SIPI)
to APICs above 254 as a hotplugged CPU is in after power-on
state (i.e. not in x2APIC mode).
Radim's going to post KVM patch to fix it and on top of it
I'll post a followup QEMU sanity check patch to detect if host
supports directed IPIs to CPUs with APIC IDs above 254 in
after power-on state.


Tested with following CLI:
 QEMU -M q35 -enable-kvm \
      -device intel-iommu,intremap=on,eim=on -machine kernel_irqchip=split \
      -smp 1,sockets=9,cores=32,threads=1,maxcpus=288 \
      -device qemu64-x86_64-cpu,socket-id=8,core-id=30,thread-id=0       \
      -bios x2apic_bios.bin

v2 for reference:
[PATCH v2 00/14] pc: q35: x2APIC support in kvm_apic mode
https://lists.gnu.org/archive/html/qemu-devel/2016-09/msg05630.html

Depends on following series:
[PATCH v5 0/7] intel_iommu: fix EIM
https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg01981.html

git gree for testing:
https://github.com/imammedo/qemu.git x2apic_v3

To play with the feature, one would also need x2apic enabled
seabios counterpart:
https://github.com/imammedo/seabios.git x2apic_v4

Cc: kraxel@redhat.com,
Cc: ehabkost@redhat.com,
Cc: liuxiaojian6@huawei.com,
Cc: mst@redhat.com,
Cc: rkrcmar@redhat.com,
Cc: peterx@redhat.com,
Cc: kevin@koconnor.net,
Cc: pbonzini@redhat.com,
Cc: lersek@redhat.com,
Cc: chao.gao@intel.com

Igor Mammedov (13):
  pc: acpi: x2APIC support for MADT table
  pc: acpi: x2APIC support for SRAT table
  acpi: cphp: support x2APIC entry in cpu._MAT
  acpi: cphp: force switch to modern cpu hotplug if APIC ID > 254
  pc: leave max apic_id_limit only in legacy cpu hotplug code
  pc: apic_common: extend APIC ID property to 32bit
  pc: apic_common: restore APIC ID to initial ID on reset
  pc: apic_common: reset APIC ID to initial ID when switching into
    x2APIC mode
  pc: kvm_apic: pass APIC ID depending on xAPIC/x2APIC mode
  pc: clarify FW_CFG_MAX_CPUS usage comment
  increase MAX_CPUMASK_BITS from 255 to 288
  pc: add 'etc/boot-cpus' fw_cfg file for machine with more than 255
    CPUs
  pc: require IRQ remapping and EIM if there could be x2APIC CPUs

 include/hw/acpi/acpi-defs.h     |  29 +++++++++++
 include/hw/i386/apic_internal.h |   3 +-
 include/hw/i386/pc.h            |   2 +
 include/sysemu/sysemu.h         |   2 +-
 target-i386/cpu.h               |   1 +
 hw/acpi/cpu.c                   |   5 ++
 hw/acpi/cpu_hotplug.c           |  17 ++++--
 hw/arm/virt.c                   |   2 +-
 hw/i386/acpi-build.c            | 112 ++++++++++++++++++++++++++++------------
 hw/i386/kvm/apic.c              |  12 ++++-
 hw/i386/pc.c                    |  74 ++++++++++++++------------
 hw/intc/apic_common.c           |  52 ++++++++++++++++++-
 hw/ppc/spapr.c                  |   2 +-
 target-i386/cpu.c               |   2 +-
 14 files changed, 236 insertions(+), 79 deletions(-)

-- 
2.7.4

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

end of thread, other threads:[~2016-10-19 10:36 UTC | newest]

Thread overview: 68+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-13  9:52 [Qemu-devel] [PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 01/13] pc: acpi: x2APIC support for MADT table Igor Mammedov
2016-10-18 12:47   ` Eduardo Habkost
2016-10-18 13:00     ` Igor Mammedov
2016-10-18 13:05     ` Eduardo Habkost
2016-10-18 13:42       ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 02/13] pc: acpi: x2APIC support for SRAT table Igor Mammedov
2016-10-18 13:07   ` Eduardo Habkost
2016-10-18 13:47     ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 03/13] acpi: cphp: support x2APIC entry in cpu._MAT Igor Mammedov
2016-10-18 13:34   ` Eduardo Habkost
2016-10-18 13:46     ` Igor Mammedov
2016-10-18 13:47       ` Eduardo Habkost
2016-10-18 14:02         ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 04/13] acpi: cphp: force switch to modern cpu hotplug if APIC ID > 254 Igor Mammedov
2016-10-18 13:38   ` Eduardo Habkost
2016-10-18 14:34     ` Igor Mammedov
2016-10-18 15:05       ` Eduardo Habkost
2016-10-18 15:23         ` Igor Mammedov
2016-10-18 16:37           ` Eduardo Habkost
2016-10-19 10:35             ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 05/13] pc: leave max apic_id_limit only in legacy cpu hotplug code Igor Mammedov
2016-10-17 21:44   ` Eduardo Habkost
2016-10-18  9:02     ` Igor Mammedov
2016-10-18 10:31       ` Eduardo Habkost
2016-10-18 11:37         ` [Qemu-devel] [PATCH v4 " Igor Mammedov
2016-10-18 12:01           ` Eduardo Habkost
2016-10-18  9:12     ` [Qemu-devel] [PATCH v3 " Igor Mammedov
2016-10-18 10:39       ` Eduardo Habkost
2016-10-18 12:10         ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 06/13] pc: apic_common: extend APIC ID property to 32bit Igor Mammedov
2016-10-18 10:56   ` Eduardo Habkost
2016-10-18 12:36     ` Igor Mammedov
2016-10-18 12:59       ` Eduardo Habkost
2016-10-18 14:01         ` Igor Mammedov
2016-10-18 14:14           ` Eduardo Habkost
2016-10-18 14:38             ` Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 07/13] pc: apic_common: restore APIC ID to initial ID on reset Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 08/13] pc: apic_common: reset APIC ID to initial ID when switching into x2APIC mode Igor Mammedov
2016-10-13 14:11   ` Radim Krčmář
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 09/13] pc: kvm_apic: pass APIC ID depending on xAPIC/x2APIC mode Igor Mammedov
2016-10-13 14:08   ` Radim Krčmář
2016-10-14 11:21     ` [Qemu-devel] [PATCH v4 " Igor Mammedov
2016-10-17 12:35       ` Radim Krčmář
2016-10-18 14:56       ` Eduardo Habkost
2016-10-18 16:26         ` Radim Krčmář
2016-10-18 18:04           ` Eduardo Habkost
2016-10-17 21:51   ` [Qemu-devel] [PATCH v3 " Eduardo Habkost
2016-10-18  7:17     ` Igor Mammedov
2016-10-18 10:40       ` Eduardo Habkost
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 10/13] pc: clarify FW_CFG_MAX_CPUS usage comment Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 11/13] increase MAX_CPUMASK_BITS from 255 to 288 Igor Mammedov
2016-10-13 13:01   ` Andrew Jones
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 12/13] pc: add 'etc/boot-cpus' fw_cfg file for machine with more than 255 CPUs Igor Mammedov
2016-10-13  9:52 ` [Qemu-devel] [PATCH v3 13/13] pc: require IRQ remapping and EIM if there could be x2APIC CPUs Igor Mammedov
2016-10-13 13:56   ` Radim Krčmář
2016-10-14 11:25     ` [Qemu-devel] [PATCH v4 " Igor Mammedov
2016-10-18 11:27       ` Eduardo Habkost
2016-10-18 12:44         ` Igor Mammedov
2016-10-18 12:55           ` Eduardo Habkost
2016-10-18 14:39             ` Igor Mammedov
2016-10-13 10:01 ` [Qemu-devel] [PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode Paolo Bonzini
2016-10-13 10:15   ` Igor Mammedov
2016-10-13 10:28   ` Gerd Hoffmann
2016-10-13 13:24 ` [Qemu-devel] [PATCH v3 14/13] pc: q35: bump max_cpus to 288 Igor Mammedov
2016-10-13 13:53   ` Radim Krčmář
2016-10-14  4:05 ` [Qemu-devel] [PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode no-reply
2016-10-14  7:59   ` Igor Mammedov

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.