Fwd: Re: [PATCH] efi_loader: Omit memory with "no-map" when returning memory map.

Kristian Amlie kristian.amlie at northern.tech
Thu Sep 2 10:43:27 CEST 2021


On 31/08/2021 13:12, Kristian Amlie wrote:
> On 31/08/2021 12:46, Heinrich Schuchardt wrote:
>>
>>
>> ------------------------------------------------------------------------
>> *Von:* Ard Biesheuvel <ardb at kernel.org>
>> *Gesendet:* 31. August 2021 12:33:56 MESZ
>> *An:* Heinrich Schuchardt <xypron.glpk at gmx.de>
>> *CC:* Kristian Amlie <kristian.amlie at northern.tech>
>> *Betreff:* Re: [PATCH] efi_loader: Omit memory with "no-map" when
>> returning memory map.
>>
>> On Tue, 31 Aug 2021 at 08:41, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>>
>>
>>     On 8/27/21 9:55 AM, Kristian Amlie wrote:
>>
>>     You can use scripts/get_maintainer.pl to find the right addressees for
>>     your patches.
>>
>>         efi_reserve_memory() states that memory marked with "no-map"
>>         shall not
>>         be accessed by the UEFI payload. Make sure efi_get_memory_map()
>>         honors
>>         this.
>>
>>
>> Accessing memory and describing memory are two different things.
>> Describing reserved memory in the memory map is important, because it
>> helps us distinguish it from MMIO regions.
> 
> Ok, my mistake, I thought the kernel would deduce this separately
> through the DTB.
> 
>>
>>         This helps the case when booting vexpress_ca9x4 under QEMU. Because
>>         the kernel wants to use an address in the lowest 128MiB of the
>>         range,
>>         but this range is reserved with "no-map", the kernel complains
>>         that it
>>         can not allocate the low memory it needs. In reality the actual
>>         usable
>>         memory starts much higher, which is reflected correctly in the
>>         memory
>>         map after this fix.
>>
>>
>>
>> This is a u-boot patch right? (I cannot tell from the context, as
>> there are no mailing lists on cc)
>>
>> It is u-boot's job to describe all the memory, no matter how it is
>> used. Even if the kernel itself may not use it as system memory, there
>> are cases where kernel infrastructure is used to map these regions:
>> for instance, the ACPI core may need to map a SystemMemory OpRegion,
>> and we need the EFI memory map to tell us whether to use memory or I/O
>> semantics.
>>
>> As for the 128 MB issue: can you reproduce this with a recent kernel?
>> We made some changes recently to the EFI stub as well as the
>> decompressor code to prevent the decompressor code from relocating
>> itself to the base of DRAM, and to allow the decompressed kernel to
>> reside at any 2 MB aligned offset in memory.
> 
> I'll try this and get back to you!

The result have been a bit inconclusive. I *think* it works, but the
system later crashes because init is killed. Which may be a problem with
that kernel in general, I don't know. I would require more time to
figure out exactly what's causing it. The early boot and all the memory
initialization seems to work just fine though.

I have pasted the log below if you want to look at it, but to me the
error looks unrelated.

--- BOOT LOG ---

U-Boot 2021.07 (Jul 05 2021 - 15:11:28 +0000)

DRAM:  256 MiB
WARNING: Caches not enabled
Flash: 64 MiB
MMC:   sysctl at 1000 - probe failed: -19
aaci at 4000 - probe failed: -19
uart at 9000 - probe failed: -19
uart at a000 - probe failed: -19
uart at b000 - probe failed: -19
uart at c000 - probe failed: -19
timer at 11000 - probe failed: -19
timer at 12000 - probe failed: -19
rtc at 17000 - probe failed: -19
clcd at 1f000 - probe failed: -19
clcd at 10020000 - probe failed: -19
memory-controller at 100e0000 - probe failed: -19
memory-controller at 100e1000 - probe failed: -19
watchdog at 100e5000 - probe failed: -19

Loading Environment from Flash... *** Warning - bad CRC, using default
environment

In:    serial
Out:   serial
Err:   serial
Net:   eth0: ethernet at 3,02000000
Hit any key to stop autoboot:  0
no mmc device at slot 1
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
14163 bytes read in 16 ms (864.3 KiB/s)
Scanning disk sysctl at 1000.blk...
Disk sysctl at 1000.blk not ready
Scanning disk aaci at 4000.blk...
Disk aaci at 4000.blk not ready
Scanning disk mmci at 5000.blk...
Scanning disk uart at 9000.blk...
Disk uart at 9000.blk not ready
Scanning disk uart at a000.blk...
Disk uart at a000.blk not ready
Scanning disk uart at b000.blk...
Disk uart at b000.blk not ready
Scanning disk uart at c000.blk...
Disk uart at c000.blk not ready
Scanning disk timer at 11000.blk...
Disk timer at 11000.blk not ready
Scanning disk timer at 12000.blk...
Disk timer at 12000.blk not ready
Scanning disk rtc at 17000.blk...
Disk rtc at 17000.blk not ready
Scanning disk clcd at 1f000.blk...
Disk clcd at 1f000.blk not ready
Scanning disk clcd at 10020000.blk...
Disk clcd at 10020000.blk not ready
Scanning disk memory-controller at 100e0000.bl...
Disk memory-controller at 100e0000.bl not ready
Scanning disk memory-controller at 100e1000.bl...
Disk memory-controller at 100e1000.bl not ready
Scanning disk watchdog at 100e5000.blk...
Disk watchdog at 100e5000.blk not ready
Found 5 disks
** Unable to read file ubootefi.var **
Failed to load EFI variables
BootOrder not defined
EFI boot manager: Cannot load any image
Found EFI removable media binary efi/boot/bootarm.efi
536576 bytes read in 113 ms (4.5 MiB/s)
Booting /efi\boot\bootarm.efi
Welcome to GRUB!

lock: OK
lock: OK


EFI stub: Entering in SVC mode with MMU disabled
EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.10.60-yocto-standard (oe-user at oe-host)
(arm-poky-linux-gnueabi-gcc (GCC) 9.3.0, GNU ld (GNU Binutils)
2.34.0.20200220) #1 SMP Mon Aug 23 03:04:08 UTC 2021
[    0.000000] CPU: ARMv7 Processor [410fc090] revision 0 (ARMv7),
cr=10c5387d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing
instruction cache
[    0.000000] OF: fdt: Machine model: V2P-CA9
[    0.000000] OF: fdt: Ignoring memory block 0x80000000 - 0x80000004
[    0.000000] Memory policy: Data cache writeback
[    0.000000] efi: EFI v2.80 by Das U-Boot
[    0.000000] efi: RTPROP=0x6ee57040 SMBIOS=0x6ee53000
MEMRESERVE=0x6e5a9040
[    0.000000] OF: fdt: Ignoring memory block 0x4c000000 - 0x4c800000
[    0.000000] efi: [Firmware Bug]: EFI stub was entered with MMU and
Dcache disabled, please fix your firmware!
[    0.000000] efi: CPSR at EFI stub entry        : 0x600001d3
[    0.000000] efi: SCTLR at EFI stub entry       : 0x00c51878
[    0.000000] efi: CPSR after ExitBootServices() : 0x600001d3
[    0.000000] efi: SCTLR after ExitBootServices(): 0x00c50878
[    0.000000] Reserved memory: created DMA memory pool at 0x4c000000,
size 8 MiB
[    0.000000] OF: reserved mem: initialized node vram at 4c000000,
compatible id shared-dma-pool
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000060000000-0x000000006fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000060000000-0x000000006e9b5fff]
[    0.000000]   node   0: [mem 0x000000006e9b6000-0x000000006e9b7fff]
[    0.000000]   node   0: [mem 0x000000006e9b8000-0x000000006ee4afff]
[    0.000000]   node   0: [mem 0x000000006ee4b000-0x000000006ee51fff]
[    0.000000]   node   0: [mem 0x000000006ee52000-0x000000006ee52fff]
[    0.000000]   node   0: [mem 0x000000006ee53000-0x000000006ee53fff]
[    0.000000]   node   0: [mem 0x000000006ee54000-0x000000006ee55fff]
[    0.000000]   node   0: [mem 0x000000006ee56000-0x000000006ee59fff]
[    0.000000]   node   0: [mem 0x000000006ee5a000-0x000000006ee5afff]
[    0.000000]   node   0: [mem 0x000000006ee5b000-0x000000006ee5ffff]
[    0.000000]   node   0: [mem 0x000000006ee60000-0x000000006ee60fff]
[    0.000000]   node   0: [mem 0x000000006ee61000-0x000000006ee61fff]
[    0.000000]   node   0: [mem 0x000000006ee62000-0x000000006ee62fff]
[    0.000000]   node   0: [mem 0x000000006ee63000-0x000000006ee63fff]
[    0.000000]   node   0: [mem 0x000000006ee64000-0x000000006ee64fff]
[    0.000000]   node   0: [mem 0x000000006ee65000-0x000000006ee65fff]
[    0.000000]   node   0: [mem 0x000000006ee66000-0x000000006ee67fff]
[    0.000000]   node   0: [mem 0x000000006ee68000-0x000000006ee68fff]
[    0.000000]   node   0: [mem 0x000000006ee69000-0x000000006ff6bfff]
[    0.000000]   node   0: [mem 0x000000006ff6c000-0x000000006ff6dfff]
[    0.000000]   node   0: [mem 0x000000006ff6e000-0x000000006fffffff]
[    0.000000] Initmem setup node 0 [mem
0x0000000060000000-0x000000006fffffff]
[    0.000000] CPU: All CPU(s) started in SVC mode.
[    0.000000] percpu: Embedded 15 pages/cpu s29324 r8192 d23924 u61440
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: BOOT_IMAGE=(hd0,2)/boot/zImage
root=/dev/mmcblk0p2 console=ttyAMA0,115200n8 rootwait
[    0.000000] printk: log_buf_len individual max cpu contribution: 4096
bytes
[    0.000000] printk: log_buf_len total cpu_extra contributions: 12288
bytes
[    0.000000] printk: log_buf_len min size: 16384 bytes
[    0.000000] printk: log_buf_len: 32768 bytes
[    0.000000] printk: early log buf free: 13072(79%)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072
bytes, linear)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536
bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 250940K/262144K available (5987K kernel code,
243K rwdata, 1412K rodata, 340K init, 176K bss, 11204K reserved, 0K
cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay
is 10 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
[    0.000000] GIC CPU mask not found - kernel will fail to boot.
[    0.000000] GIC CPU mask not found - kernel will fail to boot.
[    0.000000] L2C: platform modifies aux control register: 0x02020000
-> 0x02420000
[    0.000000] L2C: DT/platform modifies aux control register:
0x02020000 -> 0x02420000
[    0.000000] L2C-310 enabling early BRESP for Cortex-A9
[    0.000000] L2C-310 full line of zeros enabled for Cortex-A9
[    0.000000] L2C-310 dynamic clock gating disabled, standby mode disabled
[    0.000000] L2C-310 cache controller enabled, 8 ways, 128 kB
[    0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x46420001
[    0.000263] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps
every 89478484971ns
[    0.004179] clocksource: arm,sp804: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 1911260446275 ns
[    0.005143] Failed to initialize
'/bus at 4000000/motherboard/iofpga at 7,00000000/timer at 12000': -22
[    0.005908] smp_twd: clock not found -2
[    0.011764] Console: colour dummy device 80x30
[    0.012281] Calibrating local timer... 92.08MHz.
[    0.064864] Calibrating delay loop... 606.20 BogoMIPS (lpj=3031040)
[    0.165603] pid_max: default: 32768 minimum: 301
[    0.166869] Mount-cache hash table entries: 1024 (order: 0, 4096
bytes, linear)
[    0.166928] Mountpoint-cache hash table entries: 1024 (order: 0, 4096
bytes, linear)
[    0.179849] CPU: Testing write buffer coherency: ok
[    0.180657] CPU0: Spectre v2: using BPIALL workaround
[    0.189553] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000
[    0.195577] Setting up static identity map for 0x60008280 - 0x600082e0
[    0.196963] rcu: Hierarchical SRCU implementation.
[    0.204617] Remapping and enabling EFI services.
[    0.206930] smp: Bringing up secondary CPUs ...
[    0.213694] smp: Brought up 1 node, 1 CPU
[    0.213793] SMP: Total of 1 processors activated (606.20 BogoMIPS).
[    0.213874] CPU: All CPU(s) started in SVC mode.
[    0.221890] devtmpfs: initialized
[    0.232819] random: get_random_u32 called from
bucket_table_alloc+0x58/0x14c with crng_init=0
[    0.235806] VFP support v0.3: implementor 41 architecture 3 part 30
variant 9 rev 0
[    0.256031] clocksource: jiffies: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.256892] futex hash table entries: 1024 (order: 4, 65536 bytes,
linear)
[    0.274887] NET: Registered protocol family 16
[    0.309743] DMA: preallocated 256 KiB pool for atomic coherent
allocations
[    0.314428] cpuidle: using governor ladder
[    0.314839] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.315677] Serial: AMBA PL011 UART driver
[    0.537363] SCSI subsystem initialized
[    0.546398] usbcore: registered new interface driver usbfs
[    0.546752] usbcore: registered new interface driver hub
[    0.547004] usbcore: registered new device driver usb
[    0.573627] Registered efivars operations
[    0.574847] Advanced Linux Sound Architecture Driver Initialized.
[    0.604622] clocksource: Switched to clocksource arm,sp804
[    0.698679] NET: Registered protocol family 2
[    0.700112] IP idents hash table entries: 4096 (order: 3, 32768
bytes, linear)
[    0.703597] tcp_listen_portaddr_hash hash table entries: 512 (order:
0, 6144 bytes, linear)
[    0.703748] TCP established hash table entries: 2048 (order: 1, 8192
bytes, linear)
[    0.703939] TCP bind hash table entries: 2048 (order: 2, 16384 bytes,
linear)
[    0.704091] TCP: Hash tables configured (established 2048 bind 2048)
[    0.706092] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.706307] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes,
linear)
[    0.713435] NET: Registered protocol family 1
[    0.720521] RPC: Registered named UNIX socket transport module.
[    0.720614] RPC: Registered udp transport module.
[    0.720644] RPC: Registered tcp transport module.
[    0.720691] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.734819] workingset: timestamp_bits=30 max_order=16 bucket_order=0
[    0.753411] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.758316] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc.
[    0.760873] 9p: Installing v9fs 9p2000 file system support
[    0.842588] loop: module loaded
[    1.177339] physmap-flash 40000000.flash: physmap platform flash
device: [mem 0x40000000-0x43ffffff]
[    1.178885] 40000000.flash: Found 2 x16 devices at 0x0 in 32-bit
bank. Manufacturer ID 0x000000 Chip ID 0x000000
[    1.179365] Intel/Sharp Extended Query Table at 0x0031
[    1.179912] Using buffer write method
[    1.182505] physmap-flash 40000000.flash: physmap platform flash
device: [mem 0x44000000-0x47ffffff]
[    1.182916] 40000000.flash: Found 2 x16 devices at 0x0 in 32-bit
bank. Manufacturer ID 0x000000 Chip ID 0x000000
[    1.182986] Intel/Sharp Extended Query Table at 0x0031
[    1.183307] Using buffer write method
[    1.183452] Concatenating MTD devices:
[    1.183498] (0): "40000000.flash"
[    1.183531] (1): "40000000.flash"
[    1.183557] into device "40000000.flash"
[    1.199746] physmap-flash 48000000.psram: physmap platform flash
device: [mem 0x48000000-0x49ffffff]
[    1.209640] libphy: Fixed MDIO Bus: probed
[    1.274434] libphy: smsc911x-mdio: probed
[    1.276718] smsc911x 4e000000.ethernet eth0: MAC Address:
52:54:00:91:52:86
[    1.381425] isp1760 4f000000.usb: bus width: 32, oc: digital
[    1.381905] isp1760 4f000000.usb: NXP ISP1760 USB Host Controller
[    1.382136] isp1760 4f000000.usb: new USB bus registered, assigned
bus number 1
[    1.382892] isp1760 4f000000.usb: Scratch test failed.
[    1.383047] isp1760 4f000000.usb: can't setup: -19
[    1.383279] isp1760 4f000000.usb: USB bus 1 deregistered
[    1.386211] usbcore: registered new interface driver usb-storage
[    1.391247] mousedev: PS/2 mouse device common for all mice
[    1.425411] ledtrig-cpu: registered to indicate activity on CPUs
[    1.429427] usbcore: registered new interface driver usbhid
[    1.429482] usbhid: USB HID core driver
[    1.451206] NET: Registered protocol family 17
[    1.452143] 9pnet: Installing 9P2000 support
[    1.452380] oprofile: hardware counters not available
[    1.452438] oprofile: using timer interrupt.
[    1.452807] Registering SWP/SWPB emulation handler
[    1.490295] aaci-pl041 10004000.aaci: ARM AC'97 Interface PL041 rev0
at 0x10004000, irq 28
[    1.490369] aaci-pl041 10004000.aaci: FIFO 512 entries
[    1.496852] mmci-pl18x 10005000.mmci: Got CD GPIO
[    1.497048] mmci-pl18x 10005000.mmci: Got WP GPIO
[    1.505820] mmci-pl18x 10005000.mmci: mmc0: PL181 manf 41 rev0 at
0x10005000 irq 29,30 (pio)
[    1.558779] 10009000.uart: ttyAMA0 at MMIO 0x10009000 (irq = 33,
base_baud = 0) is a PL011 rev1
[    1.624113] mmc0: new SD card at address 4567
[    1.632634] mmcblk0: mmc0:4567 QEMU! 608 MiB
[    1.645152] printk: console [ttyAMA0] enabled
[    1.649191] 1000a000.uart: ttyAMA1 at MMIO 0x1000a000 (irq = 34,
base_baud = 0) is a PL011 rev1
[    1.657083] 1000b000.uart: ttyAMA2 at MMIO 0x1000b000 (irq = 35,
base_baud = 0) is a PL011 rev1
[    1.667853] 1000c000.uart: ttyAMA3 at MMIO 0x1000c000 (irq = 36,
base_baud = 0) is a PL011 rev1
[    1.678424] input: AT Raw Set 2 keyboard as
/devices/platform/bus at 4000000/bus at 4000000:motherboard/bus at 4000000:motherboard:iofpga at 7,00000000/10006000.kmi/serio0/input/input0
[    1.696853] random: fast init done
[    1.704747] rtc-pl031 10017000.rtc: registered as rtc0
[    1.705851] rtc-pl031 10017000.rtc: setting system clock to
2021-09-01T15:04:45 UTC (1630508685)
[    1.716470] clcd-pl11x 1001f000.clcd: PL111 designer 41 rev2 at
0x1001f000
[    1.717596] clcd-pl11x: probe of 1001f000.clcd failed with error -2
[    1.720860] clcd-pl11x 10020000.clcd: PL111 designer 41 rev2 at
0x10020000
[    1.721435] clcd-pl11x: probe of 10020000.clcd failed with error -2
[    1.732424]  mmcblk0: p1 p2 p3 p4
[    1.735612] ALSA device list:
[    1.735830]   #0: ARM AC'97 Interface PL041 rev0 at 0x10004000, irq 28
[    2.275907] input: ImExPS/2 Generic Explorer Mouse as
/devices/platform/bus at 4000000/bus at 4000000:motherboard/bus at 4000000:motherboard:iofpga at 7,00000000/10007000.kmi/serio1/input/input2
[    2.314240] EXT4-fs (mmcblk0p2): mounted filesystem with ordered data
mode. Opts: (null)
[    2.315988] VFS: Mounted root (ext4 filesystem) readonly on device 179:2.
[    2.330406] Freeing unused kernel memory: 340K
[    2.330669] Kernel memory protection not selected by kernel config.
[    2.331244] Run /sbin/init as init process
[    2.591922] random: crng init done
[    3.912835] Kernel panic - not syncing: Attempted to kill init!
exitcode=0x00000004
[    3.913375] CPU: 0 PID: 1 Comm: systemd Not tainted
5.10.60-yocto-standard #1
[    3.913726] Hardware name: ARM-Versatile Express
[    3.914929] [<c0014950>] (unwind_backtrace) from [<c00118cc>]
(show_stack+0x10/0x14)
[    3.915539] [<c00118cc>] (show_stack) from [<c05d6be0>]
(dump_stack+0x98/0xac)
[    3.915930] [<c05d6be0>] (dump_stack) from [<c05d323c>]
(panic+0xf8/0x2e8)
[    3.916324] [<c05d323c>] (panic) from [<c0025230>] (do_exit+0xa80/0xac4)
[    3.916699] [<c0025230>] (do_exit) from [<c0026100>]
(do_group_exit+0x3c/0xc8)
[    3.917112] [<c0026100>] (do_group_exit) from [<c0030558>]
(get_signal+0x140/0x864)
[    3.917576] [<c0030558>] (get_signal) from [<c0011220>]
(do_work_pending+0xe0/0x4dc)
[    3.917963] [<c0011220>] (do_work_pending) from [<c0008344>]
(slow_work_pending+0xc/0x20)
[    3.918465] Exception stack(0xc0c2dfb0 to 0xc0c2dff8)
[    3.918756] dfa0:                                     00000000
be929358 00000005 b6c963f0
[    3.919102] dfc0: 00000000 b6f85010 be929590 b6f8a000 00000001
b6c94e3c b6cb0d8c be9295c8
[    3.919547] dfe0: 00000020 be929468 ffffffff b6b69900 60000010 ffffffff
[    3.920503] ---[ end Kernel panic - not syncing: Attempted to kill
init! exitcode=0x00000004 ]---

--- END OF BOOT LOG ---

--
Kristian

> 
>>
>>
>>     The 'no-map' requirement needs to be fulfilled by the kernel.
>>
>>     The GetMemoryMap() boot time service must comply to the UEFI
>>     specification.
>>
>>     The Devicetree Specification has this clarification:
>>
>>     "Reserved regions with the no-map property must be listed in the memory
>>     map with type EfiReservedMemoryType. All other reserved regions must be
>>     listed with type EfiBootServicesData."
>>     https://devicetree-specification.readthedocs.io/en/latest/chapter3-devicenodes.html
>>     <https://devicetree-specification.readthedocs.io/en/latest/chapter3-devicenodes.html>
>>
>>     Should the kernel calculate its internal 128 MiB requirement incorrectly
>>     this needs be fixed in the kernel EFI stub. Does the problem exist with
>>     kernel 5.14?
>>
>>     I wonder if the 128 MiB requirement of the kernel can be lifted for
>>     32bit ARM as we already did for RISC-V. Cf.
>>
>>
>> As mentioned above, this should already be fixed, in v5.11 or later
>>
>>     https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v5.14&id=c79e89ecaa246c880292ba68cbe08c9c30db77e3
>>     <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v5.14&id=c79e89ecaa246c880292ba68cbe08c9c30db77e3>
>>
>>     Cc Ard, maintainer of the kernel EFI stub.
>>
>>     Best regards
>>
>>     Heinrich
>>
>>
>>         Signed-off-by: Kristian Amlie <kristian.amlie at northern.tech>
>>         ------------------------------------------------------------------------
>>         lib/efi_loader/efi_memory.c | 14 +++++++++++++-
>>         1 file changed, 13 insertions(+), 1 deletion(-)
>>
>>         diff --git a/lib/efi_loader/efi_memory.c
>>         b/lib/efi_loader/efi_memory.c
>>         index f4acbee4f9..7f8543143a 100644
>>         --- a/lib/efi_loader/efi_memory.c
>>         +++ b/lib/efi_loader/efi_memory.c
>>         @@ -646,8 +646,16 @@ efi_status_t efi_get_memory_map(efi_uintn_t
>>         *memory_map_size,
>>
>>         provided_map_size = *memory_map_size;
>>
>>         - list_for_each(lhandle, &efi_mem)
>>         + list_for_each(lhandle, &efi_mem) {
>>         + struct efi_mem_list *lmem;
>>         +
>>         + lmem = list_entry(lhandle, struct efi_mem_list, link);
>>         +
>>         + if (lmem->desc.type == EFI_RESERVED_MEMORY_TYPE)
>>         + continue;
>>         +
>>         map_entries++;
>>         + }
>>
>>         map_size = map_entries * sizeof(struct efi_mem_desc);
>>
>>         @@ -672,6 +680,10 @@ efi_status_t efi_get_memory_map(efi_uintn_t
>>         *memory_map_size,
>>         struct efi_mem_list *lmem;
>>
>>         lmem = list_entry(lhandle, struct efi_mem_list, link);
>>         +
>>         + if (lmem->desc.type == EFI_RESERVED_MEMORY_TYPE)
>>         + continue;
>>         +
>>         *memory_map = lmem->desc;
>>         memory_map--;
>>         }
>>
>>
> 
> 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210902/f3dc4f0a/attachment.sig>


More information about the U-Boot mailing list