From b1f28efcd3176b0f20e382529c89d283248270fa Mon Sep 17 00:00:00 2001 From: "Mark D. Studebaker" Date: Sun, 24 Aug 2003 15:16:23 +0000 Subject: [PATCH] Fix SMP compilation. Re: Intel 82801DA ICH4 * To: "Alexander Pohl" * Subject: Re: Intel 82801DA ICH4 * From: Jean Delvare * Date: Tue, 22 Jul 2003 23:42:06 +0200 * Cc: sensors@xxxxxxxxxxxxxxxxxxxx * In-reply-to: <32787.62.246.185.231.1058905435.squirrel@mailbox.TU-Berlin.DE> * References: <32803.62.246.166.13.1058892758.squirrel@mailbox.TU-Berlin.DE><20030722191127.7b077828.khali@linux-fr.org><32787.62.246.185.231.1058905435.squirrel@mailbox.TU-Berlin.DE> * Reply-to: sensors@xxxxxxxxxxxxxxxxxxxx > I have some trouble compiling the module p4b_smbus.o and adding > support for the i2c-bus. Adding support for pci-hotplug to my kernel > was successful. > (reference to ticket # 1345) > > Here the compiler output: > > cc -D__SMP__ -DMODVERSIONS -include > /lib/modules/2.4.20-hotplug/build/include/linux/modversions.h > -D__KERNEL__-DMODULE -Wall -Wstrict-prototypes -O2 > -fomit-frame-pointer-fno-strict-aliasing > -I/lib/modules/2.4.20-hotplug/build/include -c -o p4b_smbus.o > p4b_smbus.c p4b_smbus.c: In function `cleanup_module': > p4b_smbus.c:263: incompatible type for argument 1 of `write_lock' > p4b_smbus.c:268: invalid type argument of `->' > make: *** [p4b_smbus.o] Error 1 Strange. I can compile it. I suspect the code isn't SMP-compliant. Try forcing SMP=0 in Makefile.p4b, just to make sure this is the cause of the failure. Once confirmed, Mark D. Studebaker will take a look at it. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1975 7894878c-1315-0410-8ee3-d5d059ff63e0 --- prog/hotplug/p4b_smbus.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/prog/hotplug/p4b_smbus.c b/prog/hotplug/p4b_smbus.c index 959a6a39..9cbb32ed 100644 --- a/prog/hotplug/p4b_smbus.c +++ b/prog/hotplug/p4b_smbus.c @@ -260,12 +260,12 @@ int init_module(void) void cleanup_module(void) { - write_lock_irqsave(i801smbus_lock, i801smbus_lock_flags); + write_lock_irqsave(&i801smbus_lock, i801smbus_lock_flags); if (i801smbus_inserted) { pci_remove_device(i801smbus); i801smbus_inserted = FALSE; } - write_unlock_irqrestore(i801smbus_lock, i801smbus_lock_flags); + write_unlock_irqrestore(&i801smbus_lock, i801smbus_lock_flags); if (NULL != i801smbus) {