* [RFC PATCH] qemu-options: bring the kernel and image options together
@ 2022-06-22 14:50 Alex Bennée
2022-06-23 6:22 ` Cédric Le Goater
2022-06-23 12:43 ` Peter Maydell
0 siblings, 2 replies; 5+ messages in thread
From: Alex Bennée @ 2022-06-22 14:50 UTC (permalink / raw)
To: qemu-devel; +Cc: Alex Bennée, Cédric Le Goater
How to control the booting of QEMU is often a source of confusion for
users. Bring the options that control this together in the manual
pages and add some verbiage to describe when each option is
appropriate.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Cédric Le Goater <clg@kaod.org>
---
qemu-options.hx | 80 ++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 62 insertions(+), 18 deletions(-)
diff --git a/qemu-options.hx b/qemu-options.hx
index 377d22fbd8..9b0242f0ef 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -1585,13 +1585,6 @@ SRST
Use file as SecureDigital card image.
ERST
-DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
- "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
-SRST
-``-pflash file``
- Use file as a parallel flash image.
-ERST
-
DEF("snapshot", 0, QEMU_OPTION_snapshot,
"-snapshot write to temporary files instead of disk image files\n",
QEMU_ARCH_ALL)
@@ -3680,12 +3673,51 @@ DEFHEADING()
#endif
-DEFHEADING(Linux/Multiboot boot specific:)
+DEFHEADING(Boot Image or Kernel specific:)
+SRST
+There are broadly 4 ways you can boot a system with QEMU.
+
+ - specify a firmware and let it control finding a kernel
+ - specify a firmware and pass a hint to the kernel to boot
+ - direct kernel image boot
+ - manually load files into the guests address space
+
+The last method is useful for quickly testing kernels but as there is
+no firmware to pass configuration information to the kernel it must
+either be built for the exact configuration or be handed a DTB blob
+which tells the kernel what drivers it needs.
+
+ERST
+
+SRST
+
+For x86 machines ``-bios`` will generally do the right thing with
+whatever it is given. For non-x86 machines the more strict ``-pflash``
+option needs an image that is sized for the flash device for the given
+machine type.
+
+ERST
+
+DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
+ "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
+SRST
+``-bios file``
+ Set the filename for the BIOS.
+ERST
+
+DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
+ "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
+SRST
+``-pflash file``
+ Use file as a parallel flash image.
+ERST
+
SRST
-When using these options, you can use a given Linux or Multiboot kernel
-without installing it in the disk image. It can be useful for easier
-testing of various kernels.
+The kernel options were designed to work with Linux kernels although
+other things (like hypervisors) can be packaged up as a kernel
+executable image. The exact format of a executable image is usually
+architecture specific.
ERST
@@ -3725,6 +3757,25 @@ SRST
kernel on boot.
ERST
+SRST
+
+Finally you can also manually load images directly into the address
+space of the guest. This is most useful for developers who already
+know the layout of their guest and take care to ensure something sane
+will happen when the reset vector executes.
+
+The generic loader can be invoked by using the loader device:
+
+``-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]``
+
+there is also the guest loader which operates in a similar way but
+tweaks the DTB so a hypervisor loaded via ``-kernel`` can find where
+the guest image is:
+
+``-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>]``
+
+ERST
+
DEFHEADING()
DEFHEADING(Debug/Expert options:)
@@ -4175,13 +4226,6 @@ SRST
To list all the data directories, use ``-L help``.
ERST
-DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
- "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
-SRST
-``-bios file``
- Set the filename for the BIOS.
-ERST
-
DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
"-enable-kvm enable KVM full virtualization support\n",
QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC |
--
2.30.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [RFC PATCH] qemu-options: bring the kernel and image options together
2022-06-22 14:50 [RFC PATCH] qemu-options: bring the kernel and image options together Alex Bennée
@ 2022-06-23 6:22 ` Cédric Le Goater
2022-06-23 10:21 ` Alex Bennée
2022-06-23 12:43 ` Peter Maydell
1 sibling, 1 reply; 5+ messages in thread
From: Cédric Le Goater @ 2022-06-23 6:22 UTC (permalink / raw)
To: Alex Bennée, qemu-devel
On 6/22/22 16:50, Alex Bennée wrote:
> How to control the booting of QEMU is often a source of confusion for
> users. Bring the options that control this together in the manual
> pages and add some verbiage to describe when each option is
> appropriate.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Cédric Le Goater <clg@kaod.org>
> ---
> qemu-options.hx | 80 ++++++++++++++++++++++++++++++++++++++-----------
> 1 file changed, 62 insertions(+), 18 deletions(-)
>
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 377d22fbd8..9b0242f0ef 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -1585,13 +1585,6 @@ SRST
> Use file as SecureDigital card image.
> ERST
>
> -DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
> - "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
> -SRST
> -``-pflash file``
> - Use file as a parallel flash image.
> -ERST
> -> DEF("snapshot", 0, QEMU_OPTION_snapshot,
> "-snapshot write to temporary files instead of disk image files\n",
> QEMU_ARCH_ALL)
> @@ -3680,12 +3673,51 @@ DEFHEADING()
>
> #endif
>
> -DEFHEADING(Linux/Multiboot boot specific:)
> +DEFHEADING(Boot Image or Kernel specific:)
> +SRST
> +There are broadly 4 ways you can boot a system with QEMU.
> +
> + - specify a firmware and let it control finding a kernel
> + - specify a firmware and pass a hint to the kernel to boot
> + - direct kernel image boot
> + - manually load files into the guests address space
> +
> +The last method is useful for quickly testing kernels but as there is
> +no firmware to pass configuration information to the kernel it must
> +either be built for the exact configuration or be handed a DTB blob
> +which tells the kernel what drivers it needs.
The last method can also load any FW blob with the correct executable
layout (reset vector).
> +
> +ERST
> +
> +SRST
> +
> +For x86 machines ``-bios`` will generally do the right thing with
> +whatever it is given. For non-x86 machines the more strict ``-pflash``
> +option needs an image that is sized for the flash device for the given
> +machine type.
Some ppc machine use -bios also, mac, pseries, PowerNV (let's not restrict
to x86).
LGTM.
Thanks,
C.
> +
> +ERST
> +
> +DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
> + "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
> +SRST
> +``-bios file``
> + Set the filename for the BIOS.
> +ERST
> +
> +DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
> + "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
> +SRST
> +``-pflash file``
> + Use file as a parallel flash image.
> +ERST
> +
> SRST
> -When using these options, you can use a given Linux or Multiboot kernel
> -without installing it in the disk image. It can be useful for easier
> -testing of various kernels.
>
> +The kernel options were designed to work with Linux kernels although
> +other things (like hypervisors) can be packaged up as a kernel
> +executable image. The exact format of a executable image is usually
> +architecture specific.
> ERST
>
> @@ -3725,6 +3757,25 @@ SRST
> kernel on boot.
> ERST
>
> +SRST
> +
> +Finally you can also manually load images directly into the address
> +space of the guest. This is most useful for developers who already
> +know the layout of their guest and take care to ensure something sane
> +will happen when the reset vector executes.
> +
> +The generic loader can be invoked by using the loader device:
> +
> +``-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]``
> +
> +there is also the guest loader which operates in a similar way but
> +tweaks the DTB so a hypervisor loaded via ``-kernel`` can find where
> +the guest image is:
> +
> +``-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>]``
> +ERST
> +
> DEFHEADING()
>
> DEFHEADING(Debug/Expert options:)
> @@ -4175,13 +4226,6 @@ SRST
> To list all the data directories, use ``-L help``.
> ERST
>
> -DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
> - "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
> -SRST
> -``-bios file``
> - Set the filename for the BIOS.
> -ERST
> -
> DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
> "-enable-kvm enable KVM full virtualization support\n",
> QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC |
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH] qemu-options: bring the kernel and image options together
2022-06-23 6:22 ` Cédric Le Goater
@ 2022-06-23 10:21 ` Alex Bennée
2022-06-28 6:11 ` Cédric Le Goater
0 siblings, 1 reply; 5+ messages in thread
From: Alex Bennée @ 2022-06-23 10:21 UTC (permalink / raw)
To: Cédric Le Goater; +Cc: qemu-devel
Cédric Le Goater <clg@kaod.org> writes:
> On 6/22/22 16:50, Alex Bennée wrote:
>> How to control the booting of QEMU is often a source of confusion for
>> users. Bring the options that control this together in the manual
>> pages and add some verbiage to describe when each option is
>> appropriate.
>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>> Cc: Cédric Le Goater <clg@kaod.org>
>> ---
>> qemu-options.hx | 80 ++++++++++++++++++++++++++++++++++++++-----------
>> 1 file changed, 62 insertions(+), 18 deletions(-)
>> diff --git a/qemu-options.hx b/qemu-options.hx
>> index 377d22fbd8..9b0242f0ef 100644
>> --- a/qemu-options.hx
>> +++ b/qemu-options.hx
>> @@ -1585,13 +1585,6 @@ SRST
>> Use file as SecureDigital card image.
>> ERST
>> -DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
>> - "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
>> -SRST
>> -``-pflash file``
>> - Use file as a parallel flash image.
>> -ERST
>> -> DEF("snapshot", 0, QEMU_OPTION_snapshot,
>> "-snapshot write to temporary files instead of disk image files\n",
>> QEMU_ARCH_ALL)
>> @@ -3680,12 +3673,51 @@ DEFHEADING()
>> #endif
>> -DEFHEADING(Linux/Multiboot boot specific:)
>> +DEFHEADING(Boot Image or Kernel specific:)
>> +SRST
>> +There are broadly 4 ways you can boot a system with QEMU.
>> +
>> + - specify a firmware and let it control finding a kernel
>> + - specify a firmware and pass a hint to the kernel to boot
>> + - direct kernel image boot
>> + - manually load files into the guests address space
>> +
>> +The last method is useful for quickly testing kernels but as there is
>> +no firmware to pass configuration information to the kernel it must
>> +either be built for the exact configuration or be handed a DTB blob
>> +which tells the kernel what drivers it needs.
>
> The last method can also load any FW blob with the correct executable
> layout (reset vector).
Heh - actually I wrote that paragraph for the direct kernel image boot
and then added the manual option after the fact. I'll try and clean that
up to make it clearer.
>
>> +
>> +ERST
>> +
>> +SRST
>> +
>> +For x86 machines ``-bios`` will generally do the right thing with
>> +whatever it is given. For non-x86 machines the more strict ``-pflash``
>> +option needs an image that is sized for the flash device for the given
>> +machine type.
>
> Some ppc machine use -bios also, mac, pseries, PowerNV (let's not restrict
> to x86).
Ahh the magic some ;-) Does it essentially rely on if the correct
plumbing has been done for the machine? Anything I can look for to audit
other machine types?
>
>
> LGTM.
>
> Thanks,
>
> C.
>
>
>> +
>> +ERST
>> +
>> +DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
>> + "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
>> +SRST
>> +``-bios file``
>> + Set the filename for the BIOS.
>> +ERST
>> +
>> +DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
>> + "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
>> +SRST
>> +``-pflash file``
>> + Use file as a parallel flash image.
>> +ERST
>> +
>> SRST
>> -When using these options, you can use a given Linux or Multiboot kernel
>> -without installing it in the disk image. It can be useful for easier
>> -testing of various kernels.
>> +The kernel options were designed to work with Linux kernels
>> although
>> +other things (like hypervisors) can be packaged up as a kernel
>> +executable image. The exact format of a executable image is usually
>> +architecture specific.
>> ERST
>> @@ -3725,6 +3757,25 @@ SRST
>> kernel on boot.
>> ERST
>> +SRST
>> +
>> +Finally you can also manually load images directly into the address
>> +space of the guest. This is most useful for developers who already
>> +know the layout of their guest and take care to ensure something sane
>> +will happen when the reset vector executes.
>> +
>> +The generic loader can be invoked by using the loader device:
>> +
>> +``-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]``
>> +
>> +there is also the guest loader which operates in a similar way but
>> +tweaks the DTB so a hypervisor loaded via ``-kernel`` can find where
>> +the guest image is:
>> +
>> +``-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>]``
>> +ERST
>> +
>> DEFHEADING()
>> DEFHEADING(Debug/Expert options:)
>> @@ -4175,13 +4226,6 @@ SRST
>> To list all the data directories, use ``-L help``.
>> ERST
>> -DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
>> - "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
>> -SRST
>> -``-bios file``
>> - Set the filename for the BIOS.
>> -ERST
>> -
>> DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
>> "-enable-kvm enable KVM full virtualization support\n",
>> QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC |
--
Alex Bennée
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH] qemu-options: bring the kernel and image options together
2022-06-22 14:50 [RFC PATCH] qemu-options: bring the kernel and image options together Alex Bennée
2022-06-23 6:22 ` Cédric Le Goater
@ 2022-06-23 12:43 ` Peter Maydell
1 sibling, 0 replies; 5+ messages in thread
From: Peter Maydell @ 2022-06-23 12:43 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel, Cédric Le Goater
On Wed, 22 Jun 2022 at 15:53, Alex Bennée <alex.bennee@linaro.org> wrote:
>
> How to control the booting of QEMU is often a source of confusion for
> users. Bring the options that control this together in the manual
> pages and add some verbiage to describe when each option is
> appropriate.
https://stackoverflow.com/a/58434837/4499941 is my answer to
this common user question, though it's a bit more conversational
in tone than we want for the manual :-)
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> Cc: Cédric Le Goater <clg@kaod.org>
> ---
> qemu-options.hx | 80 ++++++++++++++++++++++++++++++++++++++-----------
> 1 file changed, 62 insertions(+), 18 deletions(-)
>
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 377d22fbd8..9b0242f0ef 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -1585,13 +1585,6 @@ SRST
> Use file as SecureDigital card image.
> ERST
>
> -DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
> - "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
> -SRST
> -``-pflash file``
> - Use file as a parallel flash image.
> -ERST
> -
> DEF("snapshot", 0, QEMU_OPTION_snapshot,
> "-snapshot write to temporary files instead of disk image files\n",
> QEMU_ARCH_ALL)
> @@ -3680,12 +3673,51 @@ DEFHEADING()
>
> #endif
>
> -DEFHEADING(Linux/Multiboot boot specific:)
> +DEFHEADING(Boot Image or Kernel specific:)
> +SRST
> +There are broadly 4 ways you can boot a system with QEMU.
> +
> + - specify a firmware and let it control finding a kernel
> + - specify a firmware and pass a hint to the kernel to boot
> + - direct kernel image boot
> + - manually load files into the guests address space
"guest's"
> +
> +The last method
Do you mean the third method? The last method isn't usually
used to load kernels, but rather bare-metal binaries.
is useful for quickly testing kernels but as there is
> +no firmware to pass configuration information to the kernel it must
> +either be built for the exact configuration or be handed a DTB blob
> +which tells the kernel what drivers it needs.
This is all somewhat architecture specific: you don't necessarily
need to do either of those if the hardware is probeable.
You should also mention that all of this is board specific.
> +
> +ERST
> +
> +SRST
> +
> +For x86 machines ``-bios`` will generally do the right thing with
> +whatever it is given. For non-x86 machines the more strict ``-pflash``
> +option needs an image that is sized for the flash device for the given
> +machine type.
-bios works for some non-x86 machine types too.
Ideally we would:
* have all our machine types have some documentation
* have the documentation for each machine type say whether
it supports -bios or not, and what it does
> +
> +ERST
> +
> +DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
> + "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
> +SRST
> +``-bios file``
> + Set the filename for the BIOS.
> +ERST
> +
> +DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
> + "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
> +SRST
> +``-pflash file``
> + Use file as a parallel flash image.
> +ERST
> +
> SRST
> -When using these options, you can use a given Linux or Multiboot kernel
> -without installing it in the disk image. It can be useful for easier
> -testing of various kernels.
>
> +The kernel options were designed to work with Linux kernels although
> +other things (like hypervisors) can be packaged up as a kernel
> +executable image. The exact format of a executable image is usually
> +architecture specific.
>
> ERST
>
> @@ -3725,6 +3757,25 @@ SRST
> kernel on boot.
> ERST
>
> +SRST
> +
> +Finally you can also manually load images directly into the address
> +space of the guest. This is most useful for developers who already
> +know the layout of their guest and take care to ensure something sane
> +will happen when the reset vector executes.
We should say that this is the favoured option for "I want to
run a bare-metal binary", and we should also say that this
option works the same way on any architecture and machine.
> +
> +The generic loader can be invoked by using the loader device:
> +
> +``-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]``
> +
> +there is also the guest loader which operates in a similar way but
> +tweaks the DTB so a hypervisor loaded via ``-kernel`` can find where
> +the guest image is:
> +
> +``-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>]``
> +
> +ERST
> +
> DEFHEADING()
thanks
-- PMM
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH] qemu-options: bring the kernel and image options together
2022-06-23 10:21 ` Alex Bennée
@ 2022-06-28 6:11 ` Cédric Le Goater
0 siblings, 0 replies; 5+ messages in thread
From: Cédric Le Goater @ 2022-06-28 6:11 UTC (permalink / raw)
To: Alex Bennée; +Cc: qemu-devel
On 6/23/22 12:21, Alex Bennée wrote:
>
> Cédric Le Goater <clg@kaod.org> writes:
>
>> On 6/22/22 16:50, Alex Bennée wrote:
>>> How to control the booting of QEMU is often a source of confusion for
>>> users. Bring the options that control this together in the manual
>>> pages and add some verbiage to describe when each option is
>>> appropriate.
>>> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
>>> Cc: Cédric Le Goater <clg@kaod.org>
>>> ---
>>> qemu-options.hx | 80 ++++++++++++++++++++++++++++++++++++++-----------
>>> 1 file changed, 62 insertions(+), 18 deletions(-)
>>> diff --git a/qemu-options.hx b/qemu-options.hx
>>> index 377d22fbd8..9b0242f0ef 100644
>>> --- a/qemu-options.hx
>>> +++ b/qemu-options.hx
>>> @@ -1585,13 +1585,6 @@ SRST
>>> Use file as SecureDigital card image.
>>> ERST
>>> -DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
>>> - "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
>>> -SRST
>>> -``-pflash file``
>>> - Use file as a parallel flash image.
>>> -ERST
>>> -> DEF("snapshot", 0, QEMU_OPTION_snapshot,
>>> "-snapshot write to temporary files instead of disk image files\n",
>>> QEMU_ARCH_ALL)
>>> @@ -3680,12 +3673,51 @@ DEFHEADING()
>>> #endif
>>> -DEFHEADING(Linux/Multiboot boot specific:)
>>> +DEFHEADING(Boot Image or Kernel specific:)
>>> +SRST
>>> +There are broadly 4 ways you can boot a system with QEMU.
>>> +
>>> + - specify a firmware and let it control finding a kernel
>>> + - specify a firmware and pass a hint to the kernel to boot
>>> + - direct kernel image boot
>>> + - manually load files into the guests address space
>>> +
>>> +The last method is useful for quickly testing kernels but as there is
>>> +no firmware to pass configuration information to the kernel it must
>>> +either be built for the exact configuration or be handed a DTB blob
>>> +which tells the kernel what drivers it needs.
>>
>> The last method can also load any FW blob with the correct executable
>> layout (reset vector).
>
> Heh - actually I wrote that paragraph for the direct kernel image boot
> and then added the manual option after the fact. I'll try and clean that
> up to make it clearer.
>
>>
>>> +
>>> +ERST
>>> +
>>> +SRST
>>> +
>>> +For x86 machines ``-bios`` will generally do the right thing with
>>> +whatever it is given. For non-x86 machines the more strict ``-pflash``
>>> +option needs an image that is sized for the flash device for the given
>>> +machine type.
>>
>> Some ppc machine use -bios also, mac, pseries, PowerNV (let's not restrict
>> to x86).
>
> Ahh the magic some ;-) Does it essentially rely on if the correct
> plumbing has been done for the machine?
They rely on finding a reset vector. So yes, the FW should be mapped
where it is expected and have vectors. The machines also know how to
expose kernel/initrd to the FW and the FWs have runtime services.
It's more than a kernel loader.
> Anything I can look for to audit other machine types?
Good question. There are some many ways to start a machine.
The avocado tests should be a good reference and here is a little
tool I use to verify that the PPC machines supported in QEMU boot
correctly :
https://github.com/legoater/qemu-ppc-boot/blob/main/ppc-boot.sh
Sometime ago, I did a model for a MicroWatt SoC, a POWER9 FPGA
implementation, and I found quite a few ways to boot from some blob.
See :
https://github.com/qemu/qemu/commit/2f43989f87332c226358c1f3ef7b96d94ba342ca
I guess when FW runtime services are required so is -bios. Else all
these options :
-kernel
-bios
-device loader
-drive <flash>
can be used more or less in the same way.
Thanks,
C.
>
>>
>>
>> LGTM.
>>
>> Thanks,
>>
>> C.
>>
>>
>>> +
>>> +ERST
>>> +
>>> +DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
>>> + "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
>>> +SRST
>>> +``-bios file``
>>> + Set the filename for the BIOS.
>>> +ERST
>>> +
>>> +DEF("pflash", HAS_ARG, QEMU_OPTION_pflash,
>>> + "-pflash file use 'file' as a parallel flash image\n", QEMU_ARCH_ALL)
>>> +SRST
>>> +``-pflash file``
>>> + Use file as a parallel flash image.
>>> +ERST
>>> +
>>> SRST
>>> -When using these options, you can use a given Linux or Multiboot kernel
>>> -without installing it in the disk image. It can be useful for easier
>>> -testing of various kernels.
>>> +The kernel options were designed to work with Linux kernels
>>> although
>>> +other things (like hypervisors) can be packaged up as a kernel
>>> +executable image. The exact format of a executable image is usually
>>> +architecture specific.
>>> ERST
>>> @@ -3725,6 +3757,25 @@ SRST
>>> kernel on boot.
>>> ERST
>>> +SRST
>>> +
>>> +Finally you can also manually load images directly into the address
>>> +space of the guest. This is most useful for developers who already
>>> +know the layout of their guest and take care to ensure something sane
>>> +will happen when the reset vector executes.
>>> +
>>> +The generic loader can be invoked by using the loader device:
>>> +
>>> +``-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]``
>>> +
>>> +there is also the guest loader which operates in a similar way but
>>> +tweaks the DTB so a hypervisor loaded via ``-kernel`` can find where
>>> +the guest image is:
>>> +
>>> +``-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>]``
>>> +ERST
>>> +
>>> DEFHEADING()
>>> DEFHEADING(Debug/Expert options:)
>>> @@ -4175,13 +4226,6 @@ SRST
>>> To list all the data directories, use ``-L help``.
>>> ERST
>>> -DEF("bios", HAS_ARG, QEMU_OPTION_bios, \
>>> - "-bios file set the filename for the BIOS\n", QEMU_ARCH_ALL)
>>> -SRST
>>> -``-bios file``
>>> - Set the filename for the BIOS.
>>> -ERST
>>> -
>>> DEF("enable-kvm", 0, QEMU_OPTION_enable_kvm, \
>>> "-enable-kvm enable KVM full virtualization support\n",
>>> QEMU_ARCH_ARM | QEMU_ARCH_I386 | QEMU_ARCH_MIPS | QEMU_ARCH_PPC |
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-06-28 7:40 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-22 14:50 [RFC PATCH] qemu-options: bring the kernel and image options together Alex Bennée
2022-06-23 6:22 ` Cédric Le Goater
2022-06-23 10:21 ` Alex Bennée
2022-06-28 6:11 ` Cédric Le Goater
2022-06-23 12:43 ` Peter Maydell
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.