Just checked the u-boot code, it always marks the first page as WB and RESERVED for its own spin table. Maybe we can change the logic of get_dram_base() in kernel from if (md->attribute & EFI_MEMORY_WB) { to if (md->attribute & EFI_MEMORY_WB && md->type == EFI_CONVENTIONAL_MEMORY) { This way, get_dram_base() will always find the first free region.