Philippe Mathieu-Daudé <phi...@redhat.com> writes: > On 6/30/20 5:44 PM, Paul Durrant wrote: >>> -----Original Message----- >>> From: Philippe Mathieu-Daudé <phi...@redhat.com> >>> Sent: 30 June 2020 16:26 >>> To: Paul Durrant <p...@xen.org>; xen-devel@lists.xenproject.org; >>> qemu-de...@nongnu.org >>> Cc: Eduardo Habkost <ehabk...@redhat.com>; Michael S. Tsirkin >>> <m...@redhat.com>; Paul Durrant >>> <pdurr...@amazon.com>; Jason Andryuk <jandr...@gmail.com>; Paolo Bonzini >>> <pbonz...@redhat.com>; >>> Richard Henderson <r...@twiddle.net> >>> Subject: Re: [PATCH 2/2] xen: cleanup unrealized flash devices >>> >>> On 6/24/20 2:18 PM, Paul Durrant wrote: >>>> From: Paul Durrant <pdurr...@amazon.com> >>>> >>>> The generic pc_machine_initfn() calls pc_system_flash_create() which >>>> creates >>>> 'system.flash0' and 'system.flash1' devices. These devices are then >>>> realized >>>> by pc_system_flash_map() which is called from pc_system_firmware_init() >>>> which >>>> itself is called via pc_memory_init(). The latter however is not called >>>> when >>>> xen_enable() is true and hence the following assertion fails: >>>> >>>> qemu-system-i386: hw/core/qdev.c:439: qdev_assert_realized_properly: >>>> Assertion `dev->realized' failed >>>> >>>> These flash devices are unneeded when using Xen so this patch avoids the >>>> assertion by simply removing them using pc_system_flash_cleanup_unused(). >>>> >>>> Reported-by: Jason Andryuk <jandr...@gmail.com> >>>> Fixes: ebc29e1beab0 ("pc: Support firmware configuration with -blockdev") >>>> Signed-off-by: Paul Durrant <pdurr...@amazon.com> >>>> Tested-by: Jason Andryuk <jandr...@gmail.com> >>>> --- >>>> Cc: Paolo Bonzini <pbonz...@redhat.com> >>>> Cc: Richard Henderson <r...@twiddle.net> >>>> Cc: Eduardo Habkost <ehabk...@redhat.com> >>>> Cc: "Michael S. Tsirkin" <m...@redhat.com> >>>> Cc: Marcel Apfelbaum <marcel.apfelb...@gmail.com> >>>> --- >>>> hw/i386/pc_piix.c | 9 ++++++--- >>>> hw/i386/pc_sysfw.c | 2 +- >>>> include/hw/i386/pc.h | 1 + >>>> 3 files changed, 8 insertions(+), 4 deletions(-) >>>> >>>> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c >>>> index 1497d0e4ae..977d40afb8 100644 >>>> --- a/hw/i386/pc_piix.c >>>> +++ b/hw/i386/pc_piix.c >>>> @@ -186,9 +186,12 @@ static void pc_init1(MachineState *machine, >>>> if (!xen_enabled()) { >>>> pc_memory_init(pcms, system_memory, >>>> rom_memory, &ram_memory); >>>> - } else if (machine->kernel_filename != NULL) { >>>> - /* For xen HVM direct kernel boot, load linux here */ >>>> - xen_load_linux(pcms); >>>> + } else { >>>> + pc_system_flash_cleanup_unused(pcms); >>> >>> TIL pc_system_flash_cleanup_unused(). >>> >>> What about restricting at the source? >>> >> >> And leave the devices in place? They are not relevant for Xen, so why not >> clean up? > > No, I meant to not create them in the first place, instead of > create+destroy.
Better. Opinion, not demand :) [...]