From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Mon, 17 Jun 2013 22:26:00 +0200 Subject: [U-Boot] [PATCH] Fix block device accesses beyond 2TiB In-Reply-To: <1371208045-4428-1-git-send-email-t-uboot@infra-silbe.de> References: <1371208045-4428-1-git-send-email-t-uboot@infra-silbe.de> Message-ID: <201306172226.01044.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hello Sascha, > With CONFIG_SYS_64BIT_LBA, lbaint_t gets defined as a 64-bit type, > which is required to represent block numbers for storage devices that > exceed 2TiB (the block size usually is 512B), e.g. recent hard drives. > > For some obscure reason, the current U-Boot code uses lbaint_t for the > number of blocks to read (a rather optimistic estimation of how RAM > sizes will evolve), but not for the starting address. Trying to access > blocks beyond the 2TiB boundary will simply wrap around and read a > block within the 0..2TiB range. > > We now use lbaint_t for block start addresses, too. This required > changes to all block drivers as the signature of block_read(), > block_write() and block_erase() in block_dev_desc_t changed. > > Signed-off-by: Sascha Silbe > --- > Functionality tested on CuBox Pro with a Western Digital WD30EFRX hard > disk (3TB). Build tested for all arm boards and sandbox. > > Testing on other boards and architectures would be appreciated. > > Fixes for typos, style errors etc. are explicitly out of scope for > this patch, even those checkpatch complains about because they appear > on or near lines touched by the patch. They are unrelated to the issue > at hand and can be fixed up later. Mixing in unrelated changes would > just make harder to revert any problematic change. Quick review looks OK. Best regards, Marek Vasut