--- linux-2.6.21.5.orig/drivers/serial/8250_pci.c 2007-04-26 06:08:32.000000000 +0300 +++ linux-2.6.21.5/drivers/serial/8250_pci.c 2007-07-05 17:26:32.000000000 +0300 @@ -1513,6 +1513,11 @@ }, }; +static const struct pci_device_id softmodem_blacklist[] = { + { PCI_VDEVICE ( AL, 0x5457 ), }, /* ALi Corporation M5457 AC'97 Modem */ + { } +}; + /* * Given a complete unknown PCI device, try to use some heuristics to * guess what the configuration might be, based on the pitiful PCI @@ -1521,6 +1526,7 @@ static int __devinit serial_pci_guess_board(struct pci_dev *dev, struct pciserial_board *board) { + const struct pci_device_id * blacklist; int num_iomem, num_port, first_port = -1, i; /* @@ -1535,6 +1541,16 @@ (dev->class & 0xff) > 6) return -ENODEV; + /* + * Do not access blacklisted devices that are known not to + * feature serial ports. + */ + for (blacklist = softmodem_blacklist; blacklist->vendor; blacklist++) { + if ((dev->vendor == blacklist->vendor) && + (dev->device == blacklist->device)) + return -ENODEV; + } + num_iomem = num_port = 0; for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) { if (pci_resource_flags(dev, i) & IORESOURCE_IO) {