From: Sean Christopherson <seanjc@google.com>
To: Nicholas Piggin <npiggin@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Juergen Gross <jgross@suse.com>, Marc Zyngier <maz@kernel.org>
Subject: Re: [PATCH] KVM: move struct kvm_vcpu * array to the bottom of struct kvm
Date: Fri, 5 Nov 2021 14:49:57 +0000 [thread overview]
Message-ID: <YYVElU6u22qxgQIz@google.com> (raw)
In-Reply-To: <20211105034949.1397997-1-npiggin@gmail.com>
+Juergen and Marc
On Fri, Nov 05, 2021, Nicholas Piggin wrote:
> Increasing the max VCPUs on powerpc makes the kvm_arch member offset
> great enough that some assembly breaks due to addressing constants
> overflowing field widths.
>
> Moving the vcpus array to the end of struct kvm prevents this from
> happening. It has the side benefit that moving the large array out
> from the middle of the structure should help keep other commonly
> accessed fields in the same or adjacent cache lines.
>
> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
> ---
>
> It would next be possible to now make this a dynamically sized array,
> and make the KVM_MAX_VCPUS more dynamic
Marc has a mostly-baked series to use an xarray[1][2] that AFAICT would be well
received. That has my vote, assuming it can get into 5.16. Marc or Juergen,
are either of you actively working on that?
[1] https://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git/log/?h=kvm-arm64/vcpu-xarray
[2] https://lkml.kernel.org/r/871r65wwk7.wl-maz@kernel.org
> however x86 kvm_svm uses its own scheme rather than kvm_arch for some reason.
What's the problem in kvm_svm?
> Thanks,
> Nick
>
> include/linux/kvm_host.h | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
> index 0f18df7fe874..78cd9b63a6a5 100644
> --- a/include/linux/kvm_host.h
> +++ b/include/linux/kvm_host.h
> @@ -553,7 +553,6 @@ struct kvm {
> struct mutex slots_arch_lock;
> struct mm_struct *mm; /* userspace tied to this vm */
> struct kvm_memslots __rcu *memslots[KVM_ADDRESS_SPACE_NUM];
> - struct kvm_vcpu *vcpus[KVM_MAX_VCPUS];
>
> /* Used to wait for completion of MMU notifiers. */
> spinlock_t mn_invalidate_lock;
> @@ -623,6 +622,9 @@ struct kvm {
> struct notifier_block pm_notifier;
> #endif
> char stats_id[KVM_STATS_NAME_SIZE];
> +
> + /* This array can be very large, so keep it at the bottom */
> + struct kvm_vcpu *vcpus[KVM_MAX_VCPUS];
> };
>
> #define kvm_err(fmt, ...) \
> --
> 2.23.0
>
next prev parent reply other threads:[~2021-11-05 14:50 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-05 3:49 [PATCH] KVM: move struct kvm_vcpu * array to the bottom of struct kvm Nicholas Piggin
2021-11-05 14:49 ` Sean Christopherson [this message]
2021-11-05 18:37 ` Marc Zyngier
2021-11-06 0:29 ` Nicholas Piggin
2021-11-08 15:35 ` Sean Christopherson
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=YYVElU6u22qxgQIz@google.com \
--to=seanjc@google.com \
--cc=jgross@suse.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=npiggin@gmail.com \
--cc=pbonzini@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.