Re: [PATCH v3 2/2] KVM: s390: fix for hugepage vmalloc

From: Christian Borntraeger
Date: Thu Jun 10 2021 - 12:52:40 EST




On 10.06.21 18:49, Claudio Imbrenda wrote:
On Thu, 10 Jun 2021 17:56:58 +0200
Christian Borntraeger <borntraeger@xxxxxxxxxx> wrote:

On 10.06.21 17:42, Claudio Imbrenda wrote:
The Create Secure Configuration Ultravisor Call does not support
using large pages for the virtual memory area. This is a hardware
limitation.

This patch replaces the vzalloc call with an almost equivalent call
to the newly introduced vmalloc_no_huge function, which guarantees
that only small pages will be used for the backing.

The new call will not clear the allocated memory, but that has never
been an actual requirement.

^ here

Signed-off-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx>
Reviewed-by: Janosch Frank <frankja@xxxxxxxxxxxxx>
Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Cc: Nicholas Piggin <npiggin@xxxxxxxxx>
Cc: Uladzislau Rezki (Sony) <urezki@xxxxxxxxx>
Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: David Rientjes <rientjes@xxxxxxxxxx>
Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx>
---
arch/s390/kvm/pv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/s390/kvm/pv.c b/arch/s390/kvm/pv.c
index 813b6e93dc83..ad7c6d7cc90b 100644
--- a/arch/s390/kvm/pv.c
+++ b/arch/s390/kvm/pv.c
@@ -140,7 +140,7 @@ static int kvm_s390_pv_alloc_vm(struct kvm *kvm)
/* Allocate variable storage */
vlen = ALIGN(virt * ((npages * PAGE_SIZE) / HPAGE_SIZE),
PAGE_SIZE); vlen += uv_info.guest_virt_base_stor_len;
- kvm->arch.pv.stor_var = vzalloc(vlen);
+ kvm->arch.pv.stor_var = vmalloc_no_huge(vlen);

dont we need a memset now?

no, as explained above

Makes sense.

Acked-by: Christian Borntraeger <borntraeger@xxxxxxxxxx>