All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@siemens.com>
To: "Jan Lübbe" <jlu@pengutronix.de>, 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: Sun, 14 Sep 2025 14:23:49 +0200	[thread overview]
Message-ID: <d1cdafb7-e249-46ea-b29e-cc8f0ce6b9ef@siemens.com> (raw)
In-Reply-To: <4d7760a559948fe8b16517fd4a17abde0606bae5.camel@pengutronix.de>

On 09.09.25 15:28, Jan Lübbe wrote:
> 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, both fixed.

Jan

-- 
Siemens AG, Foundational Technologies
Linux Expert Center


  reply	other threads:[~2025-09-14 12:26 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
2025-09-14 12:23     ` Jan Kiszka [this message]
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=d1cdafb7-e249-46ea-b29e-cc8f0ce6b9ef@siemens.com \
    --to=jan.kiszka@siemens.com \
    --cc=alex.bennee@linaro.org \
    --cc=bmeng.cn@gmail.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jlu@pengutronix.de \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.