All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.