From: Sean Christopherson <seanjc@google.com>
To: Manali Shukla <manali.shukla@amd.com>
Cc: pbonzini@redhat.com, kvm@vger.kernel.org
Subject: Re: [kvm-unit-tests PATCH v4 4/8] x86: Improve set_mmu_range() to implement npt
Date: Thu, 16 Jun 2022 00:04:28 +0000 [thread overview]
Message-ID: <YqpzjMY+w5MZfb81@google.com> (raw)
In-Reply-To: <YqpyC1HmsFBSXedh@google.com>
On Wed, Jun 15, 2022, Sean Christopherson wrote:
> On Thu, Apr 28, 2022, Manali Shukla wrote:
> > +void setup_mmu_range(pgd_t *cr3, phys_addr_t start, size_t len, bool nested_mmu)
> > {
> > u64 max = (u64)len + (u64)start;
> > u64 phys = start;
> >
> > - while (phys + LARGE_PAGE_SIZE <= max) {
> > - install_large_page(cr3, phys, (void *)(ulong)phys);
> > - phys += LARGE_PAGE_SIZE;
> > - }
> > - install_pages(cr3, phys, max - phys, (void *)(ulong)phys);
> > + if (nested_mmu == false) {
> > + while (phys + LARGE_PAGE_SIZE <= max) {
> > + install_large_page(cr3, phys, (void *)(ulong)phys);
> > + phys += LARGE_PAGE_SIZE;
> > + }
> > + install_pages(cr3, phys, max - phys, (void *)(ulong)phys);
> > + } else {
> > + set_pte_opt_mask();
> > + install_pages(cr3, phys, len, (void *)(ulong)phys);
> > + reset_pte_opt_mask();
> > + }
>
> Why can't a nested_mmu use large pages?
Oh, duh, you're just preserving the existing functionality.
I dislike bool params, but I also don't see a better option at this time. To make
it slightly less evil, add a wrapper so that the use and bool are closer together.
And then the callers don't need to be updated.
void __setup_mmu_range(pgd_t *cr3, phys_addr_t start, size_t len, bool use_hugepages);
static inline void setup_mmu_range(pgd_t *cr3, phys_addr_t start, size_t len)
{
__setup_mmu_range(cr3, start, len, true);
}
And if you name it use_hugepages, then you can do:
void __setup_mmu_range(pgd_t *cr3, phys_addr_t start, size_t len, bool nested_mmu)
{
u64 orig_opt_mask = pte_opt_mask;
u64 max = (u64)len + (u64)start;
u64 phys = start;
/* comment goes here. */
pte_opt_mask |= PT_USER_MASK;
if (use_hugepages) {
while (phys + LARGE_PAGE_SIZE <= max) {
install_large_page(cr3, phys, (void *)(ulong)phys);
phys += LARGE_PAGE_SIZE;
}
}
install_pages(cr3, phys, max - phys, (void *)(ulong)phys);
pte_opt_mask = orig_opt_mask;
}
next prev parent reply other threads:[~2022-06-16 0:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-28 7:08 [kvm-unit-tests PATCH v4 0/8] Move npt test cases and NPT code improvements Manali Shukla
2022-04-28 7:08 ` [kvm-unit-tests PATCH v4 1/8] x86: nSVM: Move common functionality of the main() to helper run_svm_tests Manali Shukla
2022-04-28 7:08 ` [kvm-unit-tests PATCH v4 2/8] x86: nSVM: Move all nNPT test cases from svm_tests.c to a separate file Manali Shukla
2022-06-15 23:43 ` Sean Christopherson
2022-06-20 2:03 ` Shukla, Manali
2022-04-28 7:08 ` [kvm-unit-tests PATCH v4 3/8] x86: nSVM: Allow nSVM tests run with PT_USER_MASK enabled Manali Shukla
2022-06-15 23:47 ` Sean Christopherson
2022-04-28 7:08 ` [kvm-unit-tests PATCH v4 4/8] x86: Improve set_mmu_range() to implement npt Manali Shukla
2022-06-15 23:58 ` Sean Christopherson
2022-06-16 0:04 ` Sean Christopherson [this message]
2022-06-22 15:32 ` Shukla, Manali
2022-06-24 0:46 ` Sean Christopherson
2022-04-28 7:08 ` [kvm-unit-tests PATCH v4 5/8] x86: nSVM: Build up the nested page table dynamically Manali Shukla
2022-06-16 0:06 ` Sean Christopherson
2022-04-28 7:08 ` [kvm-unit-tests PATCH v4 6/8] x86: nSVM: Correct indentation for svm.c Manali Shukla
2022-04-28 7:16 ` [kvm-unit-tests PATCH v4 7/8] x86: nSVM: Correct indentation for svm_tests.c part-1 Manali Shukla
2022-04-28 8:05 ` [kvm-unit-tests PATCH v4 8/8] x86: nSVM: Correct indentation for svm_tests.c part-2 Manali Shukla
2022-05-09 4:12 ` [kvm-unit-tests PATCH v4 0/8] Move npt test cases and NPT code improvements Shukla, Manali
2022-05-16 4:45 ` Shukla, Manali
2022-06-09 7:29 ` Shukla, Manali
2022-06-14 0:56 ` 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=YqpzjMY+w5MZfb81@google.com \
--to=seanjc@google.com \
--cc=kvm@vger.kernel.org \
--cc=manali.shukla@amd.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox