Hi,
On 10-1-28 下午6:01, Henning Schild wrote:
Yes, there is a physical limitation with the current approach. Our more recent ideas however go more into a direction where a physical IO manager provides applications with pre-configured virtual PCI buses, so that we did not really hit this limitation yet, because we provide for instance the NIC driver with a virtual PCI bus that only contains the NIC.
...
Why do you not just put all PCI devices in the logical bus (so the number can be larger than 32)? There should be no physical limitation for the logical bus and the current limitation is set by DDEKit itself. Of course, then you have to change the code in DDE Linux26, so it can scan more than 32 devices on the logical bus until it finds the right one or there is no such device at all.
The main idea is to let each driver run as a separate application. Therefore applications using DDE usually do not need to access multiple devices and the virtual bus contains only one device in that case. Following this approach you would start multiple driver-servers (using DDE) if you need drivers for multiple devices. So instead of having one instance having 33 devices at its bus we would suggest to run 33 instances each having one device at the virtual bus.
You missed my point. I understand that each driver runs in a separate program. The problem is that a device has to find the bus where it is located. In the current implementation, a driver can only scan 32 devices. If we have 33 devices in the system, its driver thinks there isn't such a device and fails to work.
So I suggest why not let the logical bus contains all devices in the system. Thus, the driver can always find its device no matter where the device is located, and we don't need an IO manager to pre-configure the logical PCI bus as Bjoern said, which seems quite complex.
By the way, does DDEKit treat a device with 2 functions as two logical devices or just one? The `func` of `ddekit_pci_dev` is always 0 and `ddekit_pci_find_device_fixed` only uses the argument `slot`. Either DDEKit treat a device with multiple functions as several logical devices or only one function in a device is exposed to DDE Linux26. Both seems not very reasonable.
Best regards, Zheng Da