From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Shaoqin Huang" <shahuang@redhat.com>
Cc: qemu-arm@nongnu.org, "Eric Auger" <eauger@redhat.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Cédric Le Goater" <clg@redhat.com>,
qemu-devel@nongnu.org
Subject: Re: [PATCH v2] ramfb: Add property to control if load the romfile
Date: Fri, 6 Jun 2025 09:22:07 -0700 [thread overview]
Message-ID: <ae7090c3-37e4-4f10-8267-d7106aa5e259@linaro.org> (raw)
In-Reply-To: <9b083ae2-3afb-43f4-8929-fc693b581a0d@linaro.org>
On 6/6/25 2:04 AM, Philippe Mathieu-Daudé wrote:
> On 6/6/25 09:52, Daniel P. Berrangé wrote:
>> On Fri, Jun 06, 2025 at 03:02:34AM -0400, Shaoqin Huang wrote:
>>> Now the ramfb will load the vgabios-ramfb.bin unconditionally, but only
>>> the x86 need the vgabios-ramfb.bin, this can cause that when use the
>>> release package on arm64 it can't find the vgabios-ramfb.bin.
>>>
>>> Because only seabios will use the vgabios-ramfb.bin, load the rom logic
>>> is x86-specific. For other !x86 platforms, the edk2 ships an EFI driver
>>> for ramfb, so they don't need to load the romfile.
>>>
>>> So add a new property use_legacy_x86_rom in both ramfb and vfio_pci
>>> device, because the vfio display also use the ramfb_setup() to load
>>> the vgabios-ramfb.bin file.
>>>
>>> After have this property, the machine type can set the compatibility to
>>> not load the vgabios-ramfb.bin if the arch doesn't need it.
>>
>> Can you make this a series, with an additional patch that updates the
>> current in-dev machine types to use this new property, so we're clear
>> about the proposed usage.
>>
>>>
>>> Signed-off-by: Shaoqin Huang <shahuang@redhat.com>
>>> ---
>>> hw/display/ramfb-standalone.c | 4 +++-
>>> hw/display/ramfb-stubs.c | 2 +-
>>> hw/display/ramfb.c | 6 ++++--
>>> hw/vfio/display.c | 4 ++--
>>> hw/vfio/pci.c | 1 +
>>> hw/vfio/pci.h | 1 +
>>> include/hw/display/ramfb.h | 2 +-
>>> 7 files changed, 13 insertions(+), 7 deletions(-)
>
>
>>> diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
>>> index 7f1532fbed..4e4759c954 100644
>>> --- a/hw/vfio/pci.c
>>> +++ b/hw/vfio/pci.c
>>> @@ -3564,6 +3564,7 @@ static const TypeInfo vfio_pci_dev_info = {
>>>
>>> static const Property vfio_pci_dev_nohotplug_properties[] = {
>>> DEFINE_PROP_BOOL("ramfb", VFIOPCIDevice, enable_ramfb, false),
>>> + DEFINE_PROP_BOOL("use_legacy_x86_rom", VFIOPCIDevice, use_legacy_x86_rom, true),
>>> DEFINE_PROP_ON_OFF_AUTO("x-ramfb-migrate", VFIOPCIDevice, ramfb_migrate,
>>> ON_OFF_AUTO_AUTO),
>>> };
>
> Alternatively with target-info API:
>
> -- >8 --
> diff --git a/hw/display/ramfb.c b/hw/display/ramfb.c
> index 8c0f907673d..689f10625f8 100644
> --- a/hw/display/ramfb.c
> +++ b/hw/display/ramfb.c
> @@ -12,6 +12,7 @@
> */
>
> #include "qemu/osdep.h"
> +#include "qemu/target-info.h"
> #include "qapi/error.h"
> #include "hw/loader.h"
> #include "hw/display/ramfb.h"
> @@ -147,7 +148,15 @@ RAMFBState *ramfb_setup(Error **errp)
>
> s = g_new0(RAMFBState, 1);
>
> - rom_add_vga("vgabios-ramfb.bin");
> + switch (target_system_arch()) {
> + case SYS_EMU_TARGET_I386:
> + case SYS_EMU_TARGET_X86_64:
> + rom_add_vga("vgabios-ramfb.bin");
> + break;
> + default:
> + break;
> + }
> +
> fw_cfg_add_file_callback(fw_cfg, "etc/ramfb",
> NULL, ramfb_fw_cfg_write, s,
> &s->cfg, sizeof(s->cfg), false);
> ---
>
> Recent work event introduces target_base_FOO() so that'd be:
>
> -- >8 --
> diff --git a/hw/display/ramfb.c b/hw/display/ramfb.c
> index 8c0f907673d..2aa3b309010 100644
> --- a/hw/display/ramfb.c
> +++ b/hw/display/ramfb.c
> @@ -12,6 +12,7 @@
> */
>
> #include "qemu/osdep.h"
> +#include "qemu/target-info.h"
> #include "qapi/error.h"
> #include "hw/loader.h"
> #include "hw/display/ramfb.h"
> @@ -147,7 +148,10 @@ RAMFBState *ramfb_setup(Error **errp)
>
> s = g_new0(RAMFBState, 1);
>
> - rom_add_vga("vgabios-ramfb.bin");
> + if (target_base_x86()) {
> + rom_add_vga("vgabios-ramfb.bin");
> + }
> +
> fw_cfg_add_file_callback(fw_cfg, "etc/ramfb",
> NULL, ramfb_fw_cfg_write, s,
> &s->cfg, sizeof(s->cfg), false);
> ---
>
> Unfortunately I had to focus on more urgent stuff so this isn't
> merged yet (besides I hurt a finger yesterday and am now typing
> slower). I hope I'd be able to respin that next week.
In case it's too much effort to respin all the series in a close future,
maybe it could be a good idea to just send target_system_arch(), so that
people can start using it.
From there, people can add target_base_FOO() easily on a as needed
basis, without any hard conflict issue.
Thanks,
Pierrick
next prev parent reply other threads:[~2025-06-06 16:22 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-06 7:02 [PATCH v2] ramfb: Add property to control if load the romfile Shaoqin Huang
2025-06-06 7:52 ` Daniel P. Berrangé
2025-06-06 8:06 ` Cédric Le Goater
2025-06-06 8:07 ` Cédric Le Goater
2025-06-09 5:16 ` Shaoqin Huang
2025-06-10 16:00 ` Alex Williamson
2025-06-06 9:04 ` Philippe Mathieu-Daudé
2025-06-06 9:15 ` Daniel P. Berrangé
2025-06-06 16:22 ` Pierrick Bouvier [this message]
2025-06-09 3:37 ` Shaoqin Huang
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=ae7090c3-37e4-4f10-8267-d7106aa5e259@linaro.org \
--to=pierrick.bouvier@linaro.org \
--cc=alex.williamson@redhat.com \
--cc=berrange@redhat.com \
--cc=clg@redhat.com \
--cc=eauger@redhat.com \
--cc=kraxel@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=shahuang@redhat.com \
/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).