summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>1999-06-04 18:13:25 +0000
committerbde <bde@FreeBSD.org>1999-06-04 18:13:25 +0000
commit2906737cf248c4a0aef37bddec86e73fb4c52108 (patch)
treeea3097ccb47cfa58330bbf258d67bfa7977a12f2 /sys
parent73eda783191f8728be54aa4d899462a5dd15586d (diff)
downloadFreeBSD-src-2906737cf248c4a0aef37bddec86e73fb4c52108.zip
FreeBSD-src-2906737cf248c4a0aef37bddec86e73fb4c52108.tar.gz
Really fix cy-driver-related panics when SMP is configured. Rev.1.88 only
fixed half the problem. Tested by: Michael Scott Boers <mboers@datacompusa.com>
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/cy/cy.c8
-rw-r--r--sys/dev/cy/cy_isa.c8
-rw-r--r--sys/i386/isa/cy.c8
3 files changed, 15 insertions, 9 deletions
diff --git a/sys/dev/cy/cy.c b/sys/dev/cy/cy.c
index dd98d7a..48ecb9f 100644
--- a/sys/dev/cy/cy.c
+++ b/sys/dev/cy/cy.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.89 1999/05/30 16:52:11 phk Exp $
+ * $Id: cy.c,v 1.90 1999/05/31 11:25:57 phk Exp $
*/
#include "opt_compat.h"
@@ -2853,7 +2853,8 @@ cd_getreg(com, reg)
if (basecom->car != car)
cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car);
val = cd_inb(iobase, reg, cy_align);
- write_eflags(ef);
+ if (ef & PSL_I)
+ enable_intr();
return (val);
}
@@ -2879,7 +2880,8 @@ cd_setreg(com, reg, val)
if (basecom->car != car)
cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car);
cd_outb(iobase, reg, cy_align, val);
- write_eflags(ef);
+ if (ef & PSL_I)
+ enable_intr();
}
#ifdef CyDebug
diff --git a/sys/dev/cy/cy_isa.c b/sys/dev/cy/cy_isa.c
index dd98d7a..48ecb9f 100644
--- a/sys/dev/cy/cy_isa.c
+++ b/sys/dev/cy/cy_isa.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.89 1999/05/30 16:52:11 phk Exp $
+ * $Id: cy.c,v 1.90 1999/05/31 11:25:57 phk Exp $
*/
#include "opt_compat.h"
@@ -2853,7 +2853,8 @@ cd_getreg(com, reg)
if (basecom->car != car)
cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car);
val = cd_inb(iobase, reg, cy_align);
- write_eflags(ef);
+ if (ef & PSL_I)
+ enable_intr();
return (val);
}
@@ -2879,7 +2880,8 @@ cd_setreg(com, reg, val)
if (basecom->car != car)
cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car);
cd_outb(iobase, reg, cy_align, val);
- write_eflags(ef);
+ if (ef & PSL_I)
+ enable_intr();
}
#ifdef CyDebug
diff --git a/sys/i386/isa/cy.c b/sys/i386/isa/cy.c
index dd98d7a..48ecb9f 100644
--- a/sys/i386/isa/cy.c
+++ b/sys/i386/isa/cy.c
@@ -27,7 +27,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: cy.c,v 1.89 1999/05/30 16:52:11 phk Exp $
+ * $Id: cy.c,v 1.90 1999/05/31 11:25:57 phk Exp $
*/
#include "opt_compat.h"
@@ -2853,7 +2853,8 @@ cd_getreg(com, reg)
if (basecom->car != car)
cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car);
val = cd_inb(iobase, reg, cy_align);
- write_eflags(ef);
+ if (ef & PSL_I)
+ enable_intr();
return (val);
}
@@ -2879,7 +2880,8 @@ cd_setreg(com, reg, val)
if (basecom->car != car)
cd_outb(iobase, CD1400_CAR, cy_align, basecom->car = car);
cd_outb(iobase, reg, cy_align, val);
- write_eflags(ef);
+ if (ef & PSL_I)
+ enable_intr();
}
#ifdef CyDebug
OpenPOWER on IntegriCloud