Comment # 24 on bug 1122614 from
(In reply to Gary Ching-Pang Lin from comment #23)
> 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.

(In reply to Gary Ching-Pang Lin from comment #23)
> 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.

As Gary's suggestion, I am building kernel RPM for testing:

---
 drivers/firmware/efi/libstub/efi-stub-helper.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/firmware/efi/libstub/efi-stub-helper.c
+++ b/drivers/firmware/efi/libstub/efi-stub-helper.c
@@ -153,7 +153,7 @@ unsigned long get_dram_base(efi_system_t
        map.map_end = map.map + map_size;

        for_each_efi_memory_desc_in_map(&map, md) {
-               if (md->attribute & EFI_MEMORY_WB) {
+               if ((md->type == EFI_CONVENTIONAL_MEMORY) && (md->attribute &
EFI_MEMORY_WB)) {
                        if (membase > md->phys_addr)
                                membase = md->phys_addr;
                }


You are receiving this mail because: