From: Alexander B. <ale...@ge...> - 2013-06-17 08:29:43
|
On 12.06.2013 19:16, Jilong Kuang - SISA wrote: > In my opinion, a simple fix is to remove the two lines in _find_next() function in pci_session_component.h > > If (!bus_valid(bus)) > Continue; Sure, however we would like to know why the pci driver doesn't find the device you are looking for. > > Another way is to scan all buses/devices/functions at the first call of bus_valid(). A simple three level loop will do. The initial scan is done early when pci_drv comes up ~ line 396 in file pci_session_component.h [0]. So, does something happen to the hardware in your setup that a new scan will result in other results ? If yes, can you please explain. If yes, you may delay the first scan to a later point, by removing the explicit call in line 397 to bus_valid. Without this call the bus_valid function should be triggered as soon as the first pci client connects to the pci driver and looks for a device (calling implicitly _find_next). Cheers, Alex. [0] https://github.com/genodelabs/genode/blob/master/os/src/drivers/pci/pci_session_component.h |