> > On Sat, Oct 26, 2024 at 06:01:37AM +0300, Wei Fang wrote: > > system-controller not only configure the endpoints of the NETC, but also > > can configure the ECAM space, such as the vendor ID, device ID, the RID > > of endpoint, VF stride and so on. For this perspective, I don't think the > > ECAM space should placed at the same hierarchical level with > system-controller. > > > > If they are placed at the same level, then before pci_host_common_probe() is > > called, we need to ensure that IERB completes probe(), which means we need > > to modify the PCI host common driver, component API or add a callback > function > > or something else, which I don't think is a good idea. > > Ok, that does sound important. If the NETCMIX block were to actually > modify the ECAM space, what would be the primary source of information > for how the ECAM device descriptions should look like? > I think the related info should be provided by DTS, but currently, we do not have such requirement that needs Linux to change the ECAM space, this may be supported in the future if we have the requirement. > I remember a use case being discussed internally a while ago was that > where the Cortex-A cores are only guests which only have ownership of > some Ethernet ports discovered through the ECAM, but not of the entire > NETCMIX block and not of physical Ethernet ports. How would that be > described in the device tree? The ECAM node would no longer be placed > under system-controller? Yes, we indeed have this use case on i.MX95, only the VFs of 10G ENETC are owned by Cortex-A, the entire ECAM space and other NETC devices are all owned by Cortex-M. In this case, the system-controller is no needed in DTS, because Linux have no permission to access these resources. > > At what point does it simply just make more sense to have a different > PCIe ECAM driver than pcie-host-ecam-generic, which just handles > internally the entire NETCMIX? Currently, I have not idea in what use case we need a different ECAM driver to handle internally the entire system-controller. For the use case I mentioned above, we use a different ECAM driver, which is implemented by RPMSG, because the entire ECAM space is owned by Cortex-M. So we use the ECAM driver to notify the Cortex-M to enable/disable VFs or do FLR for VFs and so on. But this ECAM driver does not need to configure the system-controller.