qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-2.8 00/18] pc: q35: x2APIC support in kvm_ap


From: Chao Gao
Subject: Re: [Qemu-devel] [PATCH for-2.8 00/18] pc: q35: x2APIC support in kvm_apic mode
Date: Mon, 8 Aug 2016 15:41:23 +0800
User-agent: Mutt/1.5.21 (2010-09-15)

HI, everyone.

We have done some tests after merging this patch set into the lastest qemu
master. In kvm aspect, we use the lastest kvm linux-next branch. Here are
some problems we have met.

1. We can't boot up a 288 vcpus linux guest with CLI:
qemu-system-x86_64 -boot c -m 4096 -sdl -monitor pty --enable-kvm \
-M kernel-irqchip=split -serial stdio -bios bios.bin -smp cpus=288 \
-hda vdisk.img -device intel-iommu,intremap=on -machine q35.
The problem exists, even after we only assign 32 vcpus to the linux guest.
Maybe the output "do_IRQ: 146.113 No irq handler for vector (irq -1)" is a clue.
The output of qemu and kernel is in attachments. Do you have any idea
about the problem and how to solve it?

2. Windows8.1(64bit) guest always crashes when intremap is enabled regardless
of vcpu number. We paste the crash screenshot and the log of qemu in 
attchments. We find from the qemu log that windows consistently read a 
register related to intremap before crash. what do you think cause the crash?

Regards,
-Chao

On Fri, Aug 05, 2016 at 11:45:59AM +0200, Igor Mammedov wrote:
>
>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/generic pc 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.
>
>Tested with following CLI:
> QEMU -M q35 -enable-kvm -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
>
>
>git gree for testing:
>https://github.com/imammedo/qemu.git x2apic_v1
>
>To play with the feature, one would also need x2apic enabled
>seabios counterpart:
>https://github.com/imammedo/seabios.git x2apic_v3
>
>PS:
>As kernel deps it needs 4.8 kernel on host side and it
>doesn't include irq remapping/iommu fixes that Radim
>has WIP branch, that should be posted separately/on top of this
>
>But even without above kernel boots in x2APIC mode
>
>Igor Mammedov (17):
>  numa: reduce code duplication by adding helper numa_get_node_for_cpu()
>  acpi: provide _PXM method for CPU devices if QEMU is started numa
>    enabled
>  tests: acpi: extend cphp testcase with numa check
>  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: add 2.8 machine
>  pc: q35: bump max_cpus to 288
>
>root (1):
>  linux-headers: update to v4.8-rc1
>
> include/hw/acpi/acpi-defs.h        |  29 +++++++++
> include/hw/compat.h                |   2 +
> include/hw/i386/apic_internal.h    |   3 +-
> include/hw/i386/pc.h               |   4 ++
> include/sysemu/numa.h              |   3 +
> include/sysemu/sysemu.h            |   2 +-
> linux-headers/linux/kvm.h          |  13 ++++-
> target-i386/cpu.h                  |   1 +
> target-i386/kvm_i386.h             |   1 +
> hw/acpi/cpu.c                      |  17 ++++++
> hw/acpi/cpu_hotplug.c              |  17 ++++--
> hw/arm/virt-acpi-build.c           |   6 +-
> hw/arm/virt.c                      |   9 ++-
> hw/i386/acpi-build.c               | 117 +++++++++++++++++++++++++------------
> hw/i386/kvm/apic.c                 |  13 ++++-
> hw/i386/pc.c                       |  47 ++++++++-------
> hw/i386/pc_piix.c                  |  17 ++++--
> hw/i386/pc_q35.c                   |  14 ++++-
> hw/intc/apic_common.c              |  46 ++++++++++++++-
> hw/ppc/spapr.c                     |   2 +-
> hw/ppc/spapr_cpu_core.c            |   6 +-
> numa.c                             |  12 ++++
> target-i386/cpu.c                  |   2 +-
> target-i386/kvm.c                  |  14 +++++
> tests/acpi-test-data/pc/SRAT.cphp  | Bin 0 -> 304 bytes
> tests/acpi-test-data/q35/SRAT.cphp | Bin 0 -> 304 bytes
> tests/bios-tables-test.c           |   6 +-
> 27 files changed, 307 insertions(+), 96 deletions(-)
> create mode 100644 tests/acpi-test-data/pc/SRAT.cphp
> create mode 100644 tests/acpi-test-data/q35/SRAT.cphp
>
>-- 
>2.7.4
>
>

Attachment: qemu_linux.log
Description: Text document

Attachment: windows_1vcpu.log
Description: Text document

Attachment: Screenshot from 2016-08-08 13-35-46.png
Description: PNG image


reply via email to

[Prev in Thread] Current Thread [Next in Thread]