On 11/6/24 18:00, Andrew Cooper wrote:
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.

Ack.

Otherwise, Reviewed-by: Andrew Cooper <andrew.coop...@citrix.com>

Thanks.

v/r,
dps

Reply via email to