On Fri, Jun 30, 2023 at 12:25 PM Lizhi Hou <lizhi.hou@xxxxxxx> wrote: > > > On 6/29/23 16:52, Rob Herring wrote: > >>> + rp[i].child_addr[0] = j; > >>> + ret = of_changeset_add_empty_prop(ocs, np, "dynamic"); > >> It seems slightly confusing to use a "dynamic" property here when we > >> also have the OF_DYNAMIC dynamic flag above. I think they have > >> different meanings, don't they? > > Hum, what's the property for? It's new in this version. Any DT property > > needs to be documented, but I don't see why we need it. > > This is mentioned in my previous reply for V9 > > https://lore.kernel.org/lkml/af9b6bb3-a98d-4fb6-b51e-b48bca61dada@xxxxxxx/ > > As we discussed before, "interrupt-map" was intended to be used here. > > And after thinking it more, it may not work for the cases where ppnode > > is not dynamically generated and it does not have "interrupt-map". > > For example the IBM ppc system, its device tree has nodes for pci bridge > > and it does not have "interrupt-map". How do you know? I ask because usually the only way I have visibility there is when I break something. In traditional OpenFirmware, which IBM PPC is, all PCI devices have a DT node because it's the firmware telling the OS "these are the devices I discovered and this is how I configured them". > Based on previous discussions, OF_DYNAMIC should not be used here. For the same reasons, I don't think the behavior should change based on being dynamic. Now maybe the behavior when it's an ACPI system with DT overlays has to change, but that's a problem for later. I don't yet know if we'd handle that here somehow or elsewhere so that this node looks like a normal DT system. This should all work the same whether we've generated the nodes or they were already present in the FDT when we booted. > So I think adding "dynamic" might be a way to identify the dynamically > > added node. Or we can introduce a new flag e.g OF_IRQ_SWIZZLING. I hope not. The flags tend to be hacks. Rob