Hi,
On 10-1-29 下午7:37, Christian Helmuth wrote:
Hello,
On Thu, Jan 28, 2010 at 08:28:07PM +0800, Da Zheng wrote:
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.
Please, do not take the limitation to 32 devices for granted. It was just a reasonable guess at implemenation time and is power of 2.
The current implementation cannot work in my VMWare VM, which has more than 32 PCI devices, so I kind of hope it can be extended.
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.
I disagree here. In a modern OS you need access control and resource management also on driver level, as nobody wants his VGA driver mess with the USB host controller. The access policy to I/O resources in our design is implemented by a special system component. This component configures the virtual busses mentioned before, whereas each driver gets its own virtual bus, i.e., view on the real hardware. You may look into http://os.inf.tu-dresden.de/papers_ps/haenel-beleg.pdf. Lukas gives a good summary of our ideas in its Architecture section.
I totally agree that we need to impose some access control and resource management. I just wanted to simply extend the current implementation. The current implementation doesn't have access control either, so I didn't consider the security issue.
Zheng Da