From: Jon Nettleton Date: Thu, 3 Aug 2017 09:31:01 +0000 (-0700) Subject: nvme: Fix number of blocks detection X-Git-Tag: v2017.09-rc2~18 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=f81d83d53454a108f0317c1debd8af7edc8413be;p=u-boot nvme: Fix number of blocks detection NVMe should use the nsze value from the queried device. This will reflect the total number of blocks of the device and fix detecting my Samsung 960 EVO 256GB. Original: Capacity: 40386.6 MB = 39.4 GB (82711872 x 512) Fixed: Capacity: 238475.1 MB = 232.8 GB (488397168 x 512) Signed-off-by: Jon Nettleton Reviewed-by: Bin Meng Tested-by: Bin Meng Reviewed-by: Tom Rini --- diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c index feea02aa85..bac253a3f7 100644 --- a/drivers/nvme/nvme.c +++ b/drivers/nvme/nvme.c @@ -620,7 +620,7 @@ static int nvme_blk_probe(struct udevice *udev) flbas = id->flbas & NVME_NS_FLBAS_LBA_MASK; ns->flbas = flbas; ns->lba_shift = id->lbaf[flbas].ds; - ns->mode_select_num_blocks = le64_to_cpu(id->nuse); + ns->mode_select_num_blocks = le64_to_cpu(id->nsze); ns->mode_select_block_len = 1 << ns->lba_shift; list_add(&ns->list, &ndev->namespaces);