IMX8MM 4GiB boundary issue

Marek Vasut marex at denx.de
Fri Feb 25 14:50:59 CET 2022


On 2/25/22 12:37, Mark Kettenis wrote:
>> From: Fabio Estevam <festevam at gmail.com>
>> Date: Fri, 25 Feb 2022 08:12:58 -0300
>>
>> Hi Tim,
>>
>> On Thu, Feb 24, 2022 at 6:46 PM Tim Harvey <tharvey at gateworks.com> wrote:
>>
>>> Fabio,
>>>
>>> No, that commit is 'not' in v2021.07. Please test with master and you
>>> should see that go away.
>>
>> Yes, you are right.
>>
>>> Regardless, Marek's suggestion is the right fix if you can manage
>>> that... we really don't want to limit 4GB boards to 3GB. I was hoping
>>> NXP would step up and address the peripheral drivers for this.
>>
>> Agreed, thanks!
> 
> But isn't the problem here that (some of) the hardware peripherals
> simply can't address memory above the 4GB boundary?
> 
> OS kernels can work around such limitations by using an IOMMU (if
> provided by the hardware) or by using bounce buffers (swiotlb in Linux
> speak).

Right, see bounce_buffer in U-Boot.

> The traditional way to deal with this in u-boot is to make
> sure that u-boot only uses memory below the 4GB boundary by
> implementing board_get_usable_ram_top() and making sure that all the
> addresses in the u-boot environment are in "low" memory.

The board_get_usable_ram_top() purpose was something else entirely at 
the beginning, it only started being misused to work around driver 
issues instead of fixing them later and that is utterly wrong.

> For EFI
> support there is the CONFIG_EFI_LOADER_BOUNCE_BUFFER option, which
> should be set to "y" in this case.

There is generic bounce buffer for drivers, see common/bouncebuf.c .


More information about the U-Boot mailing list