PERFORCE change 53440 for review
Robert Watson
rwatson at FreeBSD.org
Mon May 24 18:26:12 PDT 2004
http://perforce.freebsd.org/chv.cgi?CH=53440
Change 53440 by rwatson at rwatson_paprika on 2004/05/24 18:25:23
Integrate netperf_socket forward to FreeBSD CVS HEAD. Changes
include:
- bde fixes more of amd64 profiling
- PCI changes to avoid writing to read-only registers.
- ISP driver grows target mode.
Affected files ...
.. //depot/projects/netperf_socket/sys/amd64/amd64/apic_vector.S#4 integrate
.. //depot/projects/netperf_socket/sys/amd64/amd64/exception.S#4 integrate
.. //depot/projects/netperf_socket/sys/amd64/ia32/ia32_exception.S#3 integrate
.. //depot/projects/netperf_socket/sys/amd64/isa/atpic_vector.S#4 integrate
.. //depot/projects/netperf_socket/sys/conf/files.amd64#8 integrate
.. //depot/projects/netperf_socket/sys/dev/bge/if_bge.c#6 integrate
.. //depot/projects/netperf_socket/sys/dev/bge/if_bgereg.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/cp/if_cp.c#2 integrate
.. //depot/projects/netperf_socket/sys/dev/fxp/if_fxp.c#8 integrate
.. //depot/projects/netperf_socket/sys/dev/isp/isp.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/isp/isp_freebsd.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/isp/isp_inline.h#2 integrate
.. //depot/projects/netperf_socket/sys/dev/isp/isp_pci.c#4 integrate
.. //depot/projects/netperf_socket/sys/dev/isp/isp_target.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/isp/ispvar.h#4 integrate
.. //depot/projects/netperf_socket/sys/dev/musycc/musycc.c#3 integrate
.. //depot/projects/netperf_socket/sys/dev/pcf/pcf.c#1 branch
.. //depot/projects/netperf_socket/sys/dev/pci/pci.c#7 integrate
.. //depot/projects/netperf_socket/sys/dev/re/if_re.c#7 integrate
.. //depot/projects/netperf_socket/sys/i386/i386/mptable.c#3 integrate
.. //depot/projects/netperf_socket/sys/net/if_ef.c#2 integrate
.. //depot/projects/netperf_socket/sys/netgraph/ng_hole.c#3 integrate
.. //depot/projects/netperf_socket/sys/pci/if_rl.c#9 integrate
.. //depot/projects/netperf_socket/sys/pci/if_rlreg.h#2 integrate
.. //depot/projects/netperf_socket/sys/sys/mbuf.h#9 integrate
Differences ...
==== //depot/projects/netperf_socket/sys/amd64/amd64/apic_vector.S#4 (text+ko) ====
@@ -28,7 +28,7 @@
* SUCH DAMAGE.
*
* from: vector.s, 386BSD 0.1 unknown origin
- * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.99 2004/05/23 16:23:29 bde Exp $
+ * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.100 2004/05/24 12:08:56 bde Exp $
*/
/*
@@ -129,7 +129,6 @@
iretq
-MCOUNT_LABEL(bintr2)
ISR_VEC(1, apic_isr1)
ISR_VEC(2, apic_isr2)
ISR_VEC(3, apic_isr3)
@@ -137,7 +136,6 @@
ISR_VEC(5, apic_isr5)
ISR_VEC(6, apic_isr6)
ISR_VEC(7, apic_isr7)
-MCOUNT_LABEL(eintr2)
#ifdef SMP
/*
==== //depot/projects/netperf_socket/sys/amd64/amd64/exception.S#4 (text+ko) ====
@@ -27,9 +27,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.117 2004/05/23 17:18:48 bde Exp $
+ * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.119 2004/05/24 12:42:16 bde Exp $
*/
+#include "opt_atpic.h"
+#include "opt_ia32.h"
+
#include <machine/asmacros.h>
#include <machine/psl.h>
#include <machine/trap.h>
@@ -294,8 +297,44 @@
MEXITCOUNT
jmp doreti /* Handle any ASTs */
+/*
+ * To efficiently implement classification of trap and interrupt handlers
+ * for profiling, there must be only trap handlers between the labels btrap
+ * and bintr, and only interrupt handlers between the labels bintr and
+ * eintr. This is implemented (partly) by including files that contain
+ * some of the handlers. Before including the files, set up a normal asm
+ * environment so that the included files doen't need to know that they are
+ * included.
+ */
+
+#ifdef IA32
+ .data
+ .p2align 4
+ .text
+ SUPERALIGN_TEXT
+
+#include <amd64/ia32/ia32_exception.S>
+#endif
+
+ .data
+ .p2align 4
+ .text
+ SUPERALIGN_TEXT
+MCOUNT_LABEL(bintr)
+
+#include <amd64/amd64/apic_vector.S>
+
+#ifdef DEV_ATPIC
.data
- ALIGN_DATA
+ .p2align 4
+ .text
+ SUPERALIGN_TEXT
+
+#include <amd64/isa/atpic_vector.S>
+#endif
+
+ .text
+MCOUNT_LABEL(eintr)
/*
* void doreti(struct trapframe)
@@ -304,7 +343,6 @@
*/
.text
SUPERALIGN_TEXT
- .globl doreti
.type doreti, at function
doreti:
FAKE_MCOUNT($bintr) /* init "from" bintr -> doreti */
==== //depot/projects/netperf_socket/sys/amd64/ia32/ia32_exception.S#3 (text+ko) ====
@@ -23,16 +23,13 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/ia32/ia32_exception.S,v 1.3 2004/05/23 19:06:15 bde Exp $
+ * $FreeBSD: src/sys/amd64/ia32/ia32_exception.S,v 1.4 2004/05/24 11:28:11 bde Exp $
*/
#include <machine/asmacros.h>
#include "assym.s"
-#define IDTVEC(name) ALIGN_TEXT; .globl __CONCAT(X,name); \
- .type __CONCAT(X,name), at function; __CONCAT(X,name):
-
.text
/*
* Call gate entry for FreeBSD ELF and Linux/NetBSD syscall (int 0x80)
==== //depot/projects/netperf_socket/sys/amd64/isa/atpic_vector.S#4 (text+ko) ====
@@ -28,7 +28,7 @@
* SUCH DAMAGE.
*
* from: vector.s, 386BSD 0.1 unknown origin
- * $FreeBSD: src/sys/amd64/isa/atpic_vector.S,v 1.44 2004/05/23 16:23:29 bde Exp $
+ * $FreeBSD: src/sys/amd64/isa/atpic_vector.S,v 1.45 2004/05/24 12:08:56 bde Exp $
*/
/*
@@ -72,7 +72,6 @@
MEXITCOUNT ; \
jmp doreti
-MCOUNT_LABEL(bintr)
INTR(0, atpic_intr0)
INTR(1, atpic_intr1)
INTR(2, atpic_intr2)
@@ -89,4 +88,3 @@
INTR(13, atpic_intr13)
INTR(14, atpic_intr14)
INTR(15, atpic_intr15)
-MCOUNT_LABEL(eintr)
==== //depot/projects/netperf_socket/sys/conf/files.amd64#8 (text+ko) ====
@@ -1,7 +1,7 @@
# This file tells config what files go into building a kernel,
# files marked standard are always included.
#
-# $FreeBSD: src/sys/conf/files.amd64,v 1.35 2004/05/23 18:38:27 bde Exp $
+# $FreeBSD: src/sys/conf/files.amd64,v 1.37 2004/05/24 12:08:56 bde Exp $
#
# The long compile-with and dependency lines are required because of
# limitations in config: backslash-newline doesn't work in strings, and
@@ -41,7 +41,7 @@
amd64/acpica/madt.c optional acpi
amd64/amd64/amd64-gdbstub.c optional ddb
amd64/amd64/amd64_mem.c standard
-amd64/amd64/apic_vector.S standard
+#amd64/amd64/apic_vector.S standard
amd64/amd64/atomic.c standard
amd64/amd64/autoconf.c standard
amd64/amd64/busdma_machdep.c standard
@@ -69,8 +69,8 @@
amd64/amd64/mptable.c optional mptable
amd64/amd64/mptable_pci.c optional mptable pci
amd64/amd64/nexus.c standard
+amd64/amd64/pmap.c standard
amd64/amd64/prof_machdep.c optional profiling-routine
-amd64/amd64/pmap.c standard
amd64/amd64/sigtramp.S standard
amd64/amd64/support.S standard
amd64/amd64/sys_machdep.c standard
@@ -80,7 +80,7 @@
amd64/amd64/uma_machdep.c standard
amd64/amd64/vm_machdep.c standard
amd64/isa/atpic.c optional atpic isa
-amd64/isa/atpic_vector.S optional atpic isa
+#amd64/isa/atpic_vector.S optional atpic isa
amd64/isa/clock.c standard
amd64/isa/elcr.c standard
amd64/isa/isa.c standard
@@ -88,11 +88,11 @@
amd64/isa/nmi.c standard
amd64/pci/pci_bus.c optional pci
amd64/pci/pci_cfgreg.c optional pci
+crypto/blowfish/bf_enc.c optional crypto
crypto/blowfish/bf_enc.c optional ipsec ipsec_esp
+crypto/des/des_ecb.c optional netsmbcrypto
+crypto/des/des_enc.c optional crypto
crypto/des/des_enc.c optional ipsec ipsec_esp
-crypto/blowfish/bf_enc.c optional crypto
-crypto/des/des_enc.c optional crypto
-crypto/des/des_ecb.c optional netsmbcrypto
crypto/des/des_enc.c optional netsmbcrypto
crypto/des/des_setkey.c optional netsmbcrypto
dev/fb/fb.c optional fb
@@ -140,7 +140,7 @@
#
# IA32 binary support
#
-amd64/ia32/ia32_exception.S optional ia32
+#amd64/ia32/ia32_exception.S optional ia32
amd64/ia32/ia32_signal.c optional ia32
amd64/ia32/ia32_sigtramp.S optional ia32
amd64/ia32/ia32_syscall.c optional ia32
==== //depot/projects/netperf_socket/sys/dev/bge/if_bge.c#6 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.67 2004/05/23 16:11:45 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.68 2004/05/24 04:46:54 ps Exp $");
/*
* Broadcom BCM570x family gigabit ethernet driver for FreeBSD.
@@ -148,6 +148,8 @@
"Broadcom BCM5704S Dual Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705,
"Broadcom BCM5705 Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5705K,
+ "Broadcom BCM5705K Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705M,
"Broadcom BCM5705M Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705M_ALT,
==== //depot/projects/netperf_socket/sys/dev/bge/if_bgereg.h#2 (text+ko) ====
@@ -30,7 +30,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.26 2004/01/08 17:19:11 wpaul Exp $
+ * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.27 2004/05/24 04:46:54 ps Exp $
*/
/*
@@ -1819,6 +1819,7 @@
#define BCOM_DEVICEID_BCM5704C 0x1648
#define BCOM_DEVICEID_BCM5704S 0x16A8
#define BCOM_DEVICEID_BCM5705 0x1653
+#define BCOM_DEVICEID_BCM5705K 0x1654
#define BCOM_DEVICEID_BCM5705M 0x165D
#define BCOM_DEVICEID_BCM5705M_ALT 0x165E
#define BCOM_DEVICEID_BCM5782 0x1696
==== //depot/projects/netperf_socket/sys/dev/cp/if_cp.c#2 (text+ko) ====
@@ -22,7 +22,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.1 2004/05/05 16:11:45 rik Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/cp/if_cp.c,v 1.2 2004/05/24 19:39:56 jhb Exp $");
#include <sys/param.h>
@@ -368,7 +368,7 @@
#else
bd->board = b;
b->sys = bd;
- rid = PCIR_MAPS;
+ rid = PCIR_BAR(0);
bd->cp_res = bus_alloc_resource (dev, SYS_RES_MEMORY, &rid,
0, ~0, 1, RF_ACTIVE);
if (! bd->cp_res) {
@@ -384,7 +384,7 @@
if (res) {
printf ("cp%d: can't init, error code:%x\n", unit, res);
#if __FreeBSD_version >= 400000
- bus_release_resource (dev, SYS_RES_MEMORY, PCIR_MAPS, bd->cp_res);
+ bus_release_resource (dev, SYS_RES_MEMORY, PCIR_BAR(0), bd->cp_res);
#endif
free (b, M_DEVBUF);
splx (s);
@@ -418,7 +418,7 @@
if (! bd->cp_irq) {
printf ("cp%d: cannot map interrupt\n", unit);
bus_release_resource (dev, SYS_RES_MEMORY,
- PCIR_MAPS, bd->cp_res);
+ PCIR_BAR(0), bd->cp_res);
free (b, M_DEVBUF);
splx (s);
return (ENXIO);
@@ -428,7 +428,7 @@
if (error) {
printf ("cp%d: cannot set up irq\n", unit);
bus_release_resource (dev, SYS_RES_MEMORY,
- PCIR_MAPS, bd->cp_res);
+ PCIR_BAR(0), bd->cp_res);
bus_release_resource (dev, SYS_RES_IRQ, 0, bd->cp_irq);
free (b, M_DEVBUF);
splx (s);
@@ -601,7 +601,7 @@
bus_teardown_intr (dev, bd->cp_irq, bd->cp_intrhand);
bus_deactivate_resource (dev, SYS_RES_IRQ, 0, bd->cp_irq);
bus_release_resource (dev, SYS_RES_IRQ, 0, bd->cp_irq);
- bus_release_resource (dev, SYS_RES_MEMORY, PCIR_MAPS, bd->cp_res);
+ bus_release_resource (dev, SYS_RES_MEMORY, PCIR_BAR(0), bd->cp_res);
cp_led_off (b);
if (led_timo[b->num].callout)
untimeout (cp_led_off, b, led_timo[b->num]);
==== //depot/projects/netperf_socket/sys/dev/fxp/if_fxp.c#8 (text+ko) ====
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.207 2004/05/23 21:05:07 yar Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.208 2004/05/24 18:31:56 mux Exp $");
/*
* Intel EtherExpress Pro/100B PCI Fast Ethernet driver
@@ -864,8 +864,8 @@
int i;
mtx_assert(&sc->sc_mtx, MA_NOTOWNED);
- if (sc->ih)
- panic("fxp_release() called with intr handle still active");
+ KASSERT(sc->ih == NULL,
+ ("fxp_release() called with intr handle still active"));
if (sc->miibus)
device_delete_child(sc->dev, sc->miibus);
bus_generic_detach(sc->dev);
==== //depot/projects/netperf_socket/sys/dev/isp/isp.c#3 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/isp/isp.c,v 1.110 2004/02/07 03:42:17 mjacob Exp $ */
+/* $FreeBSD: src/sys/dev/isp/isp.c,v 1.111 2004/05/24 07:02:24 njl Exp $ */
/*
* Machine and OS Independent (well, as best as possible)
* code for the Qlogic ISP SCSI adapters.
@@ -5843,7 +5843,7 @@
isp_reinit(struct ispsoftc *isp)
{
XS_T *xs;
- u_int16_t handle;
+ int i;
if (IS_FC(isp)) {
isp_mark_getpdb_all(isp);
@@ -5863,11 +5863,13 @@
}
isp->isp_nactive = 0;
- for (handle = 1; (int) handle <= isp->isp_maxcmds; handle++) {
- xs = isp_find_xs(isp, handle);
+ for (i = 0; i < isp->isp_maxcmds; i++) {
+ u_int16_t handle;
+ xs = isp->isp_xflist[i];
if (xs == NULL) {
continue;
}
+ handle = isp_index_handle(i);
isp_destroy_handle(isp, handle);
if (XS_XFRLEN(xs)) {
ISP_DMAFREE(isp, xs, handle);
==== //depot/projects/netperf_socket/sys/dev/isp/isp_freebsd.c#3 (text+ko) ====
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.100 2004/02/21 21:10:43 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.101 2004/05/24 07:02:25 njl Exp $");
#include <dev/isp/isp_freebsd.h>
#include <sys/unistd.h>
@@ -545,6 +545,7 @@
static int isp_handle_platform_atio(struct ispsoftc *, at_entry_t *);
static int isp_handle_platform_atio2(struct ispsoftc *, at2_entry_t *);
static int isp_handle_platform_ctio(struct ispsoftc *, void *);
+static void isp_handle_platform_ctio_fastpost(struct ispsoftc *, u_int32_t);
static int isp_handle_platform_notify_scsi(struct ispsoftc *, in_entry_t *);
static int isp_handle_platform_notify_fc(struct ispsoftc *, in_fcentry_t *);
@@ -1272,7 +1273,7 @@
hp = &cto->ct_syshandle;
}
- if (isp_save_xs(isp, (XS_T *)ccb, hp)) {
+ if (isp_save_xs_tgt(isp, ccb, hp)) {
xpt_print_path(ccb->ccb_h.path);
printf("No XFLIST pointers for isp_target_start_ctio\n");
return (CAM_RESRC_UNAVAIL);
@@ -1297,11 +1298,11 @@
case CMD_EAGAIN:
ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
- isp_destroy_handle(isp, save_handle);
+ isp_destroy_tgt_handle(isp, save_handle);
return (CAM_RESRC_UNAVAIL);
default:
- isp_destroy_handle(isp, save_handle);
+ isp_destroy_tgt_handle(isp, save_handle);
return (XS_ERR(ccb));
}
}
@@ -1637,9 +1638,9 @@
* CTIO and CTIO2 are close enough....
*/
- ccb = (union ccb *) isp_find_xs(isp, ((ct_entry_t *)arg)->ct_syshandle);
+ ccb = isp_find_xs_tgt(isp, ((ct_entry_t *)arg)->ct_syshandle);
KASSERT((ccb != NULL), ("null ccb in isp_handle_platform_ctio"));
- isp_destroy_handle(isp, ((ct_entry_t *)arg)->ct_syshandle);
+ isp_destroy_tgt_handle(isp, ((ct_entry_t *)arg)->ct_syshandle);
if (IS_FC(isp)) {
ct2_entry_t *ct = arg;
@@ -1734,6 +1735,19 @@
return (0);
}
+static void
+isp_handle_platform_ctio_fastpost(struct ispsoftc *isp, u_int32_t token)
+{
+ union ccb *ccb;
+ ccb = isp_find_xs_tgt(isp, token & 0xffff);
+ KASSERT((ccb != NULL),
+ ("null ccb in isp_handle_platform_ctio_fastpost"));
+ isp_destroy_tgt_handle(isp, token & 0xffff);
+ isp_prt(isp, ISP_LOGTDEBUG1, "CTIOx[%x] fastpost complete",
+ token & 0xffff);
+ isp_complete_ctio(ccb);
+}
+
static int
isp_handle_platform_notify_scsi(struct ispsoftc *isp, in_entry_t *inp)
{
@@ -3019,6 +3033,15 @@
case ISPASYNC_TARGET_EVENT:
{
tmd_event_t *ep = arg;
+ if (ep->ev_event == ASYNC_CTIO_DONE) {
+ /*
+ * ACK the interrupt first
+ */
+ ISP_WRITE(isp, BIU_SEMA, 0);
+ ISP_WRITE(isp, HCCR, HCCR_CMD_CLEAR_RISC_INT);
+ isp_handle_platform_ctio_fastpost(isp, ep->ev_bus);
+ break;
+ }
isp_prt(isp, ISP_LOGALL,
"bus %d event code 0x%x", ep->ev_bus, ep->ev_event);
break;
==== //depot/projects/netperf_socket/sys/dev/isp/isp_inline.h#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/isp/isp_inline.h,v 1.29 2003/09/13 01:57:31 mjacob Exp $ */
+/* $FreeBSD: src/sys/dev/isp/isp_inline.h,v 1.30 2004/05/24 07:02:25 njl Exp $ */
/*
* Qlogic Host Adapter Inline Functions
*
@@ -43,8 +43,8 @@
static INLINE XS_T *isp_find_xs(struct ispsoftc *, u_int16_t);
static INLINE u_int16_t isp_find_handle(struct ispsoftc *, XS_T *);
static INLINE int isp_handle_index(u_int16_t);
+static INLINE u_int16_t isp_index_handle(int);
static INLINE void isp_destroy_handle(struct ispsoftc *, u_int16_t);
-static INLINE void isp_remove_handle(struct ispsoftc *, XS_T *);
static INLINE int
isp_save_xs(struct ispsoftc *isp, XS_T *xs, u_int16_t *handlep)
@@ -100,19 +100,76 @@
return (handle-1);
}
+static INLINE u_int16_t
+isp_index_handle(int index)
+{
+ return (index+1);
+}
+
static INLINE void
isp_destroy_handle(struct ispsoftc *isp, u_int16_t handle)
{
if (handle > 0 && handle <= (u_int16_t) isp->isp_maxcmds) {
- isp->isp_xflist[isp_handle_index(handle)] = NULL;
+ isp->isp_xflist[handle - 1] = NULL;
+ }
+}
+
+#ifdef ISP_TARGET_MODE
+static INLINE int isp_save_xs_tgt(struct ispsoftc *, void *, u_int16_t *);
+static INLINE void *isp_find_xs_tgt(struct ispsoftc *, u_int16_t);
+static INLINE void isp_destroy_tgt_handle(struct ispsoftc *, u_int16_t);
+
+static INLINE int
+isp_save_xs_tgt(struct ispsoftc *isp, void *xs, u_int16_t *handlep)
+{
+ int i;
+
+ for (i = 0; i < (int) isp->isp_maxcmds; i++) {
+ if (isp->isp_tgtlist[i] == NULL) {
+ break;
+ }
+ }
+ if (i == isp->isp_maxcmds) {
+ return (-1);
+ }
+ isp->isp_tgtlist[i] = xs;
+ *handlep = i+1;
+ return (0);
+}
+
+static INLINE void *
+isp_find_xs_tgt(struct ispsoftc *isp, u_int16_t handle)
+{
+ if (handle < 1 || handle > (u_int16_t) isp->isp_maxcmds) {
+ return (NULL);
+ } else {
+ return (isp->isp_tgtlist[handle - 1]);
+ }
+}
+
+static INLINE u_int16_t
+isp_find_tgt_handle(struct ispsoftc *isp, void *xs)
+{
+ int i;
+ if (xs != NULL) {
+ for (i = 0; i < isp->isp_maxcmds; i++) {
+ if (isp->isp_tgtlist[i] == xs) {
+ return ((u_int16_t) i+1);
+ }
+ }
}
+ return (0);
}
static INLINE void
-isp_remove_handle(struct ispsoftc *isp, XS_T *xs)
+isp_destroy_tgt_handle(struct ispsoftc *isp, u_int16_t handle)
{
- isp_destroy_handle(isp, isp_find_handle(isp, xs));
+ if (handle > 0 && handle <= (u_int16_t) isp->isp_maxcmds) {
+ isp->isp_tgtlist[handle - 1] = NULL;
+ }
}
+#endif
+
static INLINE int
isp_getrqentry(struct ispsoftc *, u_int16_t *, u_int16_t *, void **);
==== //depot/projects/netperf_socket/sys/dev/isp/isp_pci.c#4 (text+ko) ====
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/isp/isp_pci.c,v 1.97 2004/03/17 17:50:36 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/isp/isp_pci.c,v 1.98 2004/05/24 07:02:25 njl Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1113,11 +1113,23 @@
ISP_LOCK(isp);
return (1);
}
+#ifdef ISP_TARGET_MODE
+ len = sizeof (void **) * isp->isp_maxcmds;
+ isp->isp_tgtlist = (void **) malloc(len, M_DEVBUF, M_WAITOK | M_ZERO);
+ if (isp->isp_tgtlist == NULL) {
+ isp_prt(isp, ISP_LOGERR, "cannot alloc tgtlist array");
+ ISP_LOCK(isp);
+ return (1);
+ }
+#endif
len = sizeof (bus_dmamap_t) * isp->isp_maxcmds;
pcs->dmaps = (bus_dmamap_t *) malloc(len, M_DEVBUF, M_WAITOK);
if (pcs->dmaps == NULL) {
isp_prt(isp, ISP_LOGERR, "can't alloc dma map storage");
free(isp->isp_xflist, M_DEVBUF);
+#ifdef ISP_TARGET_MODE
+ free(isp->isp_tgtlist, M_DEVBUF);
+#endif
ISP_LOCK(isp);
return (1);
}
@@ -1139,6 +1151,9 @@
"cannot create a dma tag for control spaces");
free(pcs->dmaps, M_DEVBUF);
free(isp->isp_xflist, M_DEVBUF);
+#ifdef ISP_TARGET_MODE
+ free(isp->isp_tgtlist, M_DEVBUF);
+#endif
ISP_LOCK(isp);
return (1);
}
@@ -1149,6 +1164,9 @@
"cannot allocate %d bytes of CCB memory", len);
bus_dma_tag_destroy(isp->isp_cdmat);
free(isp->isp_xflist, M_DEVBUF);
+#ifdef ISP_TARGET_MODE
+ free(isp->isp_tgtlist, M_DEVBUF);
+#endif
free(pcs->dmaps, M_DEVBUF);
ISP_LOCK(isp);
return (1);
@@ -1189,6 +1207,9 @@
bus_dmamem_free(isp->isp_cdmat, base, isp->isp_cdmap);
bus_dma_tag_destroy(isp->isp_cdmat);
free(isp->isp_xflist, M_DEVBUF);
+#ifdef ISP_TARGET_MODE
+ free(isp->isp_tgtlist, M_DEVBUF);
+#endif
free(pcs->dmaps, M_DEVBUF);
ISP_LOCK(isp);
isp->isp_rquest = NULL;
==== //depot/projects/netperf_socket/sys/dev/isp/isp_target.c#3 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/isp/isp_target.c,v 1.29 2004/01/29 06:36:30 mjacob Exp $ */
+/* $FreeBSD: src/sys/dev/isp/isp_target.c,v 1.30 2004/05/24 07:02:25 njl Exp $ */
/*
* Machine and OS Independent Target Mode Code for the Qlogic SCSI/FC adapters.
*
@@ -882,7 +882,7 @@
char *fmsg = NULL;
if (ct->ct_syshandle) {
- xs = isp_find_xs(isp, ct->ct_syshandle);
+ xs = isp_find_xs_tgt(isp, ct->ct_syshandle);
if (xs == NULL)
pl = ISP_LOGALL;
} else {
@@ -1042,7 +1042,7 @@
char *fmsg = NULL;
if (ct->ct_syshandle) {
- xs = isp_find_xs(isp, ct->ct_syshandle);
+ xs = isp_find_xs_tgt(isp, ct->ct_syshandle);
if (xs == NULL)
pl = ISP_LOGALL;
} else {
==== //depot/projects/netperf_socket/sys/dev/isp/ispvar.h#4 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/dev/isp/ispvar.h,v 1.65 2004/03/12 21:45:27 trhodes Exp $ */
+/* $FreeBSD: src/sys/dev/isp/ispvar.h,v 1.66 2004/05/24 07:02:25 njl Exp $ */
/*
* Soft Definitions for for Qlogic ISP SCSI adapters.
*
@@ -54,7 +54,7 @@
#endif
#define ISP_CORE_VERSION_MAJOR 2
-#define ISP_CORE_VERSION_MINOR 7
+#define ISP_CORE_VERSION_MINOR 8
/*
* Vector for bus specific code to provide specific services.
@@ -426,6 +426,13 @@
*/
XS_T **isp_xflist;
+#ifdef ISP_TARGET_MODE
+ /*
+ * Active target commands are stored here, indexed by handle function.
+ */
+ void **isp_tgtlist;
+#endif
+
/*
* request/result queue pointers and DMA handles for them.
*/
==== //depot/projects/netperf_socket/sys/dev/musycc/musycc.c#3 (text+ko) ====
@@ -8,7 +8,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/musycc/musycc.c,v 1.31 2004/03/17 17:50:37 njl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/musycc/musycc.c,v 1.32 2004/05/24 20:45:53 julian Exp $");
/*
* Card state machine:
@@ -222,7 +222,7 @@
struct mdesc *mdt[NHDLC];
struct mdesc *mdr[NHDLC];
node_p node; /* NG node */
- char nodename[NG_NODELEN + 1]; /* NG nodename */
+ char nodename[NG_NODESIZ]; /* NG nodename */
struct schan *chan[NHDLC];
u_long cnt_ferr;
u_long cnt_cerr;
==== //depot/projects/netperf_socket/sys/dev/pci/pci.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/dev/pci/pci.c,v 1.259 2004/05/21 19:47:55 imp Exp $
+ * $FreeBSD: src/sys/dev/pci/pci.c,v 1.261 2004/05/24 17:41:05 imp Exp $
*
*/
@@ -183,15 +183,6 @@
"Power down devices into D3 state when no driver attaches to them.\n\
Otherwise, leave the device in D0 state when no driver attaches.");
-/*
- * Enable restoring all the registers, even the ones that are nominally
- * read-only. If this causes problems for you, please report them to
- * imp at freebsd.org and remove this line in your local tree. The problems
- * would be seen if the device is transitioning from D3 to D0 or has ever
- * made that transition under FreeBSD this boot.
- */
-#define PCI_RESTORE_EXTRA
-
/* Find a device_t by bus/slot/function */
device_t
@@ -1843,14 +1834,8 @@
pci_set_powerstate(dev, PCI_POWERSTATE_D0);
}
for (i = 0; i < dinfo->cfg.nummaps; i++)
- pci_write_config(dev, PCIR_MAPS + i * 4, dinfo->cfg.bar[i], 4);
+ pci_write_config(dev, PCIR_BAR(i), dinfo->cfg.bar[i], 4);
pci_write_config(dev, PCIR_BIOS, dinfo->cfg.bios, 4);
-#ifdef PCI_RESTORE_EXTRA
- pci_write_config(dev, PCIR_SUBVEND_0, dinfo->cfg.subvendor, 2);
- pci_write_config(dev, PCIR_SUBDEV_0, dinfo->cfg.subdevice, 2);
- pci_write_config(dev, PCIR_VENDOR, dinfo->cfg.vendor, 2);
- pci_write_config(dev, PCIR_DEVICE, dinfo->cfg.device, 2);
-#endif
pci_write_config(dev, PCIR_COMMAND, dinfo->cfg.cmdreg, 2);
pci_write_config(dev, PCIR_INTLINE, dinfo->cfg.intline, 1);
pci_write_config(dev, PCIR_INTPIN, dinfo->cfg.intpin, 1);
@@ -1858,11 +1843,7 @@
pci_write_config(dev, PCIR_MAXLAT, dinfo->cfg.maxlat, 1);
pci_write_config(dev, PCIR_CACHELNSZ, dinfo->cfg.cachelnsz, 1);
pci_write_config(dev, PCIR_LATTIMER, dinfo->cfg.lattimer, 1);
-#ifdef PCI_RESTORE_EXTRA
- pci_write_config(dev, PCIR_CLASS, dinfo->cfg.baseclass, 1);
- pci_write_config(dev, PCIR_SUBCLASS, dinfo->cfg.subclass, 1);
pci_write_config(dev, PCIR_PROGIF, dinfo->cfg.progif, 1);
-#endif
pci_write_config(dev, PCIR_REVID, dinfo->cfg.revid, 1);
}
@@ -1883,7 +1864,7 @@
if (dinfo->cfg.hdrtype != 0)
return;
for (i = 0; i < dinfo->cfg.nummaps; i++)
- dinfo->cfg.bar[i] = pci_read_config(dev, PCIR_MAPS + i * 4, 4);
+ dinfo->cfg.bar[i] = pci_read_config(dev, PCIR_BAR(i), 4);
dinfo->cfg.bios = pci_read_config(dev, PCIR_BIOS, 4);
/*
==== //depot/projects/netperf_socket/sys/dev/re/if_re.c#7 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.22 2004/05/23 21:05:08 yar Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.23 2004/05/24 19:39:23 jhb Exp $");
/*
* RealTek 8139C+/8169/8169S/8110S PCI NIC driver
@@ -2420,19 +2420,23 @@
re_suspend(dev)
device_t dev;
{
+#ifndef BURN_BRIDGES
register int i;
+#endif
struct rl_softc *sc;
sc = device_get_softc(dev);
re_stop(sc);
+#ifndef BURN_BRIDGES
for (i = 0; i < 5; i++)
sc->saved_maps[i] = pci_read_config(dev, PCIR_MAPS + i * 4, 4);
sc->saved_biosaddr = pci_read_config(dev, PCIR_BIOS, 4);
sc->saved_intline = pci_read_config(dev, PCIR_INTLINE, 1);
sc->saved_cachelnsz = pci_read_config(dev, PCIR_CACHELNSZ, 1);
sc->saved_lattimer = pci_read_config(dev, PCIR_LATTIMER, 1);
+#endif
sc->suspended = 1;
@@ -2448,13 +2452,16 @@
re_resume(dev)
device_t dev;
{
+#ifndef BURN_BRIDGES
register int i;
+#endif
struct rl_softc *sc;
struct ifnet *ifp;
sc = device_get_softc(dev);
ifp = &sc->arpcom.ac_if;
+#ifndef BURN_BRIDGES
/* better way to do this? */
for (i = 0; i < 5; i++)
pci_write_config(dev, PCIR_MAPS + i * 4, sc->saved_maps[i], 4);
@@ -2466,6 +2473,7 @@
/* reenable busmastering */
pci_enable_busmaster(dev);
pci_enable_io(dev, RL_RES);
+#endif
/* reinitialize interface if necessary */
if (ifp->if_flags & IFF_UP)
==== //depot/projects/netperf_socket/sys/i386/i386/mptable.c#3 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/i386/mptable.c,v 1.232 2004/05/10 18:49:58 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/i386/mptable.c,v 1.233 2004/05/24 15:51:46 jhb Exp $");
#include "opt_mptable_force_htt.h"
#include <sys/param.h>
@@ -549,17 +549,10 @@
KASSERT(src_bus <= mptable_maxbusid, ("bus id %d too large", src_bus));
switch (busses[src_bus].bus_type) {
case ISA:
+ case EISA:
return (INTR_POLARITY_HIGH);
case PCI:
return (INTR_POLARITY_LOW);
-#ifndef PC98
- case EISA:
- KASSERT(src_bus_irq < 16, ("Invalid EISA IRQ %d", src_bus_irq));
- if (elcr_read_trigger(src_bus_irq) == INTR_TRIGGER_LEVEL)
- return (INTR_POLARITY_LOW);
- else
- return (INTR_POLARITY_HIGH);
-#endif
default:
panic("%s: unknown bus type %d", __func__,
busses[src_bus].bus_type);
==== //depot/projects/netperf_socket/sys/net/if_ef.c#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/net/if_ef.c,v 1.28 2003/12/28 03:55:59 sam Exp $
+ * $FreeBSD: src/sys/net/if_ef.c,v 1.29 2004/05/24 11:01:45 mux Exp $
*/
#include "opt_inet.h"
@@ -120,7 +120,6 @@
struct ifaddr *ifa2;
struct sockaddr_dl *sdl2;
- ifp->if_output = ether_output;
ifp->if_start = ef_start;
ifp->if_watchdog = NULL;
ifp->if_init = ef_init;
==== //depot/projects/netperf_socket/sys/netgraph/ng_hole.c#3 (text+ko) ====
@@ -36,7 +36,7 @@
*
* Author: Julian Elisher <julian at freebsd.org>
*
- * $FreeBSD: src/sys/netgraph/ng_hole.c,v 1.11 2004/05/19 11:26:33 ru Exp $
+ * $FreeBSD: src/sys/netgraph/ng_hole.c,v 1.12 2004/05/24 20:41:40 julian Exp $
* $Whistle: ng_hole.c,v 1.10 1999/11/01 09:24:51 julian Exp $
*/
@@ -162,7 +162,7 @@
case NGM_HOLE_CLR_STATS:
case NGM_HOLE_GETCLR_STATS:
/* Sanity check. */
- if (msg->header.arglen != NG_HOOKLEN + 1) {
+ if (msg->header.arglen != NG_HOOKSIZ) {
error = EINVAL;
break;
}
==== //depot/projects/netperf_socket/sys/pci/if_rl.c#9 (text+ko) ====
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/pci/if_rl.c,v 1.136 2004/05/23 21:05:07 yar Exp $");
+__FBSDID("$FreeBSD: src/sys/pci/if_rl.c,v 1.137 2004/05/24 19:39:23 jhb Exp $");
/*
* RealTek 8129/8139 PCI NIC driver
@@ -1916,19 +1916,23 @@
rl_suspend(dev)
device_t dev;
{
+#ifndef BURN_BRIDGES
register int i;
+#endif
struct rl_softc *sc;
sc = device_get_softc(dev);
rl_stop(sc);
+#ifndef BURN_BRIDGES
for (i = 0; i < 5; i++)
sc->saved_maps[i] = pci_read_config(dev, PCIR_MAPS + i * 4, 4);
sc->saved_biosaddr = pci_read_config(dev, PCIR_BIOS, 4);
sc->saved_intline = pci_read_config(dev, PCIR_INTLINE, 1);
sc->saved_cachelnsz = pci_read_config(dev, PCIR_CACHELNSZ, 1);
sc->saved_lattimer = pci_read_config(dev, PCIR_LATTIMER, 1);
+#endif
sc->suspended = 1;
@@ -1944,13 +1948,16 @@
rl_resume(dev)
device_t dev;
{
+#ifndef BURN_BRIDGES
register int i;
+#endif
struct rl_softc *sc;
struct ifnet *ifp;
sc = device_get_softc(dev);
ifp = &sc->arpcom.ac_if;
+#ifndef BURN_BRIDGES
/* better way to do this? */
for (i = 0; i < 5; i++)
pci_write_config(dev, PCIR_MAPS + i * 4, sc->saved_maps[i], 4);
@@ -1962,6 +1969,7 @@
/* reenable busmastering */
pci_enable_busmaster(dev);
pci_enable_io(dev, RL_RES);
+#endif
/* reinitialize interface if necessary */
if (ifp->if_flags & IFF_UP)
==== //depot/projects/netperf_socket/sys/pci/if_rlreg.h#2 (text+ko) ====
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list