grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: multiboot_mmap_entry.zero isn't zero


From: Wink Saville
Subject: Re: multiboot_mmap_entry.zero isn't zero
Date: Tue, 23 Feb 2016 10:01:10 -0800

Thanks!

On Mon, Feb 22, 2016 at 10:14 PM, Andrei Borzenkov <address@hidden> 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 <address@hidden> 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
>>> address@hidden
>>> https://lists.gnu.org/mailman/listinfo/grub-devel
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]