From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Graf Date: Thu, 17 Jan 2019 19:06:21 +0100 Subject: [U-Boot] [PATCH 03/11] riscv: generic: Ensure that U-Boot runs within 4GB for 64bit systems In-Reply-To: <20190117103748.36613-4-anup.patel@wdc.com> References: <20190117103748.36613-1-anup.patel@wdc.com> <20190117103748.36613-4-anup.patel@wdc.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 01/17/2019 11:38 AM, Anup Patel wrote: > On 64bit systems, the DRAM top can be easily beyond 4GB and U-Boot > DMA mapping APIs will generate DMA addresses beyond 4GB. This > breaks DMA programming in 32bit DMA capable devices (such as > Cadence MACB ethernet). For example, If DRAM is more then 2GB > on QEMU sifive_u machine then Cadence MACB ethernet stops working > for U-Boot because it is a 32bit DMA capable device. > > To handle 32bit DMA capable devices on 64bit systems, we provide > custom implementation of board_get_usable_ram_top() which ensures > that usable ram top is not more then 4GB. This in-turn ensures > that U-Boot always runs within 4GB hence DMA addresses generated > by DMA mapping APIs will be within 4GB too. > > Signed-off-by: Anup Patel > Signed-off-by: Atish Patra You could probably write that with MIN() more easily, but this way works fine too. Reviewed-by: Alexander Graf Alex