2023-09-18 17:19:33

by Olaf Hering

[permalink] [raw]
Subject: [PATCH v1] hyperv: reduce size of ms_hyperv_info

Use the hole prior shared_gpa_boundary to store the result of get_vtl.
This reduces the size by 8 bytes.

Signed-off-by: Olaf Hering <[email protected]>
---
include/asm-generic/mshyperv.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h
index cecd2b7bd033..bdee5fbaaf40 100644
--- a/include/asm-generic/mshyperv.h
+++ b/include/asm-generic/mshyperv.h
@@ -53,8 +53,8 @@ struct ms_hyperv_info {
u32 reserved_b2 : 20;
};
};
- u64 shared_gpa_boundary;
u8 vtl;
+ u64 shared_gpa_boundary;
};
extern struct ms_hyperv_info ms_hyperv;
extern bool hv_nested;


2023-09-19 06:19:11

by Dexuan Cui

[permalink] [raw]
Subject: RE: [PATCH v1] hyperv: reduce size of ms_hyperv_info

> From: Olaf Hering <[email protected]>
> Sent: Monday, September 18, 2023 9:02 AM
> [...]
> Use the hole prior shared_gpa_boundary to store the result of get_vtl.
> This reduces the size by 8 bytes.
> [...]
> --- a/include/asm-generic/mshyperv.h
> +++ b/include/asm-generic/mshyperv.h
> @@ -53,8 +53,8 @@ struct ms_hyperv_info {
> u32 reserved_b2 : 20;
> };
> };
> - u64 shared_gpa_boundary;
> u8 vtl;
> + u64 shared_gpa_boundary;
> };
> extern struct ms_hyperv_info ms_hyperv;
> extern bool hv_nested;

How about moving the 'vtl' field to an even earlier place:

--- a/include/asm-generic/mshyperv.h
+++ b/include/asm-generic/mshyperv.h
@@ -36,6 +36,9 @@ struct ms_hyperv_info {
u32 nested_features;
u32 max_vp_index;
u32 max_lp_index;
+
+ u8 vtl;
+
union {
u32 isolation_config_a;
struct {
@@ -54,7 +57,6 @@ struct ms_hyperv_info {
};
};
u64 shared_gpa_boundary;
- u8 vtl;
};
extern struct ms_hyperv_info ms_hyperv;
extern bool hv_nested;

This also reduces the size by 8 bytes, and keeps
the isolation_config_a/ isolation_config_b/ shared_gpa_boundary
together, which are related.

2023-09-19 09:28:43

by Olaf Hering

[permalink] [raw]
Subject: Re: [PATCH v1] hyperv: reduce size of ms_hyperv_info

Tue, 19 Sep 2023 06:18:53 +0000 Dexuan Cui <[email protected]>:

> How about moving the 'vtl' field to an even earlier place:

I have not tried it, but I think this would just move the hole up.
The end result will likely be the same, pahole -E vmlinux will show it.


Olaf


Attachments:
(No filename) (849.00 B)
Digitale Signatur von OpenPGP

2023-09-22 19:22:15

by Wei Liu

[permalink] [raw]
Subject: Re: [PATCH v1] hyperv: reduce size of ms_hyperv_info

On Tue, Sep 19, 2023 at 06:18:53AM +0000, Dexuan Cui wrote:
> > From: Olaf Hering <[email protected]>
> > Sent: Monday, September 18, 2023 9:02 AM
> > [...]
> > Use the hole prior shared_gpa_boundary to store the result of get_vtl.
> > This reduces the size by 8 bytes.
> > [...]
> > --- a/include/asm-generic/mshyperv.h
> > +++ b/include/asm-generic/mshyperv.h
> > @@ -53,8 +53,8 @@ struct ms_hyperv_info {
> > u32 reserved_b2 : 20;
> > };
> > };
> > - u64 shared_gpa_boundary;
> > u8 vtl;
> > + u64 shared_gpa_boundary;
> > };
> > extern struct ms_hyperv_info ms_hyperv;
> > extern bool hv_nested;
>
> How about moving the 'vtl' field to an even earlier place:
>
> --- a/include/asm-generic/mshyperv.h
> +++ b/include/asm-generic/mshyperv.h
> @@ -36,6 +36,9 @@ struct ms_hyperv_info {
> u32 nested_features;
> u32 max_vp_index;
> u32 max_lp_index;
> +
> + u8 vtl;
> +
> union {
> u32 isolation_config_a;
> struct {
> @@ -54,7 +57,6 @@ struct ms_hyperv_info {
> };
> };
> u64 shared_gpa_boundary;
> - u8 vtl;
> };
> extern struct ms_hyperv_info ms_hyperv;
> extern bool hv_nested;
>
> This also reduces the size by 8 bytes, and keeps
> the isolation_config_a/ isolation_config_b/ shared_gpa_boundary
> together, which are related.

Either method works for me.

Will there be a v2 of this patch?

Thanks,
Wei.