[lm-sensors] [PATCH] i2c-piix4: Blacklist two mainboards
Achim Gottinger
achim at ag-web.biz
Mon May 12 15:32:26 CEST 2008
Jean Delvare schrieb:
> On Sun, 4 May 2008 18:30:48 +0200, Jean Delvare wrote:
>
>> We had a report that running sensors-detect on a Sapphire AM2RD790
>> motherbord killed the CPU. While the exact cause is still unknown,
>> I'd rather play it safe and prevent any access to the SMBus on that
>> machine by not letting the i2c-piix4 driver attach to the SMBus host
>> device on that machine. Also blacklist a similar board made by DFI.
>>
>> Signed-off-by: Jean Delvare <khali at linux-fr.org>
>> ---
>> Previous version was broken, sorry.
>>
>> drivers/i2c/busses/i2c-piix4.c | 32 ++++++++++++++++++++++++++++++--
>> 1 file changed, 30 insertions(+), 2 deletions(-)
>>
>> --- linux-2.6.25.orig/drivers/i2c/busses/i2c-piix4.c 2008-04-19 11:11:56.000000000 +0200
>> +++ linux-2.6.25/drivers/i2c/busses/i2c-piix4.c 2008-05-04 09:56:00.000000000 +0200
>> @@ -108,7 +108,27 @@ static unsigned short piix4_smba;
>> static struct pci_driver piix4_driver;
>> static struct i2c_adapter piix4_adapter;
>>
>> -static struct dmi_system_id __devinitdata piix4_dmi_table[] = {
>> +static struct dmi_system_id __devinitdata piix4_dmi_blacklist[] = {
>> + {
>> + .ident = "Sapphire AM2RD790",
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "SAPPHIRE Inc."),
>> + DMI_MATCH(DMI_BOARD_NAME, "PC-AM2RD790"),
>> + },
>> + },
>> + {
>> + .ident = "DFI Lanparty UT 790FX",
>> + .matches = {
>> + DMI_MATCH(DMI_BOARD_VENDOR, "DFI Inc."),
>> + DMI_MATCH(DMI_BOARD_NAME, "LP UT 790FX"),
>> + },
>> + },
>> + { }
>> +};
>> +
>> +/* The IBM entry is in a separate table because we only check it
>> + on Intel-based systems */
>> +static struct dmi_system_id __devinitdata piix4_dmi_ibm[] = {
>> {
>> .ident = "IBM",
>> .matches = { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), },
>> @@ -123,8 +143,16 @@ static int __devinit piix4_setup(struct
>>
>> dev_info(&PIIX4_dev->dev, "Found %s device\n", pci_name(PIIX4_dev));
>>
>> + /* On some motherboards, it was reported that accessing the SMBus
>> + caused severe hardware problems */
>> + if (dmi_check_system(piix4_dmi_blacklist)) {
>> + dev_err(&PIIX4_dev->dev,
>> + "Accessing the SMBus on this system is unsafe!\n");
>> + return -EPERM;
>> + }
>> +
>> /* Don't access SMBus on IBM systems which get corrupted eeproms */
>> - if (dmi_check_system(piix4_dmi_table) &&
>> + if (dmi_check_system(piix4_dmi_ibm) &&
>> PIIX4_dev->vendor == PCI_VENDOR_ID_INTEL) {
>> dev_err(&PIIX4_dev->dev, "IBM system detected; this module "
>> "may corrupt your serial eeprom! Refusing to load "
>>
>>
>
> Achim, did you have a chance to give a try to this patch? I understand
> that you don't want to apply it permanently while you're still having
> fun with the I2C devices on the SMBus, but if you could still test it
> and report whether it works as intended, that would be great. This
> patch is in kernel 2.6.26-rc2 now, I would like to backport it to
> 2.6.25.y, but before I do I'd like to have at least one positive test
> result.
>
> Thanks,
>
Test positive:
piix4_smbus 0000:00:14.0: Found 0000:00:14.0 device
piix4_smbus 0000:00:14.0: Accessing the SMBus on this system is unsafe!
piix4_smbus: probe of 0000:00:14.0 failed with error -1
But the i2c-piix4 module never made a problem it was only sensors-detect.
About that overclocking module i'm working on. I moved all my kernel
stuff into a new dir called hwmod and made a modified hwmod.c from
hwmon.c. Made all the required modifications
on Kconfig and Makefile and stuff works fine. Devices use their own
class /sysfs/class/hwmod.
I also added a new adapter class I2C_CLASS_HWMOD = (1<<7). To use the
i2c-piix4 module i had to add that class id to the i2c_adapter struct in
there.
I see no requirement to write separate modules for the smbus
controllers. I guess there is way to use I2C_CLASS_HWMON adapters for
devices ending up in /sysfs/class/hwmod, till i figured out how i'll
simply patch i2c-piix4.
More information about the lm-sensors
mailing list