forked from OERV-BSP/u-boot
With commitc85b8071e7("virtio: blk: support block sizes exceeding 512 bytes") logic was added to detect the VIRTIO_BLK_F_BLK_SIZE capability and to copy the block size reported by QEMU to the block device descriptor. The logical block size can be set when invoking QEMU: -drive if=none,file=4096.img,format=raw,id=vda \ -device virtio-blk-device,drive=vda,physical_block_size=4096,logical_block_size=4096 In U-Boot the logical block size is shown by command `virtio info`: => virtio info Device 0: QEMU VirtIO Block Device Type: Hard Disk Capacity: 1024.0 MB = 1.0 GB (262144 x 4096) There where two flaws which together hid that the logic was incorrect: * VIRTIO_BLK_F_BLK_SIZE was missing in the driver capabilities and the bit was filtered out. * The result of the call to virtio_has_feature() was negated. The problem became apparent when using ARM FVP as emulator which does not set VIRTIO_BLK_F_BLK_SIZE. Fixes:c85b8071e7("virtio: blk: support block sizes exceeding 512 bytes") Reported-by: Debbie Horsfall <debbie.horsfall@arm.com> Tested-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>