Re: [PATCH v6 3/3] docs/system: riscv: Add pflash usage details

2023-05-31 Thread Sunil V L
On Wed, May 31, 2023 at 09:43:39AM -0700, Andrea Bolognani wrote:
> On Wed, May 31, 2023 at 07:53:00PM +0530, Sunil V L wrote:
> > +Using flash devices
> > +---
> > +
> > +When KVM is not enabled, the first flash device (pflash0) can contain 
> > either
> > +the ROM code or S-mode payload firmware code. If the pflash0 contains the
> > +ROM code, -bios should be set to none. If -bios is not set to
> > +none, pflash0 is assumed to contain S-mode payload code.
> > +
> > +When KVM is enabled, pflash0 is always assumed to contain the S-mode 
> > payload
> > +firmware.
> > +
> > +Firmware images used for pflash should be of size 32 MiB.
> > +
> > +To boot as ROM code:
> > +
> > +.. code-block:: bash
> > +
> > +  $ qemu-system-riscv64 -bios none \
> > + -blockdev 
> > node-name=pflash0,driver=file,read-only=on,filename= \
> > + -M virt,pflash0=pflash0 \
> > + ... other args 
> > +
> > +To boot as read-only S-mode payload:
> > +
> > +.. code-block:: bash
> > +
> > +  $ qemu-system-riscv64 \
> > + -blockdev 
> > node-name=pflash0,driver=file,read-only=on,filename= \
> > + -blockdev node-name=pflash1,driver=file,filename= \
> > + -M virt,pflash0=pflash0,pflash1=pflash1 \
> > + ... other args 
> > +
> > +To boot as read-only S-mode payload in KVM guest:
> > +
> > +.. code-block:: bash
> > +
> > +  $ qemu-system-riscv64 \
> > + -blockdev 
> > node-name=pflash0,driver=file,read-only=on,filename= \
> > + -blockdev node-name=pflash1,driver=file,filename= \
> > + -M virt,pflash0=pflash0,pflash1=pflash1 \
> > + --enable-kvm \
> > + ... other args 
> 
> I feel that this, while accurate, has gotten more complicated than it
> needs to be. We're also putting the least common scenario front and
> center instead of opening with the one that most people are going to
> be using.
> 
> Below is how I suggest reworking it. What do you think?
> 
> 
> 
> Using flash devices
> ---
> 
> By default, the first flash device (pflash0) is expected to contain
> S-mode firmware code. It can be configured as read-only, with the
> second flash device (pflash1) available to store configuration data.
> 
> For example, booting edk2 looks like
> 
> ..code-block:: bash
> 
>   $ qemu-system-riscv64 \
>  -blockdev 
> node-name=pflash0,driver=file,read-only=on,filename= \
>  -blockdev node-name=pflash1,driver=file,filename= \
>  -M virt,pflash0=pflash0,pflash1=pflash1 \
>  ... other args 
> 
> For TCG guests only, it is also possible to boot M-mode firmware from
> the first flash device (pflash0) by additionally passing ``-bios
> none``, as in
> 
> ..code-block:: bash
> 
>   $ qemu-system-riscv64 \
>  -bios none \
>  -blockdev 
> node-name=pflash0,driver=file,read-only=on,filename=
> \
>  -M virt,pflash0=pflash0 \
>  ... other args 
> 
> Firmware images used for pflash must be exactly 32 MiB in size.
> 
Hi Andrea,

This looks great! Thank you very much. Unless I see an objection, I will
use this text in the next revision of the series tomorrow.

Thanks!
Sunil



Re: [PATCH v6 3/3] docs/system: riscv: Add pflash usage details

2023-05-31 Thread Andrea Bolognani
On Wed, May 31, 2023 at 07:53:00PM +0530, Sunil V L wrote:
> +Using flash devices
> +---
> +
> +When KVM is not enabled, the first flash device (pflash0) can contain either
> +the ROM code or S-mode payload firmware code. If the pflash0 contains the
> +ROM code, -bios should be set to none. If -bios is not set to
> +none, pflash0 is assumed to contain S-mode payload code.
> +
> +When KVM is enabled, pflash0 is always assumed to contain the S-mode payload
> +firmware.
> +
> +Firmware images used for pflash should be of size 32 MiB.
> +
> +To boot as ROM code:
> +
> +.. code-block:: bash
> +
> +  $ qemu-system-riscv64 -bios none \
> + -blockdev 
> node-name=pflash0,driver=file,read-only=on,filename= \
> + -M virt,pflash0=pflash0 \
> + ... other args 
> +
> +To boot as read-only S-mode payload:
> +
> +.. code-block:: bash
> +
> +  $ qemu-system-riscv64 \
> + -blockdev 
> node-name=pflash0,driver=file,read-only=on,filename= \
> + -blockdev node-name=pflash1,driver=file,filename= \
> + -M virt,pflash0=pflash0,pflash1=pflash1 \
> + ... other args 
> +
> +To boot as read-only S-mode payload in KVM guest:
> +
> +.. code-block:: bash
> +
> +  $ qemu-system-riscv64 \
> + -blockdev 
> node-name=pflash0,driver=file,read-only=on,filename= \
> + -blockdev node-name=pflash1,driver=file,filename= \
> + -M virt,pflash0=pflash0,pflash1=pflash1 \
> + --enable-kvm \
> + ... other args 

I feel that this, while accurate, has gotten more complicated than it
needs to be. We're also putting the least common scenario front and
center instead of opening with the one that most people are going to
be using.

Below is how I suggest reworking it. What do you think?



Using flash devices
---

By default, the first flash device (pflash0) is expected to contain
S-mode firmware code. It can be configured as read-only, with the
second flash device (pflash1) available to store configuration data.

For example, booting edk2 looks like

..code-block:: bash

  $ qemu-system-riscv64 \
 -blockdev node-name=pflash0,driver=file,read-only=on,filename= \
 -blockdev node-name=pflash1,driver=file,filename= \
 -M virt,pflash0=pflash0,pflash1=pflash1 \
 ... other args 

For TCG guests only, it is also possible to boot M-mode firmware from
the first flash device (pflash0) by additionally passing ``-bios
none``, as in

..code-block:: bash

  $ qemu-system-riscv64 \
 -bios none \
 -blockdev node-name=pflash0,driver=file,read-only=on,filename=
\
 -M virt,pflash0=pflash0 \
 ... other args 

Firmware images used for pflash must be exactly 32 MiB in size.

-- 
Andrea Bolognani / Red Hat / Virtualization