From: Markus Armbruster <armbru@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: kwolf@redhat.com, peter.maydell@linaro.org,
qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com,
qemu-arm@nongnu.org, Laszlo Ersek <lersek@redhat.com>
Subject: Re: [Qemu-arm] [Qemu-devel] [PATCH 1/2] pflash_cfi01: New pflash_cfi01_legacy_drive()
Date: Fri, 12 Apr 2019 14:26:01 +0200 [thread overview]
Message-ID: <87tvf3o1eu.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <87bm1br788.fsf@dusky.pond.sub.org> (Markus Armbruster's message of "Fri, 12 Apr 2019 09:52:07 +0200")
Markus Armbruster <armbru@redhat.com> writes:
> Laszlo Ersek <lersek@redhat.com> writes:
[...]
>> In other words, we could have written the pre-patch (original) code like
>> this:
>>
>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
>> index c6285407748e..ed6e713d0982 100644
>> --- a/hw/i386/pc_sysfw.c
>> +++ b/hw/i386/pc_sysfw.c
>> @@ -291,9 +291,10 @@ void pc_system_firmware_init(PCMachineState *pcms,
>> 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);
>> + "drive", blk_by_legacy_dinfo(pflash_drv),
>> + &error_fatal);
>> + pflash_blk[i] = pflash_cfi01_get_blk(pcms->flash[i]);
>> loc_pop(&loc);
>> }
>>
>> and the behavior would have been identical.
>>
>> For the sake of QOM / blk dummies like me, can you please split this
>> refactoring to a separate patch, before extracting the new function?
>
> If you think a preparatory patch is called for, I'll create one.
>
> I'd have difficulties coming up with a commit message for the one you
> proposed.
>
> 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.
Inserting here:
Note that the first loop updates pcms->flash[i]->blk for -drive
if=pflash with qdev_prop_set_drive(). The second loop gets the
(possibly updated) value from pflash_cfi01_get_blk().
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> 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);
Uh, this should be pflash_cfi01_get_blk(pcms->flash[i]) instead.
> + }
> +
> /* Reject gaps */
> for (i = 1; i < ARRAY_SIZE(pcms->flash); i++) {
> if (pflash_blk[i] && !pflash_blk[i - 1]) {
WARNING: multiple messages have this Message-ID (diff)
From: Markus Armbruster <armbru@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>,
qemu-devel@nongnu.org, kwolf@redhat.com,
peter.maydell@linaro.org, qemu-arm@nongnu.org,
qemu-block@nongnu.org, mreitz@redhat.com
Subject: Re: [Qemu-devel] [PATCH 1/2] pflash_cfi01: New pflash_cfi01_legacy_drive()
Date: Fri, 12 Apr 2019 14:26:01 +0200 [thread overview]
Message-ID: <87tvf3o1eu.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <87bm1br788.fsf@dusky.pond.sub.org> (Markus Armbruster's message of "Fri, 12 Apr 2019 09:52:07 +0200")
Markus Armbruster <armbru@redhat.com> writes:
> Laszlo Ersek <lersek@redhat.com> writes:
[...]
>> In other words, we could have written the pre-patch (original) code like
>> this:
>>
>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
>> index c6285407748e..ed6e713d0982 100644
>> --- a/hw/i386/pc_sysfw.c
>> +++ b/hw/i386/pc_sysfw.c
>> @@ -291,9 +291,10 @@ void pc_system_firmware_init(PCMachineState *pcms,
>> 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);
>> + "drive", blk_by_legacy_dinfo(pflash_drv),
>> + &error_fatal);
>> + pflash_blk[i] = pflash_cfi01_get_blk(pcms->flash[i]);
>> loc_pop(&loc);
>> }
>>
>> and the behavior would have been identical.
>>
>> For the sake of QOM / blk dummies like me, can you please split this
>> refactoring to a separate patch, before extracting the new function?
>
> If you think a preparatory patch is called for, I'll create one.
>
> I'd have difficulties coming up with a commit message for the one you
> proposed.
>
> 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.
Inserting here:
Note that the first loop updates pcms->flash[i]->blk for -drive
if=pflash with qdev_prop_set_drive(). The second loop gets the
(possibly updated) value from pflash_cfi01_get_blk().
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> 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);
Uh, this should be pflash_cfi01_get_blk(pcms->flash[i]) instead.
> + }
> +
> /* Reject gaps */
> for (i = 1; i < ARRAY_SIZE(pcms->flash); i++) {
> if (pflash_blk[i] && !pflash_blk[i - 1]) {
WARNING: multiple messages have this Message-ID (diff)
From: Markus Armbruster <armbru@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: kwolf@redhat.com, peter.maydell@linaro.org,
qemu-block@nongnu.org, qemu-devel@nongnu.org, mreitz@redhat.com,
qemu-arm@nongnu.org, Laszlo Ersek <lersek@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] pflash_cfi01: New pflash_cfi01_legacy_drive()
Date: Fri, 12 Apr 2019 14:26:01 +0200 [thread overview]
Message-ID: <87tvf3o1eu.fsf@dusky.pond.sub.org> (raw)
Message-ID: <20190412122601.eVEub-CvEynQCypBWFcuOoJ-7BWHe0sb5OjlguC2V4w@z> (raw)
In-Reply-To: <87bm1br788.fsf@dusky.pond.sub.org> (Markus Armbruster's message of "Fri, 12 Apr 2019 09:52:07 +0200")
Markus Armbruster <armbru@redhat.com> writes:
> Laszlo Ersek <lersek@redhat.com> writes:
[...]
>> In other words, we could have written the pre-patch (original) code like
>> this:
>>
>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
>> index c6285407748e..ed6e713d0982 100644
>> --- a/hw/i386/pc_sysfw.c
>> +++ b/hw/i386/pc_sysfw.c
>> @@ -291,9 +291,10 @@ void pc_system_firmware_init(PCMachineState *pcms,
>> 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);
>> + "drive", blk_by_legacy_dinfo(pflash_drv),
>> + &error_fatal);
>> + pflash_blk[i] = pflash_cfi01_get_blk(pcms->flash[i]);
>> loc_pop(&loc);
>> }
>>
>> and the behavior would have been identical.
>>
>> For the sake of QOM / blk dummies like me, can you please split this
>> refactoring to a separate patch, before extracting the new function?
>
> If you think a preparatory patch is called for, I'll create one.
>
> I'd have difficulties coming up with a commit message for the one you
> proposed.
>
> 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.
Inserting here:
Note that the first loop updates pcms->flash[i]->blk for -drive
if=pflash with qdev_prop_set_drive(). The second loop gets the
(possibly updated) value from pflash_cfi01_get_blk().
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
> 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);
Uh, this should be pflash_cfi01_get_blk(pcms->flash[i]) instead.
> + }
> +
> /* Reject gaps */
> for (i = 1; i < ARRAY_SIZE(pcms->flash); i++) {
> if (pflash_blk[i] && !pflash_blk[i - 1]) {
next prev parent reply other threads:[~2019-04-12 12:35 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-11 13:56 [Qemu-arm] [PATCH 0/2] hw/arm/virt: Support firmware configuration with -blockdev Markus Armbruster
2019-04-11 13:56 ` [Qemu-devel] " Markus Armbruster
2019-04-11 13:56 ` Markus Armbruster
2019-04-11 13:56 ` [Qemu-arm] [PATCH 1/2] pflash_cfi01: New pflash_cfi01_legacy_drive() Markus Armbruster
2019-04-11 13:56 ` [Qemu-devel] " Markus Armbruster
2019-04-11 13:56 ` Markus Armbruster
2019-04-11 19:35 ` [Qemu-arm] " Laszlo Ersek
2019-04-11 19:35 ` Laszlo Ersek
2019-04-11 19:35 ` Laszlo Ersek
2019-04-11 19:50 ` [Qemu-arm] " Laszlo Ersek
2019-04-11 19:50 ` Laszlo Ersek
2019-04-11 19:50 ` Laszlo Ersek
2019-04-11 20:04 ` Laszlo Ersek
2019-04-11 20:04 ` Laszlo Ersek
2019-04-12 7:52 ` [Qemu-arm] " Markus Armbruster
2019-04-12 7:52 ` Markus Armbruster
2019-04-12 7:52 ` Markus Armbruster
2019-04-12 11:18 ` [Qemu-arm] " Philippe Mathieu-Daudé
2019-04-12 11:18 ` Philippe Mathieu-Daudé
2019-04-12 12:26 ` Markus Armbruster [this message]
2019-04-12 12:26 ` Markus Armbruster
2019-04-12 12:26 ` Markus Armbruster
2019-04-12 12:32 ` [Qemu-arm] " Laszlo Ersek
2019-04-12 12:32 ` Laszlo Ersek
2019-04-12 12:32 ` Laszlo Ersek
2019-04-11 13:56 ` [Qemu-arm] [PATCH 2/2] hw/arm/virt: Support firmware configuration with -blockdev Markus Armbruster
2019-04-11 13:56 ` [Qemu-devel] " Markus Armbruster
2019-04-11 13:56 ` Markus Armbruster
2019-04-11 14:35 ` [Qemu-arm] " Philippe Mathieu-Daudé
2019-04-11 14:35 ` Philippe Mathieu-Daudé
2019-04-12 12:35 ` [Qemu-arm] " Markus Armbruster
2019-04-12 12:35 ` Markus Armbruster
2019-04-12 12:35 ` Markus Armbruster
2019-04-12 11:00 ` [Qemu-arm] " Laszlo Ersek
2019-04-12 11:00 ` Laszlo Ersek
2019-04-12 11:00 ` Laszlo Ersek
2019-04-12 17:49 ` [Qemu-arm] " Markus Armbruster
2019-04-12 17:49 ` Markus Armbruster
2019-04-12 17:49 ` Markus Armbruster
2019-04-12 21:33 ` [Qemu-arm] " Laszlo Ersek
2019-04-12 21:33 ` Laszlo Ersek
2019-04-12 21:33 ` Laszlo Ersek
2019-04-13 5:40 ` [Qemu-arm] " Markus Armbruster
2019-04-13 5:40 ` Markus Armbruster
2019-04-13 5:40 ` Markus Armbruster
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=87tvf3o1eu.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=kwolf@redhat.com \
--cc=lersek@redhat.com \
--cc=mreitz@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/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 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.