On Monday 15 January 2007 12:22, Pietro Cerutti wrote: > Hello, > this is a reproducible kernel page-fault crash on stable as of 1h ago: > > FreeBSD gahrtop.localhost 6.2-STABLE FreeBSD 6.2-STABLE #4: Mon Jan 15 > 11:24:56 CET 2007 > [EMAIL PROTECTED]:/usr/obj/usr/src/sys/GAHRTOP i386 > > 1) atacontrol list > ATA channel 0: > Master: ad0 <FUJITSU MHW2120BH/00000012> Serial ATA v1.0 > Slave: no device present > ATA channel 1: > Master: no device present > Slave: acd0 <HL-DT-ST DVDRAM GSA-T10N/PA02> ATA/ATAPI revision 5 > > 2) -> plug in USB stick (microspot 256MB USB2.0) > > 3) atacontrol list > ATA channel 0: > Master: ad0 <FUJITSU MHW2120BH/00000012> Serial ATA v1.0 > Slave: no device present > ATA channel 1: > Master: no device present > Slave: acd0 <HL-DT-ST DVDRAM GSA-T10N/PA02> ATA/ATAPI revision 5 > ATA channel 2: > Master: no device present > Slave: no device present > > 4) atacontrol attach ata2
This is a known issue that SOS should fix. If you look into the code of "ata_attach()" you will see that it tries to do things that are not allowed by USB devices, like allocating an IRQ: int ata_attach(device_t dev) { struct ata_channel *ch = device_get_softc(dev); int error, rid; /* check that we have a virgin channel to attach */ if (ch->r_irq) return EEXIST; /* initialize the softc basics */ ch->dev = dev; ch->state = ATA_IDLE; bzero(&ch->state_mtx, sizeof(struct mtx)); mtx_init(&ch->state_mtx, "ATA state lock", NULL, MTX_DEF); bzero(&ch->queue_mtx, sizeof(struct mtx)); mtx_init(&ch->queue_mtx, "ATA queue lock", NULL, MTX_DEF); TAILQ_INIT(&ch->ata_queue); /* reset the controller HW, the channel and device(s) */ while (ATA_LOCKING(dev, ATA_LF_LOCK) != ch->unit) tsleep(&error, PRIBIO, "ataatch", 1); ATA_RESET(dev); ATA_LOCKING(dev, ATA_LF_UNLOCK); /* setup interrupt delivery */ rid = ATA_IRQ_RID; ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, &rid, RF_SHAREABLE | RF_ACTIVE); if (!ch->r_irq) { device_printf(dev, "unable to allocate interrupt\n"); return ENXIO; } if ((error = bus_setup_intr(dev, ch->r_irq, ATA_INTR_FLAGS, (driver_intr_t *)ata_interrupt, ch, &ch->ih))) { device_printf(dev, "unable to setup interrupt\n"); return error; } /* probe and attach devices on this channel unless we are in early boot */ if (!ata_delayed_attach) ata_identify(dev); return 0; } Same with "ata_detach()". > > last one: why atausb doesn't have a manual page?? Probably the device driver is too new. --HPS _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"