On 02/11/2024 5:25 pm, Daniel P. Smith wrote:
> diff --git a/xen/arch/x86/include/asm/bootinfo.h
> b/xen/arch/x86/include/asm/bootinfo.h
> index b1549d8c8f93..e337baa905f0 100644
> --- a/xen/arch/x86/include/asm/bootinfo.h
> +++ b/xen/arch/x86/include/asm/bootinfo.h
> @@ -30,6 +30,28 @@ struct boot_module {
>
> enum bootmod_type type;
>
> + /*
> + * A boot module may need decompressing by Xen. Headroom is an estimate
> of
> + * the additional space required to decompress the module.
> + *
> + * Headroom is accounted for at the start of the module. Decompressing
> is
> + * done in-place with input=start, output=start-headroom, expecting the
> + * pointers to become equal (give or take some rounding) when
> decompression
> + * is complete.
> + *
> + * Memory layout at boot:
> + *
> + * start ----+
> + * v
> + * |<-----headroom------>|<------size------->|
> + * +-------------------+
> + * | Compressed Module |
> + * +---------------------+-------------------+
> + * | Decompressed Module |
> + * +-----------------------------------------+
> + */
> + unsigned long headroom;
> +
> /*
> * Module State Flags:
> * relocated: indicates module has been relocated in memory.
By the end of the series, this ends very poorly laid out.
It works a whole lot better when putting the bitfields between type and
headroom.
Otherwise, Reviewed-by: Andrew Cooper <[email protected]>