public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Corey Minyard <minyard@acm.org>
To: Adrian Bunk <bunk@fs.tum.de>
Cc: Andrew Morton <akpm@osdl.org>,
	linux-kernel@vger.kernel.org, "Davis,
	Todd C" <todd.c.davis@intel.com>
Subject: Re: 2.6.4-rc2-mm1: IPMI_SMB doesnt compile
Date: Wed, 10 Mar 2004 10:01:07 -0600	[thread overview]
Message-ID: <404F3BC3.2090906@acm.org> (raw)
In-Reply-To: <20040309013917.GH14833@fs.tum.de>

[-- Attachment #1: Type: text/plain, Size: 1909 bytes --]

You need to run off the panic events, the config flag IPMI_PANIC_EVENT, 
and it should compile fine.  This is a flag that causes the driver to 
put some information about the panic into an event log in the IPMI 
controller so it can be fetched later.

To do this, the driver needs a way to run each operation to completion 
without scheduling, interrupts. or the like.  It needs this to do send 
the panic event (since you cannot schedule during a panic), although it 
also really needs it to do things like extend the watchdog timer time at 
panic time.  The I2C driver does not currently have this, so it doesn't 
work with this option and the SMBus driver.

I have included a patch from Todd Davis at Intel that adds this function 
to the I2C driver.  I believe Todd has been working on getting this in 
through the I2C driver writers, although the patch is fairly non-intrusive.

However, I have no real way to test this patch.

-Corey

Adrian Bunk wrote:

>On Sun, Mar 07, 2004 at 10:32:21PM -0800, Andrew Morton wrote:
>  
>
>>... 
>>+ipmi-updates-3.patch
>>+ipmi-socket-interface.patch
>>
>> IPMI driver updates
>>...
>>    
>>
>
>This causes the following compile error:
>
><--  snip  -->
>
>...
>  CC      drivers/char/ipmi/ipmi_smb.o
>drivers/char/ipmi/ipmi_smb.c: In function `smbus_client_read_block_data':
>drivers/char/ipmi/ipmi_smb.c:224: warning: implicit declaration of 
>function `i2c_set_spin_delay'
>...
>  LD      .tmp_vmlinux1
>drivers/built-in.o(.text+0x1342eb): In function 
>`smbus_client_read_block_data':
>: undefined reference to `i2c_set_spin_delay'
>drivers/built-in.o(.text+0x13448d): In function 
>`smbus_client_write_block_data':
>: undefined reference to `i2c_set_spin_delay'
>drivers/built-in.o(.text+0x134b7f): In function `set_run_to_completion':
>: undefined reference to `i2c_set_spin_delay'
>make: *** [.tmp_vmlinux1] Error 1
>
><--  snip  -->
>
>
>cu
>Adrian
>
>  
>


[-- Attachment #2: linux-ipmi-2.6.3-i2c-spin.diff --]
[-- Type: text/plain, Size: 1562 bytes --]

--- linux-v31/drivers/i2c/i2c-core.c	2004-02-19 19:31:07.000000000 -0600
+++ linux/drivers/i2c/i2c-core.c	2004-03-10 09:48:08.000000000 -0600
@@ -1256,6 +1256,12 @@
 	return (func & adap_func) == func;
 }
 
+int i2c_spin_delay;
+void i2c_set_spin_delay(int val)
+{
+	i2c_spin_delay = val;
+}
+
 EXPORT_SYMBOL(i2c_add_adapter);
 EXPORT_SYMBOL(i2c_del_adapter);
 EXPORT_SYMBOL(i2c_add_driver);
@@ -1292,6 +1298,8 @@
 
 EXPORT_SYMBOL(i2c_get_functionality);
 EXPORT_SYMBOL(i2c_check_functionality);
+EXPORT_SYMBOL(i2c_set_spin_delay);
+EXPORT_SYMBOL(i2c_spin_delay);
 
 MODULE_AUTHOR("Simon G. Vogl <simon@tk.uni-linz.ac.at>");
 MODULE_DESCRIPTION("I2C-Bus main module");
--- linux-v31/include/linux/i2c.h	2003-12-17 20:58:16.000000000 -0600
+++ linux/include/linux/i2c.h	2004-03-10 09:47:21.000000000 -0600
@@ -600,10 +600,24 @@
         ((adapptr)->algo->id == I2C_ALGO_ISA)
 
 /* Tiny delay function used by the i2c bus drivers */
+
+extern void i2c_set_spin_delay(int val);
+extern int i2c_spin_delay;
+#include <asm/delay.h>
 static inline void i2c_delay(signed long timeout)
 {
-	set_current_state(TASK_INTERRUPTIBLE);
-	schedule_timeout(timeout);
+	if( i2c_spin_delay ) {
+		/* spin delay is needed for panic threads and
+		   shutdowns to avoid processing switching so IPMI
+		   messages can be sent to the Baseboard Management
+		   Controllers on the SMBus*/
+		int i;
+		for( i=0 ; i<100 ; i++ )
+			udelay(timeout*(1000000/HZ/100));
+	} else {
+		set_current_state(TASK_INTERRUPTIBLE);
+		schedule_timeout(timeout);
+	}
 }
 
 #endif /* _LINUX_I2C_H */

  reply	other threads:[~2004-03-10 16:01 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-08  6:32 2.6.4-rc2-mm1 Andrew Morton
2004-03-08 16:20 ` 2.6.4-rc2-mm1 (compile stats) John Cherry
2004-03-13 14:26   ` Paul Dickson
2004-03-08 19:44 ` 2.6.4-rc2-mm1 Thomas Schlichter
2004-03-08 20:05 ` 2.6.4-rc2-mm1 Thomas Schlichter
2004-03-08 22:49   ` 2.6.4-rc2-mm1 Greg KH
2004-03-08 20:05 ` 2.6.4-rc2-mm1 Christian Borntraeger
2004-03-08 22:00 ` 2.6.4-rc2-mm1 Valdis.Kletnieks
2004-03-09  1:39 ` 2.6.4-rc2-mm1: IPMI_SMB doesnt compile Adrian Bunk
2004-03-10 16:01   ` Corey Minyard [this message]
2004-03-10 18:51     ` Adrian Bunk
2004-03-10 19:06       ` Greg KH
2004-03-10 20:47         ` Corey Minyard
2004-03-10 21:12           ` Greg KH
2004-03-10 19:11       ` Corey Minyard
2004-03-10 18:57     ` Greg KH
2004-03-09  4:44 ` 2.6.4-rc2-mm1 Valdis.Kletnieks
2004-03-09 20:07 ` [BUG] in generic.c, unloading alsa [Re: 2.6.4-rc2-mm1] Malte Schröder
2004-03-09 22:39   ` Andrew Morton
  -- strict thread matches above, loose matches on Subject: below --
2004-03-10 19:50 2.6.4-rc2-mm1: IPMI_SMB doesnt compile Davis, Todd C
2004-03-10 21:20 ` Denis Vlasenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=404F3BC3.2090906@acm.org \
    --to=minyard@acm.org \
    --cc=akpm@osdl.org \
    --cc=bunk@fs.tum.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=todd.c.davis@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox