Comment 1 for bug 1910586

Revision history for this message
Philippe Mathieu-Daudé (philmd) wrote : Re: [Bug 1910586] [NEW] SD card size constraint conceptually wrong

On 1/7/21 8:24 PM, - wrote:
> Public bug reported:
>
> The patch discussed here:
> https://<email address hidden>/msg720833.html
> introduces an artificial size constraint for SD cards
> that has no relation to reality.
>
> I'm trying to use an _actual_ **physical** SD card,
> and qemu tells me its size is "invalid".
>
> Something here appears to be conceptually wrong.
>
> --------------------------------------------------
> # fdisk -l /dev/sdg
> Disk /dev/sdg: 14.84 GiB, 15931539456 bytes, 31116288 sectors
> Disk model: USB SD Reader
> Units: sectors of 1 * 512 = 512 bytes
> Sector size (logical/physical): 512 bytes / 512 bytes
> I/O size (minimum/optimal): 512 bytes / 512 bytes
> Disklabel type: dos
> Disk identifier: 0x7a0c8bb0
>
> Device Boot Start End Sectors Size Id Type
> /dev/sdg1 2048 524287 522240 255M c W95 FAT32 (LBA)
> /dev/sdg2 524288 31116287 30592000 14.6G 83 Linux
> # qemu-system-aarch64 -M raspi3 -m 1G -kernel vmlinuz-5.4.79-v8 -dtb bcm2837-rpi-3-b-plus.dtb -append console=ttyAMA0\ root=/dev/mmcblk0p2\ rw -nographic -serial mon:stdio -drive file=/dev/sdg,format=raw
> qemu-system-aarch64: Invalid SD card size: 14.8 GiB
> SD card size has to be a power of 2, e.g. 16 GiB.

Your physical card likely is 16GiB. The firmware running
on it is free to reserve some amount to replace broken
blocks. In your case ~7%.

We choose to restrict the model to the physical layer to
simplify the design and avoid to deal with security issues.

Patches to improve the model by better matching the real
world are always welcomed!

> You can resize disk images with 'qemu-img resize <imagefile> <new-size>'
> (note that this will lose data if you make the image smaller than it currently is).

Indeed, we can remove this warning for block devices.

> --------------------------------------------------
>
> The same invocation with a dump of the actual image
> resized to match qemu's odd expectations works fine.
>
>
> This is on QEMU 5.2.0, as evidenced by the following:
> --------------------------------------------------
> # qemu-system-aarch64 -version
> QEMU emulator version 5.2.0
> Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
> --------------------------------------------------
>
> Is there a simple workaround that disables this rather
> arbitrary constraint?

No, but you can send a patch :)

Regards,

Phil.