From: Markus Armbruster <armbru@redhat.com>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
Cc: "Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"BALATON Zoltan" <balaton@eik.bme.hu>,
qemu-devel@nongnu.org, qemu-ppc@nongnu.org,
"Daniel P. Berrangé" <berrange@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>
Subject: Re: [PATCH v2 06/13] mac_newworld: Simplify creation of Uninorth devices
Date: Tue, 04 Oct 2022 08:39:57 +0200 [thread overview]
Message-ID: <87pmf8gkhu.fsf@pond.sub.org> (raw)
In-Reply-To: <76294919-528e-4174-b8df-8e97c10c788a@amsat.org> ("Philippe Mathieu-Daudé"'s message of "Mon, 3 Oct 2022 16:05:49 +0200")
Philippe Mathieu-Daudé <f4bug@amsat.org> writes:
> Cc'ing CLI refactor team.
>
> On 29/9/22 09:39, Mark Cave-Ayland wrote:
>> On 25/09/2022 13:38, BALATON Zoltan wrote:
>>
>>> Avoid open coding sysbus_mmio_map() and map regions in ascending
>>> otder. Reorganise code a bit to avoid some casts.
>>>
>>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>>> ---
>>> hw/ppc/mac_newworld.c | 42 +++++++++++++++++-------------------------
>>> 1 file changed, 17 insertions(+), 25 deletions(-)
>
>> Same comment here re: sysbus. Also the patch seems correct here, but it is worth noting that the PCI bus initialisation is order sensitive: the
>> last bus created is the one that becomes the default PCI bus for -device, so changing this would break quite a few command lines...
>
> Eh, I was not aware of this API fragility. So when using -device without
> expliciting the 'bus' key, the default is the latest bus created... OK.
Yes, our external interface is in part defined implicitly by the order
in board code execution. It goes deeper than just CLI, I'm afraid.
Omitting bus= is a convenience feature for users. It's clearly useful.
But what's the default? We walk the qdev tree rooted at the main system
bus looking for a bus of suitable bus type that is not full, or else of
suitable type that is full. See qdev_find_recursive(). The tree walk
visits children in creation order. Therefore, bus creation order is
ABI.
Related: bus names.
For user-created buses, the bus name depends on the owning device's qdev
ID (specified with id=ID). If it has none, the system picks a bus name;
more on that below. Else, it is ID.N, where N counts from zero. When a
device creates multiple buses of the same type, its bus creation order
is ABI.
For onboard devices, the bus name can be specified by board code. If
board code elects not to, the system picks a name.
System-picked names are TYPE.N, where TYPE is the bus type name such as
"pci" or "isa", and N counts from zero separately for each type. Again,
bus creation order is ABI.
This is qbus_init_internal().
Letting users omit qdev IDs is a convenience feature.
Letting developers delegate bus name picking to the system is also a
convenience feature. Without it, we'd need bus name logic in board code
and not just qbus_init_internal().
I dislike implicit ABI definitions.
Rarely met a QEMU convenience feature that didn't bite us in the
posterior later (the sensitivity of my posterior may well cloud my
memory, though).
next prev parent reply other threads:[~2022-10-04 6:46 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-25 12:38 [PATCH v2 00/13] Misc ppc/mac machines clean up BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 01/13] mac_newworld: Drop some variables BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 02/13] mac_oldworld: Drop some more variables BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 03/13] mac_{old|new}world: Set tbfreq at declaration BALATON Zoltan
2022-09-29 7:09 ` Mark Cave-Ayland
2022-09-25 12:38 ` [PATCH v2 04/13] mac_{old|new}world: Avoid else branch by setting default value BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 05/13] mac_oldworld: Do not open code sysbus_mmio_map() BALATON Zoltan
2022-09-29 7:28 ` Mark Cave-Ayland
2022-09-29 11:32 ` BALATON Zoltan
2022-10-03 7:54 ` Mark Cave-Ayland
2022-10-03 20:18 ` BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 06/13] mac_newworld: Simplify creation of Uninorth devices BALATON Zoltan
2022-09-29 7:39 ` Mark Cave-Ayland
2022-10-03 14:05 ` Philippe Mathieu-Daudé via
2022-10-04 6:39 ` Markus Armbruster [this message]
2022-10-04 8:00 ` Daniel P. Berrangé
2022-09-25 12:38 ` [PATCH v2 07/13] mac_{old|new}world: Reduce number of QOM casts BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 08/13] hw/ppc/mac.h: Move newworld specific parts out from shared header BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 09/13] hw/ppc/mac.h: Move macio " BALATON Zoltan
2022-09-29 7:43 ` Mark Cave-Ayland
2022-09-25 12:38 ` [PATCH v2 10/13] hw/ppc/mac.h: Move grackle-pcihost declaration " BALATON Zoltan
2022-09-29 7:44 ` Mark Cave-Ayland
2022-09-29 11:42 ` BALATON Zoltan
2022-10-03 7:57 ` Mark Cave-Ayland
2022-09-25 12:38 ` [PATCH v2 11/13] hw/ppc/mac.h: Move PROM and KERNEL defines to board code BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 12/13] hw/ppc/mac.h: Rename to include/hw/nvram/mac_nvram.h BALATON Zoltan
2022-09-25 12:38 ` [PATCH v2 13/13] mac_nvram: Use NVRAM_SIZE constant BALATON Zoltan
2022-09-29 7:45 ` Mark Cave-Ayland
2022-09-26 21:40 ` [PATCH v2 00/13] Misc ppc/mac machines clean up Daniel Henrique Barboza
2022-10-03 8:11 ` Mark Cave-Ayland
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=87pmf8gkhu.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=balaton@eik.bme.hu \
--cc=berrange@redhat.com \
--cc=f4bug@amsat.org \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=pbonzini@redhat.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).