Subject: Re: 'wdc0 at isa0...' panics in -current
To: Manuel Bouyer <bouyer@antioche.eu.org>
From: Jared D. McNeill <jmcneill@invisible.yi.org>
List: port-i386
Date: 01/14/2002 16:58:03
Manuel Bouyer wrote:

>Can you try to compile with DDB and see where it fails ?
>
The panic is due to chp->wdc being dereferences in a certain place even 
if it is NULL. The appended patch worked for me, but it's not an ideal 
solution.

Jared


Index: wdc.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/ic/wdc.c,v
retrieving revision 1.107
diff -u -r1.107 wdc.c
--- wdc.c       2002/01/07 22:11:17     1.107
+++ wdc.c       2002/01/14 20:58:55
@@ -242,7 +242,8 @@
        bus_space_write_1(chp->ctl_iot, chp->ctl_ioh, wd_aux_ctlr, 
WDCTL_4BIT);
        delay(10);
 
-       ret_value = __wdcwait_reset(chp, ret_value);
+       if (chp->wdc)
+               ret_value = __wdcwait_reset(chp, ret_value);
        WDCDEBUG_PRINT(("%s:%d: after reset, ret_value=0x%d\n",
            chp->wdc ? chp->wdc->sc_dev.dv_xname : "wdcprobe", chp->channel,
            ret_value), DEBUG_PROBE);
@@ -276,7 +277,7 @@
                            chp->channel, drive), DEBUG_PROBE);
                        break;
                }
-               if (chp->wdc->cap & WDC_CAPABILITY_SELECT)
+               if (chp->wdc && chp->wdc->cap & WDC_CAPABILITY_SELECT)
                        chp->wdc->select(chp,drive);
                bus_space_write_1(chp->cmd_iot, chp->cmd_ioh, wd_sdh,
                    WDSD_IBM | (drive << 4));