[haiku-commits] Re: r42068 - haiku/trunk/src/system/boot/platform/bios_ia32

  • From: Stefano Ceccherini <stefano.ceccherini@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 10 Jun 2011 10:00:42 +0200

2011/6/9 Axel Dörfler <axeld@xxxxxxxxxxxxxxxx>:
> stefano.ceccherini@xxxxxxxxx wrote:
>> Log:
>> Map B_PAGE_SIZE, and not just acpi_description_header (was actually a
>> regression), since the tables are bigger than that.
>> Accessing unmapped memory was doing bad things on XenServer.
>
> That doesn't make any sense at all: the minimum mapping size is B_PAGE_SIZE; 
> if you map less it will be automatically expanded to it. So unless the header 
> is larger than B_PAGE_SIZE, this change doesn't really change anything.
> Please revert.
>
> Bye,
>   Axel.

acpi_descriptor_header, as defined in
headers/private/kernel/arch/x86/arch_acpi.h

typedef struct acpi_descriptor_header {
        char    signature[4];                   /* table identifier as ASCII 
string */
        uint32  length;                                 /* length in bytes of 
the entire table */
        uint8   revision;
        uint8   checksum;                               /* checksum of entire 
table */
        char    oem_id[6];                              /* not null terminated 
*/
        char    oem_table_id[8];                /* oem supplied table 
identifier */
        uint32  oem_revision;                   /* oem supplied revision number 
*/
        char    creator_id[4];                  /* creator / asl compiler id */
        uint32  creator_revision;               /* compiler revision */
} _PACKED acpi_descriptor_header;

is 36 bytes.
Given that with B_PAGE_SIZE in the mmu_map_physical_memory() call
xenserver boots haiku, and with sizeof(acpi_description_header) it
reboots, I guess something doesn't work correctly.

Other related posts: