diff mbox series

[RFC,v1,17/57] kvm: Remove PAGE_SIZE compile-time constant assumption

Message ID 20241014105912.3207374-17-ryan.roberts@arm.com (mailing list archive)
State New, archived
Headers show
Series Boot-time page size selection for arm64 | expand

Commit Message

Ryan Roberts Oct. 14, 2024, 10:58 a.m. UTC
To prepare for supporting boot-time page size selection, refactor code
to remove assumptions about PAGE_SIZE being compile-time constant. Code
intended to be equivalent when compile-time page size is active.

Modify BUILD_BUG_ON() to compare with page size limit.

Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
---

***NOTE***
Any confused maintainers may want to read the cover note here for context:
https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/

 virt/kvm/kvm_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Sean Christopherson Oct. 14, 2024, 9:37 p.m. UTC | #1
Nit, "KVM:" for the scope.

On Mon, Oct 14, 2024, Ryan Roberts wrote:
> To prepare for supporting boot-time page size selection, refactor code
> to remove assumptions about PAGE_SIZE being compile-time constant. Code
> intended to be equivalent when compile-time page size is active.
> 
> Modify BUILD_BUG_ON() to compare with page size limit.
> 
> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
> ---
> 
> ***NOTE***
> Any confused maintainers may want to read the cover note here for context:
> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/

The patch should still stand on its own.  Most people can probably suss out what
PAGE_SIZE_MIN is, but at the same time, it's quite easy to provide a more verbose
changelog that's tailored to the actual patch.  E.g.

  To prepare for supporting boot-time page size selection, refactor KVM's
  check on the size of the kvm_run structure to assert that the size is less
  than the smallest possible page size, i.e. that kvm_run won't overflow its
  page regardless of what page size is chosen at boot time.

With something like the above,

Reviewed-by: Sean Christopherson <seanjc@google.com>
Ryan Roberts Oct. 15, 2024, 10:57 a.m. UTC | #2
On 14/10/2024 22:37, Sean Christopherson wrote:
> Nit, "KVM:" for the scope.

Thanks, will fix.

> 
> On Mon, Oct 14, 2024, Ryan Roberts wrote:
>> To prepare for supporting boot-time page size selection, refactor code
>> to remove assumptions about PAGE_SIZE being compile-time constant. Code
>> intended to be equivalent when compile-time page size is active.
>>
>> Modify BUILD_BUG_ON() to compare with page size limit.
>>
>> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
>> ---
>>
>> ***NOTE***
>> Any confused maintainers may want to read the cover note here for context:
>> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
> 
> The patch should still stand on its own.  Most people can probably suss out what
> PAGE_SIZE_MIN is, but at the same time, it's quite easy to provide a more verbose
> changelog that's tailored to the actual patch.  E.g.
> 
>   To prepare for supporting boot-time page size selection, refactor KVM's
>   check on the size of the kvm_run structure to assert that the size is less
>   than the smallest possible page size, i.e. that kvm_run won't overflow its
>   page regardless of what page size is chosen at boot time.
> 
> With something like the above,
> 
> Reviewed-by: Sean Christopherson <seanjc@google.com>

Thanks! I'll update this for the next version.
Ryan Roberts Oct. 16, 2024, 2:41 p.m. UTC | #3
+ Paolo Bonzini

This was a rather tricky series to get the recipients correct for and my script
did not realize that "supporter" was a pseudonym for "maintainer" so you were
missed off the original post. Appologies!

More context in cover letter:
https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/


On 14/10/2024 11:58, Ryan Roberts wrote:
> To prepare for supporting boot-time page size selection, refactor code
> to remove assumptions about PAGE_SIZE being compile-time constant. Code
> intended to be equivalent when compile-time page size is active.
> 
> Modify BUILD_BUG_ON() to compare with page size limit.
> 
> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com>
> ---
> 
> ***NOTE***
> Any confused maintainers may want to read the cover note here for context:
> https://lore.kernel.org/all/20241014105514.3206191-1-ryan.roberts@arm.com/
> 
>  virt/kvm/kvm_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index cb2b78e92910f..6c862bc41a672 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -4244,7 +4244,7 @@ static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, unsigned long id)
>  		goto vcpu_decrement;
>  	}
>  
> -	BUILD_BUG_ON(sizeof(struct kvm_run) > PAGE_SIZE);
> +	BUILD_BUG_ON(sizeof(struct kvm_run) > PAGE_SIZE_MIN);
>  	page = alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);
>  	if (!page) {
>  		r = -ENOMEM;
diff mbox series

Patch

diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index cb2b78e92910f..6c862bc41a672 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -4244,7 +4244,7 @@  static int kvm_vm_ioctl_create_vcpu(struct kvm *kvm, unsigned long id)
 		goto vcpu_decrement;
 	}
 
-	BUILD_BUG_ON(sizeof(struct kvm_run) > PAGE_SIZE);
+	BUILD_BUG_ON(sizeof(struct kvm_run) > PAGE_SIZE_MIN);
 	page = alloc_page(GFP_KERNEL_ACCOUNT | __GFP_ZERO);
 	if (!page) {
 		r = -ENOMEM;