qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: Frederic Barrat <fbarrat@linux.ibm.com>, qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org, clg@kaod.org
Subject: Re: [PATCH for-7.2 06/10] ppc/pnv: enable user created pnv-phb for powernv8
Date: Mon, 8 Aug 2022 13:50:54 -0300	[thread overview]
Message-ID: <42bfa67a-f679-0817-418b-24aad93450c7@gmail.com> (raw)
In-Reply-To: <5f3a7053-ebfe-ef3d-093a-d5a593ad88e5@linux.ibm.com>



On 8/5/22 07:50, Frederic Barrat wrote:
> 
> 
>> diff --git a/hw/pci-host/pnv_phb.c b/hw/pci-host/pnv_phb.c
>> index 077f391d59..953c384bf6 100644
>> --- a/hw/pci-host/pnv_phb.c
>> +++ b/hw/pci-host/pnv_phb.c
>> @@ -17,6 +17,7 @@
>>   #include "hw/ppc/pnv.h"
>>   #include "hw/qdev-properties.h"
>>   #include "qom/object.h"
>> +#include "sysemu/sysemu.h"
>>   /*
>> @@ -171,6 +172,10 @@ static void pnv_phb_realize(DeviceState *dev, Error **errp)
>>           pnv_phb4_bus_init(dev, PNV_PHB4(phb->backend));
>>       }
>> +    if (phb->version == 3 && !defaults_enabled()) {
>> +        return;
>> +    }
>> +
>>       pnv_phb_attach_root_port(pci);
>>   }
> 
> 
> So we skip the call to pnv_phb_attach_root_port() for the user created PHBs.
> 
> I seem to remember that when the user creates a PHB on the command line, they also need to create the root port and we can't just create one by default with the PHB. It seems heavy when just using the qemu CLI but that was a requirement from libvirt. Did I get that right?

libvirt requires all pci devices to be declared in the XML. If we create the
root ports automatically by just adding PHBs I would need to reflect that
in the domain XML by either automatically add root ports with each PHB, which
is easier said than done, or tell the user to do so.

libvirt also allows for custom naming of the buses, e.g the PHB can be named
'phb-root0' and its root port 'my-rootport.1'. There's no way we can name
root ports buses by adding them automatically with each PHB like we do
for default PHBs.


> 
> In any case, I can see a problem. pnv_phb_attach_root_port() creates the root port object, so if the above is correct, we want to skip that. But it also creates the PHB->root port relationship in QOM. That we don't do anywhere for the user-created case.
> 
> Calling qemu with "-nodefaults -device pnv-phb -device pnv-phb-root-port", here is what I see in QOM, which shows the wrong parenting of the root port:
>    /peripheral-anon (container)
>      /device[1] (pnv-phb-root-port)
>        /bus master container[0] (memory-region)
>        /bus master[0] (memory-region)
>        /pci_bridge_io[0] (memory-region)
>        /pci_bridge_io[1] (memory-region)
>        /pci_bridge_mem[0] (memory-region)
>        /pci_bridge_pci[0] (memory-region)
>        /pci_bridge_pref_mem[0] (memory-region)
>        /pci_bridge_vga_io_hi[0] (memory-region)
>        /pci_bridge_vga_io_lo[0] (memory-region)
>        /pci_bridge_vga_mem[0] (memory-region)
>        /pcie.0 (PCIE)
> 
> 
> With the full series, same problem on P8/P9/P10

I forgot to mention it in the cover letter. This is intended. The reason
is that we can't access the PHB from the root-port due to QOM best
practices, i.e. we can't do qdev_get_parent_bus()->parent to parent
the root port with the PHB. The reason why we're able to do that for
default devices is because we have access to the PHB regardless of QOM
when creating the root port.


If we want QOM consistency between user created devices and default
devices, one alternative is to make the root-port a child of the
root bus. That can be achievable in both cases.


Thanks,


Daniel


> 
>    Fred
> 
> 
> 
> 
> 


  reply	other threads:[~2022-08-08 16:54 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-03 13:44 [PATCH for-7.2 00/10] enable pnv-phb user created devices Daniel Henrique Barboza
2022-08-03 13:44 ` [PATCH for-7.2 01/10] ppc/pnv: add phb-id/chip-id PnvPHB3RootBus properties Daniel Henrique Barboza
2022-08-03 16:22   ` Cédric Le Goater
2022-08-03 13:44 ` [PATCH for-7.2 02/10] ppc/pnv: add phb-id/chip-id PnvPHB4RootBus properties Daniel Henrique Barboza
2022-08-03 16:22   ` Cédric Le Goater
2022-08-03 13:44 ` [PATCH for-7.2 03/10] ppc/pnv: set root port chassis and slot using Bus properties Daniel Henrique Barboza
2022-08-03 16:25   ` Cédric Le Goater
2022-08-03 13:44 ` [PATCH for-7.2 04/10] ppc/pnv: add helpers for pnv-phb user devices Daniel Henrique Barboza
2022-08-05 10:41   ` Frederic Barrat
2022-08-08 11:04     ` Daniel Henrique Barboza
2022-08-03 13:44 ` [PATCH for-7.2 05/10] ppc/pnv: turn chip8->phbs[] into a PnvPHB* array Daniel Henrique Barboza
2022-08-03 13:44 ` [PATCH for-7.2 06/10] ppc/pnv: enable user created pnv-phb for powernv8 Daniel Henrique Barboza
2022-08-05 10:50   ` Frederic Barrat
2022-08-08 16:50     ` Daniel Henrique Barboza [this message]
2022-08-08 23:30       ` Daniel Henrique Barboza
2022-08-03 13:44 ` [PATCH for-7.2 07/10] ppc/pnv: add PHB4 helpers for user created pnv-phb Daniel Henrique Barboza
2022-08-03 13:44 ` [PATCH for-7.2 08/10] ppc/pnv: enable user created pnv-phb powernv9 Daniel Henrique Barboza
2022-08-03 13:44 ` [PATCH for-7.2 09/10] ppc/pnv: change pnv_phb4_get_pec() to also retrieve chip10->pecs Daniel Henrique Barboza
2022-08-03 13:44 ` [PATCH for-7.2 10/10] ppc/pnv: user creatable pnv-phb for powernv10 Daniel Henrique Barboza
2022-08-05 11:06 ` [PATCH for-7.2 00/10] enable pnv-phb user created devices Frederic Barrat

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=42bfa67a-f679-0817-418b-24aad93450c7@gmail.com \
    --to=danielhb413@gmail.com \
    --cc=clg@kaod.org \
    --cc=fbarrat@linux.ibm.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).