From: Bui Quang Minh <minhquangbui99@gmail.com>
To: Santosh Shukla <santosh.shukla@amd.com>, qemu-devel@nongnu.org
Cc: "David Woodhouse" <dwmw2@infradead.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Michael S . Tsirkin" <mst@redhat.com>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Igor Mammedov" <imammedo@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Joao Martins" <joao.m.martins@oracle.com>,
"Peter Xu" <peterx@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Phil Dennis-Jordan" <lists@philjordan.eu>,
"Suravee Suthikulpanit" <suravee.suthikulpanit@amd.com>
Subject: Re: [PATCH v9 0/5] Support x2APIC mode with TCG accelerator
Date: Thu, 9 Nov 2023 21:10:43 +0700 [thread overview]
Message-ID: <1c4cf652-9b31-4b22-8bb9-df27dce74cfd@gmail.com> (raw)
In-Reply-To: <8bbae7b9-3923-b5cd-ff89-50baeccb5d02@amd.com>
On 11/9/23 17:11, Santosh Shukla wrote:
> On 10/24/2023 8:51 PM, Bui Quang Minh wrote:
>> Hi everyone,
>>
>> This series implements x2APIC mode in userspace local APIC and the
>> RDMSR/WRMSR helper to access x2APIC registers in x2APIC mode. Intel iommu
>> and AMD iommu are adjusted to support x2APIC interrupt remapping. With this
>> series, we can now boot Linux kernel into x2APIC mode with TCG accelerator
>> using either Intel or AMD iommu.
>>
>> Testing to boot my own built Linux 6.3.0-rc2, the kernel successfully boot
>> with enabled x2APIC and can enumerate CPU with APIC ID 257
>>
>> Using Intel IOMMU
>>
>> qemu/build/qemu-system-x86_64 \
>> -smp 2,maxcpus=260 \
>> -cpu qemu64,x2apic=on \
>> -machine q35 \
>> -device intel-iommu,intremap=on,eim=on \
>> -device qemu64-x86_64-cpu,x2apic=on,core-id=257,socket-id=0,thread-id=0 \
>> -m 2G \
>> -kernel $KERNEL_DIR \
>> -append "nokaslr console=ttyS0 root=/dev/sda earlyprintk=serial net.ifnames=0" \
>> -drive file=$IMAGE_DIR,format=raw \
>> -nographic \
>> -s
>>
>> Using AMD IOMMU
>>
>> qemu/build/qemu-system-x86_64 \
>> -smp 2,maxcpus=260 \
>> -cpu qemu64,x2apic=on \
>> -machine q35 \
>> -device amd-iommu,intremap=on,xtsup=on \
>> -device qemu64-x86_64-cpu,x2apic=on,core-id=257,socket-id=0,thread-id=0 \
>> -m 2G \
>> -kernel $KERNEL_DIR \
>> -append "nokaslr console=ttyS0 root=/dev/sda earlyprintk=serial net.ifnames=0" \
>> -drive file=$IMAGE_DIR,format=raw \
>> -nographic \
>> -s
>>
>> Testing the emulated userspace APIC with kvm-unit-tests, disable test
>> device with this patch
>>
>> diff --git a/lib/x86/fwcfg.c b/lib/x86/fwcfg.c
>> index 1734afb..f56fe1c 100644
>> --- a/lib/x86/fwcfg.c
>> +++ b/lib/x86/fwcfg.c
>> @@ -27,6 +27,7 @@ static void read_cfg_override(void)
>>
>> if ((str = getenv("TEST_DEVICE")))
>> no_test_device = !atol(str);
>> + no_test_device = true;
>>
>> if ((str = getenv("MEMLIMIT")))
>> fw_override[FW_CFG_MAX_RAM] = atol(str) * 1024 * 1024;
>>
>> ~ env QEMU=/home/minh/Desktop/oss/qemu/build/qemu-system-x86_64 ACCEL=tcg \
>> ./run_tests.sh -v -g apic
>>
>> TESTNAME=apic-split TIMEOUT=90s ACCEL=tcg ./x86/run x86/apic.flat -smp 2
>> -cpu qemu64,+x2apic,+tsc-deadline -machine kernel_irqchip=split FAIL
>> apic-split (54 tests, 8 unexpected failures, 1 skipped)
>> TESTNAME=ioapic-split TIMEOUT=90s ACCEL=tcg ./x86/run x86/ioapic.flat -smp
>> 1 -cpu qemu64 -machine kernel_irqchip=split PASS ioapic-split (19 tests)
>> TESTNAME=x2apic TIMEOUT=30 ACCEL=tcg ./x86/run x86/apic.flat -smp 2 -cpu
>> qemu64,+x2apic,+tsc-deadline FAIL x2apic (54 tests, 8 unexpected failures,
>> 1 skipped) TESTNAME=xapic TIMEOUT=60 ACCEL=tcg ./x86/run x86/apic.flat -smp
>> 2 -cpu qemu64,-x2apic,+tsc-deadline -machine pit=off FAIL xapic (43 tests,
>> 6 unexpected failures, 2 skipped)
>>
>> FAIL: apic_disable: *0xfee00030: 50014
>> FAIL: apic_disable: *0xfee00080: f0
>> FAIL: apic_disable: *0xfee00030: 50014
>> FAIL: apic_disable: *0xfee00080: f0
>> FAIL: apicbase: relocate apic
>>
>> These errors are because we don't disable MMIO region when switching to
>> x2APIC and don't support relocate MMIO region yet. This is a problem
>> because, MMIO region is the same for all CPUs, in order to support these we
>> need to figure out how to allocate and manage different MMIO regions for
>> each CPUs. This can be an improvement in the future.
>>
>> FAIL: nmi-after-sti
>> FAIL: multiple nmi
>>
>> These errors are in the way we handle CPU_INTERRUPT_NMI in core TCG.
>>
>> FAIL: TMCCT should stay at zero
>>
>> This error is related to APIC timer which should be addressed in separate
>> patch.
>>
>> Version 9 changes,
>
> Hi Bui,
>
> I have tested v9 on EPYC-Genoa system with kvm acceleration mode on, I could
> see > 255 vCPU for Linux and Windows Guest.
>
> Tested-by: Santosh Shukla <Santosh.Shukla@amd.com>
Hi Santosh,
With KVM enabled, you may be using the in kernel APIC from KVM not the
emulated APIC in userspace as in this series.
Thanks,
Quang Minh.
next prev parent reply other threads:[~2023-11-09 14:14 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-24 15:21 [PATCH v9 0/5] Support x2APIC mode with TCG accelerator Bui Quang Minh
2023-10-24 15:21 ` [PATCH v9 1/5] i386/tcg: implement x2APIC registers MSR access Bui Quang Minh
2023-10-24 15:21 ` [PATCH v9 2/5] apic: add support for x2APIC mode Bui Quang Minh
2023-10-24 15:21 ` [PATCH v9 3/5] apic, i386/tcg: add x2apic transitions Bui Quang Minh
2023-10-24 15:21 ` [PATCH v9 4/5] intel_iommu: allow Extended Interrupt Mode when using userspace APIC Bui Quang Minh
2023-10-24 15:21 ` [PATCH v9 5/5] amd_iommu: report x2APIC support to the operating system Bui Quang Minh
2023-11-07 0:39 ` Michael S. Tsirkin
2023-11-08 14:22 ` Bui Quang Minh
2023-11-08 19:44 ` Michael S. Tsirkin
2023-11-09 14:12 ` Bui Quang Minh
2023-11-09 10:11 ` [PATCH v9 0/5] Support x2APIC mode with TCG accelerator Santosh Shukla
2023-11-09 14:10 ` Bui Quang Minh [this message]
2023-11-09 14:32 ` Joao Martins
2023-11-09 14:42 ` Bui Quang Minh
2023-11-09 15:29 ` Santosh Shukla
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=1c4cf652-9b31-4b22-8bb9-df27dce74cfd@gmail.com \
--to=minhquangbui99@gmail.com \
--cc=alex.bennee@linaro.org \
--cc=dwmw2@infradead.org \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=jasowang@redhat.com \
--cc=joao.m.martins@oracle.com \
--cc=lists@philjordan.eu \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterx@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=santosh.shukla@amd.com \
--cc=suravee.suthikulpanit@amd.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 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).