Hi,
I've been bugged two or three times the last month about why
Etherboot 4.0 doesn't work with the eepro100 anymore.
I just got out of my lazy bed, and fixed it (*). But there are some
things that someone who wrote the code should comment on.....
First from config.c:
#ifdef INCLUDE_PCI
pci_addrs[0] = 0;
eth_pci_init(pci_nic_list, pci_addrs);
pci_addrs[1] = 0;
#endif
printf("Probing...");
for (t = NIC; t->nic_name != 0; ++t)
{
printf("[%s]", t->nic_name);
if ((*t->eth_probe)(&nic, t->probe_addrs))
return (1);
}
puts the PCI IO address in the pci_addrs array. It then calls my probe
function with the t->probe_addrs array, which doesn't tell me where my
card is. I haven't the foggiest about how this works for the NE2000
compatible PCI cards: as far as I can read the code they are probed at
classical ISA (0x200, 0x300, 0x320 etc) adresses.
My current (very ugly) workaround is to export the pci_addrs array,
and to reference that instead of probe_addrs.... I want something
better.
Next, from pci.c:
for (i = 0; pcidev[i].vendor != 0; i++) {
if (vendor == pcidev[i].vendor
&& device == pcidev[i].dev_id) {
int i;
for (i=3;i>=0;i--) {
pcibios_read_config_dword(0, devfn,
PCI_BASE_ADDRESS_0 + 4 *i, &pci_ioaddr);
if (pci_ioaddr & 0x01) break;
}
/* Strip the I/O address out of the
* returned value */
pci_ioaddr &= PCI_BASE_ADDRESS_IO_MASK;
printf("Found %s at 0x%x\r\n",
pcidev[i].name, pci_ioaddr);
}
}
This is the NEW version. It looks for an -=IO=- address on the PCI
device. The old code found a noncacheable memory region as the
address I can't really do anything with that.... My eepro100 boasts
three adresses, the second one being the IO address that we need.....
Anybody with eepro100's lurking on this list?
Roger.
(*) It loads a kernel, initialized the kernel, does the NFS-root
mount, and then crashes. I probably didn't correctly install the NFS
root for my client machine :-) Goes to show that I personally don't
actually use it.... The machine boots perfectly from its harddisk...
--
If it's there and you can see it, it's REAL |___R.E.Wolff@BitWizard.nl |
If it's there and you can't see it, it's TRANSPARENT | Tel: +31-15-2137555 |
If it's not there and you can see it, it's VIRTUAL |__FAX:_+31-15-2138217 |
If it's not there and you can't see it, it's GONE! -- Roy Wilks, 1983 |_____|
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.