From: Bui Quang Minh <minhquangbui99@gmail.com>
To: Phil Dennis-Jordan <lists@philjordan.eu>
Cc: qemu-devel@nongnu.org, "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>
Subject: Re: [PATCH v8 1/5] i386/tcg: implement x2APIC registers MSR access
Date: Tue, 24 Oct 2023 22:27:25 +0700 [thread overview]
Message-ID: <f7ed46e8-cf71-4b1d-95d4-edc4a0b7540f@gmail.com> (raw)
In-Reply-To: <CAGCz3vtQiRkeErcA9NpUeu0Ak7o=qsy02PiVvZrEMoP=86MU1g@mail.gmail.com>
On 10/22/23 20:59, Phil Dennis-Jordan wrote:
> I can confirm that this works. The build issue obviously needs fixing,
> but once that's fixed, this improves on the status quo.
>
> I've tested this and patch 2/5 with x2apic CPUID bit enabled with the
> hvf backend on macOS. To make it work in hvf mode, I used the attached
> additional minimal patch to wire it up, but with that in place it
> noticeably improves guest OS performance. (This patch doesn't yet
> implement raising exceptions or checking for x2apic mode, more on that
> in my comments below.)
>
> Reviewed-by: Phil Dennis-Jordan <phil@philjordan.eu>
>
> On Tue, 26 Sept 2023 at 18:08, Bui Quang Minh <minhquangbui99@gmail.com> wrote:
>> @@ -455,6 +469,19 @@ void helper_rdmsr(CPUX86State *env)
>> val = (cs->nr_threads * cs->nr_cores) | (cs->nr_cores << 16);
>> break;
>> }
>> + case MSR_APIC_START ... MSR_APIC_END: {
>> + int index = (uint32_t)env->regs[R_ECX] - MSR_APIC_START;
>> +
>> + if (!is_x2apic_mode(env_archcpu(env)->apic_state)) {
>> + raise_exception_ra(env, EXCP0D_GPF, GETPC());
>> + }
>> +
>> + qemu_mutex_lock_iothread();
>> + val = apic_register_read(index);
>> + qemu_mutex_unlock_iothread();
>
> Shouldn't the x2apic mode check technically be inside the lock?
> Furthermore, we need the mode check logic in each accelerator whose
> MSR read and write we wire up. Finally, there's the exception raising
> issue which Michael noted.
>
> So my suggestion would be to wrap the x2apic mode check and the call
> to the lower level apic_register_read into a standalone
> apic_x2apic_msr_read() or similar, and the equivalent for writes.
> These functions should then also return success or failure, the latter
> indicating an exception should be raised. Raising the exception can
> then also be implemented for each accelerator at the relevant call
> site. That contains the raise_exception_ra call in the TCG specific
> code, and I can do the equivalent on the hvf side.
Thanks a lot for your suggestion, I've taken this approach and
implemented an apic_msr_read/write wrapper as you suggested in version 9
(https://lore.kernel.org/qemu-devel/20231024152105.35942-1-minhquangbui99@gmail.com/)
Thank you,
Quang Minh.
next prev parent reply other threads:[~2023-10-24 15:28 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-26 16:06 [PATCH v8 0/5] Support x2APIC mode with TCG accelerator Bui Quang Minh
2023-09-26 16:06 ` [PATCH v8 1/5] i386/tcg: implement x2APIC registers MSR access Bui Quang Minh
2023-10-22 13:59 ` Phil Dennis-Jordan
2023-10-24 15:27 ` Bui Quang Minh [this message]
2023-09-26 16:06 ` [PATCH v8 2/5] apic: add support for x2APIC mode Bui Quang Minh
2023-09-26 16:06 ` [PATCH v8 3/5] apic, i386/tcg: add x2apic transitions Bui Quang Minh
2023-09-26 16:06 ` [PATCH v8 4/5] intel_iommu: allow Extended Interrupt Mode when using userspace APIC Bui Quang Minh
2023-09-26 16:06 ` [PATCH v8 5/5] amd_iommu: report x2APIC support to the operating system Bui Quang Minh
2023-09-26 16:23 ` [PATCH v8 0/5] Support x2APIC mode with TCG accelerator Bui Quang Minh
2023-10-04 6:51 ` Michael S. Tsirkin
2023-10-04 16:40 ` Bui Quang Minh
2023-10-04 17:05 ` Michael S. Tsirkin
2023-10-05 15:50 ` Bui Quang Minh
2023-10-05 15:52 ` [RFC PATCH] tcg, apic: create a separate root memory region for each CPU Bui Quang Minh
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=f7ed46e8-cf71-4b1d-95d4-edc4a0b7540f@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 \
/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).