Re: U-Boot interferes with initrd binary — Revert "efi: Correct smbios-table installation" ?

Michael Brown mcb30 at ipxe.org
Fri Apr 4 09:59:21 CEST 2025


On 03/04/2025 23:41, Simon Glass wrote:
> On Fri, 4 Apr 2025 at 08:18, Christian Kohlschütter
> <christian at kohlschutter.com> wrote:
>>> On 3. Apr 2025, at 19:54, Simon Glass <sjg at chromium.org> wrote:
>>>
>>> 4. DMA traffic could then write over the malloc() region
>>>
>>> I'm not seeing where the Ethernet device's stop() is called. The
>>> dwmac_meson8b driver does not have a remove() method, so presumably
>>> DMA is still running after the device is removed. Probably the correct
>>> fix would be to add a remove() method to that driver.
>>
>> Right. Of course this means that there's still a chance that some future driver would again fail to do this.
>> How can we prevent this? Can some removal hook be added automatically upon registration?
> 
> Visual inspection of each network driver should help.
> 
> I'm not sure if we want to 'stop' all the network devices before
> booting Linux, but perhaps we could perhaps provide that feature as a
> Kconfig option, e.g. in announce_and_cleanup(), which could really use
> a cleanup to make it common across archs.

If the memory used for network device DMA is not reserved to prevent use 
by the operating system, then you absolutely need to stop all network 
devices.  Otherwise, what is there that prevents random parts of the OS 
kernel or data from being overwritten by received packets?

In the UEFI model, the point at which ExitBootServices() returns 
successfully is the point that any memory marked as EfiBootServicesCode 
or EfiBootServicesData becomes usable as general-purpose RAM by the OS. 
The firmware (including any DMA-capable devices configured by the 
firmware) is not permitted to continue to write to this memory after 
this point.

Thanks,

Michael



More information about the U-Boot mailing list