All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Laszlo Ersek <lersek@redhat.com>
Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com>,
	qemu-devel@nongnu.org, "Kevin Wolf" <kwolf@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	qemu-block@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Richard Henderson" <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH 3/4] hw/i386/pc_sysfw: Let pc_system_firmware_init() access PCMachineState
Date: Thu, 07 Mar 2019 16:29:07 +0100	[thread overview]
Message-ID: <87y35qput8.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <265e566a-f2f5-5eb8-2839-781030bc479a@redhat.com> (Laszlo Ersek's message of "Tue, 5 Mar 2019 18:30:11 +0100")

Laszlo Ersek <lersek@redhat.com> writes:

> On 03/04/19 20:48, Philippe Mathieu-Daudé wrote:
>> PCMachineState will be used in the next patch.
>> Since We can access PCMachineClass from it, directly use it.
>> We can also access pcmc->pci_enabled, remove the isapc_ram_fw
>> argument.
>> 
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>> [PMD: Extracted from bigger patch]
>> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>> ---
>>  hw/i386/pc.c         | 2 +-
>>  hw/i386/pc_sysfw.c   | 8 +++++---
>>  include/hw/i386/pc.h | 3 +--
>>  3 files changed, 7 insertions(+), 6 deletions(-)
>> 
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index 3889eccdc3..3cd8ed1794 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -1830,7 +1830,7 @@ void pc_memory_init(PCMachineState *pcms,
>>      }
>>  
>>      /* Initialize PC system firmware */
>> -    pc_system_firmware_init(rom_memory, !pcmc->pci_enabled);
>> +    pc_system_firmware_init(pcms, rom_memory);
>>  
>>      option_rom_mr = g_malloc(sizeof(*option_rom_mr));
>>      memory_region_init_ram(option_rom_mr, NULL, "pc.rom", PC_ROM_SIZE,
>> diff --git a/hw/i386/pc_sysfw.c b/hw/i386/pc_sysfw.c
>> index 46b87afe23..55a3c563df 100644
>> --- a/hw/i386/pc_sysfw.c
>> +++ b/hw/i386/pc_sysfw.c
>> @@ -231,15 +231,17 @@ static void old_pc_system_rom_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
>>                                  bios);
>>  }
>>  
>> -void pc_system_firmware_init(MemoryRegion *rom_memory, bool isapc_ram_fw)
>> +void pc_system_firmware_init(PCMachineState *pcms,
>> +                             MemoryRegion *rom_memory)
>>  {
>> +    PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms);
>>      DriveInfo *pflash_drv;
>>  
>>      pflash_drv = drive_get(IF_PFLASH, 0, 0);
>>  
>> -    if (isapc_ram_fw || pflash_drv == NULL) {
>> +    if (!pcmc->pci_enabled || pflash_drv == NULL) {
>>          /* When a pflash drive is not found, use rom-mode */
>> -        old_pc_system_rom_init(rom_memory, isapc_ram_fw);
>> +        old_pc_system_rom_init(rom_memory, true);
>>          return;
>>      }
>>  
>
> This code extraction (as a pure refactoring) is incorrect.
>
> In Markus's patch at
> <https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg06804.html>,
> the condition that guards the old_pc_system_rom_init() call loses one
> half of the disjunction:
>
> -    if (isapc_ram_fw || pflash_drv == NULL) {
> +    if (!pcmc->pci_enabled) {
>
> namely the "pflash_drv == NULL" sub-condition. Therefore the
> old_pc_system_rom_init() call can hardwire the second argument as "true":
>
> -        old_pc_system_rom_init(rom_memory, isapc_ram_fw);
> +        old_pc_system_rom_init(rom_memory, true);
>
> However, in this refactoring, the (pflash_drv == NULL) subcondition is
> not deleted; only the original condition is expressed differently.
> Therefore we can't replace the "isapc_ram_fw" argument of
> old_pc_system_rom_init() with plain "true", we have to use
> "!pcmc->pci_enabled" instead.

You're right

> However, if we write down "!pcmc->pci_enabled" twice for this purpose,
> then it becomes too complex to read (for me anyway). So in that case I'd
> even suggest keeping the "isapc_ram_fw" local variable, just turn it
> into a normal local variable rather than take it as a parameter.
>
> In the next patch, "isapc_ram_fw" can be killed just the same.

I'm doing that in my tree now.  Thanks!

  reply	other threads:[~2019-03-07 15:29 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-04 19:48 [Qemu-devel] [RFC PATCH 0/4] pc: Support firmware configuration with -blockdev (splitted) Philippe Mathieu-Daudé
2019-03-04 19:48 ` [Qemu-devel] [PATCH 1/4] pflash_cfi01: Add pflash_cfi01_get_blk() helper Philippe Mathieu-Daudé
2019-03-05 17:17   ` Laszlo Ersek
2019-03-06 14:16     ` Markus Armbruster
2019-03-04 19:48 ` [Qemu-devel] [PATCH 2/4] hw/i386/pc_sysfw: Remove obsolete PcSysFwDevice Philippe Mathieu-Daudé
2019-03-05 17:19   ` Laszlo Ersek
2019-03-04 19:48 ` [Qemu-devel] [PATCH 3/4] hw/i386/pc_sysfw: Let pc_system_firmware_init() access PCMachineState Philippe Mathieu-Daudé
2019-03-05 17:30   ` Laszlo Ersek
2019-03-07 15:29     ` Markus Armbruster [this message]
2019-03-04 19:48 ` [Qemu-devel] [RFC PATCH 4/4] pc: Support firmware configuration with -blockdev Philippe Mathieu-Daudé
2019-03-05 17:34   ` Laszlo Ersek
2019-03-05 17:53     ` Philippe Mathieu-Daudé
2019-03-06 14:21 ` [Qemu-devel] [RFC PATCH 0/4] pc: Support firmware configuration with -blockdev (splitted) 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=87y35qput8.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=lersek@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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.