Disable drivers being assigned to specific PCI device


i have a tough problem.
I have OpenSuse 10.2 installed and a SurePos700
IBM terminal. The terminal has a onboard (IBM) serial controller with 6 16550A devices.
The boot-up naturally identifies them so
I have 8 /dev/ttySx together with the 2 on the mobo.

But I need to get rid of the ones provided by
the IBM serial controller as I don’t use them
but I have 4 more TTYs on a PCI card which
I must use (and I don’t want to increase
nr_uarts to 12 + recompile the kernel).

Can you give me a solution to blacklist
a PCI device so that no 8250 is being assigned
to? (Naturally I am able to get the vendor/product id via lspci -vvnn).

I answer my own question then
The steps:

  • compile the devices’s driver as module into
    the kernel (thus devices driven by build-in drivers cannot be disabled with this method)

  • find the ATTR{modalias} of the device
    within udevinfo (find /sys -name devname(like ttyS2, i.e. without /dev/), it print a /sys/class alike name, usa that as an argument for udevinfo -a -p)

  • add :
    ‘alias “modalias” (i.e. the pci:… stuff) skip_driver’
    ‘install skip_driver /bin/echo “skipping driver”’
    to the end of blacklist within /etc/modprobe.d

  • reboot