Wind River Support Network

HomeOther DownloadsX86_64: avoid EBDA area overlap and fix bad_addr checking
Recommended Type: Patch

X86_64: avoid EBDA area overlap and fix bad_addr checking

Released: Jul 8, 2008     Updated: Jul 8, 2008


Observed on MPCBL0050 board with 16G RAM. With 16G RAM setup, kernel failed to find RSDP, and will crash afterwards (refer to the log files from the Attachments). But can start up with ACPI disabled, or with 8G RAM setup and ACPI enabled.

The problem occurs very early on, when the kernel allocates space for the
temporary memory map called bootmap. The bootmap overlaps the EBDA region.
EBDA region is not historically reserved in the e820 mapping. When the
bootmap is freed it marks the EBDA region as usable.

If you notice in setup.c there is already code to work around the EBDA
in reserve_ebda_region(), this check however occurs after the bootmap
is allocated and doesn't prevent the bootmap from using this range. IDENTIFIER = WIND00122788

Product Version

Linux Platforms 1.x


Installation Notes

Installation Notes

  1. Unzip the patch under [install_dir]/updates

    2. Install the patch CD by entering the patch CD directory and run setup_linux.

    3. This is a source only patch so you will have to build the kernel

    4. Issue a make fs and make the kernel in a configured directory.

    5. Upload the kernel and rootfs into the target and boot it up.

Live chat