Thanks! On Mon, Feb 22, 2016 at 10:14 PM, Andrei Borzenkov <arvidj...@gmail.com> wrote: > 14.02.2016 14:24, Wink Saville пишет: >> 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; >> > > OK, I pushed fix (although documentation also says OS should ignore this > field :) ) > >> >> 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