can someone test this?

cheers,
dlg

Index: arc.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/arc.c,v
retrieving revision 1.103
diff -u -p -r1.103 arc.c
--- arc.c       13 Jul 2014 23:10:23 -0000      1.103
+++ arc.c       9 Sep 2014 05:52:14 -0000
@@ -29,6 +29,7 @@
 #include <sys/mutex.h>
 #include <sys/device.h>
 #include <sys/rwlock.h>
+#include <sys/task.h>
 
 #include <machine/bus.h>
 
@@ -824,9 +825,13 @@ arc_attach(struct device *parent, struct
         * interface relies on being able to sleep, so we need to use a thread
         * to do the work.
         */
-       if (scsi_task(arc_create_sensors, sc, NULL, 1) != 0)
-               printf("%s: unable to schedule arc_create_sensors as a "
-                   "scsi task", DEVNAME(sc));
+       {
+               struct task *t;
+               t = malloc(sizeof(*t), M_TEMP, M_WAITOK);
+
+               task_set(t, arc_create_sensors, sc, t);
+               task_add(systq, t);
+       }
 #endif
 #endif
 
@@ -2596,12 +2601,15 @@ arc_wait(struct arc_softc *sc)
 
 #ifndef SMALL_KERNEL
 void
-arc_create_sensors(void *xsc, void *arg)
+arc_create_sensors(void *xsc, void *xt)
 {
        struct arc_softc        *sc = xsc;
+       struct task             *t = xt;
        struct bioc_inq         bi;
        struct bioc_vol         bv;
        int                     i;
+
+       free(t, M_TEMP, sizeof(*t));
 
        DPRINTF("%s: arc_create_sensors\n", DEVNAME(sc));
        /*

Reply via email to