Messages in this thread Patch in this message | | | Date | Wed, 6 Sep 2000 13:36:37 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [RFC] my current kernel todo list |
| |
Em Wed, Sep 06, 2000 at 05:37:50PM +0100, Tigran Aivazian escreveu: > On Mon, 4 Sep 2000, Tigran Aivazian wrote: > > > On Fri, 25 Aug 2000, Arnaldo Carvalho de Melo wrote: > > > now the driver init sequence is not > > > serialized anymore, so races are possible > > > > since when? In 2.4.0-test8-pre2 mod->init and mod->cleanup are called > > under global kernel lock. As for static drivers they are initialised from > > either start_kernel() or init()->do_basic_setup() both of which take > > global kernel lock. > > > > Ok, I understand this now - just cheched the cardbus/pcihotplug code. > > Ok, now if you do this, please leave out ne.c and hp100.c - I have the > cards for these two so I can do it and test it myself.
humm, In fact I've already sent a patch to Paul Gortmaker only, asking for feedback about the PCI case (that I think should be removed from it, as ne2k-pci already has this), here it is, maybe it'll help you in the process.
--- linux-2.4.0-test8-pre1/drivers/net/ne.c Sat Jul 8 23:38:16 2000 +++ linux-2.4.0-test8-pre1.acme/drivers/net/ne.c Fri Sep 1 20:13:37 2000 @@ -18,6 +18,7 @@ Changelog: + Arnaldo Melo : get rid of check_region Paul Gortmaker : use ENISR_RDC to monitor Tx PIO uploads, made sanity checks and bad clone support optional. Paul Gortmaker : new reset code, reset card after probe at boot. @@ -211,8 +212,7 @@ /* Last resort. The semi-risky ISA auto-probe. */ for (base_addr = 0; netcard_portlist[base_addr] != 0; base_addr++) { int ioaddr = netcard_portlist[base_addr]; - if (check_region(ioaddr, NE_IO_EXTENT)) - continue; + if (ne_probe1(dev, ioaddr) == 0) return 0; } @@ -328,13 +328,6 @@ } } - /* We should have a "dev" from Space.c or the static module table. */ - if (dev == NULL) - { - printk(KERN_ERR "ne.c: Passed a NULL device.\n"); - dev = init_etherdev(0, 0); - } - if (ei_debug && version_printed++ == 0) printk(version); @@ -473,6 +466,9 @@ #endif } + if (!request_region(ioaddr, NE_IO_EXTENT, name)) + return -EBUSY; + if (pci_irq_line) dev->irq = pci_irq_line; @@ -519,7 +515,6 @@ } } dev->base_addr = ioaddr; - request_region(ioaddr, NE_IO_EXTENT, name); for(i = 0; i < ETHER_ADDR_LEN; i++) { printk(" %2.2x", SA_prom[i]); - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |