From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: kraxel@redhat.com, ehabkost@redhat.com, liuxiaojian6@huawei.com,
mst@redhat.com, rkrcmar@redhat.com, peterx@redhat.com,
kevin@koconnor.net, pbonzini@redhat.com, lersek@redhat.com,
chao.gao@intel.com
Subject: [Qemu-devel] [PATCH v4 00/13] pc: q35: x2APIC support in kvm_apic mode
Date: Wed, 19 Oct 2016 14:05:30 +0200 [thread overview]
Message-ID: <1476878743-144953-1-git-send-email-imammedo@redhat.com> (raw)
Changes since v3:
- fix endianness issues when filling MADT/SRAT entries (Eduardo)
- squash "acpi: cphp: support x2APIC entry in cpu._MAT" into
"pc: acpi: x2APIC support for MADT table and _MAT method" (Eduardo)
- keep assert() as it doesn't affect x2APIC cpus in bochs_bios_init() (Eduardo)
- restore kvm_has_x2apic_api() and use it to avoid side-effects
of kvm_enable_x2apic(). x2APIC API will be enabled by iommu
if it's present or not enabled at all. (Radim)
- add intel iommu example to error message (Eduardo)
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 kernel 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
v3 for reference:
[PATCH v3 00/13] pc: q35: x2APIC support in kvm_apic mode
https://lists.gnu.org/archive/html/qemu-devel/2016-10/msg02865.html
git gree for testing:
https://github.com/imammedo/qemu.git x2apic_v4
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 and _MAT method
pc: acpi: x2APIC support for SRAT table
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
pc: q35: bump max_cpus to 288
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 +
target-i386/kvm_i386.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/i386/pc_q35.c | 2 +
hw/intc/apic_common.c | 52 ++++++++++++++++++-
hw/ppc/spapr.c | 2 +-
target-i386/cpu.c | 2 +-
target-i386/kvm.c | 13 +++--
17 files changed, 250 insertions(+), 81 deletions(-)
--
2.7.4
next reply other threads:[~2016-10-19 12:05 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-19 12:05 Igor Mammedov [this message]
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 01/13] pc: acpi: x2APIC support for MADT table and _MAT method Igor Mammedov
2016-10-19 12:54 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 02/13] pc: acpi: x2APIC support for SRAT table Igor Mammedov
2016-10-19 12:54 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 03/13] acpi: cphp: force switch to modern cpu hotplug if APIC ID > 254 Igor Mammedov
2016-10-19 12:54 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 04/13] pc: leave max apic_id_limit only in legacy cpu hotplug code Igor Mammedov
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 05/13] pc: apic_common: extend APIC ID property to 32bit Igor Mammedov
2016-10-19 12:55 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 06/13] pc: apic_common: restore APIC ID to initial ID on reset Igor Mammedov
2016-10-19 12:56 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 07/13] pc: apic_common: reset APIC ID to initial ID when switching into x2APIC mode Igor Mammedov
2016-10-19 12:56 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 08/13] pc: kvm_apic: pass APIC ID depending on xAPIC/x2APIC mode Igor Mammedov
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 09/13] pc: clarify FW_CFG_MAX_CPUS usage comment Igor Mammedov
2016-10-19 12:58 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 10/13] increase MAX_CPUMASK_BITS from 255 to 288 Igor Mammedov
2016-10-19 13:16 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 11/13] pc: add 'etc/boot-cpus' fw_cfg file for machine with more than 255 CPUs Igor Mammedov
2016-10-19 13:15 ` Eduardo Habkost
2016-10-19 15:18 ` Igor Mammedov
2016-10-19 18:29 ` Eduardo Habkost
2016-10-20 11:27 ` Igor Mammedov
2016-10-20 12:27 ` Eduardo Habkost
2016-10-20 13:27 ` Igor Mammedov
2016-10-20 14:15 ` Eduardo Habkost
2016-10-20 14:42 ` Igor Mammedov
2016-10-20 14:49 ` Kevin O'Connor
2016-10-20 14:58 ` [Qemu-devel] [PATCH v5 " Igor Mammedov
2016-10-20 18:11 ` Eduardo Habkost
2016-10-20 18:51 ` [Qemu-devel] [PATCH] fixup! " Eduardo Habkost
2016-10-21 8:53 ` Igor Mammedov
2016-10-21 11:41 ` Eduardo Habkost
2016-10-27 22:08 ` Michael S. Tsirkin
2016-10-28 0:53 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 12/13] pc: require IRQ remapping and EIM if there could be x2APIC CPUs Igor Mammedov
2016-10-19 13:17 ` Eduardo Habkost
2016-10-19 12:05 ` [Qemu-devel] [PATCH v4 13/13] pc: q35: bump max_cpus to 288 Igor Mammedov
2016-10-19 13:19 ` Eduardo Habkost
2016-10-19 13:29 ` [Qemu-devel] [PATCH v4 00/13] pc: q35: x2APIC support in kvm_apic mode Daniel P. Berrange
2016-10-19 15:22 ` Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1476878743-144953-1-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=chao.gao@intel.com \
--cc=ehabkost@redhat.com \
--cc=kevin@koconnor.net \
--cc=kraxel@redhat.com \
--cc=lersek@redhat.com \
--cc=liuxiaojian6@huawei.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rkrcmar@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.