From: "Jan Lübbe" <jlu@pengutronix.de>
To: Jan Kiszka <jan.kiszka@siemens.com>, qemu-devel <qemu-devel@nongnu.org>
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Bin Meng" <bmeng.cn@gmail.com>,
qemu-block@nongnu.org,
"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>
Subject: Re: [PATCH v3 6/6] docs: Add eMMC device model description
Date: Tue, 09 Sep 2025 15:28:26 +0200 [thread overview]
Message-ID: <4d7760a559948fe8b16517fd4a17abde0606bae5.camel@pengutronix.de> (raw)
In-Reply-To: <2a8d6226903d8dcf9615b5ac5a40522b6bf2f7c3.1757422256.git.jan.kiszka@siemens.com>
On Tue, 2025-09-09 at 14:50 +0200, Jan Kiszka wrote:
> From: Jan Kiszka <jan.kiszka@siemens.com>
>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
> docs/system/device-emulation.rst | 1 +
> docs/system/devices/emmc.rst | 52 ++++++++++++++++++++++++++++++++
> 2 files changed, 53 insertions(+)
> create mode 100644 docs/system/devices/emmc.rst
>
> diff --git a/docs/system/device-emulation.rst b/docs/system/device-emulation.rst
> index 911381643f..36429b1d17 100644
> --- a/docs/system/device-emulation.rst
> +++ b/docs/system/device-emulation.rst
> @@ -101,3 +101,4 @@ Emulated Devices
> devices/canokey.rst
> devices/usb-u2f.rst
> devices/igb.rst
> + devices/emmc.rst
> diff --git a/docs/system/devices/emmc.rst b/docs/system/devices/emmc.rst
> new file mode 100644
> index 0000000000..3bd70c0e94
> --- /dev/null
> +++ b/docs/system/devices/emmc.rst
> @@ -0,0 +1,52 @@
> +==============
> +eMMC Emulation
> +==============
> +
> +Besides SD card emulation, QEMU also offers an eMMC model as found on many
> +embedded boards. An eMMC, just like an SD card, is connected to the machine
> +via an SDHCI controller.
> +
> +Create eMMC Images
> +==================
> +
> +A recent eMMC consists of 4 partitions: 2 boot partitions, 1 Replay protected
> +Memory Block (RPMB), and the user data area. QEMU expects backing images for
> +the eMMC to contain those partitions concatenated in exactly that order.
> +However, the boot partitions as well as the RPMB might be absent if their sizes
> +are configured to zero.
> +
> +The eMMC specification defines alignment constraints for the partitions. The
> +two boot partitions must be of the same size. Furthermore, boot and RPMB
> +partitions must be multiples of 128 KB with a maximum of 32640 KB for each
> +boot partition and 16384K for the RPMB partition.
> +
> +The alignment constrain of the user data area depends on its size. Up to 2
> +GByte, the size must be a power of 2. From 2 GByte onward, the size has to be
> +multiples of 512 byte.
> +
> +QEMU is enforcing those alignment rules before instantiating the device.
> +Therefore, the provided image has to strictly follow them as well. The helper
> +script `scripts/mkemmc.sh` can be used to create compliant images, with or
> +without pre-filled partitions. E.g., to create an eMMC image from a firmware
> +image and an OS image with an empty 2 MByte RPMB, use the following command:
> +
> +.. code-block:: console
> +
> + scripts/mkemmc.sh -b firmware.img -r /dev/zero:2MB os.img emmc.img
> +
> +This will take care of rounding up the partition sizes to the next valid value
> +and will leave the RPMB and the second boot partition empty (zeroed).
> +
> +Adding eMMC Devices
> +===================
> +
> +An eMMC is either automatically created by a machine model (e.g. Aspeed boards)
> +or can be user-created when using a PCI-attached SDHCI controller. To
> +instantiate the eMMC image form the example above while assuming that the
s/form/from/
> +firmware needs a boot partitions of 1 MB, use the following options:
> +
> +.. code-block:: console
> +
> + -drive file=emmc.img,if=none,format=raw,id=emmc-img
> + -device sdhci-pci
> + -device emmc,drive=emmc-img,boot-partition-size=1048576 rpmb-partition-size=2097152
Missing ',' before rpmb-partition-size?
Thanks,
Jan
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2025-09-09 13:29 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-09 12:50 [PATCH v3 0/6] sd: Add RPMB emulation to eMMC model Jan Kiszka
2025-09-09 12:50 ` [PATCH v3 1/6] hw/sd/sdcard: Fix size check for backing block image Jan Kiszka
2025-09-09 20:56 ` Warner Losh
2025-09-09 12:50 ` [PATCH v3 2/6] hw/sd/sdcard: Allow user-instantiated eMMC Jan Kiszka
2025-09-09 12:50 ` [PATCH v3 3/6] hw/sd/sdcard: Add basic support for RPMB partition Jan Kiszka
2025-09-09 12:50 ` [PATCH v3 4/6] hw/sd/sdcard: Handle RPMB MAC field Jan Kiszka
2025-09-09 12:50 ` [PATCH v3 5/6] scripts: Add helper script to generate eMMC block device images Jan Kiszka
2025-09-09 12:50 ` [PATCH v3 6/6] docs: Add eMMC device model description Jan Kiszka
2025-09-09 13:28 ` Jan Lübbe [this message]
2025-09-14 12:23 ` Jan Kiszka
2025-09-09 14:23 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4d7760a559948fe8b16517fd4a17abde0606bae5.camel@pengutronix.de \
--to=jlu@pengutronix.de \
--cc=alex.bennee@linaro.org \
--cc=bmeng.cn@gmail.com \
--cc=ilias.apalodimas@linaro.org \
--cc=jan.kiszka@siemens.com \
--cc=philmd@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).