Help debugging a PCI scanning problem
Hi all,
I have almost completed the porting of U-Boot to my 7400/107 board. I am now able to boot from flash, tftpload the hello_world example and run it. :)
However, there is a hack which I don't like and hope maybe someone can suggest why I need it and what the _correct_ solution is.
When eepro100_initialize() is called it loops scanning the PCI bus for cards. I have such a card and it is found with no problems. The card is initialised correctly which is how I am able to tftpload the example. The problem comes after it has initialised the card. It looks for a second card and this seems to crash the system.
For the moment I have added the following to the end of the eepro100_initialize() function:
read_hw_addr (dev, bis);
#ifdef CONFIG_PPMC7xx /* RAD * FixMe: This prevents a crash but means only * one network card can be installed */ break; #endif } return card_number; }
which works.
I can scan the bus with the "pci" command and get the following results. Obviously the network controller Dev number changes depending on which slot it is inserted into:
=> pci
Scanning PCI devices on bus 0
BusDevFun VendorId DeviceId Device Class Sub-Class
_____________________________________________________________
00.00.00 0x1057 0x0004 Bridge device 0x00 00.11.00 0x8086 0x1030 Network controller 0x00 00.12.00 0x1011 0x0026 Bridge device 0x04
=>
There are only 2 slots on this board. The ethernet card works in either of them. The crash seems to happen within the pci_find_devices() function. Any suggestions how I can debug this?
Many thanks
Rich
Quoted 32 lines · Richard Danter
Hi all,
I have almost completed the porting of U-Boot to my 7400/107 board. I am now able to boot from flash, tftpload the
hello_worldexample and run it. :)However, there is a hack which I don't like and hope maybe someone can suggest why I need it and what the _correct_ solution is.
When
eepro100_initialize()is called it loops scanning the PCI bus for cards. I have such a card and it is found with no problems. The card is initialised correctly which is how I am able to tftpload the example. The problem comes after it has initialised the card. It looks for a second card and this seems to crash the system.For the moment I have added the following to the end of the
eepro100_initialize()function:read_hw_addr (dev, bis);#ifdef CONFIG_PPMC7xx /* RAD * FixMe: This prevents a crash but means only * one network card can be installed */ break; #endif } return card_number; }
Quoted 1 line
which works.
A better workaround is to change the code in drivers/pci.c pci_find_devices() to loop through the devices and functions up to max-1 as the ELPPC does.
So whatever the problem, it has been seen before. This new solution works for 0, 1 or 2 cards plugged in! I would still like to understand why this is required though.
Quoted 33 lines
I can scan the bus with the "pci" command and get the following results. Obviously the network controller Dev number changes depending on which slot it is inserted into:
=> pci
Scanning PCI devices on bus 0
BusDevFun VendorId DeviceId Device Class Sub-Class
_____________________________________________________________00.00.00 0x1057 0x0004 Bridge device 0x00 00.11.00 0x8086 0x1030 Network controller 0x00 00.12.00 0x1011 0x0026 Bridge device 0x04=>
There are only 2 slots on this board. The ethernet card works in either of them. The crash seems to happen within the
pci_find_devices()function. Any suggestions how I can debug this?Many thanks
Rich-------------------------------------------------------
This SF.Net email is sponsored by the 'Do More With Dual!' webinar happening
July 14 at 8am PDT/11am EDT. We invite you to explore the latest in dual core and dual graphics technology at this free one hour event hosted by HP, AMD, and NVIDIA. To register visit http://www.hp.com/go/dualwebinar
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users