I'm using multiboot2 and I see a zero field in grub/include/multiboot2.h: struct multiboot_mmap_entry { multiboot_uint64_t addr; multiboot_uint64_t len; #define MULTIBOOT_MEMORY_AVAILABLE 1 #define MULTIBOOT_MEMORY_RESERVED 2 #define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3 #define MULTIBOOT_MEMORY_NVS 4 #define MULTIBOOT_MEMORY_BADRAM 5 multiboot_uint32_t type; multiboot_uint32_t zero; } GRUB_PACKED; typedef struct multiboot_mmap_entry multiboot_memory_map_t;
Although in grub/include/multiboot.h it does not exist: struct multiboot_mmap_entry { multiboot_uint32_t size; multiboot_uint64_t addr; multiboot_uint64_t len; #define MULTIBOOT_MEMORY_AVAILABLE 1 #define MULTIBOOT_MEMORY_RESERVED 2 #define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3 #define MULTIBOOT_MEMORY_NVS 4 #define MULTIBOOT_MEMORY_BADRAM 5 multiboot_uint32_t type; } GRUB_PACKED; typedef struct multiboot_mmap_entry multiboot_memory_map_t; On Sat, Feb 13, 2016 at 11:12 PM, Andrei Borzenkov <arvidj...@gmail.com> wrote: > 14.02.2016 00:20, Wink Saville пишет: >> I'm processing multiboot_tag_mmap and the multiboot_mmap_entry.zero >> isn't zero. As best as I can tell grub isn't initializing it. Here is >> the code from grub-core/loader/i386/multiboot_mbi.c: >> >> /* Helper for grub_fill_multiboot_mmap. */ >> static int >> grub_fill_multiboot_mmap_iter (grub_uint64_t addr, grub_uint64_t size, >> grub_memory_type_t type, void *data) >> { >> struct multiboot_mmap_entry **mmap_entry = data; >> >> (*mmap_entry)->addr = addr; >> (*mmap_entry)->len = size; >> (*mmap_entry)->type = type; >> (*mmap_entry)->size = sizeof (struct multiboot_mmap_entry) - sizeof >> ((*mmap_entry)->size); >> (*mmap_entry)++; >> >> return 0; >> } >> >> And similar code in grub-core/loader/multiboot_mbi2.c: >> >> /* Helper for grub_fill_multiboot_mmap. */ >> static int >> grub_fill_multiboot_mmap_iter (grub_uint64_t addr, grub_uint64_t size, >> grub_memory_type_t type, void *data) >> { >> struct multiboot_mmap_entry **mmap_entry = data; >> >> (*mmap_entry)->addr = addr; >> (*mmap_entry)->len = size; >> (*mmap_entry)->type = type; >> (*mmap_entry)++; >> >> return 0; >> } >> >> And I'd expect to see: >> >> (*mmap_entry)->zero = 0; >> >> Is there a reason its not being zeroed? >> > > Because it does not exist? > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel