From owner-p4-projects@FreeBSD.ORG Mon Apr 2 06:21:21 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EDA9916A404; Mon, 2 Apr 2007 06:21:20 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6A7B616A402 for ; Mon, 2 Apr 2007 06:21:20 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id 586AE13C455 for ; Mon, 2 Apr 2007 06:21:20 +0000 (UTC) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l326LKRo043878 for ; Mon, 2 Apr 2007 06:21:20 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l326LIp4043827 for perforce@freebsd.org; Mon, 2 Apr 2007 06:21:18 GMT (envelope-from marcel@freebsd.org) Date: Mon, 2 Apr 2007 06:21:18 GMT Message-Id: <200704020621.l326LIp4043827@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Cc: Subject: PERFORCE change 117170 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Apr 2007 06:21:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=117170 Change 117170 by marcel@marcel_cluster on 2007/04/02 06:20:52 IFC @117168 Affected files ... .. //depot/projects/uart/amd64/amd64/support.S#10 integrate .. //depot/projects/uart/conf/NOTES#49 integrate .. //depot/projects/uart/conf/options#46 integrate .. //depot/projects/uart/dev/acpica/acpi_ec.c#18 integrate .. //depot/projects/uart/dev/ahb/ahb.c#10 integrate .. //depot/projects/uart/dev/arcmsr/arcmsr.c#7 integrate .. //depot/projects/uart/dev/ed/if_ed_pccard.c#15 integrate .. //depot/projects/uart/dev/firewire/fwohci_pci.c#15 integrate .. //depot/projects/uart/dev/ipmi/ipmi_pci.c#3 integrate .. //depot/projects/uart/dev/isp/isp_freebsd.c#21 integrate .. //depot/projects/uart/dev/isp/isp_freebsd.h#17 integrate .. //depot/projects/uart/dev/isp/isp_library.c#10 integrate .. //depot/projects/uart/dev/isp/isp_library.h#7 integrate .. //depot/projects/uart/dev/isp/isp_pci.c#21 integrate .. //depot/projects/uart/dev/isp/isp_sbus.c#16 integrate .. //depot/projects/uart/dev/mxge/if_mxge.c#8 integrate .. //depot/projects/uart/dev/pci/pci.c#30 integrate .. //depot/projects/uart/dev/pci/pci_pci.c#12 integrate .. //depot/projects/uart/dev/pci/pcireg.h#14 integrate .. //depot/projects/uart/dev/sk/if_sk.c#14 integrate .. //depot/projects/uart/dev/sk/if_skreg.h#9 integrate .. //depot/projects/uart/dev/sound/pcm/channel.c#12 integrate .. //depot/projects/uart/dev/sound/pcm/mixer.c#12 integrate .. //depot/projects/uart/dev/sound/usb/uaudio.c#9 integrate .. //depot/projects/uart/dev/usb/if_aue.c#15 integrate .. //depot/projects/uart/dev/usb/if_axe.c#16 integrate .. //depot/projects/uart/dev/usb/ubser.c#6 integrate .. //depot/projects/uart/gnu/fs/xfs/FreeBSD/support/mrlock.c#2 integrate .. //depot/projects/uart/gnu/fs/xfs/FreeBSD/support/mrlock.h#2 integrate .. //depot/projects/uart/i386/acpica/acpi_machdep.c#11 integrate .. //depot/projects/uart/i386/i386/support.s#10 integrate .. //depot/projects/uart/i4b/layer1/ifpnp/i4b_ifpnp_avm.c#5 integrate .. //depot/projects/uart/i4b/layer1/ihfc/i4b_ihfc_pnp.c#5 integrate .. //depot/projects/uart/i4b/layer1/isic/i4b_avm_a1.c#5 integrate .. //depot/projects/uart/i4b/layer1/isic/i4b_isic_pnp.c#5 integrate .. //depot/projects/uart/i4b/layer1/isic/i4b_itk_ix1.c#5 integrate .. //depot/projects/uart/i4b/layer1/isic/i4b_tel_s016.c#5 integrate .. //depot/projects/uart/i4b/layer1/isic/i4b_tel_s0163.c#5 integrate .. //depot/projects/uart/kern/kern_sx.c#12 integrate .. //depot/projects/uart/kern/subr_witness.c#21 integrate .. //depot/projects/uart/kern/vfs_lookup.c#17 integrate .. //depot/projects/uart/kern/vfs_mount.c#31 integrate .. //depot/projects/uart/kern/vfs_subr.c#39 integrate .. //depot/projects/uart/modules/cryptodev/Makefile#2 integrate .. //depot/projects/uart/netgraph/ng_base.c#17 integrate .. //depot/projects/uart/netinet/sctp_auth.c#3 integrate .. //depot/projects/uart/netinet/sctp_constants.h#3 integrate .. //depot/projects/uart/netinet/sctp_indata.c#3 integrate .. //depot/projects/uart/netinet/sctp_input.c#3 integrate .. //depot/projects/uart/netinet/sctp_os_bsd.h#3 integrate .. //depot/projects/uart/netinet/sctp_output.c#3 integrate .. //depot/projects/uart/netinet/sctp_pcb.c#3 integrate .. //depot/projects/uart/netinet/sctp_pcb.h#3 integrate .. //depot/projects/uart/netinet/sctp_structs.h#3 integrate .. //depot/projects/uart/netinet/sctp_sysctl.c#2 integrate .. //depot/projects/uart/netinet/sctp_sysctl.h#2 integrate .. //depot/projects/uart/netinet/sctp_uio.h#3 integrate .. //depot/projects/uart/netinet/sctp_usrreq.c#3 integrate .. //depot/projects/uart/netinet/sctputil.c#3 integrate .. //depot/projects/uart/netinet6/in6_src.c#14 integrate .. //depot/projects/uart/netinet6/sctp6_usrreq.c#3 integrate .. //depot/projects/uart/powerpc/conf/GENERIC#16 integrate .. //depot/projects/uart/powerpc/conf/NOTES#6 integrate .. //depot/projects/uart/powerpc/powermac/uninorth.c#7 integrate .. //depot/projects/uart/powerpc/powerpc/extintr.c#2 delete .. //depot/projects/uart/sys/_sx.h#1 branch .. //depot/projects/uart/sys/mount.h#22 integrate .. //depot/projects/uart/sys/sleepqueue.h#6 integrate .. //depot/projects/uart/sys/sx.h#10 integrate .. //depot/projects/uart/sys/vnode.h#21 integrate Differences ... ==== //depot/projects/uart/amd64/amd64/support.S#10 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.122 2007/03/30 01:07:27 jkim Exp $ + * $FreeBSD: src/sys/amd64/amd64/support.S,v 1.126 2007/03/31 01:47:37 jkim Exp $ */ #include "opt_ddb.h" @@ -242,7 +242,7 @@ cmpq %rcx,%rax ja copyout_fault - xchgq %rdi, %rsi + xchgq %rdi,%rsi /* bcopy(%rsi, %rdi, %rdx) */ movq %rdx,%rcx @@ -288,8 +288,8 @@ cmpq %rcx,%rax ja copyin_fault - xchgq %rdi, %rsi - movq %rdx, %rcx + xchgq %rdi,%rsi + movq %rdx,%rcx movb %cl,%al shrq $3,%rcx /* copy longword-wise */ cld @@ -353,11 +353,11 @@ cmpq %rax,%rdi /* verify address is valid */ ja fusufault - movq %rsi, %rax /* old */ + movq %rsi,%rax /* old */ #ifdef SMP lock #endif - cmpxchgq %rdx, (%rdi) /* new = %rdx */ + cmpxchgq %rdx,(%rdi) /* new = %rdx */ /* * The old value is in %eax. If the store succeeded it will be the @@ -501,7 +501,7 @@ cmpq %rax,%rdi /* verify address validity */ ja fusufault - movl %esi, %eax + movl %esi,%eax movb %al,(%rdi) xorl %eax,%eax movq PCPU(CURPCB),%rcx /* restore trashed register */ @@ -518,9 +518,9 @@ * return the actual length in *lencopied. */ ENTRY(copyinstr) - movq %rdx, %r8 /* %r8 = maxlen */ - movq %rcx, %r9 /* %r9 = *len */ - xchgq %rdi, %rsi /* %rdi = from, %rsi = to */ + movq %rdx,%r8 /* %r8 = maxlen */ + movq %rcx,%r9 /* %r9 = *len */ + xchgq %rdi,%rsi /* %rdi = from, %rsi = to */ movq PCPU(CURPCB),%rcx movq $cpystrflt,PCB_ONFAULT(%rcx) @@ -582,9 +582,9 @@ * %rdi, %rsi, %rdx, %rcx */ ENTRY(copystr) - movq %rdx, %r8 /* %r8 = maxlen */ + movq %rdx,%r8 /* %r8 = maxlen */ - xchgq %rdi, %rsi + xchgq %rdi,%rsi incq %rdx cld 1: @@ -605,11 +605,11 @@ 6: - testq %rcx, %rcx + testq %rcx,%rcx jz 7f /* set *lencopied and return %rax */ - subq %rdx, %r8 - movq %r8, (%rcx) + subq %rdx,%r8 + movq %r8,(%rcx) 7: ret @@ -626,7 +626,7 @@ jmp 1f nop 1: - movl $KDSEL, %eax + movl $KDSEL,%eax movl %eax,%ds movl %eax,%es movl %eax,%fs /* Beware, use wrmsr to set 64 bit base */ @@ -671,6 +671,49 @@ incl %eax ret +/*****************************************************************************/ +/* linux_futex support */ +/*****************************************************************************/ + +futex_fault: + movq $0,PCB_ONFAULT(%rcx) + movq $-EFAULT,%rax + ret + +ENTRY(futex_xchgl) + movq PCPU(CURPCB),%rcx + movq $futex_fault,PCB_ONFAULT(%rcx) + + movq $VM_MAXUSER_ADDRESS-4,%rax + cmpq %rax,%rsi + ja futex_fault + +#ifdef SMP + lock +#endif + xchgl %edi,(%rsi) + movl %edi,(%rdx) + xorl %eax,%eax + movq %rax,PCB_ONFAULT(%rcx) + ret + +ENTRY(futex_addl) + movq PCPU(CURPCB),%rcx + movq $futex_fault,PCB_ONFAULT(%rcx) + + movq $VM_MAXUSER_ADDRESS-4,%rax + cmpq %rax,%rsi + ja futex_fault + +#ifdef SMP + lock +#endif + xaddl %edi,(%rsi) + movl %edi,(%rdx) + xorl %eax,%eax + movq %rax,PCB_ONFAULT(%rcx) + ret + /* * Support for BB-profiling (gcc -a). The kernbb program will extract * the data from the kernel. @@ -689,47 +732,3 @@ movq %rax,32(%rdi) movq %rdi,bbhead NON_GPROF_RET - -#if defined(SMP) || !defined(_KERNEL) -#define MPLOCKED lock ; -#else -#define MPLOCKED -#endif - - .text - -futex_fault: - movq PCPU(CURPCB), %rdx - movq $0, PCB_ONFAULT(%rdx) - movq $-EFAULT, %rax - ret - -/* int futex_xchgl(int oparg, caddr_t uaddr, int *oldval); */ -ENTRY(futex_xchgl) - movq PCPU(CURPCB), %r11 - movq $futex_fault, PCB_ONFAULT(%r11) - - movq $VM_MAXUSER_ADDRESS-4, %rax - cmpq %rax, %rsi - ja futex_fault - - MPLOCKED xchgl %edi, (%rsi) - movl %edi, (%rdx) - xorl %eax, %eax - movq %rax, PCB_ONFAULT(%r11) - ret - -/* int futex_addl(int oparg, caddr_t uaddr, int *oldval); */ -ENTRY(futex_addl) - movq PCPU(CURPCB), %r11 - movq $futex_fault, PCB_ONFAULT(%r11) - - movq $VM_MAXUSER_ADDRESS-4, %rax - cmpq %rax, %rsi - ja futex_fault - - MPLOCKED xaddl %edi, (%rsi) - movl %edi, (%rdx) - xorl %eax, %eax - movq %rax, PCB_ONFAULT(%r11) - ret ==== //depot/projects/uart/conf/NOTES#49 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1416 2007/03/26 09:10:28 yar Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1418 2007/04/02 01:04:20 mjacob Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -214,6 +214,12 @@ # to sleep rather than spinning. options ADAPTIVE_GIANT +# ADAPTIVE_SX changes the behavior of sx locks to spin if the thread +# that currently owns the lock is executing on another CPU. Note that +# in addition to enabling this option, individual sx locks must be +# initialized with the SX_ADAPTIVESPIN flag. +options ADAPTIVE_SX + # MUTEX_NOINLINE forces mutex operations to call functions to perform each # operation rather than inlining the simple cases. This can be used to # shrink the size of the kernel text segment. Note that this behavior is @@ -233,6 +239,13 @@ # and WITNESS options. options RWLOCK_NOINLINE +# SX_NOINLINE forces sx lock operations to call functions to perform each +# operation rather than inlining the simple cases. This can be used to +# shrink the size of the kernel text segment. Note that this behavior is +# already implied by the INVARIANT_SUPPORT, INVARIANTS, KTR, LOCK_PROFILING, +# and WITNESS options. +options SX_NOINLINE + # SMP Debugging Options: # # PREEMPTION allows the threads that are in the kernel to be preempted @@ -1521,9 +1534,13 @@ # options ISP_TARGET_MODE=1 # -# ISP_DEFAULT_ROLES - default role (none, target, init, both) +# ISP_DEFAULT_ROLES - default role +# none=0 +# target=1 +# initiator=2 +# both=3 (not supported currently) # -options ISP_DEFAULT_ROLES=3 +options ISP_DEFAULT_ROLES=2 # Options used in dev/sym/ (Symbios SCSI driver). #options SYM_SETUP_LP_PROBE_MAP #-Low Priority Probe Map (bits) ==== //depot/projects/uart/conf/options#46 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.583 2007/03/27 19:32:40 jhb Exp $ +# $FreeBSD: src/sys/conf/options,v 1.584 2007/03/31 23:23:41 jhb Exp $ # # On the handling of kernel options # @@ -59,6 +59,7 @@ # Miscellaneous options. ADAPTIVE_GIANT opt_adaptive_mutexes.h +ADAPTIVE_SX ALQ AUDIT opt_global.h CODA_COMPAT_5 opt_coda.h @@ -555,6 +556,7 @@ REGRESSION opt_global.h RESTARTABLE_PANICS opt_global.h RWLOCK_NOINLINE opt_global.h +SX_NOINLINE opt_global.h VFS_BIO_DEBUG opt_global.h # These are VM related options ==== //depot/projects/uart/dev/acpica/acpi_ec.c#18 (text+ko) ==== @@ -136,12 +136,13 @@ *****************************************************************************/ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.72 2007/03/22 18:16:40 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_ec.c,v 1.73 2007/03/31 23:23:41 jhb Exp $"); #include "opt_acpi.h" #include #include #include +#include #include #include #include ==== //depot/projects/uart/dev/ahb/ahb.c#10 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ahb/ahb.c,v 1.39 2007/02/23 12:18:30 piso Exp $ + * $FreeBSD: src/sys/dev/ahb/ahb.c,v 1.40 2007/04/01 16:55:31 netchild Exp $ */ #include @@ -378,8 +378,10 @@ goto error_exit; /* Enable our interrupt */ - bus_setup_intr(dev, irq, INTR_TYPE_CAM|INTR_ENTROPY, NULL, ahbintr, - ahb, &ih); + if (bus_setup_intr(dev, irq, INTR_TYPE_CAM|INTR_ENTROPY, NULL, ahbintr, + ahb, &ih) != 0) + goto error_exit; + return (0); error_exit: ==== //depot/projects/uart/dev/arcmsr/arcmsr.c#7 (text+ko) ==== @@ -56,7 +56,7 @@ ** and cause g_vfs_done() read write error ****************************************************************************************** -* $FreeBSD: src/sys/dev/arcmsr/arcmsr.c,v 1.20 2007/03/12 05:10:29 mjacob Exp $ +* $FreeBSD: src/sys/dev/arcmsr/arcmsr.c,v 1.21 2007/04/02 03:31:37 scottl Exp $ */ #include #include @@ -1270,8 +1270,7 @@ , acb->pci_unit, error); } if((pccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_INPROG) { - xpt_freeze_devq(pccb->ccb_h.path, /*count*/1); - pccb->ccb_h.status |= (CAM_REQ_TOO_BIG|CAM_DEV_QFRZN); + pccb->ccb_h.status |= CAM_REQ_TOO_BIG; } arcmsr_srb_complete(srb, 0); return; @@ -1307,14 +1306,14 @@ arcmsr_srb_complete(srb, 0); return; } - pccb->ccb_h.status |= CAM_SIM_QUEUED; if(acb->srboutstandingcount >= ARCMSR_MAX_OUTSTANDING_CMD) { - pccb->ccb_h.status &= ~CAM_STATUS_MASK; - pccb->ccb_h.status |= (CAM_REQUEUE_REQ|CAM_DEV_QFRZN); + xpt_freeze_simq(acb->psim, 1); + pccb->ccb_h.status = CAM_REQUEUE_REQ; acb->acb_flags |= ACB_F_CAM_DEV_QFRZN; arcmsr_srb_complete(srb, 0); return; } + pccb->ccb_h.status |= CAM_SIM_QUEUED; arcmsr_build_srb(srb, dm_segs, nseg); arcmsr_post_srb(acb, srb); return; ==== //depot/projects/uart/dev/ed/if_ed_pccard.c#15 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ed/if_ed_pccard.c,v 1.111 2007/02/23 12:18:38 piso Exp $ + * $FreeBSD: src/sys/dev/ed/if_ed_pccard.c,v 1.112 2007/04/01 14:15:26 netchild Exp $ */ /* @@ -541,7 +541,7 @@ sc->chip_type == ED_CHIP_TYPE_DL10022) { /* Probe for an MII bus, but ignore errors. */ ed_pccard_dl100xx_mii_reset(sc); - mii_phy_probe(dev, &sc->miibus, ed_ifmedia_upd, + (void)mii_phy_probe(dev, &sc->miibus, ed_ifmedia_upd, ed_ifmedia_sts); } else if (sc->chip_type == ED_CHIP_TYPE_AX88190) { ed_pccard_ax88x90_mii_reset(sc); ==== //depot/projects/uart/dev/firewire/fwohci_pci.c#15 (text+ko) ==== @@ -31,7 +31,7 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/firewire/fwohci_pci.c,v 1.58 2007/03/19 03:41:27 simokawa Exp $ + * $FreeBSD: src/sys/dev/firewire/fwohci_pci.c,v 1.59 2007/03/30 22:25:26 simokawa Exp $ */ #define BOUNCE_BUFFER_TEST 0 @@ -424,19 +424,18 @@ FWOHCI_INTMASKCLR, OHCI_INT_EN); if (sc->irq_res) { - int err = bus_teardown_intr(self, sc->irq_res, sc->ih); - if (err) - /* XXX or should we panic? */ - device_printf(self, "Could not tear down irq, %d\n", - err); + int err; + if (sc->ih) { + err = bus_teardown_intr(self, sc->irq_res, sc->ih); + if (err) + device_printf(self, + "Could not tear down irq, %d\n", err); #if defined(__DragonFly__) || __FreeBSD_version < 500000 - bus_teardown_intr(self, sc->irq_res, sc->ih_cam); - bus_teardown_intr(self, sc->irq_res, sc->ih_bio); + bus_teardown_intr(self, sc->irq_res, sc->ih_cam); + bus_teardown_intr(self, sc->irq_res, sc->ih_bio); #endif - sc->ih = NULL; - } - - if (sc->irq_res) { + sc->ih = NULL; + } bus_release_resource(self, SYS_RES_IRQ, 0, sc->irq_res); sc->irq_res = NULL; } ==== //depot/projects/uart/dev/ipmi/ipmi_pci.c#3 (text) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ipmi/ipmi_pci.c,v 1.2 2006/09/22 22:11:29 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ipmi/ipmi_pci.c,v 1.4 2007/03/31 21:39:02 jhb Exp $"); #include #include @@ -185,7 +185,7 @@ { if (pci_get_class(dev) == PCIC_SERIALBUS && - pci_get_subclass(dev) == 0x07) { + pci_get_subclass(dev) == PCIS_SERIALBUS_IPMI) { device_set_desc(dev, "IPMI System Interface"); return (BUS_PROBE_GENERIC); } @@ -204,13 +204,13 @@ /* Interface is determined by progif. */ switch (pci_get_progif(dev)) { - case 0: + case PCIP_SERIALBUS_IPMI_SMIC: iface = SMIC_MODE; break; - case 1: + case PCIP_SERIALBUS_IPMI_KCS: iface = KCS_MODE; break; - case 2: + case PCIP_SERIALBUS_IPMI_BT: iface = BT_MODE; device_printf(dev, "BT interface unsupported\n"); return (ENXIO); @@ -220,12 +220,9 @@ return (ENXIO); } - /* - * Bottom bit of bar indicates resouce type. There should be - * constants in pcireg.h for fields in a BAR. - */ + /* Check the BAR to determine our resource type. */ sc->ipmi_io_rid = PCIR_BAR(0); - if (pci_read_config(dev, PCIR_BAR(0), 4) & 0x1) + if (PCI_BAR_IO(pci_read_config(dev, PCIR_BAR(0), 4))) type = SYS_RES_IOPORT; else type = SYS_RES_MEMORY; ==== //depot/projects/uart/dev/isp/isp_freebsd.c#21 (text+ko) ==== @@ -28,7 +28,7 @@ * Platform (FreeBSD) dependent common attachment code for Qlogic adapters. */ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.136 2007/03/12 04:54:30 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_freebsd.c,v 1.137 2007/04/02 01:04:20 mjacob Exp $"); #include #include #include @@ -382,6 +382,14 @@ retval = EINVAL; break; } + /* + * XXX: Current + */ + if (nr == ISP_ROLE_BOTH) { + isp_prt(isp, ISP_LOGERR, "dual roles not supported"); + retval = EINVAL; + break; + } *(int *)addr = isp->isp_role; isp->isp_role = nr; /* FALLTHROUGH */ @@ -1133,7 +1141,7 @@ static void isp_ledone(ispsoftc_t *isp, lun_entry_t *lep) { - const char lfmt[] = "now %sabled for target mode"; + const char lfmt[] = "now %sabled for target mode\n"; union ccb *ccb; uint32_t seq; tstate_t *tptr; ==== //depot/projects/uart/dev/isp/isp_freebsd.h#17 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.102 2007/03/13 06:46:08 mjacob Exp $ */ +/* $FreeBSD: src/sys/dev/isp/isp_freebsd.h,v 1.104 2007/04/02 01:04:20 mjacob Exp $ */ /*- * Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions * @@ -532,4 +532,10 @@ #include +/* + * XXX: Temp + */ +#if ISP_DEFAULT_ROLES == ISP_ROLE_BOTH +#error "Dual Role Temporarily Unsupported" +#endif #endif /* _ISP_FREEBSD_H */ ==== //depot/projects/uart/dev/isp/isp_library.c#10 (text) ==== @@ -34,7 +34,7 @@ #endif #ifdef __FreeBSD__ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_library.c,v 1.12 2007/03/22 23:38:31 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_library.c,v 1.13 2007/04/02 01:04:20 mjacob Exp $"); #include #endif #ifdef __OpenBSD__ @@ -1499,12 +1499,12 @@ void * isp_find_xs_tgt(ispsoftc_t *isp, uint32_t handle) { - if (handle == 0 || (handle & 0x8000) == 0 || - (handle & 0x7fff) > isp->isp_maxcmds) { + if (handle == 0 || IS_TARGET_HANDLE(handle) == 0 || + (handle & ISP_HANDLE_MASK) > isp->isp_maxcmds) { isp_prt(isp, ISP_LOGERR, "bad handle in isp_find_xs_tgt"); return (NULL); } else { - return (isp->isp_tgtlist[(handle & 0x7fff) - 1]); + return (isp->isp_tgtlist[(handle & ISP_HANDLE_MASK) - 1]); } } @@ -1515,7 +1515,7 @@ if (xs != NULL) { for (i = 0; i < isp->isp_maxcmds; i++) { if (isp->isp_tgtlist[i] == xs) { - return ((i+1) & 0x7fff); + return ((i+1) & ISP_HANDLE_MASK); } } } @@ -1525,12 +1525,12 @@ void isp_destroy_tgt_handle(ispsoftc_t *isp, uint32_t handle) { - if (handle == 0 || (handle & 0x8000) == 0 || - (handle & 0x7fff) > isp->isp_maxcmds) { + if (handle == 0 || IS_TARGET_HANDLE(handle) == 0 || + (handle & ISP_HANDLE_MASK) > isp->isp_maxcmds) { isp_prt(isp, ISP_LOGERR, "bad handle in isp_destroy_tgt_handle"); } else { - isp->isp_tgtlist[(handle & 0x7fff) - 1] = NULL; + isp->isp_tgtlist[(handle & ISP_HANDLE_MASK) - 1] = NULL; } } ==== //depot/projects/uart/dev/isp/isp_library.h#7 (text) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/isp/isp_library.h,v 1.7 2007/03/22 23:38:31 mjacob Exp $ */ +/* $FreeBSD: src/sys/dev/isp/isp_library.h,v 1.8 2007/04/02 01:04:20 mjacob Exp $ */ /*- * Copyright (c) 1997-2007 by Matthew Jacob * All rights reserved. @@ -128,6 +128,8 @@ extern void isp_get_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *); extern void isp_put_ct_hdr(ispsoftc_t *isp, ct_hdr_t *, ct_hdr_t *); +#define ISP_HANDLE_MASK 0x7fff + #ifdef ISP_TARGET_MODE #if defined(__NetBSD__) || defined(__OpenBSD__) #include ==== //depot/projects/uart/dev/isp/isp_pci.c#21 (text+ko) ==== @@ -28,7 +28,7 @@ * FreeBSD Version. */ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_pci.c,v 1.141 2007/03/22 23:38:32 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_pci.c,v 1.142 2007/04/02 01:04:20 mjacob Exp $"); #include #include @@ -1994,7 +1994,7 @@ cto->ct_scsi_status = 0; pcs = (struct isp_pcisoftc *)isp; - dp = &pcs->dmaps[isp_handle_index(handle)]; + dp = &pcs->dmaps[isp_handle_index(handle & ISP_HANDLE_MASK)]; if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { bus_dmamap_sync(pcs->dmat, *dp, BUS_DMASYNC_PREREAD); } else { @@ -2388,7 +2388,7 @@ isp = mp->isp; rq = mp->rq; pcs = (struct isp_pcisoftc *)mp->isp; - dp = &pcs->dmaps[isp_handle_index(rq->req_handle)]; + dp = &pcs->dmaps[isp_handle_index(rq->req_handle & ISP_HANDLE_MASK)]; nxti = *mp->nxtip; if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { @@ -2494,7 +2494,7 @@ isp = mp->isp; rq = mp->rq; pcs = (struct isp_pcisoftc *)mp->isp; - dp = &pcs->dmaps[isp_handle_index(rq->req_handle)]; + dp = &pcs->dmaps[isp_handle_index(rq->req_handle & ISP_HANDLE_MASK)]; nxti = *mp->nxtip; if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { @@ -2628,7 +2628,7 @@ isp = mp->isp; rq = mp->rq; pcs = (struct isp_pcisoftc *)mp->isp; - dp = &pcs->dmaps[isp_handle_index(rq->req_handle)]; + dp = &pcs->dmaps[isp_handle_index(rq->req_handle & ISP_HANDLE_MASK)]; nxti = *mp->nxtip; if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { @@ -2795,7 +2795,8 @@ if ((csio->ccb_h.flags & CAM_SCATTER_VALID) == 0) { if ((csio->ccb_h.flags & CAM_DATA_PHYS) == 0) { int error, s; - dp = &pcs->dmaps[isp_handle_index(rq->req_handle)]; + dp = &pcs->dmaps[isp_handle_index( + rq->req_handle & ISP_HANDLE_MASK)]; s = splsoftvm(); error = bus_dmamap_load(pcs->dmat, *dp, csio->data_ptr, csio->dxfer_len, eptr, mp, 0); @@ -2880,7 +2881,8 @@ isp_pci_dmateardown(ispsoftc_t *isp, XS_T *xs, uint32_t handle) { struct isp_pcisoftc *pcs = (struct isp_pcisoftc *)isp; - bus_dmamap_t *dp = &pcs->dmaps[isp_handle_index(handle)]; + bus_dmamap_t *dp; + dp = &pcs->dmaps[isp_handle_index(handle & ISP_HANDLE_MASK)]; if ((xs->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { bus_dmamap_sync(pcs->dmat, *dp, BUS_DMASYNC_POSTREAD); } else { ==== //depot/projects/uart/dev/isp/isp_sbus.c#16 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp_sbus.c,v 1.31 2007/03/28 16:34:11 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/isp/isp_sbus.c,v 1.32 2007/04/02 01:04:20 mjacob Exp $"); #include #include @@ -624,7 +624,7 @@ isp = mp->isp; rq = mp->rq; sbs = (struct isp_sbussoftc *)mp->isp; - dp = &sbs->dmaps[isp_handle_index(rq->req_handle)]; + dp = &sbs->dmaps[isp_handle_index(rq->req_handle & ISP_HANDLE_MASK)]; nxti = *mp->nxtip; if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { @@ -735,7 +735,8 @@ if ((csio->ccb_h.flags & CAM_SCATTER_VALID) == 0) { if ((csio->ccb_h.flags & CAM_DATA_PHYS) == 0) { int error, s; - dp = &sbs->dmaps[isp_handle_index(rq->req_handle)]; + dp = &sbs->dmaps[isp_handle_index( + rq->req_handle & ISP_HANDLE_MASK)]; s = splsoftvm(); error = bus_dmamap_load(sbs->dmat, *dp, csio->data_ptr, csio->dxfer_len, eptr, mp, 0); @@ -809,7 +810,8 @@ isp_sbus_dmateardown(ispsoftc_t *isp, XS_T *xs, uint32_t handle) { struct isp_sbussoftc *sbs = (struct isp_sbussoftc *)isp; - bus_dmamap_t *dp = &sbs->dmaps[isp_handle_index(handle)]; + bus_dmamap_t *dp; + dp = &sbs->dmaps[isp_handle_index(handle & ISP_HANDLE_MASK)]; if ((xs->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) { bus_dmamap_sync(sbs->dmat, *dp, BUS_DMASYNC_POSTREAD); } else { ==== //depot/projects/uart/dev/mxge/if_mxge.c#8 (text+ko) ==== @@ -32,7 +32,7 @@ ***************************************************************************/ #include -__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.24 2007/03/27 15:55:32 gallatin Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.25 2007/03/31 23:23:41 jhb Exp $"); #include #include @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include ==== //depot/projects/uart/dev/pci/pci.c#30 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.345 2007/03/26 20:18:52 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.348 2007/03/31 21:39:02 jhb Exp $"); #include "opt_bus.h" @@ -72,7 +72,7 @@ #endif static uint32_t pci_mapbase(unsigned mapreg); -static int pci_maptype(unsigned mapreg); +static const char *pci_maptype(unsigned mapreg); static int pci_mapsize(unsigned testval); static int pci_maprange(unsigned mapreg); static void pci_fixancient(pcicfgregs *cfg); @@ -305,29 +305,24 @@ static uint32_t pci_mapbase(uint32_t mapreg) { - int mask = 0x03; - if ((mapreg & 0x01) == 0) - mask = 0x0f; - return (mapreg & ~mask); + + if (PCI_BAR_MEM(mapreg)) + return (mapreg & PCIM_BAR_MEM_BASE); + else + return (mapreg & PCIM_BAR_IO_BASE); } /* return map type of memory or port map */ -static int +static const char * pci_maptype(unsigned mapreg) { - static uint8_t maptype[0x10] = { - PCI_MAPMEM, PCI_MAPPORT, - PCI_MAPMEM, 0, - PCI_MAPMEM, PCI_MAPPORT, - 0, 0, - PCI_MAPMEM|PCI_MAPMEMP, PCI_MAPPORT, - PCI_MAPMEM|PCI_MAPMEMP, 0, - PCI_MAPMEM|PCI_MAPMEMP, PCI_MAPPORT, - 0, 0, - }; - return (maptype[mapreg & 0x0f]); + if (PCI_BAR_IO(mapreg)) + return ("I/O Port"); + if (mapreg & PCIM_BAR_MEM_PREFETCH) + return ("Prefetchable Memory"); + return ("Memory"); } /* return log2 of map size decoded for memory or port map */ @@ -355,19 +350,21 @@ pci_maprange(unsigned mapreg) { int ln2range = 0; - switch (mapreg & 0x07) { - case 0x00: - case 0x01: - case 0x05: + + if (PCI_BAR_IO(mapreg)) ln2range = 32; - break; - case 0x02: - ln2range = 20; - break; - case 0x04: - ln2range = 64; - break; - } + else + switch (mapreg & PCIM_BAR_MEM_TYPE) { + case PCIM_BAR_MEM_32: + ln2range = 32; + break; + case PCIM_BAR_MEM_1MB: + ln2range = 20; + break; + case PCIM_BAR_MEM_64: + ln2range = 64; + break; + } return (ln2range); } @@ -1062,7 +1059,7 @@ uint32_t offset, bit; KASSERT(cfg->msix.msix_alloc > index, ("bogus index")); - offset = cfg->msix.msix_pba_offset + (index / 4) * 4; + offset = cfg->msix.msix_pba_offset + (index / 32) * 4; bit = 1 << index % 32; return (bus_read_4(cfg->msix.msix_pba_res, offset) & bit); } @@ -1972,7 +1969,7 @@ testval = PCIB_READ_CONFIG(pcib, b, s, f, reg, 4); PCIB_WRITE_CONFIG(pcib, b, s, f, reg, map, 4); - if (pci_maptype(map) & PCI_MAPMEM) + if (PCI_BAR_MEM(map)) type = SYS_RES_MEMORY; else type = SYS_RES_IOPORT; @@ -1988,8 +1985,7 @@ * areas to the type of memory involved. Memory must be at least * 16 bytes in size, while I/O ranges must be at least 4. */ - if ((testval & 0x1) == 0x1 && - (testval & 0x2) != 0) + if (PCI_BAR_IO(testval) && (testval & PCIM_BAR_IO_RESERVED) != 0) return (barlen); if ((type == SYS_RES_MEMORY && ln2size < 4) || (type == SYS_RES_IOPORT && ln2size < 2)) @@ -1999,7 +1995,7 @@ /* Read the other half of a 64bit map register */ base |= (uint64_t) PCIB_READ_CONFIG(pcib, b, s, f, reg + 4, 4) << 32; if (bootverbose) { - printf("\tmap[%02x]: type %x, range %2d, base %#jx, size %2d", + printf("\tmap[%02x]: type %s, range %2d, base %#jx, size %2d", reg, pci_maptype(map), ln2range, (uintmax_t)base, ln2size); if (type == SYS_RES_IOPORT && !pci_porten(pcib, b, s, f)) printf(", port disabled\n"); @@ -2920,7 +2916,7 @@ map |= (pci_addr_t)pci_read_config(child, *rid + 4, 4) << 32; if (pci_mapbase(testval) == 0) goto out; - if (pci_maptype(testval) & PCI_MAPMEM) { + if (PCI_BAR_MEM(testval)) { if (type != SYS_RES_MEMORY) { if (bootverbose) device_printf(dev, ==== //depot/projects/uart/dev/pci/pci_pci.c#12 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/pci/pci_pci.c,v 1.46 2007/01/22 21:48:43 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/pci/pci_pci.c,v 1.47 2007/03/31 20:41:00 jhb Exp $"); /* * PCI:PCI bridge support. @@ -253,7 +253,7 @@ * parts as subtractive. */ if ((pci_get_devid(dev) & 0xff00ffff) == 0x24008086 || - pci_read_config(dev, PCIR_PROGIF, 1) == 1) + pci_read_config(dev, PCIR_PROGIF, 1) == PCIP_BRIDGE_PCI_SUBTRACTIVE) sc->flags |= PCIB_SUBTRACTIVE; if (bootverbose) { ==== //depot/projects/uart/dev/pci/pcireg.h#14 (text+ko) ==== @@ -23,7 +23,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/pcireg.h,v 1.59 2007/03/05 16:18:31 jhb Exp $ + * $FreeBSD: src/sys/dev/pci/pcireg.h,v 1.61 2007/03/31 21:39:02 jhb Exp $ * */ @@ -118,6 +118,19 @@ #define PCIR_BARS 0x10 #define PCIR_BAR(x) (PCIR_BARS + (x) * 4) #define PCI_RID2BAR(rid) (((rid)-PCIR_BARS)/4) +#define PCI_BAR_IO(x) (((x) & PCIM_BAR_SPACE) == PCIM_BAR_IO_SPACE) +#define PCI_BAR_MEM(x) (((x) & PCIM_BAR_SPACE) == PCIM_BAR_MEM_SPACE) +#define PCIM_BAR_SPACE 0x00000001 +#define PCIM_BAR_MEM_SPACE 0 +#define PCIM_BAR_IO_SPACE 1 +#define PCIM_BAR_MEM_TYPE 0x00000006 +#define PCIM_BAR_MEM_32 0 +#define PCIM_BAR_MEM_1MB 2 /* Locate below 1MB in PCI <= 2.1 */ +#define PCIM_BAR_MEM_64 4 >>> TRUNCATED FOR MAIL (1000 lines) <<<