All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
To: Eduardo Habkost <ehabkost@redhat.com>, marcel@redhat.com
Cc: Igor Mammedov <imammedo@redhat.com>,
	Marcel Apfelbaum <marcel.a@redhat.com>,
	qemu-devel@nongnu.org, "Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 00/16] pc: Eliminate struct PcGuestInfo
Date: Thu, 10 Dec 2015 13:27:50 +0200	[thread overview]
Message-ID: <566961B6.6020207@gmail.com> (raw)
In-Reply-To: <20151208175339.GM14490@thinpad.lan.raisama.net>

On 12/08/2015 07:53 PM, Eduardo Habkost wrote:
> On Mon, Dec 07, 2015 at 08:57:03PM +0200, Marcel Apfelbaum wrote:
>> On 12/02/2015 03:46 AM, Eduardo Habkost wrote:
>>> This moves all data from PcGuestInfo to either PCMachineState or
>>> PCMachineClass.
>>>
>>> This series depends on other two series:
>>> * [PATCH v3 0/6] pc: Initialization and compat function cleanup
>>> * [PATCH V3 0/3]  hw/pcie: Multi-root support for Q35
>>>
>>> For reference, there's a git tree containing this series plus all
>>> the dependencies, at:
>>>    git://github.com/ehabkost/qemu-hacks.git work/pcguestinfo-eliminate
>>>
>>> Eduardo Habkost (16):
>>>    pc: Move PcGuestInfo declaration to top of file
>>>    pc: Eliminate struct PcGuestInfoState
>>>    pc: Remove guest_info parameter from pc_memory_init()
>>>    acpi: Make acpi_setup() get PCMachineState as argument
>>>    acpi: Remove unused build_facs() PcGuestInfo paramter
>>>    acpi: Save PCMachineState on AcpiBuildState
>>>    acpi: Make acpi_build() get PCMachineState as argument
>>>    acpi: Make build_srat() get PCMachineState as argument
>>>    acpi: Remove ram size fields fron PcGuestInfo
>>>    pc: Move PcGuestInfo.fw_cfg field to PCMachineState
>>>    pc: Simplify signature of xen_load_linux()
>>>    pc: Remove PcGuestInfo.isapc_ram_fw field
>>>    q35: Remove MCHPCIState.guest_info field
>>>    acpi: Use PCMachineClass fields directly
>>>    pc: Move PcGuestInfo.apic_xrupt_override field to PCMachineState
>>>    pc: Move APIC and NUMA data from PcGuestInfo to PCMachineState
>>
>> Hi,
>>
>> I mainly agree with the removal of PcGuestInfo , I commented on some patches.
>>
>> I do have a minor reservation, we kind of loose some information about the fields.
>> Until now it was pretty clear that the fields were related to guest because
>> they were part of PcGuestInfo. Now this information is lost and the fields
>> appear as yet other machine attributes.
>
> But they really are just machine attributes, aren't they?
>
>>
>> I suppose this can be addressed by:
>> - a prefix for guest fields (e.g numa_nodes-> guest_numa_nodes),
>> - a comment in the class /* guest fields */,
>> - keeping the fields in PcGuestInfo struct but make the machine field short: guest so we can call machine->guest.numa_nodes
>> - or not be addressed at all :)
>
> I don't see your point. Could you explain what you mean by
> "related to the guest" and "guest fields"?
>
> They are just machine attributes, and they happen to be used as
> input when building ACPI tables (just like other machine
> attributes are used as input for other guest-visible data, like
> CPUID, SMBIOS, and other tables). What exactly make them "related
> to guest"?
>

Maybe I wasn't clear indeed, let me try again please.

I (personally) don't like structures with a lot of not related fields.
The reason is, it will be very hard for someone reading the code to understand the use
of each field => a global code query will be necessary, *exactly* like a global variable.
(given that a machine is also one per system)

I do understand that sometimes, machine class included, there is a need for a lot of fields.
What I am suggesting is grouping the fields by their purpose/subsystem.
If "guest visible" does not do the trick, maybe other logical partition can be made.
For example (this is only an example): acpi fields, cpu fields, ...

In this way the code reviewer can understand with a quick look what are the "parts" of a machine
and where are used.

Since the (very good!) re-factoring you are doing makes the code less complex by removing an
unnecessary artifact (PcGuestInfo), I wouldn't want to miss the opportunity to point to
another code complexity we may get into.

Thanks,
Marcel

  reply	other threads:[~2015-12-10 11:27 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-02  1:46 [Qemu-devel] [PATCH 00/16] pc: Eliminate struct PcGuestInfo Eduardo Habkost
2015-12-02  1:46 ` [Qemu-devel] [PATCH 01/16] pc: Move PcGuestInfo declaration to top of file Eduardo Habkost
2015-12-02  1:46 ` [Qemu-devel] [PATCH 02/16] pc: Eliminate struct PcGuestInfoState Eduardo Habkost
2015-12-07 15:19   ` Marcel Apfelbaum
2015-12-02  1:46 ` [Qemu-devel] [PATCH 03/16] pc: Remove guest_info parameter from pc_memory_init() Eduardo Habkost
2015-12-02  1:46 ` [Qemu-devel] [PATCH 04/16] acpi: Make acpi_setup() get PCMachineState as argument Eduardo Habkost
2015-12-07 15:24   ` Marcel Apfelbaum
2015-12-08 17:40     ` Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 05/16] acpi: Remove unused build_facs() PcGuestInfo paramter Eduardo Habkost
2015-12-07 15:25   ` Marcel Apfelbaum
2015-12-02  1:47 ` [Qemu-devel] [PATCH 06/16] acpi: Save PCMachineState on AcpiBuildState Eduardo Habkost
2015-12-07 15:39   ` Marcel Apfelbaum
2015-12-08 17:59     ` Eduardo Habkost
2015-12-08 18:44       ` Marcel Apfelbaum
2015-12-09 19:37         ` Igor Mammedov
2015-12-11 14:12           ` Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 07/16] acpi: Make acpi_build() get PCMachineState as argument Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 08/16] acpi: Make build_srat() " Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 09/16] acpi: Remove ram size fields fron PcGuestInfo Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 10/16] pc: Move PcGuestInfo.fw_cfg field to PCMachineState Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 11/16] pc: Simplify signature of xen_load_linux() Eduardo Habkost
2015-12-11 11:40   ` Stefano Stabellini
2015-12-02  1:47 ` [Qemu-devel] [PATCH 12/16] pc: Remove PcGuestInfo.isapc_ram_fw field Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 13/16] q35: Remove MCHPCIState.guest_info field Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 14/16] acpi: Use PCMachineClass fields directly Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 15/16] pc: Move PcGuestInfo.apic_xrupt_override field to PCMachineState Eduardo Habkost
2015-12-02  1:47 ` [Qemu-devel] [PATCH 16/16] pc: Move APIC and NUMA data from PcGuestInfo " Eduardo Habkost
2015-12-07 18:57 ` [Qemu-devel] [PATCH 00/16] pc: Eliminate struct PcGuestInfo Marcel Apfelbaum
2015-12-08 17:53   ` Eduardo Habkost
2015-12-10 11:27     ` Marcel Apfelbaum [this message]
2015-12-10 17:45       ` Eduardo Habkost

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=566961B6.6020207@gmail.com \
    --to=marcel.apfelbaum@gmail.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=marcel.a@redhat.com \
    --cc=marcel@redhat.com \
    --cc=mst@redhat.com \
    --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.