| // Copyright 2022 The Fuchsia Authors |
| // |
| // Use of this source code is governed by a MIT-style |
| // license that can be found in the LICENSE file or at |
| // https://opensource.org/licenses/MIT |
| |
| #include <lib/boot-shim/efi-boot-shim.h> |
| |
| #include <efi/types.h> |
| #include <zxtest/zxtest.h> |
| |
| namespace { |
| |
| constexpr efi_memory_descriptor kTestEfiMemoryMap[] = { |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x1000, |
| .VirtualStart = 0, |
| .NumberOfPages = 134, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x87000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x88000, |
| .VirtualStart = 0, |
| .NumberOfPages = 24, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x100000, |
| .VirtualStart = 0, |
| .NumberOfPages = 1792, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0xa, |
| .PhysicalStart = 0x800000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x808000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0xa, |
| .PhysicalStart = 0x80b000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x80c000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0xa, |
| .PhysicalStart = 0x810000, |
| .VirtualStart = 0, |
| .NumberOfPages = 240, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x900000, |
| .VirtualStart = 0, |
| .NumberOfPages = 3072, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x1500000, |
| .VirtualStart = 0, |
| .NumberOfPages = 470860, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x2, |
| .PhysicalStart = 0x7444c000, |
| .VirtualStart = 0, |
| .NumberOfPages = 19982, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x7925a000, |
| .VirtualStart = 0, |
| .NumberOfPages = 11460, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7bf1e000, |
| .VirtualStart = 0, |
| .NumberOfPages = 32, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x7bf3e000, |
| .VirtualStart = 0, |
| .NumberOfPages = 9900, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x1, |
| .PhysicalStart = 0x7e5ea000, |
| .VirtualStart = 0, |
| .NumberOfPages = 209, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x7e6bb000, |
| .VirtualStart = 0, |
| .NumberOfPages = 74, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7e705000, |
| .VirtualStart = 0, |
| .NumberOfPages = 30, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x7e723000, |
| .VirtualStart = 0, |
| .NumberOfPages = 14, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7e731000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x7e732000, |
| .VirtualStart = 0, |
| .NumberOfPages = 12, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7e73e000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x2, |
| .PhysicalStart = 0x7e73f000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7e740000, |
| .VirtualStart = 0, |
| .NumberOfPages = 1868, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ee8c000, |
| .VirtualStart = 0, |
| .NumberOfPages = 34, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7eeae000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7eeb3000, |
| .VirtualStart = 0, |
| .NumberOfPages = 50, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7eee5000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7eee9000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7eeec000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7eef0000, |
| .VirtualStart = 0, |
| .NumberOfPages = 15, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7eeff000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef01000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef04000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef07000, |
| .VirtualStart = 0, |
| .NumberOfPages = 14, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef15000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef1c000, |
| .VirtualStart = 0, |
| .NumberOfPages = 13, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef29000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef2a000, |
| .VirtualStart = 0, |
| .NumberOfPages = 29, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef47000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef4a000, |
| .VirtualStart = 0, |
| .NumberOfPages = 23, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef61000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef63000, |
| .VirtualStart = 0, |
| .NumberOfPages = 13, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef70000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef72000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef74000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef76000, |
| .VirtualStart = 0, |
| .NumberOfPages = 11, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef81000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef83000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef88000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef8a000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7ef91000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7ef96000, |
| .VirtualStart = 0, |
| .NumberOfPages = 12, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7efa2000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7efa3000, |
| .VirtualStart = 0, |
| .NumberOfPages = 27, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7efbe000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7efc1000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7efc5000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7efc6000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7efc7000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7efc9000, |
| .VirtualStart = 0, |
| .NumberOfPages = 18, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7efdb000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7efdc000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7efe5000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7efed000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7eff1000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7eff6000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7eff9000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7effa000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7effb000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7effc000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f000000, |
| .VirtualStart = 0, |
| .NumberOfPages = 513, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f201000, |
| .VirtualStart = 0, |
| .NumberOfPages = 50, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f233000, |
| .VirtualStart = 0, |
| .NumberOfPages = 11, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f23e000, |
| .VirtualStart = 0, |
| .NumberOfPages = 10, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f248000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f24c000, |
| .VirtualStart = 0, |
| .NumberOfPages = 22, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f262000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f267000, |
| .VirtualStart = 0, |
| .NumberOfPages = 11, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f272000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f274000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f275000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f277000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f27a000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f27c000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f27f000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f281000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f282000, |
| .VirtualStart = 0, |
| .NumberOfPages = 34, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f2a4000, |
| .VirtualStart = 0, |
| .NumberOfPages = 12, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f2b0000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f2b1000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f2b2000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f2b3000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f2b4000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f2b6000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f2bc000, |
| .VirtualStart = 0, |
| .NumberOfPages = 1024, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f6bc000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f6c0000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f6c1000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f6c3000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f6c5000, |
| .VirtualStart = 0, |
| .NumberOfPages = 11, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f6d0000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7f6d2000, |
| .VirtualStart = 0, |
| .NumberOfPages = 0, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7f6d5000, |
| .VirtualStart = 0, |
| .NumberOfPages = 538, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x6, |
| .PhysicalStart = 0x7f8ef000, |
| .VirtualStart = 0, |
| .NumberOfPages = 256, |
| .Attribute = 0x800000000000000f, |
| }, |
| { |
| .Type = 0x5, |
| .PhysicalStart = 0x7f9ef000, |
| .VirtualStart = 0, |
| .NumberOfPages = 256, |
| .Attribute = 0x800000000000000f, |
| }, |
| { |
| .Type = 0, |
| .PhysicalStart = 0x7faef000, |
| .VirtualStart = 0, |
| .NumberOfPages = 128, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x9, |
| .PhysicalStart = 0x7fb6f000, |
| .VirtualStart = 0, |
| .NumberOfPages = 16, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0xa, |
| .PhysicalStart = 0x7fb7f000, |
| .VirtualStart = 0, |
| .NumberOfPages = 128, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7fbff000, |
| .VirtualStart = 0, |
| .NumberOfPages = 513, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x7fe00000, |
| .VirtualStart = 0, |
| .NumberOfPages = 107, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7fe6b000, |
| .VirtualStart = 0, |
| .NumberOfPages = 32, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7fe8b000, |
| .VirtualStart = 0, |
| .NumberOfPages = 26, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x4, |
| .PhysicalStart = 0x7fea5000, |
| .VirtualStart = 0, |
| .NumberOfPages = 33, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x3, |
| .PhysicalStart = 0x7fec6000, |
| .VirtualStart = 0, |
| .NumberOfPages = 22, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x6, |
| .PhysicalStart = 0x7fedc000, |
| .VirtualStart = 0, |
| .NumberOfPages = 132, |
| .Attribute = 0x800000000000000f, |
| }, |
| { |
| .Type = 0xa, |
| .PhysicalStart = 0x7ff60000, |
| .VirtualStart = 0, |
| .NumberOfPages = 160, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x100000000, |
| .VirtualStart = 0, |
| .NumberOfPages = 262144, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x1, |
| .PhysicalStart = 0x140000000, |
| .VirtualStart = 0, |
| .NumberOfPages = 26, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0x7, |
| .PhysicalStart = 0x14001a000, |
| .VirtualStart = 0, |
| .NumberOfPages = 1310694, |
| .Attribute = 0xf, |
| }, |
| { |
| .Type = 0, |
| .PhysicalStart = 0xb0000000, |
| .VirtualStart = 0, |
| .NumberOfPages = 65536, |
| .Attribute = 0x1, |
| }, |
| }; |
| |
| constexpr zbi_mem_range_t kTestZbiMemRanges[] = { |
| { |
| .paddr = 0x1000, |
| .length = 0x86000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x88000, |
| .length = 0x18000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x100000, |
| .length = 0x700000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x810000, |
| .length = 0xf0000, |
| .type = ZBI_MEM_RANGE_RESERVED, |
| }, |
| { |
| .paddr = 0x900000, |
| .length = 0x7de31000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7e732000, |
| .length = 0xc000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7e740000, |
| .length = 0x76e000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7eeb3000, |
| .length = 0x32000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7eef0000, |
| .length = 0xf000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7ef07000, |
| .length = 0xe000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7ef1c000, |
| .length = 0xd000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7ef2a000, |
| .length = 0x1d000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7ef4a000, |
| .length = 0x17000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7ef63000, |
| .length = 0xd000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7ef76000, |
| .length = 0xb000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7ef96000, |
| .length = 0xc000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7efa3000, |
| .length = 0x1b000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7efc9000, |
| .length = 0x12000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f000000, |
| .length = 0x248000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f24c000, |
| .length = 0x16000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f267000, |
| .length = 0xb000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f282000, |
| .length = 0x2e000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f2bc000, |
| .length = 0x400000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f6c5000, |
| .length = 0xb000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f6d5000, |
| .length = 0x21a000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7f8ef000, |
| .length = 0x310000, |
| .type = ZBI_MEM_RANGE_RESERVED, |
| }, |
| { |
| .paddr = 0x7fbff000, |
| .length = 0x2dd000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| { |
| .paddr = 0x7fedc000, |
| .length = 0x124000, |
| .type = ZBI_MEM_RANGE_RESERVED, |
| }, |
| { |
| .paddr = 0xb0000000, |
| .length = 0x10000000, |
| .type = ZBI_MEM_RANGE_RESERVED, |
| }, |
| { |
| .paddr = 0x100000000, |
| .length = 0x180000000, |
| .type = ZBI_MEM_RANGE_RAM, |
| }, |
| }; |
| |
| TEST(BootShimTests, EfiBootShimMemConfig) { |
| alignas(ZBI_ALIGNMENT) std::byte buffer[sizeof(kTestEfiMemoryMap)]; |
| memcpy(buffer, kTestEfiMemoryMap, sizeof(kTestEfiMemoryMap)); |
| cpp20::span<zbi_mem_range_t> mem_config = boot_shim::EfiBootShimLoader::ConvertMemoryMap( |
| cpp20::span(buffer), sizeof(efi_memory_descriptor)); |
| ASSERT_EQ(mem_config.size(), std::size(kTestZbiMemRanges)); |
| for (size_t i = 0; i < std::size(kTestZbiMemRanges); ++i) { |
| EXPECT_EQ(mem_config[i].paddr, kTestZbiMemRanges[i].paddr, "%zu", i); |
| EXPECT_EQ(mem_config[i].length, kTestZbiMemRanges[i].length, "%zu", i); |
| EXPECT_EQ(mem_config[i].type, kTestZbiMemRanges[i].type, "%zu", i); |
| } |
| } |
| |
| } // namespace |