DDE Linux26 in the Hurd
zhengda1936 at gmail.com
Thu Jan 28 13:28:07 CET 2010
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.
More information about the l4-hackers