Messages in this thread | | | From | Sergey Vlasov <> | Subject | Re: hpt366-0.37.patch.bz2 K.O. | Date | Fri, 19 Mar 2004 20:23:35 +0300 |
| |
On Fri, 19 Mar 2004 04:53:22 -0800 (PST) Andre Hedrick wrote:
> http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.4.25/hpt366-0.37.patch.bz2 > > Fixes fifo dma data corruption on RocketRaid404 > Fixes native HPT372 detection/setup for HPT372/HPT372A/HPT372N > > HPT372N's previous code seems kooky, but then again do not have specific > hardware rev in question.
static void __init init_setup_hpt37x (struct pci_dev *dev, ide_pci_device_t *d) { + if (d->device == PCI_DEVICE_ID_TTI_HPT372) { + unsigned int class_rev; + static char *chipset_names[] = {"HPT372", "HPT372A", "HPT372N"}; + + pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); + class_rev &= 0xff; + d->name = chipset_names[class_rev]; + } + ide_setup_pci_device(dev, d); }
This will blow up if a chip with the same PCI ID and a revision larger than 2 ever appears.
Also, hpt366_init_one() is __devinit, but it calls d->init_setup, and all init_setup_*() functions are __init - does not look good. Hmm, this is present in many drivers, also in 2.6.x... apparently this is safe because such devices cannot be hotplugged. [unhandled content-type:application/pgp-signature] | |