From: Daniel Henrique Barboza <danielhb413@gmail.com>
To: "Cédric Le Goater" <clg@kaod.org>,
"Thomas Huth" <thuth@redhat.com>,
qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
Frederic Barrat <frederic.barrat@fr.ibm.com>,
qemu-ppc@nongnu.org, david@gibson.dropbear.id.au
Subject: Re: [PATCH v5 0/5] user creatable pnv-phb4 devices
Date: Fri, 11 Mar 2022 10:24:56 -0300 [thread overview]
Message-ID: <a8eb4e33-4831-cf5a-5eea-291d641c6b7f@gmail.com> (raw)
In-Reply-To: <8421661c-58b7-a448-9294-474524098650@kaod.org>
On 3/11/22 09:45, Cédric Le Goater wrote:
> Hello,
>
> In 3/11/22 03:18, Daniel Henrique Barboza wrote:
>>
>>
>> On 3/10/22 15:49, Thomas Huth wrote:
>>> On 11/01/2022 14.10, Daniel Henrique Barboza wrote:
>>>> Hi,
>>>>
>>>> This version implements Cedric's review suggestions from v4. No
>>>> drastic design changes were made.
>>>>
>>>> Changes from v4:
>>>> - patches 1,3,5: unchanged
>>>> - patch 2:
>>>> * renamed function to pnv_phb4_xscom_realize()
>>>> * pnv4_phb4_xscom_realize() is now called at the end of phb4_realize()
>>>> - patch 4:
>>>> * changed pnv_phb4_get_stack signature to use chip and phb
>>>> * added a new helper called pnv_pec_stk_default_phb_realize() to
>>>> realize the default phb when running with defaults
>>>> - v4 link: https://lists.gnu.org/archive/html/qemu-devel/2022-01/msg02148.html
>>>>
>>>> Daniel Henrique Barboza (5):
>>>> ppc/pnv: set phb4 properties in stk_realize()
>>>> ppc/pnv: move PHB4 XSCOM init to phb4_realize()
>>>> ppc/pnv: turn 'phb' into a pointer in struct PnvPhb4PecStack
>>>> ppc/pnv: Introduce user creatable pnv-phb4 devices
>>>> ppc/pnv: turn pnv_phb4_update_regions() into static
>>>
>>> It's now possible to crash QEMU with the pnv-phb4 device:
>>>
>>> $ ./qemu-system-ppc64 -nographic -M powernv9 -device pnv-phb4
>>> Unexpected error in object_property_try_add() at ../../devel/qemu/qom/object.c:1229:
>>> qemu-system-ppc64: -device pnv-phb4: attempt to add duplicate property 'pnv-phb4[0]' to object (type 'power9_v2.0-pnv-chip')
>>> Aborted (core dumped)
>>>
>>> Any ideas how to fix this?
>>
>> Thanks for catching this up.
>>
>> The issue here is that we're not handling the case where an user adds a pnv-phb4 device
>> when running default settings (no -nodefaults). With default settings we are adding all
>> pnv-phb4 devices that are available to the machine, having no room for any additional
>> user creatable pnv-phb4 devices.
>>
>> A similar situation happens with the powernv8 machine which errors out with a different
>> error message:
>>
>> $ ./qemu-system-ppc64 -nographic -M powernv8 -device pnv-phb3
>> qemu-system-ppc64: -device pnv-phb3: Can't add chassis slot, error -16
>>
>>
>> Adding all possible phbs by default is a behavior these machines had since they were introduced,
>> and I don't think we want to change it. Thus, a fix would be to forbid user created pnv-phb devices
>> when running with defaults.
>
>
> On a real system with POWER{8,9,10} processors, PHBs are sub-units of
> the processor, they can be deactivated by firmware but not plugged in
> or out like a PCI adapter on a slot. Nevertheless, it seemed to be
> good idea to have user-created PHBs for testing purposes.
>
> Let's come back to the PowerNV requirements.
>
> 1. having a limited set of PHBs speedups boot time.
> 2. it is useful to be able to mimic a partially broken topology you
> some time have to deal with during bring-up.
>
> PowerNV is also used for distro install tests and having libvirt
> support eases these tasks. libvirt prefers to run the machine with
> -nodefaults to be sure not to drag unexpected devices which would need
> to be defined in the domain file without being specified on the QEMU
> command line. For this reason :
>
> 3. -nodefaults should not include default PHBs
>
> The solution we came with was to introduce user-created PHB{3,4,5}
> devices on the powernv{8,9,10} machines. Reality proves to be a bit
> more complex, internally when modeling such devices, and externally
> when dealing with the user interface.
>
> So, to make sure that we don't ship a crappy feature in QEMU 7.0,
> I think we should step back a little.
>
> Req 1. and 2. can be simply addressed differently with a machine option:
> "phb-mask=<uint>", which QEMU would use to enable/disable PHB device
> nodes when creating the device tree.
Would this property only impact the device-tree?
Let's say that we're running a 2 socket pnv4 machine, with default settings. That
would give us 12 PHBs. So phb-mask=FFFF is kind of a no-op because you're adding
all PHBs, phb-mask=0001 would add just the first PHB (index=0 chip-id=0) and so
on. Is that correct?
>
> For Req 3., we need to make sure we are taking the right approach. It
> seems that we should expose a new type of user-created PHB device,
> a generic virtualized one, that libvirt would use and not one depending
> on the processor revision. This needs more thinking.
libvirt support isn't upstream yet. We have room to make changes.
I agree that creating generic, un-versioned pnv-phb and pnv-phb-root-port devices
that can be used by all pnv machines would be good for libvirt support.
>
> Hence, I am proposing we drop user-created PHB{3,4,5} for QEMU-7.0.
> All the cleanups we did are not lost and they will be useful for the
> next steps in QEMU 7.1.
Seems like a good idea for now. Even if we decide to expose them in the end, if we
keep them user visible for the 7.0 release we won't be able to change our minds
in 7.1.
Thanks,
Daniel
>
>
> Thanks,
>
> C.
>
next prev parent reply other threads:[~2022-03-11 13:36 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-11 13:10 [PATCH v5 0/5] user creatable pnv-phb4 devices Daniel Henrique Barboza
2022-01-11 13:10 ` [PATCH v5 1/5] ppc/pnv: set phb4 properties in stk_realize() Daniel Henrique Barboza
2022-01-11 13:10 ` [PATCH v5 2/5] ppc/pnv: move PHB4 XSCOM init to phb4_realize() Daniel Henrique Barboza
2022-01-11 13:10 ` [PATCH v5 3/5] ppc/pnv: turn 'phb' into a pointer in struct PnvPhb4PecStack Daniel Henrique Barboza
2022-01-11 13:10 ` [PATCH v5 4/5] ppc/pnv: Introduce user creatable pnv-phb4 devices Daniel Henrique Barboza
2022-01-11 14:42 ` Cédric Le Goater
2022-01-11 14:57 ` Daniel Henrique Barboza
2022-01-11 15:47 ` Cédric Le Goater
2022-01-11 17:48 ` Daniel Henrique Barboza
2022-01-11 18:10 ` Cédric Le Goater
2022-01-11 13:10 ` [PATCH v5 5/5] ppc/pnv: turn pnv_phb4_update_regions() into static Daniel Henrique Barboza
2022-01-12 11:37 ` [PATCH v5 0/5] user creatable pnv-phb4 devices Cédric Le Goater
2022-03-10 18:49 ` Thomas Huth
2022-03-11 2:18 ` Daniel Henrique Barboza
2022-03-11 12:45 ` Cédric Le Goater
2022-03-11 13:24 ` Daniel Henrique Barboza [this message]
2022-03-14 10:11 ` Cédric Le Goater
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=a8eb4e33-4831-cf5a-5eea-291d641c6b7f@gmail.com \
--to=danielhb413@gmail.com \
--cc=clg@kaod.org \
--cc=david@gibson.dropbear.id.au \
--cc=frederic.barrat@fr.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=thuth@redhat.com \
/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).