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]>

Reply via email to