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;