From: Bharata B Rao <bharata@linux.ibm.com>
To: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org,
linux-mm@kvack.org, paulus@au1.ibm.com,
aneesh.kumar@linux.vnet.ibm.com, jglisse@redhat.com,
linuxram@us.ibm.com, cclaudio@linux.ibm.com, hch@lst.de
Subject: Re: [PATCH v8 7/8] kvmppc: Support reset of secure guest
Date: Wed, 18 Sep 2019 07:33:16 +0000 [thread overview]
Message-ID: <20190918072116.GC11675@in.ibm.com> (raw)
In-Reply-To: <20190917232736.GA27932@us.ibm.com>
On Tue, Sep 17, 2019 at 04:27:36PM -0700, Sukadev Bhattiprolu wrote:
> > +
> > + if (kvmppc_is_guest_secure(kvm)) {
>
> Nit: Since this entire function only applies to secure guests we could
> return here for normal guests.
Yes, can be done.
> > bool kvmppc_is_guest_secure(struct kvm *kvm)
> > {
> > - return !!(kvm->arch.secure_guest & KVMPPC_SECURE_INIT_DONE);
> > + return (kvm->arch.secure_guest & KVMPPC_SECURE_INIT_DONE);
> > }
>
> This change could be folded into PATCH 6?
That was the intention but looks like I 'pick'ed wrong commit during rebase.
Will fix this.
> >
> > unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
> > @@ -85,9 +86,68 @@ unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
> > return H_UNSUPPORTED;
> >
> > kvm->arch.secure_guest |= KVMPPC_SECURE_INIT_DONE;
> > + if (kvm_is_radix(kvm)) {
> > + kvmppc_free_radix(kvm);
> > + pr_info("LPID %d went secure, freed HV side radix pgtables\n",
> > + kvm->arch.lpid);
> > + }
> > return H_SUCCESS;
> > }
> >
> > +/*
> > + * Drop device pages that we maintain for the secure guest
> > + *
> > + * We first mark the pages to be skipped from UV_PAGE_OUT when there
> > + * is HV side fault on these pages. Next we *get* these pages, forcing
>
> Is that get page implicit? there is no explicit "get" in this
> function?
gfn_to_pfn does get_user_pages eventually.
>
> > + * fault on them, do fault time migration to replace the device PTEs in
> > + * QEMU page table with normal PTEs from newly allocated pages.
> > + */
> > +static void kvmppc_uvmem_drop_pages(struct kvm_memory_slot *free,
> > + struct kvm *kvm)
> > +{
> > + int i;
> > + struct kvmppc_uvmem_page_pvt *pvt;
> > + unsigned long pfn;
> > +
> > + for (i = 0; i < free->npages; i++) {
> > + unsigned long *rmap = &free->arch.rmap[i];
> > + struct page *uvmem_page;
> > +
> > + if (kvmppc_rmap_type(rmap) = KVMPPC_RMAP_UVMEM_PFN) {
> > + uvmem_page = pfn_to_page(*rmap &
> > + ~KVMPPC_RMAP_UVMEM_PFN);
> > + pvt = (struct kvmppc_uvmem_page_pvt *)
> > + uvmem_page->zone_device_data;
> > + pvt->skip_page_out = true;
> > +
> > + pfn = gfn_to_pfn(kvm, pvt->gpa >> PAGE_SHIFT);
Regards,
Bharata.
WARNING: multiple messages have this Message-ID (diff)
From: Bharata B Rao <bharata@linux.ibm.com>
To: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: linuxram@us.ibm.com, cclaudio@linux.ibm.com,
kvm-ppc@vger.kernel.org, linux-mm@kvack.org, jglisse@redhat.com,
aneesh.kumar@linux.vnet.ibm.com, paulus@au1.ibm.com,
linuxppc-dev@lists.ozlabs.org, hch@lst.de
Subject: Re: [PATCH v8 7/8] kvmppc: Support reset of secure guest
Date: Wed, 18 Sep 2019 12:51:16 +0530 [thread overview]
Message-ID: <20190918072116.GC11675@in.ibm.com> (raw)
In-Reply-To: <20190917232736.GA27932@us.ibm.com>
On Tue, Sep 17, 2019 at 04:27:36PM -0700, Sukadev Bhattiprolu wrote:
> > +
> > + if (kvmppc_is_guest_secure(kvm)) {
>
> Nit: Since this entire function only applies to secure guests we could
> return here for normal guests.
Yes, can be done.
> > bool kvmppc_is_guest_secure(struct kvm *kvm)
> > {
> > - return !!(kvm->arch.secure_guest & KVMPPC_SECURE_INIT_DONE);
> > + return (kvm->arch.secure_guest & KVMPPC_SECURE_INIT_DONE);
> > }
>
> This change could be folded into PATCH 6?
That was the intention but looks like I 'pick'ed wrong commit during rebase.
Will fix this.
> >
> > unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
> > @@ -85,9 +86,68 @@ unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
> > return H_UNSUPPORTED;
> >
> > kvm->arch.secure_guest |= KVMPPC_SECURE_INIT_DONE;
> > + if (kvm_is_radix(kvm)) {
> > + kvmppc_free_radix(kvm);
> > + pr_info("LPID %d went secure, freed HV side radix pgtables\n",
> > + kvm->arch.lpid);
> > + }
> > return H_SUCCESS;
> > }
> >
> > +/*
> > + * Drop device pages that we maintain for the secure guest
> > + *
> > + * We first mark the pages to be skipped from UV_PAGE_OUT when there
> > + * is HV side fault on these pages. Next we *get* these pages, forcing
>
> Is that get page implicit? there is no explicit "get" in this
> function?
gfn_to_pfn does get_user_pages eventually.
>
> > + * fault on them, do fault time migration to replace the device PTEs in
> > + * QEMU page table with normal PTEs from newly allocated pages.
> > + */
> > +static void kvmppc_uvmem_drop_pages(struct kvm_memory_slot *free,
> > + struct kvm *kvm)
> > +{
> > + int i;
> > + struct kvmppc_uvmem_page_pvt *pvt;
> > + unsigned long pfn;
> > +
> > + for (i = 0; i < free->npages; i++) {
> > + unsigned long *rmap = &free->arch.rmap[i];
> > + struct page *uvmem_page;
> > +
> > + if (kvmppc_rmap_type(rmap) == KVMPPC_RMAP_UVMEM_PFN) {
> > + uvmem_page = pfn_to_page(*rmap &
> > + ~KVMPPC_RMAP_UVMEM_PFN);
> > + pvt = (struct kvmppc_uvmem_page_pvt *)
> > + uvmem_page->zone_device_data;
> > + pvt->skip_page_out = true;
> > +
> > + pfn = gfn_to_pfn(kvm, pvt->gpa >> PAGE_SHIFT);
Regards,
Bharata.
WARNING: multiple messages have this Message-ID (diff)
From: Bharata B Rao <bharata@linux.ibm.com>
To: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org, kvm-ppc@vger.kernel.org,
linux-mm@kvack.org, paulus@au1.ibm.com,
aneesh.kumar@linux.vnet.ibm.com, jglisse@redhat.com,
linuxram@us.ibm.com, cclaudio@linux.ibm.com, hch@lst.de
Subject: Re: [PATCH v8 7/8] kvmppc: Support reset of secure guest
Date: Wed, 18 Sep 2019 12:51:16 +0530 [thread overview]
Message-ID: <20190918072116.GC11675@in.ibm.com> (raw)
In-Reply-To: <20190917232736.GA27932@us.ibm.com>
On Tue, Sep 17, 2019 at 04:27:36PM -0700, Sukadev Bhattiprolu wrote:
> > +
> > + if (kvmppc_is_guest_secure(kvm)) {
>
> Nit: Since this entire function only applies to secure guests we could
> return here for normal guests.
Yes, can be done.
> > bool kvmppc_is_guest_secure(struct kvm *kvm)
> > {
> > - return !!(kvm->arch.secure_guest & KVMPPC_SECURE_INIT_DONE);
> > + return (kvm->arch.secure_guest & KVMPPC_SECURE_INIT_DONE);
> > }
>
> This change could be folded into PATCH 6?
That was the intention but looks like I 'pick'ed wrong commit during rebase.
Will fix this.
> >
> > unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
> > @@ -85,9 +86,68 @@ unsigned long kvmppc_h_svm_init_done(struct kvm *kvm)
> > return H_UNSUPPORTED;
> >
> > kvm->arch.secure_guest |= KVMPPC_SECURE_INIT_DONE;
> > + if (kvm_is_radix(kvm)) {
> > + kvmppc_free_radix(kvm);
> > + pr_info("LPID %d went secure, freed HV side radix pgtables\n",
> > + kvm->arch.lpid);
> > + }
> > return H_SUCCESS;
> > }
> >
> > +/*
> > + * Drop device pages that we maintain for the secure guest
> > + *
> > + * We first mark the pages to be skipped from UV_PAGE_OUT when there
> > + * is HV side fault on these pages. Next we *get* these pages, forcing
>
> Is that get page implicit? there is no explicit "get" in this
> function?
gfn_to_pfn does get_user_pages eventually.
>
> > + * fault on them, do fault time migration to replace the device PTEs in
> > + * QEMU page table with normal PTEs from newly allocated pages.
> > + */
> > +static void kvmppc_uvmem_drop_pages(struct kvm_memory_slot *free,
> > + struct kvm *kvm)
> > +{
> > + int i;
> > + struct kvmppc_uvmem_page_pvt *pvt;
> > + unsigned long pfn;
> > +
> > + for (i = 0; i < free->npages; i++) {
> > + unsigned long *rmap = &free->arch.rmap[i];
> > + struct page *uvmem_page;
> > +
> > + if (kvmppc_rmap_type(rmap) == KVMPPC_RMAP_UVMEM_PFN) {
> > + uvmem_page = pfn_to_page(*rmap &
> > + ~KVMPPC_RMAP_UVMEM_PFN);
> > + pvt = (struct kvmppc_uvmem_page_pvt *)
> > + uvmem_page->zone_device_data;
> > + pvt->skip_page_out = true;
> > +
> > + pfn = gfn_to_pfn(kvm, pvt->gpa >> PAGE_SHIFT);
Regards,
Bharata.
next prev parent reply other threads:[~2019-09-18 7:33 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-10 8:29 [PATCH v8 0/8] kvmppc: Driver to manage pages of secure guest Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-10 8:29 ` [PATCH v8 1/8] KVM: PPC: Book3S HV: Define usage types for rmap array in guest memslot Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-10 8:29 ` [PATCH v8 2/8] kvmppc: Movement of pages between normal and secure memory Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-10 9:36 ` Bharata B Rao
2019-09-10 9:48 ` Bharata B Rao
2019-09-10 9:36 ` Bharata B Rao
2019-09-17 23:31 ` Sukadev Bhattiprolu
2019-09-17 23:31 ` Sukadev Bhattiprolu
2019-09-17 23:31 ` Sukadev Bhattiprolu
2019-09-18 7:12 ` Bharata B Rao
2019-09-18 7:24 ` Bharata B Rao
2019-09-18 7:12 ` Bharata B Rao
2019-09-18 10:47 ` Bharata B Rao
2019-09-18 10:59 ` Bharata B Rao
2019-09-18 10:47 ` Bharata B Rao
2019-09-10 8:29 ` [PATCH v8 3/8] kvmppc: Shared pages support for secure guests Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-17 23:33 ` Sukadev Bhattiprolu
2019-09-17 23:33 ` Sukadev Bhattiprolu
2019-09-17 23:33 ` Sukadev Bhattiprolu
2019-09-10 8:29 ` [PATCH v8 4/8] kvmppc: H_SVM_INIT_START and H_SVM_INIT_DONE hcalls Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-17 23:35 ` Sukadev Bhattiprolu
2019-09-17 23:35 ` Sukadev Bhattiprolu
2019-09-17 23:35 ` Sukadev Bhattiprolu
2019-09-18 7:16 ` Bharata B Rao
2019-09-18 7:28 ` Bharata B Rao
2019-09-18 7:16 ` Bharata B Rao
2019-09-10 8:29 ` [PATCH v8 5/8] kvmppc: Handle memory plug/unplug to secure VM Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-10 8:29 ` [PATCH v8 6/8] kvmppc: Radix changes for secure guest Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-10 8:29 ` [PATCH v8 7/8] kvmppc: Support reset of " Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-17 23:27 ` Sukadev Bhattiprolu
2019-09-17 23:27 ` Sukadev Bhattiprolu
2019-09-17 23:27 ` Sukadev Bhattiprolu
2019-09-18 7:21 ` Bharata B Rao [this message]
2019-09-18 7:33 ` Bharata B Rao
2019-09-18 7:21 ` Bharata B Rao
2019-09-10 8:29 ` [PATCH v8 8/8] KVM: PPC: Ultravisor: Add PPC_UV config option Bharata B Rao
2019-09-10 8:41 ` Bharata B Rao
2019-09-10 8:29 ` Bharata B Rao
2019-09-17 23:37 ` Sukadev Bhattiprolu
2019-09-17 23:37 ` Sukadev Bhattiprolu
2019-09-17 23:37 ` Sukadev Bhattiprolu
2019-09-18 7:23 ` Bharata B Rao
2019-09-18 7:35 ` Bharata B Rao
2019-09-18 7:23 ` Bharata B Rao
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=20190918072116.GC11675@in.ibm.com \
--to=bharata@linux.ibm.com \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=cclaudio@linux.ibm.com \
--cc=hch@lst.de \
--cc=jglisse@redhat.com \
--cc=kvm-ppc@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=linuxram@us.ibm.com \
--cc=paulus@au1.ibm.com \
--cc=sukadev@linux.vnet.ibm.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.