I'm still wondering why this function in parport_pc.c rejects dma values of zero. Is DMA0 not usable by the parallel port for some reason? I should think that if the PnP BIOS returns a dma of zero then it means that the parallel port is using DMA0. Sorry if I'm being obtuse. // Thomas Hood parport_pc.c line 2799: int init_pnp040x(struct pci_dev *dev) { int io,iohi,irq,dma; io=dev->resource[0].start; iohi=dev->resource[1].start; irq=dev->irq_resource[0].start; dma=dev->dma_resource[0].start; if(dma==0) dma=-1; <--- Why? printk(KERN_INFO "PnPBIOS: Parport found %s %s at io=%04x,%04x irq=%d dma=%d\n", dev->name,dev->slot_name,io,iohi,irq,dma); if (parport_pc_probe_port(io,iohi,irq,dma,NULL)) return 1; return 0; }