<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/char/ipmi, branch v4.4</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v4.4</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v4.4'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2015-12-09T19:13:06Z</updated>
<entry>
<title>ipmi: move timer init to before irq is setup</title>
<updated>2015-12-09T19:13:06Z</updated>
<author>
<name>Jan Stancek</name>
<email>jstancek@redhat.com</email>
</author>
<published>2015-12-08T18:57:51Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=27f972d3e00b50639deb4cc1392afaeb08d3cecc'/>
<id>urn:sha1:27f972d3e00b50639deb4cc1392afaeb08d3cecc</id>
<content type='text'>
We encountered a panic on boot in ipmi_si on a dell per320 due to an
uninitialized timer as follows.

static int smi_start_processing(void       *send_info,
                                ipmi_smi_t intf)
{
        /* Try to claim any interrupts. */
        if (new_smi-&gt;irq_setup)
                new_smi-&gt;irq_setup(new_smi);

 --&gt; IRQ arrives here and irq handler tries to modify uninitialized timer

    which triggers BUG_ON(!timer-&gt;function) in __mod_timer().

 Call Trace:
   &lt;IRQ&gt;
   [&lt;ffffffffa0532617&gt;] start_new_msg+0x47/0x80 [ipmi_si]
   [&lt;ffffffffa053269e&gt;] start_check_enables+0x4e/0x60 [ipmi_si]
   [&lt;ffffffffa0532bd8&gt;] smi_event_handler+0x1e8/0x640 [ipmi_si]
   [&lt;ffffffff810f5584&gt;] ? __rcu_process_callbacks+0x54/0x350
   [&lt;ffffffffa053327c&gt;] si_irq_handler+0x3c/0x60 [ipmi_si]
   [&lt;ffffffff810efaf0&gt;] handle_IRQ_event+0x60/0x170
   [&lt;ffffffff810f245e&gt;] handle_edge_irq+0xde/0x180
   [&lt;ffffffff8100fc59&gt;] handle_irq+0x49/0xa0
   [&lt;ffffffff8154643c&gt;] do_IRQ+0x6c/0xf0
   [&lt;ffffffff8100ba53&gt;] ret_from_intr+0x0/0x11

        /* Set up the timer that drives the interface. */
        setup_timer(&amp;new_smi-&gt;si_timer, smi_timeout, (long)new_smi);

The following patch fixes the problem.

To: Openipmi-developer@lists.sourceforge.net
To: Corey Minyard &lt;minyard@acm.org&gt;
CC: linux-kernel@vger.kernel.org

Signed-off-by: Jan Stancek &lt;jstancek@redhat.com&gt;
Signed-off-by: Tony Camuso &lt;tcamuso@redhat.com&gt;
Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
Cc: stable@vger.kernel.org # Applies cleanly to 3.10-, needs small rework before
</content>
</entry>
<entry>
<title>ipmi watchdog : add panic_wdt_timeout parameter</title>
<updated>2015-11-16T12:28:43Z</updated>
<author>
<name>Jean-Yves Faye</name>
<email>jean-yves.faye@c-s.fr</email>
</author>
<published>2015-09-29T09:39:19Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c7f42c63901b964833eb23a9bda873b799e7f308'/>
<id>urn:sha1:c7f42c63901b964833eb23a9bda873b799e7f308</id>
<content type='text'>
In order to allow panic actions to be processed, the ipmi watchdog
driver sets a new timeout value on panic. The 255s timeout
was designed to allow kdump and others actions on panic, as in
http://lkml.iu.edu/hypermail/linux/kernel/0711.3/0258.html

This is counter-intuitive for a end-user who sets watchdog timeout
value to something like 30s and who expects BMC to reset the system
within 30s of a panic.

This commit allows user to configure the timeout on panic.

Signed-off-by: Jean-Yves Faye &lt;jean-yves.faye@c-s.fr&gt;
Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
</content>
</entry>
<entry>
<title>char: ipmi: Move MODULE_DEVICE_TABLE() to follow struct</title>
<updated>2015-11-16T03:08:26Z</updated>
<author>
<name>Luis de Bethencourt</name>
<email>luisbg@osg.samsung.com</email>
</author>
<published>2015-09-19T15:43:23Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=66f44018300c5e6f53c9d30d6920332cf0e6a8f9'/>
<id>urn:sha1:66f44018300c5e6f53c9d30d6920332cf0e6a8f9</id>
<content type='text'>
The policy for drivers is to have MODULE_DEVICE_TABLE() just after the
struct used in it. For clarity.

Suggested-by: Corey Minyard &lt;minyard@acm.org&gt;
Signed-off-by: Luis de Bethencourt &lt;luisbg@osg.samsung.com&gt;
Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
</content>
</entry>
<entry>
<title>ipmi: Stop the timer immediately if idle</title>
<updated>2015-11-16T03:08:26Z</updated>
<author>
<name>Corey Minyard</name>
<email>cminyard@mvista.com</email>
</author>
<published>2015-09-05T22:58:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=314ef52fe67f8f03453b69169f954e2d04679bbd'/>
<id>urn:sha1:314ef52fe67f8f03453b69169f954e2d04679bbd</id>
<content type='text'>
The IPMI driver would let the final timeout just happen, but it could
easily just stop the timer.  If the timer stop fails that's ok, that
should be rare.

Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
</content>
</entry>
<entry>
<title>ipmi: Start the timer and thread on internal msgs</title>
<updated>2015-11-16T03:08:26Z</updated>
<author>
<name>Corey Minyard</name>
<email>cminyard@mvista.com</email>
</author>
<published>2015-09-05T22:44:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0cfec916e86d881e209de4b4ae9959a6271e6660'/>
<id>urn:sha1:0cfec916e86d881e209de4b4ae9959a6271e6660</id>
<content type='text'>
The timer and thread were not being started for internal messages,
so in interrupt mode if something hung the timer would never go
off and clean things up.  Factor out the internal message sending
and start the timer for those messages, too.

Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
Tested-by: Gouji, Masayuki &lt;gouji.masayuki@jp.fujitsu.com&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>char: ipmi: ipmi_ssif: Replace timeval with timespec64</title>
<updated>2015-10-25T02:46:42Z</updated>
<author>
<name>Amitoj Kaur Chawla</name>
<email>amitoj1606@gmail.com</email>
</author>
<published>2015-10-23T19:51:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=526290aa6288e133db18d64c2c175a0a1a58b438'/>
<id>urn:sha1:526290aa6288e133db18d64c2c175a0a1a58b438</id>
<content type='text'>
This patch replaces timeval with timespec64 as 32 bit 'struct timeval'
will not give current time beyond 2038.

The patch changes the code to use ktime_get_real_ts64() which returns
a 'struct timespec64' instead of do_gettimeofday() which returns a
'struct timeval'

This patch also alters the format string in pr_info() for now.tv_sec
to incorporate 'long long' on 32 bit architectures.

Signed-off-by: Amitoj Kaur Chawla &lt;amitoj1606@gmail.com&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>ipmi:ssif: Add a module parm to specify that SMBus alerts don't work</title>
<updated>2015-09-03T20:02:31Z</updated>
<author>
<name>Corey Minyard</name>
<email>cminyard@mvista.com</email>
</author>
<published>2015-08-27T20:49:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=bf2d087749d91e1fa2826edde1e2fd650d3053ca'/>
<id>urn:sha1:bf2d087749d91e1fa2826edde1e2fd650d3053ca</id>
<content type='text'>
They are broken on some platforms, this gives people a chance to work
around it until the firmware is fixed.

Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
</content>
</entry>
<entry>
<title>ipmi: add of_device_id in MODULE_DEVICE_TABLE</title>
<updated>2015-09-03T20:02:31Z</updated>
<author>
<name>Brijesh Singh</name>
<email>brijeshkumar.singh@amd.com</email>
</author>
<published>2015-08-24T14:15:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=acbd9ae70a94bdc626508f444879e19ebe1c421f'/>
<id>urn:sha1:acbd9ae70a94bdc626508f444879e19ebe1c421f</id>
<content type='text'>
Fix autoloading ipmi modules when using device tree.

Signed-off-by: Brijesh Singh &lt;brijeshkumar.singh@amd.com&gt;

Moved this change up into the CONFIG_OF section to account
for changes to the probing code.

Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
</content>
</entry>
<entry>
<title>ipmi: Compensate for BMCs that wont set the irq enable bit</title>
<updated>2015-09-03T20:02:30Z</updated>
<author>
<name>Corey Minyard</name>
<email>cminyard@mvista.com</email>
</author>
<published>2015-08-18T19:29:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=d08828973d96eb26e48fb7ca8fb8a8d49adbe53a'/>
<id>urn:sha1:d08828973d96eb26e48fb7ca8fb8a8d49adbe53a</id>
<content type='text'>
It appears that some BMCs support interrupts but don't support setting
the irq enable bits.  The interrupts are just always on.  Sigh.
Add code to compensate.

The new code was very similar to another functions, so this also
factors out the common code into other functions.

Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
Tested-by: Henrik Korkuc &lt;henrik@kirneh.eu&gt;
</content>
</entry>
<entry>
<title>ipmi: Don't call receive handler in the panic context</title>
<updated>2015-09-03T20:02:29Z</updated>
<author>
<name>Hidehiro Kawai</name>
<email>hidehiro.kawai.ez@hitachi.com</email>
</author>
<published>2015-07-27T05:55:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c49c097610fe1aabf86111297280a718abb5dcc2'/>
<id>urn:sha1:c49c097610fe1aabf86111297280a718abb5dcc2</id>
<content type='text'>
Received handlers defined as ipmi_recv_hndl member of struct
ipmi_user_hndl can take a spinlock.  This means that if the kernel
panics while holding the lock, a deadlock may happen on the lock
while flushing queued messages in the panic context.

Calling the receive handler doesn't make much meanings in the panic
context, simply skip it to avoid possible deadlocks.

Signed-off-by: Hidehiro Kawai &lt;hidehiro.kawai.ez@hitachi.com&gt;
Signed-off-by: Corey Minyard &lt;cminyard@mvista.com&gt;
</content>
</entry>
</feed>
