Module Name: src Committed By: jdolecek Date: Wed Jun 21 19:21:25 UTC 2017
Modified Files: src/sys/dev/ata [jdolecek-ncq]: atavar.h src/sys/dev/ic [jdolecek-ncq]: wdc.c src/sys/dev/isa [jdolecek-ncq]: wdc_isa.c src/sys/dev/pcmcia [jdolecek-ncq]: wdc_pcmcia.c Log Message: actually remove the KASSERT() for queue_active in wdc.c as it's superfluous, and make struct ata_queue completly opaque to attachment code; fix two other places which were not converted to ata_queue_alloc() which were surfaced by this change To generate a diff of this commit: cvs rdiff -u -r1.92.8.11 -r1.92.8.12 src/sys/dev/ata/atavar.h cvs rdiff -u -r1.283.2.7 -r1.283.2.8 src/sys/dev/ic/wdc.c cvs rdiff -u -r1.59 -r1.59.28.1 src/sys/dev/isa/wdc_isa.c cvs rdiff -u -r1.124 -r1.124.18.1 src/sys/dev/pcmcia/wdc_pcmcia.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/ata/atavar.h diff -u src/sys/dev/ata/atavar.h:1.92.8.11 src/sys/dev/ata/atavar.h:1.92.8.12 --- src/sys/dev/ata/atavar.h:1.92.8.11 Tue Jun 20 20:58:22 2017 +++ src/sys/dev/ata/atavar.h Wed Jun 21 19:21:25 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: atavar.h,v 1.92.8.11 2017/06/20 20:58:22 jdolecek Exp $ */ +/* $NetBSD: atavar.h,v 1.92.8.12 2017/06/21 19:21:25 jdolecek Exp $ */ /* * Copyright (c) 1998, 2001 Manuel Bouyer. @@ -191,12 +191,14 @@ struct ata_xfer { #define ATA_MAX_OPENINGS 31 /* Per-channel queue of ata_xfers */ +#ifndef ATABUS_PRIVATE +struct ata_queue; +#else struct ata_queue { int8_t queue_flags; /* flags for this queue */ #define QF_IDLE_WAIT 0x01 /* someone wants the controller idle */ #define QF_NEED_XFER 0x02 /* someone wants xfer */ int8_t queue_active; /* number of active transfers */ -#ifdef ATABUS_PRIVATE int8_t queue_openings; /* max number of active xfers */ TAILQ_HEAD(, ata_xfer) queue_xfer; /* queue of pending commands */ int queue_freeze; /* freeze count for the queue */ @@ -205,8 +207,8 @@ struct ata_queue { uint32_t active_xfers_used; /* mask of active commands */ uint32_t queue_xfers_avail; /* available xfers mask */ struct ata_xfer queue_xfers[0]; /* xfers */ -#endif }; +#endif /* ATA bus instance state information. */ struct atabus_softc { Index: src/sys/dev/ic/wdc.c diff -u src/sys/dev/ic/wdc.c:1.283.2.7 src/sys/dev/ic/wdc.c:1.283.2.8 --- src/sys/dev/ic/wdc.c:1.283.2.7 Tue Jun 20 20:58:22 2017 +++ src/sys/dev/ic/wdc.c Wed Jun 21 19:21:25 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: wdc.c,v 1.283.2.7 2017/06/20 20:58:22 jdolecek Exp $ */ +/* $NetBSD: wdc.c,v 1.283.2.8 2017/06/21 19:21:25 jdolecek Exp $ */ /* * Copyright (c) 1998, 2001, 2003 Manuel Bouyer. All rights reserved. @@ -58,7 +58,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: wdc.c,v 1.283.2.7 2017/06/20 20:58:22 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wdc.c,v 1.283.2.8 2017/06/21 19:21:25 jdolecek Exp $"); #include "opt_ata.h" #include "opt_wdc.h" @@ -873,7 +873,6 @@ wdcintr(void *arg) } ATADEBUG_PRINT(("wdcintr\n"), DEBUG_INTR); - KASSERT(chp->ch_queue->queue_active == 1); xfer = ata_queue_get_active_xfer(chp->ch_queue); KASSERT(xfer != NULL); #ifdef DIAGNOSTIC Index: src/sys/dev/isa/wdc_isa.c diff -u src/sys/dev/isa/wdc_isa.c:1.59 src/sys/dev/isa/wdc_isa.c:1.59.28.1 --- src/sys/dev/isa/wdc_isa.c:1.59 Tue Jul 31 15:50:35 2012 +++ src/sys/dev/isa/wdc_isa.c Wed Jun 21 19:21:25 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: wdc_isa.c,v 1.59 2012/07/31 15:50:35 bouyer Exp $ */ +/* $NetBSD: wdc_isa.c,v 1.59.28.1 2017/06/21 19:21:25 jdolecek Exp $ */ /*- * Copyright (c) 1998, 2003 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: wdc_isa.c,v 1.59 2012/07/31 15:50:35 bouyer Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wdc_isa.c,v 1.59.28.1 2017/06/21 19:21:25 jdolecek Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -60,7 +60,6 @@ struct wdc_isa_softc { struct wdc_softc sc_wdcdev; struct ata_channel *wdc_chanlist[1]; struct ata_channel ata_channel; - struct ata_queue wdc_chqueue; struct wdc_regs wdc_regs; isa_chipset_tag_t sc_ic; void *sc_ih; @@ -227,7 +226,7 @@ wdc_isa_attach(device_t parent, device_t sc->sc_wdcdev.wdc_maxdrives = 2; sc->ata_channel.ch_channel = 0; sc->ata_channel.ch_atac = &sc->sc_wdcdev.sc_atac; - sc->ata_channel.ch_queue = &sc->wdc_chqueue; + sc->ata_channel.ch_queue = ata_queue_alloc(1); wdc_init_shadow_regs(&sc->ata_channel); aprint_normal("\n"); Index: src/sys/dev/pcmcia/wdc_pcmcia.c diff -u src/sys/dev/pcmcia/wdc_pcmcia.c:1.124 src/sys/dev/pcmcia/wdc_pcmcia.c:1.124.18.1 --- src/sys/dev/pcmcia/wdc_pcmcia.c:1.124 Sat Oct 12 16:49:01 2013 +++ src/sys/dev/pcmcia/wdc_pcmcia.c Wed Jun 21 19:21:25 2017 @@ -1,4 +1,4 @@ -/* $NetBSD: wdc_pcmcia.c,v 1.124 2013/10/12 16:49:01 christos Exp $ */ +/* $NetBSD: wdc_pcmcia.c,v 1.124.18.1 2017/06/21 19:21:25 jdolecek Exp $ */ /*- * Copyright (c) 1998, 2003, 2004 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: wdc_pcmcia.c,v 1.124 2013/10/12 16:49:01 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wdc_pcmcia.c,v 1.124.18.1 2017/06/21 19:21:25 jdolecek Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -65,7 +65,6 @@ struct wdc_pcmcia_softc { struct wdc_softc sc_wdcdev; struct ata_channel *wdc_chanlist[1]; struct ata_channel ata_channel; - struct ata_queue wdc_chqueue; struct wdc_regs wdc_regs; struct pcmcia_function *sc_pf; @@ -296,7 +295,7 @@ wdc_pcmcia_attach(device_t parent, devic sc->sc_wdcdev.sc_atac.atac_nchannels = 1; sc->ata_channel.ch_channel = 0; sc->ata_channel.ch_atac = &sc->sc_wdcdev.sc_atac; - sc->ata_channel.ch_queue = &sc->wdc_chqueue; + sc->ata_channel.ch_queue = ata_queue_alloc(1); wdcp = pcmcia_product_lookup(pa, wdc_pcmcia_products, wdc_pcmcia_nproducts, sizeof(wdc_pcmcia_products[0]), NULL); sc->sc_wdcdev.wdc_maxdrives = wdcp ? wdcp->wdc_ndrive : 2;