Date: Mon, 9 Jun 2003 11:36:58 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 32860 for review Message-ID: <200306091836.h59IawsT000409@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=32860 Change 32860 by jhb@jhb_laptop on 2003/06/09 11:36:12 IFC @32857. Affected files ... .. //depot/projects/smpng/sys/alpha/conf/GENERIC#30 integrate .. //depot/projects/smpng/sys/boot/ficl/Makefile#4 integrate .. //depot/projects/smpng/sys/boot/ficl/loader.c#6 integrate .. //depot/projects/smpng/sys/boot/i386/kgzldr/Makefile#8 integrate .. //depot/projects/smpng/sys/boot/i386/libi386/Makefile#9 integrate .. //depot/projects/smpng/sys/boot/pc98/kgzldr/Makefile#6 integrate .. //depot/projects/smpng/sys/boot/pc98/libpc98/Makefile#8 integrate .. //depot/projects/smpng/sys/boot/pc98/libpc98/i386_module.c#1 branch .. //depot/projects/smpng/sys/boot/pc98/loader/Makefile#9 integrate .. //depot/projects/smpng/sys/boot/pc98/loader/help.pc98#1 branch .. //depot/projects/smpng/sys/conf/NOTES#45 integrate .. //depot/projects/smpng/sys/conf/ldscript.sparc64#3 integrate .. //depot/projects/smpng/sys/conf/newvers.sh#6 integrate .. //depot/projects/smpng/sys/ddb/db_ps.c#19 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic7770.c#8 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.c#13 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.h#11 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_pci.c#11 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx.c#15 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx.h#9 integrate .. //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx_pci.c#11 integrate .. //depot/projects/smpng/sys/dev/ata/ata-chipset.c#14 integrate .. //depot/projects/smpng/sys/dev/ata/ata-pci.c#32 integrate .. //depot/projects/smpng/sys/dev/exca/exca.c#8 integrate .. //depot/projects/smpng/sys/dev/exca/excavar.h#5 integrate .. //depot/projects/smpng/sys/dev/ofw/openfirm.c#5 integrate .. //depot/projects/smpng/sys/dev/ofw/openfirm.h#5 integrate .. //depot/projects/smpng/sys/dev/pccbb/pccbb.c#30 integrate .. //depot/projects/smpng/sys/dev/pccbb/pccbbvar.h#10 integrate .. //depot/projects/smpng/sys/dev/pci/pci.c#26 integrate .. //depot/projects/smpng/sys/dev/vx/if_vx.c#10 integrate .. //depot/projects/smpng/sys/geom/geom.h#30 integrate .. //depot/projects/smpng/sys/geom/geom_ccd.c#2 integrate .. //depot/projects/smpng/sys/geom/geom_ctl.c#14 integrate .. //depot/projects/smpng/sys/geom/geom_dev.c#26 integrate .. //depot/projects/smpng/sys/geom/geom_dump.c#19 integrate .. //depot/projects/smpng/sys/geom/geom_event.c#18 integrate .. //depot/projects/smpng/sys/geom/geom_slice.c#23 integrate .. //depot/projects/smpng/sys/geom/geom_subr.c#29 integrate .. //depot/projects/smpng/sys/gnu/dev/sound/pci/emu10k1-alsa.h#1 branch .. //depot/projects/smpng/sys/i386/conf/GENERIC#39 integrate .. //depot/projects/smpng/sys/i386/include/acpica_machdep.h#4 integrate .. //depot/projects/smpng/sys/i386/include/apic.h#8 integrate .. //depot/projects/smpng/sys/i386/include/legacyvar.h#2 integrate .. //depot/projects/smpng/sys/i386/isa/apic_vector.s#16 integrate .. //depot/projects/smpng/sys/i386/pci/pci_bus.c#15 integrate .. //depot/projects/smpng/sys/ia64/conf/GENERIC#33 integrate .. //depot/projects/smpng/sys/ia64/ia64/pmap.c#46 integrate .. //depot/projects/smpng/sys/ia64/ia64/trap.c#50 integrate .. //depot/projects/smpng/sys/ia64/include/cpu.h#14 integrate .. //depot/projects/smpng/sys/kern/kern_exec.c#58 integrate .. //depot/projects/smpng/sys/kern/kern_ktr.c#19 integrate .. //depot/projects/smpng/sys/kern/kern_ktrace.c#31 integrate .. //depot/projects/smpng/sys/kern/kern_mib.c#20 integrate .. //depot/projects/smpng/sys/kern/kern_sig.c#69 integrate .. //depot/projects/smpng/sys/kern/sched_ule.c#11 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#14 integrate .. //depot/projects/smpng/sys/netinet/ip_input.c#35 integrate .. //depot/projects/smpng/sys/nfsclient/bootp_subr.c#17 integrate .. //depot/projects/smpng/sys/pc98/conf/GENERIC#33 integrate .. //depot/projects/smpng/sys/pc98/pc98/wd.c#12 integrate .. //depot/projects/smpng/sys/pc98/pc98/wd_cd.c#13 integrate .. //depot/projects/smpng/sys/pci/if_dc.c#39 integrate .. //depot/projects/smpng/sys/pci/if_dcreg.h#14 integrate .. //depot/projects/smpng/sys/powerpc/conf/GENERIC#17 integrate .. //depot/projects/smpng/sys/sparc64/conf/GENERIC#30 integrate .. //depot/projects/smpng/sys/sparc64/include/db_machdep.h#6 integrate .. //depot/projects/smpng/sys/sparc64/include/ofw_mem.h#3 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/dump_machdep.c#5 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#51 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/vm_machdep.c#32 integrate .. //depot/projects/smpng/sys/sys/disklabel.h#26 integrate .. //depot/projects/smpng/sys/sys/ktrace.h#8 integrate .. //depot/projects/smpng/sys/sys/proc.h#91 integrate .. //depot/projects/smpng/sys/sys/sysctl.h#18 integrate .. //depot/projects/smpng/sys/vm/swap_pager.c#27 integrate .. //depot/projects/smpng/sys/vm/vm_kern.c#13 integrate .. //depot/projects/smpng/sys/vm/vm_map.c#36 integrate .. //depot/projects/smpng/sys/vm/vm_mmap.c#28 integrate .. //depot/projects/smpng/sys/vm/vm_object.c#39 integrate .. //depot/projects/smpng/sys/vm/vm_page.c#37 integrate Differences ... ==== //depot/projects/smpng/sys/alpha/conf/GENERIC#30 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.160 2003/05/18 20:39:15 ru Exp $ +# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.161 2003/06/08 02:03:01 jmallett Exp $ machine alpha cpu EV4 @@ -101,7 +101,7 @@ device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') # SCSI peripherals -device scbus # SCSI bus (required) +device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device sa # Sequential Access (tape etc) ==== //depot/projects/smpng/sys/boot/ficl/Makefile#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/ficl/Makefile,v 1.32 2002/05/13 11:09:06 ru Exp $ +# $FreeBSD: src/sys/boot/ficl/Makefile,v 1.33 2003/06/08 03:11:16 nyan Exp $ # .PATH: ${.CURDIR}/${MACHINE_ARCH} BASE_SRCS= dict.c ficl.c fileaccess.c float.c loader.c math64.c \ @@ -13,6 +13,9 @@ .if ${MACHINE_ARCH} == "i386" CFLAGS+= -mpreferred-stack-boundary=2 .endif +.if ${MACHINE} == "pc98" +CFLAGS+= -DPC98 +.endif .if HAVE_PNP CFLAGS+= -DHAVE_PNP .endif ==== //depot/projects/smpng/sys/boot/ficl/loader.c#6 (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/boot/ficl/loader.c,v 1.8 2002/08/21 09:28:00 scottl Exp $ + * $FreeBSD: src/sys/boot/ficl/loader.c,v 1.9 2003/06/08 03:11:16 nyan Exp $ */ /******************************************************************* @@ -656,7 +656,9 @@ dictAppendWord(dp, "ccall", ficlCcall, FW_DEFAULT); #endif -#if defined(__i386__) +#if defined(PC98) + ficlSetEnv(pSys, "arch-pc98", FICL_TRUE); +#elif defined(__i386__) ficlSetEnv(pSys, "arch-i386", FICL_TRUE); ficlSetEnv(pSys, "arch-alpha", FICL_FALSE); ficlSetEnv(pSys, "arch-ia64", FICL_FALSE); ==== //depot/projects/smpng/sys/boot/i386/kgzldr/Makefile#8 (text+ko) ==== @@ -1,6 +1,6 @@ -# $FreeBSD: src/sys/boot/i386/kgzldr/Makefile,v 1.13 2003/06/06 13:49:51 kuriyama Exp $ +# $FreeBSD: src/sys/boot/i386/kgzldr/Makefile,v 1.15 2003/06/07 17:42:26 obrien Exp $ -SRCS= start.s boot.c inflate.c lib.c crt.s sio.s +SRCS= boot.c inflate.c lib.c OBJS= ${SRCS:N*.h:R:S/$/.o/g} CFLAGS= -ffreestanding CFLAGS+=-Os @@ -8,6 +8,12 @@ LDFLAGS=-nostdlib -static -r .PATH: ${.CURDIR}/../../../kern +.for asm in start crt sio +OBJS+= ${asm}.o +${asm}.o: ${asm}.s + ${AS} ${AFLAGS} -o ${.TARGET} ${.ALLSRC:M*${asm}*} +.endfor + CLEANFILES=kgzldr.o BOOT_COMCONSOLE_PORT?= 0x3f8 ==== //depot/projects/smpng/sys/boot/i386/libi386/Makefile#9 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.30 2003/06/02 02:37:27 obrien Exp $ +# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.31 2003/06/07 17:42:26 obrien Exp $ # LIB= i386 INTERNALLIB= true @@ -47,6 +47,6 @@ OBJS+= pxetramp.o pxetramp.o: pxetramp.s - as -o ${.TARGET} ${.ALLSRC:M*pxetramp*} + ${AS} ${AFLAGS} -o ${.TARGET} ${.ALLSRC:M*pxetramp*} .include <bsd.lib.mk> ==== //depot/projects/smpng/sys/boot/pc98/kgzldr/Makefile#6 (text+ko) ==== @@ -1,24 +1,34 @@ -# $FreeBSD: src/sys/boot/pc98/kgzldr/Makefile,v 1.7 2002/09/30 20:37:58 peter Exp $ +# $FreeBSD: src/sys/boot/pc98/kgzldr/Makefile,v 1.9 2003/06/07 17:42:26 obrien Exp $ -FILES= kgzldr.o -SRCS= start.s boot.c inflate.c lib.c crt.s sio.s +SRCS= boot.c inflate.c lib.c OBJS= ${SRCS:N*.h:R:S/$/.o/g} CFLAGS= -ffreestanding CFLAGS+=-Os CFLAGS+=-DKZIP LDFLAGS=-nostdlib -static -r -BINDIR= /usr/lib .PATH: ${.CURDIR}/../../../kern .PATH: ${.CURDIR}/../../i386/kgzldr AFLAGS+=--defsym PC98=1 -CLEANFILES=${FILES} +.for asm in start crt sio +OBJS+= ${asm}.o +${asm}.o: ${asm}.s + ${AS} ${AFLAGS} -o ${.TARGET} ${.ALLSRC:M*${asm}*} +.endfor + +CLEANFILES=kgzldr.o BOOT_COMCONSOLE_PORT?= 0x238 AFLAGS+=--defsym SIO_PRT=${BOOT_COMCONSOLE_PORT} +all: ${OBJS} kgzldr.o + kgzldr.o: ${OBJS} ${CC} ${LDFLAGS} -o ${.TARGET} ${OBJS} -.include <bsd.prog.mk> +realinstall: + ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + kgzldr.o ${DESTDIR}${LIBDIR} + +.include <bsd.lib.mk> ==== //depot/projects/smpng/sys/boot/pc98/libpc98/Makefile#8 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/pc98/libpc98/Makefile,v 1.14 2003/05/01 13:17:06 nyan Exp $ +# $FreeBSD: src/sys/boot/pc98/libpc98/Makefile,v 1.17 2003/06/08 03:16:59 nyan Exp $ # LIB= pc98 INTERNALLIB= true @@ -7,7 +7,7 @@ SRCS= bioscd.c biosdisk.c biosmem.c biospnp.c biospci.c biossmap.c \ bootinfo.c bootinfo32.c comconsole.c devicename.c elf32_freebsd.c \ - gatea20.c i386_copy.c i386_module.c nullconsole.c pxe.c pxetramp.s \ + gatea20.c i386_copy.c i386_module.c nullconsole.c pxe.c \ time.c vidconsole.c CFLAGS+= -ffreestanding @@ -28,7 +28,6 @@ CFLAGS+= -DPC98 CFLAGS+= -I${.CURDIR}/../../common -I${.CURDIR}/../btx/lib \ -I${.CURDIR}/../../i386/libi386 \ - -I${.CURDIR}/../../../contrib/dev/acpica \ -I${.CURDIR}/../../.. -I. # the location of libstand CFLAGS+= -I${.CURDIR}/../../../../lib/libstand/ @@ -41,11 +40,14 @@ .if exists(${.CURDIR}/../../../i386/include) beforedepend ${OBJS}: machine +CLEANFILES+= machine machine: ln -sf ${.CURDIR}/../../../i386/include machine .endif -CLEANFILES+= machine +OBJS+= pxetramp.o +pxetramp.o: pxetramp.s + ${AS} ${AFLAGS} -o ${.TARGET} ${.ALLSRC:M*pxetramp*} .include <bsd.lib.mk> ==== //depot/projects/smpng/sys/boot/pc98/loader/Makefile#9 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/boot/pc98/loader/Makefile,v 1.28 2003/01/21 13:57:43 nyan Exp $ +# $FreeBSD: src/sys/boot/pc98/loader/Makefile,v 1.30 2003/06/08 03:34:49 nyan Exp $ PROG= loader STRIP= @@ -100,15 +100,16 @@ cp ${.ALLSRC} ${.TARGET} strip -R .comment -R .note ${.TARGET} -${PROG}.help: help.common help.i386 +${PROG}.help: help.common help.pc98 cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET} .PATH: ${.CURDIR}/../../forth FILES= ${PROG}.help loader.4th support.4th loader.conf +FILES+= screen.4th frames.4th beastie.4th FILESDIR_loader.conf= /boot/defaults .if !exists(${DESTDIR}/boot/loader.rc) -FILES+= loader.rc +FILES+= ${.CURDIR}/../../i386/loader/loader.rc .endif .include <${.CURDIR}/../Makefile.inc> ==== //depot/projects/smpng/sys/conf/NOTES#45 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1149 2003/05/15 02:10:29 jmallett Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1150 2003/06/09 17:09:51 hmp Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -102,6 +102,7 @@ options BLKDEV_IOSIZE=8192 # Options for the VM subsystem +# L2 cache size (in KB) can be specified in PQ_CACHESIZE options PQ_CACHESIZE=512 # color for 512k/16k cache # Deprecated options supported for backwards compatibility #options PQ_NOOPT # No coloring ==== //depot/projects/smpng/sys/conf/ldscript.sparc64#3 (text+ko) ==== @@ -1,9 +1,9 @@ -/* $FreeBSD: src/sys/conf/ldscript.sparc64,v 1.3 2001/09/21 05:43:37 jake Exp $ */ +/* $FreeBSD: src/sys/conf/ldscript.sparc64,v 1.4 2003/06/07 18:23:50 jake Exp $ */ OUTPUT_FORMAT("elf64-sparc", "elf64-sparc", "elf64-sparc") OUTPUT_ARCH(sparc:v9) ENTRY(_start) - SEARCH_DIR(/home/jake/sparc64-unknown-elf/lib); +SEARCH_DIR(/usr/lib); /* Do we need any of these for elf? __DYNAMIC = 0; */ SECTIONS ==== //depot/projects/smpng/sys/conf/newvers.sh#6 (text+ko) ==== @@ -32,7 +32,7 @@ # SUCH DAMAGE. # # @(#)newvers.sh 8.1 (Berkeley) 4/20/94 -# $FreeBSD: src/sys/conf/newvers.sh,v 1.51 2003/06/02 04:58:43 scottl Exp $ +# $FreeBSD: src/sys/conf/newvers.sh,v 1.53 2003/06/09 18:19:32 jmallett Exp $ TYPE="FreeBSD" REVISION="5.1" @@ -86,6 +86,7 @@ touch version v=`cat version` u=${USER-root} d=`pwd` h=`hostname` t=`date` +i=`make -V KERN_IDENT` cat << EOF > vers.c $COPYRIGHT char sccspad[32 - 4 /* sizeof(sccs) */] = { '\\0' }; @@ -94,6 +95,7 @@ char ostype[] = "${TYPE}"; char osrelease[] = "${RELEASE}"; int osreldate = ${RELDATE}; +char kern_ident[] = "${i}"; EOF echo `expr ${v} + 1` > version ==== //depot/projects/smpng/sys/ddb/db_ps.c#19 (text+ko) ==== @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/ddb/db_ps.c,v 1.41 2003/04/10 17:35:43 julian Exp $ + * $FreeBSD: src/sys/ddb/db_ps.c,v 1.44 2003/06/06 20:28:11 julian Exp $ */ #include <sys/param.h> #include <sys/systm.h> @@ -43,8 +43,8 @@ #include <vm/pmap.h> #include <ddb/ddb.h> -static void -dumpthread(volatile struct proc *p, volatile struct thread *td); + +static void dumpthread(volatile struct proc *p, volatile struct thread *td); void db_ps(dummy1, dummy2, dummy3, dummy4) @@ -72,7 +72,7 @@ /* * XXX just take 20 for now... */ - if (nl++ == 20) { + if (nl++ >= 20) { int c; db_printf("--More--"); @@ -108,7 +108,7 @@ if (P_SHOULDSTOP(p)) state = "stop"; else - state = "norm"; + state = ""; break; case PRS_NEW: state = "new "; @@ -120,7 +120,7 @@ state = "Unkn"; break; } - db_printf("%5d %8p %8p %4d %5d %5d %07x %-4s", + db_printf("%5d %8p %8p %4d %5d %5d %07x %s", p->p_pid, (volatile void *)p, (void *)p->p_uarea, p->p_ucred != NULL ? p->p_ucred->cr_ruid : 0, pp->p_pid, p->p_pgrp != NULL ? p->p_pgrp->pg_id : 0, p->p_flag, @@ -129,6 +129,7 @@ db_printf("(threaded) %s\n", p->p_comm); FOREACH_THREAD_IN_PROC(p, td) { dumpthread(p, td); + nl++; } /* PROC_UNLOCK(p); */ @@ -138,6 +139,7 @@ } /* sx_sunlock(&allproc_lock); */ } + static void dumpthread(volatile struct proc *p, volatile struct thread *td) { @@ -145,10 +147,16 @@ db_printf( " thread %p ksegrp %p ", td, td->td_ksegrp); if (TD_ON_SLEEPQ(td)) { if (td->td_flags & TDF_CVWAITQ) - db_printf("[CVQ "); + if (TD_IS_SLEEPING(td)) + db_printf("[CV]"); + else + db_printf("[CVQ"); else - db_printf("[SLPQ "); - db_printf(" %6s %8p]", td->td_wmesg, + if (TD_IS_SLEEPING(td)) + db_printf("[SLP]"); + else + db_printf("[SLPQ"); + db_printf("%s %p]", td->td_wmesg, (void *)td->td_wchan); } switch (td->td_state) { @@ -158,9 +166,11 @@ td->td_lockname, (void *)td->td_blocked); } +#if 0 /* covered above */ if (TD_IS_SLEEPING(td)) { db_printf("[SLP]"); } +#endif if (TD_IS_SWAPPED(td)) { db_printf("[SWAP]"); } @@ -180,8 +190,11 @@ case TDS_RUNNING: db_printf("[CPU %d]", td->td_oncpu); break; + case TDS_INACTIVE: + db_printf("[INACTIVE]"); + break; default: - panic("unknown thread state"); + db_printf("[UNK: %#x]", td->td_state); } if (p->p_flag & P_THREADED) { if (td->td_kse) ==== //depot/projects/smpng/sys/dev/aic7xxx/aic7770.c#8 (text+ko) ==== @@ -37,9 +37,9 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic7770.c#30 $ + * $Id: //depot/aic7xxx/aic7xxx/aic7770.c#32 $ * - * $FreeBSD: src/sys/dev/aic7xxx/aic7770.c,v 1.12 2003/05/03 23:55:38 gibbs Exp $ + * $FreeBSD: src/sys/dev/aic7xxx/aic7770.c,v 1.14 2003/06/06 23:48:18 gibbs Exp $ */ #ifdef __linux__ @@ -67,8 +67,7 @@ static ahc_device_setup_t ahc_aic7770_EISA_setup;; static ahc_device_setup_t ahc_aic7770_setup; - -struct aic7770_identity aic7770_ident_table [] = +struct aic7770_identity aic7770_ident_table[] = { { ID_AHA_274x, @@ -83,6 +82,12 @@ ahc_aic7770_VL_setup }, { + ID_AHA_284x, + 0xFFFFFFFE, + "Adaptec 284X SCSI adapter (BIOS Disabled)", + ahc_aic7770_VL_setup + }, + { ID_OLV_274x, 0xFFFFFFFF, "Adaptec (Olivetti OEM) 274X SCSI adapter", @@ -154,7 +159,7 @@ ahc->bus_suspend = aic7770_suspend; ahc->bus_resume = aic7770_resume; - error = ahc_reset(ahc); + error = ahc_reset(ahc, /*reinit*/FALSE); if (error != 0) return (error); ==== //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.c#13 (text+ko) ==== @@ -37,9 +37,9 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: aic79xx.c,v 1.16 2003/05/26 21:43:29 gibbs Exp $ + * $Id: //depot/aic7xxx/aic7xxx/aic79xx.c#198 $ * - * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.c,v 1.17 2003/05/30 02:15:15 scottl Exp $ + * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.c,v 1.20 2003/06/06 23:53:39 gibbs Exp $ */ #ifdef __linux__ @@ -1880,21 +1880,32 @@ tinfo->goal.ppr_options = 0; ahd_qinfifo_requeue_tail(ahd, scb); printerror = 0; - } else if ((ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) - || ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE)) + } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_WDTR, FALSE) && ppr_busfree == 0) { /* - * Negotiation Rejected. Go-async and + * Negotiation Rejected. Go-narrow and * retry command. */ #ifdef AHD_DEBUG if ((ahd_debug & AHD_SHOW_MESSAGES) != 0) - printf("Negotiation rejected busfree.\n"); + printf("WDTR negotiation rejected busfree.\n"); #endif ahd_set_width(ahd, &devinfo, MSG_EXT_WDTR_BUS_8_BIT, AHD_TRANS_CUR|AHD_TRANS_GOAL, /*paused*/TRUE); + ahd_qinfifo_requeue_tail(ahd, scb); + printerror = 0; + } else if (ahd_sent_msg(ahd, AHDMSG_EXT, MSG_EXT_SDTR, FALSE) + && ppr_busfree == 0) { + /* + * Negotiation Rejected. Go-async and + * retry command. + */ +#ifdef AHD_DEBUG + if ((ahd_debug & AHD_SHOW_MESSAGES) != 0) + printf("SDTR negotiation rejected busfree.\n"); +#endif ahd_set_syncrate(ahd, &devinfo, /*period*/0, /*offset*/0, /*ppr_options*/0, @@ -2188,7 +2199,7 @@ ahd_outb(ahd, LQOMODE1, 0); ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); simode1 = ahd_inb(ahd, SIMODE1); - ahd_outb(ahd, SIMODE1, ENBUSFREE); + ahd_outb(ahd, SIMODE1, simode1 & ENBUSFREE); ahd_outb(ahd, SEQCTL0, ahd_inb(ahd, SEQCTL0) | STEP); stepping = TRUE; } @@ -3232,6 +3243,7 @@ * may change. */ period = tinfo->goal.period; + offset = tinfo->goal.offset; ppr_options = tinfo->goal.ppr_options; /* Target initiated PPR is not allowed in the SCSI spec */ if (devinfo->role == ROLE_TARGET) @@ -3239,7 +3251,7 @@ ahd_devlimited_syncrate(ahd, tinfo, &period, &ppr_options, devinfo->role); dowide = tinfo->curr.width != tinfo->goal.width; - dosync = tinfo->curr.period != period; + dosync = tinfo->curr.offset != offset || tinfo->curr.period != period; /* * Only use PPR if we have options that need it, even if the device * claims to support it. There might be an expander in the way @@ -3249,7 +3261,7 @@ if (!dowide && !dosync && !doppr) { dowide = tinfo->goal.width != MSG_EXT_WDTR_BUS_8_BIT; - dosync = tinfo->goal.period != 0; + dosync = tinfo->goal.offset != 0; } if (!dowide && !dosync && !doppr) { @@ -3983,22 +3995,30 @@ response = TRUE; sending_reply = TRUE; } + /* + * After a wide message, we are async, but + * some devices don't seem to honor this portion + * of the spec. Force a renegotiation of the + * sync component of our transfer agreement even + * if our goal is async. By updating our width + * after forcing the negotiation, we avoid + * renegotiating for width. + */ + ahd_update_neg_request(ahd, devinfo, tstate, + tinfo, AHD_NEG_ALWAYS); ahd_set_width(ahd, devinfo, bus_width, AHD_TRANS_ACTIVE|AHD_TRANS_GOAL, /*paused*/TRUE); - /* After a wide message, we are async */ - ahd_set_syncrate(ahd, devinfo, /*period*/0, - /*offset*/0, /*ppr_options*/0, - AHD_TRANS_ACTIVE, /*paused*/TRUE); if (sending_reply == FALSE && reject == FALSE) { - if (tinfo->goal.offset) { - ahd->msgout_index = 0; - ahd->msgout_len = 0; - ahd_build_transfer_msg(ahd, devinfo); - ahd->msgout_index = 0; - response = TRUE; - } + /* + * We will always have an SDTR to send. + */ + ahd->msgout_index = 0; + ahd->msgout_len = 0; + ahd_build_transfer_msg(ahd, devinfo); + ahd->msgout_index = 0; + response = TRUE; } done = MSGLOOP_MSGCOMPLETE; break; @@ -5000,15 +5020,20 @@ ahd_timer_stop(&ahd->stat_timer); /* This will reset most registers to 0, but not all */ - ahd_reset(ahd); + ahd_reset(ahd, /*reinit*/FALSE); } /* * Reset the controller and record some information about it - * that is only available just after a reset. + * that is only available just after a reset. If "reinit" is + * non-zero, this reset occured after initial configuration + * and the caller requests that the chip be fully reinitialized + * to a runable state. Chip interrupts are *not* enabled after + * a reinitialization. The caller must enable interrupts via + * ahd_intr_enable(). */ int -ahd_reset(struct ahd_softc *ahd) +ahd_reset(struct ahd_softc *ahd, int reinit) { u_int sxfrctl1; int wait; @@ -5101,7 +5126,7 @@ * If a recovery action has forced a chip reset, * re-initialize the chip to our liking. */ - if (ahd->init_level > 0) + if (reinit != 0) ahd_chip_init(ahd); return (0); @@ -6703,141 +6728,24 @@ int ahd_suspend(struct ahd_softc *ahd) { -#if 0 - uint8_t *ptr; - int i; ahd_pause_and_flushwork(ahd); - if (LIST_FIRST(&ahd->pending_scbs) != NULL) + if (LIST_FIRST(&ahd->pending_scbs) != NULL) { + ahd_unpause(ahd); return (EBUSY); - -#if AHD_TARGET_MODE - /* - * XXX What about ATIOs that have not yet been serviced? - * Perhaps we should just refuse to be suspended if we - * are acting in a target role. - */ - if (ahd->pending_device != NULL) - return (EBUSY); -#endif - - /* Save volatile registers */ - ahd->suspend_state.channel[0].scsiseq = ahd_inb(ahd, SCSISEQ0); - ahd->suspend_state.channel[0].sxfrctl0 = ahd_inb(ahd, SXFRCTL0); - ahd->suspend_state.channel[0].sxfrctl1 = ahd_inb(ahd, SXFRCTL1); - ahd->suspend_state.channel[0].simode0 = ahd_inb(ahd, SIMODE0); - ahd->suspend_state.channel[0].simode1 = ahd_inb(ahd, SIMODE1); - ahd->suspend_state.channel[0].seltimer = ahd_inb(ahd, SELTIMER); - ahd->suspend_state.channel[0].seqctl = ahd_inb(ahd, SEQCTL0); - ahd->suspend_state.dscommand0 = ahd_inb(ahd, DSCOMMAND0); - ahd->suspend_state.dspcistatus = ahd_inb(ahd, DSPCISTATUS); - - if ((ahd->features & AHD_DT) != 0) { - u_int sfunct; - - sfunct = ahd_inb(ahd, SFUNCT) & ~ALT_MODE; - ahd_outb(ahd, SFUNCT, sfunct | ALT_MODE); - ahd->suspend_state.optionmode = ahd_inb(ahd, OPTIONMODE); - ahd_outb(ahd, SFUNCT, sfunct); - ahd->suspend_state.crccontrol1 = ahd_inb(ahd, CRCCONTROL1); - } - - if ((ahd->features & AHD_MULTI_FUNC) != 0) - ahd->suspend_state.scbbaddr = ahd_inb(ahd, SCBBADDR); - - if ((ahd->features & AHD_ULTRA2) != 0) - ahd->suspend_state.dff_thrsh = ahd_inb(ahd, DFF_THRSH); - - ptr = ahd->suspend_state.scratch_ram; - for (i = 0; i < 64; i++) - *ptr++ = ahd_inb(ahd, SRAM_BASE + i); - - if ((ahd->features & AHD_MORE_SRAM) != 0) { - for (i = 0; i < 16; i++) - *ptr++ = ahd_inb(ahd, TARG_OFFSET + i); - } - - ptr = ahd->suspend_state.btt; - for (i = 0;i < AHD_NUM_TARGETS; i++) { - int j; - - for (j = 0;j < AHD_NUM_LUNS_NONPKT; j++) { - u_int tcl; - - tcl = BUILD_TCL_RAW(i, 'A', j); - *ptr = ahd_find_busy_tcl(ahd, tcl); - } } ahd_shutdown(ahd); -#endif return (0); } int ahd_resume(struct ahd_softc *ahd) { -#if 0 - uint8_t *ptr; - int i; - ahd_reset(ahd); - - ahd_build_free_scb_list(ahd); - - /* Restore volatile registers */ - ahd_outb(ahd, SCSISEQ0, ahd->suspend_state.channel[0].scsiseq); - ahd_outb(ahd, SXFRCTL0, ahd->suspend_state.channel[0].sxfrctl0); - ahd_outb(ahd, SXFRCTL1, ahd->suspend_state.channel[0].sxfrctl1); - ahd_outb(ahd, SIMODE0, ahd->suspend_state.channel[0].simode0); - ahd_outb(ahd, SIMODE1, ahd->suspend_state.channel[0].simode1); - ahd_outb(ahd, SELTIMER, ahd->suspend_state.channel[0].seltimer); - ahd_outb(ahd, SEQCTL0, ahd->suspend_state.channel[0].seqctl); - if ((ahd->features & AHD_ULTRA2) != 0) - ahd_outb(ahd, SCSIID_ULTRA2, ahd->our_id); - else - ahd_outb(ahd, SCSIID, ahd->our_id); - - ahd_outb(ahd, DSCOMMAND0, ahd->suspend_state.dscommand0); - ahd_outb(ahd, DSPCISTATUS, ahd->suspend_state.dspcistatus); - - if ((ahd->features & AHD_DT) != 0) { - u_int sfunct; - - sfunct = ahd_inb(ahd, SFUNCT) & ~ALT_MODE; - ahd_outb(ahd, SFUNCT, sfunct | ALT_MODE); - ahd_outb(ahd, OPTIONMODE, ahd->suspend_state.optionmode); - ahd_outb(ahd, SFUNCT, sfunct); - ahd_outb(ahd, CRCCONTROL1, ahd->suspend_state.crccontrol1); - } - - if ((ahd->features & AHD_MULTI_FUNC) != 0) - ahd_outb(ahd, SCBBADDR, ahd->suspend_state.scbbaddr); - - if ((ahd->features & AHD_ULTRA2) != 0) - ahd_outb(ahd, DFF_THRSH, ahd->suspend_state.dff_thrsh); - - ptr = ahd->suspend_state.scratch_ram; - for (i = 0; i < 64; i++) - ahd_outb(ahd, SRAM_BASE + i, *ptr++); - - if ((ahd->features & AHD_MORE_SRAM) != 0) { - for (i = 0; i < 16; i++) - ahd_outb(ahd, TARG_OFFSET + i, *ptr++); - } - - ptr = ahd->suspend_state.btt; - for (i = 0;i < AHD_NUM_TARGETS; i++) { - int j; - - for (j = 0;j < AHD_NUM_LUNS; j++) { - u_int tcl; - - tcl = BUILD_TCL(i << 4, j); - ahd_busy_tcl(ahd, tcl, *ptr); - } - } -#endif + ahd_reset(ahd, /*reinit*/TRUE); + ahd_intr_enable(ahd, TRUE); + ahd_restart(ahd); return (0); } @@ -7490,7 +7398,7 @@ * we must reset the chip. */ ahd_delay(AHD_BUSRESET_DELAY); - ahd_reset(ahd); + ahd_reset(ahd, /*reinit*/TRUE); ahd_intr_enable(ahd, /*enable*/TRUE); AHD_ASSERT_MODES(ahd, AHD_MODE_SCSI_MSK, AHD_MODE_SCSI_MSK); } @@ -9192,6 +9100,7 @@ ahd->flags &= ~AHD_INITIATORROLE; ahd_pause(ahd); ahd_loadseq(ahd); + ahd_restart(ahd); ahd_unlock(ahd, &s); } cel = &ccb->cel; @@ -9425,6 +9334,11 @@ ahd->flags |= AHD_INITIATORROLE; ahd_pause(ahd); ahd_loadseq(ahd); + ahd_restart(ahd); + /* + * Unpaused. The extra unpause + * that follows is harmless. + */ } } ahd_unpause(ahd); ==== //depot/projects/smpng/sys/dev/aic7xxx/aic79xx.h#11 (text+ko) ==== @@ -37,9 +37,9 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: aic79xx.h,v 1.11 2003/05/26 21:10:58 gibbs Exp $ + * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#92 $ * - * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.h,v 1.12 2003/05/30 02:14:22 scottl Exp $ + * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.h,v 1.13 2003/06/06 23:48:18 gibbs Exp $ */ #ifndef _AIC79XX_H_ @@ -1379,13 +1379,13 @@ void ahd_free_scb(struct ahd_softc *ahd, struct scb *scb); void ahd_alloc_scbs(struct ahd_softc *ahd); void ahd_free(struct ahd_softc *ahd); -int ahd_reset(struct ahd_softc *ahd); +int ahd_reset(struct ahd_softc *ahd, int reinit); void ahd_shutdown(void *arg); -int ahd_write_flexport(struct ahd_softc *ahd, - u_int addr, u_int value); -int ahd_read_flexport(struct ahd_softc *ahd, u_int addr, - uint8_t *value); -int ahd_wait_flexport(struct ahd_softc *ahd); +int ahd_write_flexport(struct ahd_softc *ahd, + u_int addr, u_int value); +int ahd_read_flexport(struct ahd_softc *ahd, u_int addr, + uint8_t *value); +int ahd_wait_flexport(struct ahd_softc *ahd); /*************************** Interrupt Services *******************************/ void ahd_pci_intr(struct ahd_softc *ahd); ==== //depot/projects/smpng/sys/dev/aic7xxx/aic79xx_pci.c#11 (text+ko) ==== @@ -38,9 +38,9 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#73 $ + * $Id: //depot/aic7xxx/aic7xxx/aic79xx_pci.c#75 $ * - * $FreeBSD: src/sys/dev/aic7xxx/aic79xx_pci.c,v 1.11 2003/05/26 21:15:52 gibbs Exp $ + * $FreeBSD: src/sys/dev/aic7xxx/aic79xx_pci.c,v 1.13 2003/06/06 23:52:34 gibbs Exp $ */ #ifdef __linux__ @@ -375,7 +375,7 @@ ahd->bus_intr = ahd_pci_intr; - error = ahd_reset(ahd); + error = ahd_reset(ahd, /*reinit*/FALSE); if (error != 0) return (ENXIO); @@ -418,9 +418,11 @@ int ahd_pci_test_register_access(struct ahd_softc *ahd) { - uint32_t cmd; - int error; - uint8_t hcntrl; + uint32_t cmd; + u_int targpcistat; + u_int pci_status1; + int error; + uint8_t hcntrl; error = EIO; @@ -454,6 +456,18 @@ ahd_outb(ahd, HCNTRL, hcntrl|PAUSE); while (ahd_is_paused(ahd) == 0) ; + + /* Clear any PCI errors that occurred before our driver attached. */ + ahd_set_modes(ahd, AHD_MODE_CFG, AHD_MODE_CFG); + targpcistat = ahd_inb(ahd, TARGPCISTAT); + ahd_outb(ahd, TARGPCISTAT, targpcistat); + pci_status1 = ahd_pci_read_config(ahd->dev_softc, + PCIR_STATUS + 1, /*bytes*/1); + ahd_pci_write_config(ahd->dev_softc, PCIR_STATUS + 1, + pci_status1, /*bytes*/1); + ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); + ahd_outb(ahd, CLRINT, CLRPCIINT); + ahd_outb(ahd, SEQCTL0, PERRORDIS); ahd_outl(ahd, SRAM_BASE, 0x5aa555aa); if (ahd_inl(ahd, SRAM_BASE) != 0x5aa555aa) @@ -472,8 +486,6 @@ fail: if ((ahd_inb(ahd, INTSTAT) & PCIINT) != 0) { - u_int targpcistat; - u_int pci_status1; ahd_set_modes(ahd, AHD_MODE_CFG, AHD_MODE_CFG); targpcistat = ahd_inb(ahd, TARGPCISTAT); @@ -486,7 +498,6 @@ pci_status1, /*bytes*/1); ahd_outb(ahd, CLRINT, CLRPCIINT); } - ahd_outb(ahd, SEQCTL0, PERRORDIS|FAILDIS); ahd_pci_write_config(ahd->dev_softc, PCIR_COMMAND, cmd, /*bytes*/2); return (error); ==== //depot/projects/smpng/sys/dev/aic7xxx/aic7xxx.c#15 (text+ko) ==== @@ -37,9 +37,9 @@ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGES. * - * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#130 $ + * $Id: //depot/aic7xxx/aic7xxx/aic7xxx.c#134 $ * - * $FreeBSD: src/sys/dev/aic7xxx/aic7xxx.c,v 1.92 2003/05/26 21:44:03 gibbs Exp $ + * $FreeBSD: src/sys/dev/aic7xxx/aic7xxx.c,v 1.95 2003/06/06 23:53:39 gibbs Exp $ */ #ifdef __linux__ @@ -1304,17 +1304,23 @@ ahc_qinfifo_requeue_tail(ahc, scb); printerror = 0; } else if (ahc_sent_msg(ahc, AHCMSG_EXT, - MSG_EXT_WDTR, FALSE) - || ahc_sent_msg(ahc, AHCMSG_EXT, - MSG_EXT_SDTR, FALSE)) { + MSG_EXT_WDTR, FALSE)) { /* - * Negotiation Rejected. Go-async and + * Negotiation Rejected. Go-narrow and >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200306091836.h59IawsT000409>