qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Harsh Prateek Bora <harshpb@linux.ibm.com>
To: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
	BALATON Zoltan <balaton@eik.bme.hu>
Cc: qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
	"Hervé Poussineau" <hpoussin@reactos.org>,
	"Artyom Tarasenko" <atar4qemu@gmail.com>,
	"Nicholas Piggin" <npiggin@gmail.com>
Subject: Re: [PATCH v3 01/14] hw/pci-host/raven: Simplify PCI facing part
Date: Tue, 21 Oct 2025 09:32:22 +0530	[thread overview]
Message-ID: <855a1360-c937-402c-825d-bcf2d9050aee@linux.ibm.com> (raw)
In-Reply-To: <818e8c63-9ef1-c2f5-6a85-7ef37a80d44b@eik.bme.hu>



On 10/20/25 04:56, BALATON Zoltan wrote:
> On Sun, 19 Oct 2025, Mark Cave-Ayland wrote:
>> On 18/10/2025 03:41, Harsh Prateek Bora wrote:
>>> Hi Mark,
>>>
>>> Thanks much for pitching in to help with reviewing this series.
>>
>> Hi Harsh,
>>
>> No worries - I've looked at raven before when working on adding 40p 
>> support for OpenBIOS, so I do have some familiarity.

Nice, thanks.

>>
>>> On 9/19/25 01:51, BALATON Zoltan wrote:
>>>> On Thu, 18 Sep 2025, Mark Cave-Ayland wrote:
>>>>> On 18/09/2025 19:50, BALATON Zoltan wrote:
>>>>>> The raven PCI device does not need a state struct as it has no 
>>>>>> data to
>>>>>> store there any more, so we can remove that to simplify code.
>>>>>>
>>>>>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>>>>>> ---
>>>>>>   hw/pci-host/raven.c | 30 +-----------------------------
>>>>>>   1 file changed, 1 insertion(+), 29 deletions(-)
>>>>>>
>>>>>> diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c
>>>>>> index f8c0be5d21..172f01694c 100644
>>>>>> --- a/hw/pci-host/raven.c
>>>>>> +++ b/hw/pci-host/raven.c
>>>>>> @@ -31,7 +31,6 @@
>>>>>>   #include "hw/pci/pci_bus.h"
>>>>>>   #include "hw/pci/pci_host.h"
>>>>>>   #include "hw/qdev-properties.h"
>>>>>> -#include "migration/vmstate.h"
>>>>>>   #include "hw/intc/i8259.h"
>>>>>>   #include "hw/irq.h"
>>>>>>   #include "hw/or-irq.h"
>>>>>> @@ -40,12 +39,6 @@
>>>>>>   #define TYPE_RAVEN_PCI_DEVICE "raven"
>>>>>>   #define TYPE_RAVEN_PCI_HOST_BRIDGE "raven-pcihost"
>>>>>>   -OBJECT_DECLARE_SIMPLE_TYPE(RavenPCIState, RAVEN_PCI_DEVICE)
>>>>>> -
>>>>>> -struct RavenPCIState {
>>>>>> -    PCIDevice dev;
>>>>>> -};
>>>>>> -
>>>>>>   typedef struct PRePPCIState PREPPCIState;
>>>>>>   DECLARE_INSTANCE_CHECKER(PREPPCIState, RAVEN_PCI_HOST_BRIDGE,
>>>>>>                            TYPE_RAVEN_PCI_HOST_BRIDGE)
>>>>>> @@ -65,7 +58,6 @@ struct PRePPCIState {
>>>>>>       MemoryRegion bm_ram_alias;
>>>>>>       MemoryRegion bm_pci_memory_alias;
>>>>>>       AddressSpace bm_as;
>>>>>> -    RavenPCIState pci_dev;
>>>>>>         int contiguous_map;
>>>>>>   };
>>>>>> @@ -268,8 +260,7 @@ static void 
>>>>>> raven_pcihost_realizefn(DeviceState *d, Error **errp)
>>>>>>                             "pci-intack", 1);
>>>>>>       memory_region_add_subregion(address_space_mem, 0xbffffff0, 
>>>>>> &s->pci_intack);
>>>>>>   -    /* TODO Remove once realize propagates to child devices. */
>>>>>> -    qdev_realize(DEVICE(&s->pci_dev), BUS(&s->pci_bus), errp);
>>>>>> +    pci_create_simple(&s->pci_bus, PCI_DEVFN(0, 0), 
>>>>>> TYPE_RAVEN_PCI_DEVICE);
>>>>>>   }
>>>
>>> <snip>
>>>
>>>>>> @@ -361,7 +334,6 @@ static void raven_class_init(ObjectClass 
>>>>>> *klass, const void *data)
>>>>>>   static const TypeInfo raven_info = {
>>>>>>       .name = TYPE_RAVEN_PCI_DEVICE,
>>>>>>       .parent = TYPE_PCI_DEVICE,
>>>>>> -    .instance_size = sizeof(RavenPCIState),
>>>>>>       .class_init = raven_class_init,
>>>>>>       .interfaces = (const InterfaceInfo[]) {
>>>>>>           { INTERFACE_CONVENTIONAL_PCI_DEVICE },
>>>>>
>>>>> I agree with removing RavenPCIState, but pci_create_simple() isn't 
>>>>> the right solution here because it both init()s and realize()s the 
>>>>> inner object. The right way to do this is for the parent to init() 
>>>>> its inner object(s) within its init() function, and similarly for 
>>>>> it to realize() its inner object(s) within its realize() function.
>>>>>
>>>>> FWIW it looks as if the same mistake is present in several other 
>>>>> hw/pci-host devices.
>>>>
>>>> So maybe that's not a mistake then. There's no need to init and 
>>>> realize it separately as this is an internal object which is enough 
>>>> to be created in realize method and init and realize there at one go 
>>>> for which pci_create_simple is appropriate. I think this inner 
>>>> object would only need to be init separately if it exposed something 
>>>> (like a property) that could be inspected or set before realize but 
>>>> that's not the case here so it does not have to be created in init 
>>>> only in realize. (A lot of simple devices don't even have init 
>>>> method only realize so init is only needed for things that have to 
>>>> be set before realize.)
>>>
>>> Do we have a consensus here ?
>>>
>>> regards,
>>> Harsh
>> Given there is still some ongoing discussion regarding object 
>> modelling, I think this will require a separate tidy-up so let's go 
>> with the pci_create_simple() approach for now.

Sure, thanks for considering.

>>
>> The changes to the interrupt routing and readability of some of the 
>> changes from a developer's perspective are still of concern to me.
> 
> I think simpler is more readable so not having an or-irq object where 
> not needed as the PCI code can handle this makes it more readable (also 
> the same as ppc440_pcix which was previously approved by Peter[1] and a 
> patch to add or-irq there was dropped as unneeded[2] so doing the same 
> thing the same way here is also more readable and more consistent). Thus 
> I think the interrupt routing changes should be OK and having an or-irq 
> is an unneeded complication.
> 
> What other readablility concerns do you have? Is it about not passing 
> the whole device state struct to callbacks but only what they need from 
> it? I've answered that already and I think that unnecessary casts would 
> not add any readablility. I'd like to hear others' opinion too but it 
> seems not many care so it's only us and we both seem to have strong view 
> on these things so it's hard to come to an agreement.

I think since the changes are contained to prep/raven (which although I 
am not so familiar with), I hope we just need to ensure changes are safe 
enough and can be provided a R-b to be considered for merge and any 
improvements can be done as a follow-up later as needed. Thanks again.

regards,
Harsh

> 
> Regards,
> BALATON Zoltan
> 
> [1] commit 2a9cf49598c65 and 
> https://lists.nongnu.org/archive/html/qemu-ppc/2021-01/msg00031.html
> 
> [2] https://lists.nongnu.org/archive/html/qemu-ppc/2020-12/msg00422.html 
> https://lists.nongnu.org/archive/html/qemu-ppc/2020-12/msg00423.html


  reply	other threads:[~2025-10-21  4:03 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-18 18:50 [PATCH v3 00/14] hw/pci-host/raven clean ups BALATON Zoltan
2025-09-18 18:50 ` [PATCH v3 01/14] hw/pci-host/raven: Simplify PCI facing part BALATON Zoltan
2025-09-18 19:15   ` Mark Cave-Ayland
2025-09-18 20:21     ` BALATON Zoltan
2025-10-18  2:41       ` Harsh Prateek Bora
2025-10-18 11:24         ` BALATON Zoltan
2025-10-19 21:40         ` Mark Cave-Ayland
2025-10-19 23:26           ` BALATON Zoltan
2025-10-21  4:02             ` Harsh Prateek Bora [this message]
2025-09-18 18:50 ` [PATCH v3 02/14] hw/pci-host/raven: Simplify host bridge type declaration BALATON Zoltan
2025-09-18 19:16   ` Mark Cave-Ayland
2025-09-18 18:50 ` [PATCH v3 03/14] hw/pci-host/raven: Use DEFINE_TYPES macro BALATON Zoltan
2025-09-18 19:16   ` Mark Cave-Ayland
2025-09-18 18:50 ` [PATCH v3 04/14] hw/pci-host/raven: Simplify PCI bus creation BALATON Zoltan
2025-09-18 19:22   ` Mark Cave-Ayland
2025-09-18 18:50 ` [PATCH v3 05/14] hw/pci-host/raven: Simplify PCI interrupt routing BALATON Zoltan
2025-09-18 19:35   ` Mark Cave-Ayland
2025-09-18 20:52     ` BALATON Zoltan
2025-09-18 18:50 ` [PATCH v3 06/14] hw/pci-host/raven: Simplify direct config access address decoding BALATON Zoltan
2025-09-18 19:43   ` Mark Cave-Ayland
2025-10-20  8:37   ` Philippe Mathieu-Daudé
2025-09-18 18:50 ` [PATCH v3 07/14] hw/pci-host/raven: Rename direct config access ops BALATON Zoltan
2025-09-18 19:44   ` Mark Cave-Ayland
2025-10-20  8:38   ` Philippe Mathieu-Daudé
2025-09-18 18:50 ` [PATCH v3 08/14] hw/pci-host/raven: Use correct parameter in direct " BALATON Zoltan
2025-09-18 19:52   ` Mark Cave-Ayland
2025-09-18 21:01     ` BALATON Zoltan
2025-09-18 18:50 ` [PATCH v3 09/14] hw/pci-host/raven: Do not use parent object for mmcfg region BALATON Zoltan
2025-09-18 20:34   ` Mark Cave-Ayland
2025-09-18 21:04     ` BALATON Zoltan
2025-09-18 18:50 ` [PATCH v3 10/14] hw/pci-host/raven: Fix PCI config direct access region BALATON Zoltan
2025-09-18 20:35   ` Mark Cave-Ayland
2025-09-18 18:50 ` [PATCH v3 11/14] hw/pci-host/raven: Simpify discontiguous IO access BALATON Zoltan
2025-09-18 20:49   ` Mark Cave-Ayland
2025-09-18 21:11     ` BALATON Zoltan
2025-09-18 18:50 ` [PATCH v3 12/14] hw/pci-host/raven: Move bus master address space creation to one place BALATON Zoltan
2025-09-18 20:54   ` Mark Cave-Ayland
2025-09-18 21:13     ` BALATON Zoltan
2025-09-18 18:50 ` [PATCH v3 13/14] hw/pci-host/raven: Do not map regions in init method BALATON Zoltan
2025-09-18 21:02   ` Mark Cave-Ayland
2025-09-18 21:22     ` BALATON Zoltan
2025-09-18 18:50 ` [PATCH v3 14/14] hw/ppc/prep: Fix non-contiguous IO control bit BALATON Zoltan
2025-09-18 21:09   ` Mark Cave-Ayland
2025-09-18 21:33     ` BALATON Zoltan

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=855a1360-c937-402c-825d-bcf2d9050aee@linux.ibm.com \
    --to=harshpb@linux.ibm.com \
    --cc=atar4qemu@gmail.com \
    --cc=balaton@eik.bme.hu \
    --cc=hpoussin@reactos.org \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=npiggin@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).