From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:54357) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hEuCr-0006Eg-RU for qemu-devel@nongnu.org; Fri, 12 Apr 2019 07:18:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hEuCq-0008It-SF for qemu-devel@nongnu.org; Fri, 12 Apr 2019 07:18:53 -0400 Received: from mail-wr1-f65.google.com ([209.85.221.65]:39037) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hEuCq-0008Hs-Ju for qemu-devel@nongnu.org; Fri, 12 Apr 2019 07:18:52 -0400 Received: by mail-wr1-f65.google.com with SMTP id j9so11442468wrn.6 for ; Fri, 12 Apr 2019 04:18:52 -0700 (PDT) References: <20190411135602.21725-1-armbru@redhat.com> <20190411135602.21725-2-armbru@redhat.com> <0eea5ddb-1efb-8fdf-4a37-9bc2daf86e2b@redhat.com> <03fb5b6f-7d95-3b9b-3172-e37825402036@redhat.com> <8d6c1ced-1e7b-9e52-3afb-3fe1197f7a02@redhat.com> <87bm1br788.fsf@dusky.pond.sub.org> From: =?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?= Message-ID: <6dbb3173-b2e2-361e-9bfd-cdbcb308eb50@redhat.com> Date: Fri, 12 Apr 2019 13:18:45 +0200 MIME-Version: 1.0 In-Reply-To: <87bm1br788.fsf@dusky.pond.sub.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH 1/2] pflash_cfi01: New pflash_cfi01_legacy_drive() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , Laszlo Ersek Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com, qemu-arm@nongnu.org On 4/12/19 9:52 AM, Markus Armbruster wrote: > I append a patch I can describe. Would it work for you? > > > > pc: Split pc_system_firmware_init()'s legacy -drive loop > > The loop does two things: map legacy -drive to properties, and collect > all the backends for use after the loop. The next patch will factor > out the former for reuse in hw/arm/virt.c. To make that easier, do > each thing in its own loop. > > Signed-off-by: Markus Armbruster > --- > hw/i386/pc_sysfw.c | 14 +++++++++----- > 1 file changed, 9 insertions(+), 5 deletions(-) > > diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c > index c628540774..90db9b57a4 100644 > --- a/hw/i386/pc_sysfw.c > +++ b/hw/i386/pc_sysfw.c > @@ -269,6 +269,7 @@ void pc_system_firmware_init(PCMachineState *pcms, > { > PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); > int i; > + BlockBackend *blk; > DriveInfo *pflash_drv; > BlockBackend *pflash_blk[ARRAY_SIZE(pcms->flash)]; > Location loc; > @@ -280,23 +281,26 @@ void pc_system_firmware_init(PCMachineState *pcms, > > /* Map legacy -drive if=pflash to machine properties */ > for (i = 0; i < ARRAY_SIZE(pcms->flash); i++) { > - pflash_blk[i] = pflash_cfi01_get_blk(pcms->flash[i]); > + blk = pflash_cfi01_get_blk(pcms->flash[i]); > pflash_drv = drive_get(IF_PFLASH, 0, i); > if (!pflash_drv) { > continue; > } > loc_push_none(&loc); > qemu_opts_loc_restore(pflash_drv->opts); > - if (pflash_blk[i]) { > + if (blk) { > error_report("clashes with -machine"); > exit(1); > } > - pflash_blk[i] = blk_by_legacy_dinfo(pflash_drv); > - qdev_prop_set_drive(DEVICE(pcms->flash[i]), > - "drive", pflash_blk[i], &error_fatal); > + qdev_prop_set_drive(DEVICE(pcms->flash[i]), "drive", > + blk_by_legacy_dinfo(pflash_drv), &error_fatal); > loc_pop(&loc); > } > > + for (i = 0; i < ARRAY_SIZE(pcms->flash); i++) { > + pflash_blk[i] = blk_by_legacy_dinfo(pflash_drv); > + } > + > /* Reject gaps */ > for (i = 1; i < ARRAY_SIZE(pcms->flash); i++) { > if (pflash_blk[i] && !pflash_blk[i - 1]) { > -- 2.17.2 Works for me! Reviewed-by: Philippe Mathieu-Daudé