svn commit: r234666 - head/sys/dev/msk

[ Available lists | Index of svn-src-head | Month of Apr 2012 | Week of 25 Apr 2012 | Raw email | View thread | Wrap long lines | Reply ]
From
Pyun YongHyeon <yongari@FreeBSD.org>
Date
25 Apr 2012 02:46:14
Subject
svn commit: r234666 - head/sys/dev/msk
Message-ID
201204250246.q3P2kE8f075985@svn.freebsd.org


[ Hide this part ]
Author: yongari
Date: Wed Apr 25 02:46:13 2012
New Revision: 234666
URL: http://svn.freebsd.org/changeset/base/234666

Log:
For Yukon II controllers that implement optional temperature sensor
and voltage sensor, TWSI is used to get sensor data. msk(4) does
not monitor these sensors and interrupt for TWSI completion is
disabled by default.
However, due to unknown reason, the TWSI completion interrupt fires
and it resulted in interrupt storm. To fix it, acknowledges the
TWSI completion interrupt if driver see the event. Given that not
all Yukon II controllers show the issue it could be a silicon bug
which does not honor interrupt masking.

Probably the right way to address the issue is disabling automatic
TWSI cycle initiation against these sensors. It would be even
better to implement reading voltage/temperature from the NIC but it
requires access to National LM80 through TWSI and documentation to
do that is not available yet(probably will never happen).

Reported by: jhb
Tested by: jhb
MFC after: 2 weeks

Modified:
head/sys/dev/msk/if_msk.c

Modified: head/sys/dev/msk/if_msk.c
==============================================================================
--- head/sys/dev/msk/if_msk.c Wed Apr 25 02:05:14 2012 (r234665)
+++ head/sys/dev/msk/if_msk.c Wed Apr 25 02:46:13 2012 (r234666)
@@ -3734,6 +3734,9 @@ msk_intr(void *xsc)
if ((status & Y2_IS_STAT_BMU) != 0 && domore == 0)
CSR_WRITE_4(sc, STAT_CTRL, SC_STAT_CLR_IRQ);

+ /* Clear TWSI IRQ. */
+ if ((status & Y2_IS_TWSI_RDY) != 0)
+ CSR_WRITE_4(sc, B2_I2C_IRQ, 1);
/* Reenable interrupts. */
CSR_WRITE_4(sc, B0_Y2_SP_ICR, 2);


Elapsed time: 0.124 seconds