From: Laurent Dufour <lduf...@linux.ibm.com>

When a memory slot is hot plugged to a SVM, PFNs associated with the
GFNs in that slot must be migrated to the secure-PFNs, aka device-PFNs.

kvmppc_uv_migrate_mem_slot() is called to accomplish this. UV_PAGE_IN
ucall is skipped, since the ultravisor does not trust the content of
those pages and hence ignores it.

Signed-off-by: Laurent Dufour <lduf...@linux.ibm.com>
Signed-off-by: Ram Pai <linux...@us.ibm.com>
        [resolved conflicts, and modified the commit log]
---
 arch/powerpc/kvm/book3s_hv.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 6717d24..fcea41c 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -4531,10 +4531,12 @@ static void kvmppc_core_commit_memory_region_hv(struct 
kvm *kvm,
        case KVM_MR_CREATE:
                if (kvmppc_uvmem_slot_init(kvm, new))
                        return;
-               uv_register_mem_slot(kvm->arch.lpid,
-                                    new->base_gfn << PAGE_SHIFT,
-                                    new->npages * PAGE_SIZE,
-                                    0, new->id);
+               if (uv_register_mem_slot(kvm->arch.lpid,
+                                        new->base_gfn << PAGE_SHIFT,
+                                        new->npages * PAGE_SIZE,
+                                        0, new->id))
+                       return;
+               kvmppc_uv_migrate_mem_slot(kvm, new);
                break;
        case KVM_MR_DELETE:
                uv_unregister_mem_slot(kvm->arch.lpid, old->id);
-- 
1.8.3.1

Reply via email to