PERFORCE change 34006 for review

Marcel Moolenaar marcel at FreeBSD.org
Wed Jul 2 22:37:40 PDT 2003


http://perforce.freebsd.org/chv.cgi?CH=34006

Change 34006 by marcel at marcel_nfs on 2003/07/02 22:37:28

	IFC @34004

Affected files ...

.. //depot/projects/uart/alpha/alpha/mp_machdep.c#2 integrate
.. //depot/projects/uart/boot/efi/libefi/Makefile#2 integrate
.. //depot/projects/uart/boot/i386/libi386/Makefile#2 integrate
.. //depot/projects/uart/boot/ia64/libski/Makefile#2 integrate
.. //depot/projects/uart/boot/ia64/libski/pal_stub.S#1 branch
.. //depot/projects/uart/boot/ia64/libski/pal_stub.s#2 delete
.. //depot/projects/uart/boot/pc98/libpc98/Makefile#2 integrate
.. //depot/projects/uart/conf/files.ia64#3 integrate
.. //depot/projects/uart/dev/acpica/acpi.c#2 integrate
.. //depot/projects/uart/dev/ata/ata-chipset.c#2 integrate
.. //depot/projects/uart/dev/ata/ata-pci.c#2 integrate
.. //depot/projects/uart/dev/ata/ata-pci.h#2 integrate
.. //depot/projects/uart/dev/fatm/if_fatm.c#3 integrate
.. //depot/projects/uart/dev/ips/ips_pci.c#3 integrate
.. //depot/projects/uart/dev/kbd/atkbd.c#2 integrate
.. //depot/projects/uart/dev/ppc/ppc.c#1 branch
.. //depot/projects/uart/dev/ppc/ppcreg.h#1 branch
.. //depot/projects/uart/dev/random/randomdev.c#2 integrate
.. //depot/projects/uart/dev/sio/sio.c#2 integrate
.. //depot/projects/uart/geom/geom_ctl.c#2 integrate
.. //depot/projects/uart/i386/bios/apm.c#2 integrate
.. //depot/projects/uart/i386/isa/pcvt/pcvt_drv.c#2 integrate
.. //depot/projects/uart/ia64/ia64/context.S#1 branch
.. //depot/projects/uart/ia64/ia64/context.s#2 delete
.. //depot/projects/uart/ia64/ia64/exception.S#1 branch
.. //depot/projects/uart/ia64/ia64/exception.s#2 delete
.. //depot/projects/uart/ia64/ia64/locore.S#1 branch
.. //depot/projects/uart/ia64/ia64/locore.s#2 delete
.. //depot/projects/uart/ia64/ia64/pal.S#1 branch
.. //depot/projects/uart/ia64/ia64/pal.s#2 delete
.. //depot/projects/uart/ia64/ia64/setjmp.S#1 branch
.. //depot/projects/uart/ia64/ia64/setjmp.s#2 delete
.. //depot/projects/uart/ia64/ia64/support.S#1 branch
.. //depot/projects/uart/ia64/ia64/support.s#2 delete
.. //depot/projects/uart/ia64/ia64/syscall.S#1 branch
.. //depot/projects/uart/ia64/ia64/syscall.s#2 delete
.. //depot/projects/uart/isa/atkbdc_isa.c#2 integrate
.. //depot/projects/uart/isa/fd.c#2 integrate
.. //depot/projects/uart/isa/isahint.c#2 integrate
.. //depot/projects/uart/isa/syscons_isa.c#2 integrate
.. //depot/projects/uart/kern/kern_mutex.c#2 integrate
.. //depot/projects/uart/kern/kern_tc.c#2 integrate
.. //depot/projects/uart/kern/subr_hints.c#2 integrate
.. //depot/projects/uart/netgraph/atm/ng_atm.c#2 integrate
.. //depot/projects/uart/nfsclient/nfs_nfsiod.c#2 integrate
.. //depot/projects/uart/nfsserver/nfs_syscalls.c#2 integrate
.. //depot/projects/uart/pc98/pc98/fd.c#2 integrate
.. //depot/projects/uart/pc98/pc98/pc98kbd.c#2 integrate
.. //depot/projects/uart/pc98/pc98/sio.c#2 integrate
.. //depot/projects/uart/pc98/pc98/syscons_pc98.c#2 integrate
.. //depot/projects/uart/sys/bus.h#2 integrate

Differences ...

==== //depot/projects/uart/alpha/alpha/mp_machdep.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.42 2003/06/10 16:50:43 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.43 2003/07/02 16:09:00 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -349,7 +349,6 @@
 	mtx_init(&ap_boot_mtx, "ap boot", NULL, MTX_SPIN);
 
 	for (i = 0; i < hwrpb->rpb_pcs_cnt; i++) {
-		int dv;
 		struct pcs *pcsp;
 
 		if (i == boot_cpu_id)
@@ -380,8 +379,7 @@
 			}
 			continue;
 		}
-		dv = 0;
-		if (resource_int_value("cpu", i, "disable", &dv) == 0 && dv) {
+		if (resource_disabled("cpu", i))
 			printf("CPU %d disabled by loader.\n", i);
 			continue;
 		}

==== //depot/projects/uart/boot/efi/libefi/Makefile#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/boot/efi/libefi/Makefile,v 1.11 2002/12/10 06:22:25 marcel Exp $
+# $FreeBSD: src/sys/boot/efi/libefi/Makefile,v 1.12 2003/07/02 11:53:55 ru Exp $
 
 .PATH: ${.CURDIR}/../../../${MACHINE_ARCH}/${MACHINE_ARCH}
 
@@ -6,7 +6,7 @@
 INTERNALLIB=	true
 
 SRCS=	libefi.c efi_console.c time.c copy.c devicename.c module.c
-SRCS+=	delay.c efifs.c efinet.c elf_freebsd.c bootinfo.c pal.s
+SRCS+=	delay.c efifs.c efinet.c elf_freebsd.c bootinfo.c pal.S
 
 .if ${MACHINE_ARCH} == "ia64"
 SRCS+=	efifpswa.c

==== //depot/projects/uart/boot/i386/libi386/Makefile#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.31 2003/06/07 17:42:26 obrien Exp $
+# $FreeBSD: src/sys/boot/i386/libi386/Makefile,v 1.32 2003/07/02 12:45:45 ru Exp $
 #
 LIB=			i386
 INTERNALLIB=		true
@@ -7,7 +7,7 @@
 	biospci.c biossmap.c bootinfo.c bootinfo32.c bootinfo64.c \
 	comconsole.c devicename.c elf32_freebsd.c \
 	elf64_freebsd.c gatea20.c \
-	i386_copy.c i386_module.c nullconsole.c pxe.c \
+	i386_copy.c i386_module.c nullconsole.c pxe.c pxetramp.s \
 	time.c vidconsole.c amd64_tramp.S
 
 CFLAGS+=	-ffreestanding
@@ -45,8 +45,4 @@
 
 .endif
 
-OBJS+=	pxetramp.o
-pxetramp.o: pxetramp.s
-	${AS} ${AFLAGS} -o ${.TARGET} ${.ALLSRC:M*pxetramp*}
-
 .include <bsd.lib.mk>

==== //depot/projects/uart/boot/ia64/libski/Makefile#2 (text+ko) ====

@@ -1,11 +1,11 @@
-# $FreeBSD: src/sys/boot/ia64/libski/Makefile,v 1.9 2003/02/01 22:50:08 marcel Exp $
+# $FreeBSD: src/sys/boot/ia64/libski/Makefile,v 1.10 2003/07/02 11:47:33 ru Exp $
 
 LIB=		ski
 INTERNALLIB=	true
 
 SRCS=	skiconsole.c time.c copy.c devicename.c module.c exit.c
 SRCS+=	delay.c skifs.c elf_freebsd.c bootinfo.c ssc.c
-SRCS+=	acpi_stub.c efi_stub.c pal_stub.s sal_stub.c
+SRCS+=	acpi_stub.c efi_stub.c pal_stub.S sal_stub.c
 
 CFLAGS+=	-ffreestanding -fpic -g
 CFLAGS+=	-I${.CURDIR}/../include

==== //depot/projects/uart/boot/pc98/libpc98/Makefile#2 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/boot/pc98/libpc98/Makefile,v 1.17 2003/06/08 03:16:59 nyan Exp $
+# $FreeBSD: src/sys/boot/pc98/libpc98/Makefile,v 1.18 2003/07/02 12:45:45 ru 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 \
+	gatea20.c i386_copy.c i386_module.c nullconsole.c pxe.c pxetramp.s \
 	time.c vidconsole.c
 
 CFLAGS+=	-ffreestanding
@@ -46,8 +46,4 @@
 
 .endif
 
-OBJS+=	pxetramp.o
-pxetramp.o: pxetramp.s
-	${AS} ${AFLAGS} -o ${.TARGET} ${.ALLSRC:M*pxetramp*}
-
 .include <bsd.lib.mk>

==== //depot/projects/uart/conf/files.ia64#3 (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.ia64,v 1.52 2003/05/16 21:26:40 marcel Exp $
+# $FreeBSD: src/sys/conf/files.ia64,v 1.53 2003/07/02 12:57:06 ru Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -76,7 +76,7 @@
 ia64/ia64/busdma_machdep.c	standard
 ia64/ia64/clock.c		standard
 ia64/ia64/clock_if.m		standard
-ia64/ia64/context.s		standard
+ia64/ia64/context.S		standard
 ia64/ia64/critical.c		standard
 ia64/ia64/db_disasm.c		optional	ddb
 ia64/ia64/db_interface.c	optional	ddb
@@ -85,26 +85,26 @@
 ia64/ia64/efi.c			standard
 ia64/ia64/eficlock.c		standard
 ia64/ia64/elf_machdep.c		standard
-ia64/ia64/exception.s		standard
+ia64/ia64/exception.S		standard
 ia64/ia64/ia64-gdbstub.c	optional	ddb
 ia64/ia64/in_cksum.c		optional	inet
 ia64/ia64/interrupt.c		standard
-ia64/ia64/locore.s		standard	no-obj
+ia64/ia64/locore.S		standard	no-obj
 ia64/ia64/machdep.c		standard
 ia64/ia64/mca.c			standard
 ia64/ia64/mem.c			standard
 ia64/ia64/mp_machdep.c		optional	smp
 ia64/ia64/nexus.c		standard
-ia64/ia64/pal.s			standard
+ia64/ia64/pal.S			standard
 ia64/ia64/pmap.c		standard
 ia64/ia64/sal.c			standard
 ia64/ia64/sapic.c		standard
-ia64/ia64/setjmp.s		standard
+ia64/ia64/setjmp.S		standard
 ia64/ia64/ssc.c			optional	ski
 ia64/ia64/sscdisk.c		optional	ski
-ia64/ia64/support.s		standard
+ia64/ia64/support.S		standard
 ia64/ia64/sys_machdep.c		standard
-ia64/ia64/syscall.s		standard
+ia64/ia64/syscall.S		standard
 ia64/ia64/trap.c		standard
 ia64/ia64/unaligned.c		standard
 ia64/ia64/unwind.c		standard

==== //depot/projects/uart/dev/acpica/acpi.c#2 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.89 2003/05/01 18:51:43 jhb Exp $
+ *	$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.90 2003/07/02 16:09:00 jhb Exp $
  */
 
 #include "opt_acpi.h"
@@ -215,8 +215,7 @@
     /*
      * Check that we haven't been disabled with a hint.
      */
-    if (!resource_int_value("acpi", 0, "disabled", &error) &&
-	(error != 0))
+    if (resource_disabled("acpi", 0))
 	return_VOID;
 
     /*
@@ -2175,13 +2174,11 @@
 static void
 acpi_pm_register(void *arg)
 {
-    int	error;
 
     if (!cold)
 	return;
 
-    if (!resource_int_value("acpi", 0, "disabled", &error) &&
-       (error != 0))
+    if (resource_disabled("acpi", 0))
 		return;
 
     power_pm_register(POWER_PM_TYPE_ACPI, acpi_pm_func, NULL);

==== //depot/projects/uart/dev/ata/ata-chipset.c#2 (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/ata/ata-chipset.c,v 1.31 2003/06/27 10:11:54 grehan Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.32 2003/07/02 10:50:44 sos Exp $
  */
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -93,6 +93,8 @@
 static int ata_serverworks_chipinit(device_t);
 static void ata_serverworks_setmode(struct ata_device *, int);
 static int ata_sii_chipinit(device_t);
+static int ata_sii_mio_allocate(device_t, struct ata_channel *);
+static void ata_sii_intr(void *);
 static void ata_cmd_intr(void *);
 static void ata_sii_setmode(struct ata_device *, int);
 static void ata_cmd_setmode(struct ata_device *, int);
@@ -838,11 +840,6 @@
 
     mode = ata_limit_mode(atadev, mode, ctlr->chip->max_dma);
 
-    if (mode >= ATA_SA150) {
-	atadev->mode = mode;
-	return;
-    }
-
     if (ctlr->chip->max_dma && mode > ATA_UDMA2 && !(reg54 & (0x10 << devno))) {
 	ata_prtdev(atadev,"DMA limited to UDMA33, non-ATA66 cable or device\n");
 	mode = ATA_UDMA2;
@@ -854,7 +851,10 @@
 	ata_prtdev(atadev, "%s setting %s on %s chip\n",
 		   (error) ? "failed" : "success",
 		   ata_mode2str(mode), ctlr->chip->text);
-    if (!error) {
+    if (error)
+	return;
+
+    if (ctlr->chip->max_dma < ATA_SA150) {
 	if (mode >= ATA_UDMA0) {
 	    pci_write_config(parent, 0x48, reg48 | (0x0001 << devno), 2);
 	    pci_write_config(parent, 0x4a, (reg4a & ~(0x3 << (devno<<2))) | 
@@ -894,8 +894,8 @@
 	}
 	pci_write_config(parent, 0x40, (reg40 & ~mask40) | new40, 4);
 	pci_write_config(parent, 0x44, (reg44 & ~mask44) | new44, 1);
-	atadev->mode = mode;
     }
+    atadev->mode = mode;
 }
 
 /*
@@ -1244,11 +1244,6 @@
 	break;
     }
 
-    if (mode >= ATA_SA150) {
-	atadev->mode = mode;
-	return;
-    }
-
     error = ata_command(atadev, ATA_C_SETFEATURES, 0, mode, 
 			ATA_C_F_SETXFER, ATA_WAIT_READY);
     if (bootverbose)
@@ -1458,11 +1453,12 @@
     struct ata_pci_controller *ctlr = device_get_softc(dev);
     struct ata_chip_id *idx;
     static struct ata_chip_id ids[] =
-    {{ ATA_SII0680, 0x00, 0, SII_SETCLK,          ATA_UDMA6, "SiI 0680" },
-     { ATA_CMD649,  0x00, 0, SII_INTR|SII_ENINTR, ATA_UDMA5, "CMD 649" },
-     { ATA_CMD648,  0x00, 0, SII_INTR|SII_ENINTR, ATA_UDMA4, "CMD 648" },
-     { ATA_CMD646,  0x07, 0, SII_ENINTR,          ATA_UDMA2, "CMD 646U2" },
-     { ATA_CMD646,  0x00, 0, SII_ENINTR,          ATA_WDMA2, "CMD 646" },
+    {{ ATA_SII3112, 0x00, SIIMEMIO, 0,         ATA_SA150, "SiI 3112" },
+     { ATA_SII0680, 0x00, SIIMEMIO, SIISETCLK, ATA_UDMA6, "SiI 0680" },
+     { ATA_CMD649,  0x00, 0,        SIIINTR,   ATA_UDMA5, "CMD 649" },
+     { ATA_CMD648,  0x00, 0,        SIIINTR,   ATA_UDMA4, "CMD 648" },
+     { ATA_CMD646,  0x07, 0,        0,         ATA_UDMA2, "CMD 646U2" },
+     { ATA_CMD646,  0x00, 0,        0,         ATA_WDMA2, "CMD 646" },
      { 0, 0, 0, 0, 0, 0}};
     char buffer[64];
 
@@ -1487,38 +1483,105 @@
 	device_printf(dev, "unable to map interrupt\n");
 	return ENXIO;
     }
-    if ((bus_setup_intr(dev, ctlr->r_irq, INTR_TYPE_BIO | INTR_ENTROPY,
-			ctlr->chip->cfg2 & SII_INTR ? 
-			ata_cmd_intr : ata_generic_intr,
-			ctlr, &ctlr->handle))) {
-	device_printf(dev, "unable to setup interrupt\n");
-	return ENXIO;
+
+    if (ctlr->chip->cfg1 == SIIMEMIO) {
+	if ((bus_setup_intr(dev, ctlr->r_irq, INTR_TYPE_BIO | INTR_ENTROPY,
+			    ata_sii_intr, ctlr, &ctlr->handle))) {
+	    device_printf(dev, "unable to setup interrupt\n");
+	    return ENXIO;
+	}
+	rid = 0x24;
+	if (!(ctlr->r_io2 = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid,
+					       0, ~0, 1, RF_ACTIVE)))
+	    return ENXIO;
+
+	if (ctlr->chip->cfg2 & SIISETCLK) {
+	    if ((pci_read_config(dev, 0x8a, 1) & 0x30) != 0x10)
+		pci_write_config(dev, 0x8a, 
+				 (pci_read_config(dev, 0x8a, 1) & 0x0F)|0x10,1);
+	    if ((pci_read_config(dev, 0x8a, 1) & 0x30) != 0x10)
+		device_printf(dev, "%s could not set ATA133 clock\n",
+			      ctlr->chip->text);
+	}
+	ctlr->allocate = ata_sii_mio_allocate;
+	ctlr->setmode = ata_sii_setmode;
     }
+    else {
+	if ((bus_setup_intr(dev, ctlr->r_irq, INTR_TYPE_BIO | INTR_ENTROPY,
+			    ctlr->chip->cfg2 & SIIINTR ? 
+			    ata_cmd_intr : ata_generic_intr,
+			    ctlr, &ctlr->handle))) {
+	    device_printf(dev, "unable to setup interrupt\n");
+	    return ENXIO;
+	}
+
+	if ((pci_read_config(dev, 0x51, 1) & 0x08) != 0x08) {
+	    device_printf(dev, "HW has secondary channel disabled\n");
+	    ctlr->channels = 1;
+	}    
 
-    if (ctlr->chip->cfg2 & SII_ENINTR)
+	/* enable interrupt as BIOS might not */
 	pci_write_config(dev, 0x71, 0x01, 1);
 
-    if (ctlr->chip->cfg2 & SII_SETCLK) {
-	if ((pci_read_config(dev, 0x8a, 1) & 0x30) != 0x10)
-	    pci_write_config(dev, 0x8a, 
-			     (pci_read_config(dev, 0x8a, 1) & 0x0F) | 0x10, 1);
-	if ((pci_read_config(dev, 0x8a, 1) & 0x30) != 0x10)
-	    device_printf(dev, "%s could not set ATA133 clock\n",
-			  ctlr->chip->text);
-	ctlr->setmode = ata_sii_setmode;
+        ctlr->setmode = ata_cmd_setmode;
     }
-    else 
-	ctlr->setmode = ata_cmd_setmode;
+    return 0;
+}
+
+static int
+ata_sii_mio_allocate(device_t dev, struct ata_channel *ch)
+{
+    struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
+    int i;
 
-    if ((pci_read_config(dev, 0x51, 1) & 0x08) != 0x08) {
-        device_printf(dev, "secondary channel disabled\n");
-        ctlr->channels = 1;
-    }    
+    for (i = ATA_DATA; i <= ATA_STATUS; i++) {
+	ch->r_io[i].res = ctlr->r_io2;
+	ch->r_io[i].offset = 0x80 + i + (ch->unit << 6);
+    }
+    ch->r_io[ATA_ALTSTAT].res = ctlr->r_io2;
+    ch->r_io[ATA_ALTSTAT].offset = 0x8a + (ch->unit << 6);
+    ch->r_io[ATA_BMCMD_PORT].res = ctlr->r_io2;
+    ch->r_io[ATA_BMCMD_PORT].offset = 0x00 + (ch->unit << 3);
+    ch->r_io[ATA_BMSTAT_PORT].res = ctlr->r_io2;
+    ch->r_io[ATA_BMSTAT_PORT].offset = 0x02 + (ch->unit << 3);
+    ch->r_io[ATA_BMDTP_PORT].res = ctlr->r_io2;
+    ch->r_io[ATA_BMDTP_PORT].offset = 0x04 + (ch->unit << 3);
+    ch->r_io[ATA_BMDEVSPEC_0].res = ctlr->r_io2;
+    ch->r_io[ATA_BMDEVSPEC_0].offset = 0xa1 + (ch->unit << 6);
+    ch->r_io[ATA_IDX_ADDR].res = ctlr->r_io2;
 
+    if (ctlr->chip->max_dma >= ATA_SA150)
+	ch->flags |= ATA_NO_SLAVE;
+    ctlr->dmainit(ch);
     return 0;
 }
 
 static void
+ata_sii_intr(void *data)
+{
+    struct ata_pci_controller *ctlr = data;
+    struct ata_channel *ch;
+    u_int8_t dmastat;
+    int unit;
+
+    /* implement this as a toggle instead to balance load XXX */
+    for (unit = 0; unit < 2; unit++) {
+	if (!(ch = ctlr->interrupt[unit].argument))
+	    continue;
+	if (ATA_IDX_INB(ch, ATA_BMDEVSPEC_0) & 0x08) {
+	    if (ch->dma->flags & ATA_DMA_ACTIVE) {
+		if (!((dmastat = (ATA_IDX_INB(ch, ATA_BMSTAT_PORT) &
+				  ATA_BMSTAT_MASK)) & ATA_BMSTAT_INTERRUPT))
+		    continue;
+		ATA_IDX_OUTB(ch, ATA_BMSTAT_PORT, dmastat|ATA_BMSTAT_INTERRUPT);
+		DELAY(1);
+	    }
+	    ctlr->interrupt[unit].function(ch);
+	}
+    }
+}
+
+static void
 ata_cmd_intr(void *data)
 {
     struct ata_pci_controller *ctlr = data;
@@ -1551,7 +1614,7 @@
 {
     device_t parent = device_get_parent(atadev->channel->dev);
     struct ata_pci_controller *ctlr = device_get_softc(parent);
-    int devno = (atadev->channel->unit << 4) + (ATA_DEV(atadev->unit) << 1);
+    int rego = (atadev->channel->unit << 4) + (ATA_DEV(atadev->unit) << 1);
     int mreg = atadev->channel->unit ? 0x84 : 0x80;
     int mask = 0x03 << (ATA_DEV(atadev->unit) << 2);
     int mval = pci_read_config(parent, mreg, 1) & ~mask;
@@ -1559,7 +1622,8 @@
 
     mode = ata_limit_mode(atadev, mode, ctlr->chip->max_dma);
 
-    mode = ata_check_80pin(atadev, mode);
+    if (ctlr->chip->max_dma < ATA_SA150)
+	mode = ata_check_80pin(atadev, mode);
 
     error = ata_command(atadev, ATA_C_SETFEATURES, 0, mode,
 			ATA_C_F_SETXFER, ATA_WAIT_READY);
@@ -1567,20 +1631,24 @@
 	ata_prtdev(atadev, "%s setting %s on %s chip\n",
 		   (error) ? "failed" : "success",
 		   ata_mode2str(mode), ctlr->chip->text);
-    if (!error) {
+
+    if (error)
+	return;
+
+    if (ctlr->chip->max_dma < ATA_SA150) {
 	if (mode >= ATA_UDMA0) {
 	    u_int8_t udmatimings[] = { 0xf, 0xb, 0x7, 0x5, 0x3, 0x2, 0x1 };
-	    u_int8_t ureg = 0xac + devno;
+	    u_int8_t ureg = 0xac + rego;
 
 	    pci_write_config(parent, mreg,
 			     mval | (0x03 << (ATA_DEV(atadev->unit) << 2)), 1);
 	    pci_write_config(parent, ureg, 
-			     (pci_read_config(parent, ureg, 1) & 0x3f) |
+			     (pci_read_config(parent, ureg, 1) & ~0x3f) |
 			     udmatimings[mode & ATA_MODE_MASK], 1);
 
 	}
 	else if (mode >= ATA_WDMA0) {
-	    u_int8_t dreg = 0xa8 + devno;
+	    u_int8_t dreg = 0xa8 + rego;
 	    u_int16_t dmatimings[] = { 0x2208, 0x10c2, 0x10c1 };
 
 	    pci_write_config(parent, mreg,
@@ -1589,15 +1657,15 @@
 
 	}
 	else {
-	    u_int8_t preg = 0xa4 + devno;
+	    u_int8_t preg = 0xa4 + rego;
 	    u_int16_t piotimings[] = { 0x328a, 0x2283, 0x1104, 0x10c3, 0x10c1 };
 
 	    pci_write_config(parent, mreg,
 			     mval | (0x01 << (ATA_DEV(atadev->unit) << 2)), 1);
 	    pci_write_config(parent, preg, piotimings[mode & ATA_MODE_MASK], 2);
 	}
-	atadev->mode = mode;
     }
+    atadev->mode = mode;
 }
 
 static void

==== //depot/projects/uart/dev/ata/ata-pci.c#2 (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/ata/ata-pci.c,v 1.62 2003/06/07 15:19:16 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-pci.c,v 1.63 2003/07/02 10:50:44 sos Exp $
  */
 
 #include "opt_ata.h"
@@ -152,18 +152,13 @@
 	cmd = pci_read_config(dev, PCIR_COMMAND, 2);
     }
 #endif
-    /* is busmastering supported and configured ? */
+    /* if busmastering configured get the I/O resource */
     if ((cmd & PCIM_CMD_BUSMASTEREN) == PCIM_CMD_BUSMASTEREN) {
 	int rid = ATA_BMADDR_RID;
 
-	if (!ctlr->r_io2) {
-	    if (!(ctlr->r_io1 = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
-						    0, ~0, 1, RF_ACTIVE)))
-		device_printf(dev, "Busmastering DMA not configured\n");
-	}
+	ctlr->r_io1 = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
+					 0, ~0, 1, RF_ACTIVE);
     }
-    else
-	device_printf(dev, "Busmastering DMA not supported\n");
 
     ctlr->chipinit(dev);
 

==== //depot/projects/uart/dev/ata/ata-pci.h#2 (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/ata/ata-pci.h,v 1.11 2003/05/18 16:45:48 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-pci.h,v 1.12 2003/07/02 10:50:44 sos Exp $
  */
 
 /* structure holding chipset config info */
@@ -154,6 +154,7 @@
 
 #define ATA_SILICON_IMAGE_ID	0x1095
 #define ATA_SII0680		0x06801095
+#define ATA_SII3112		0x31121095
 #define ATA_CMD646		0x06461095
 #define ATA_CMD648		0x06481095
 #define ATA_CMD649		0x06491095
@@ -242,9 +243,9 @@
 #define SWKS66		1
 #define SWKS100		2
 
-#define SII_INTR	0x01
-#define SII_SETCLK	0x02
-#define SII_ENINTR	0x04
+#define SIIMEMIO	1
+#define SIIINTR		0x01
+#define SIISETCLK	0x02
 
 #define SIS_SOUTH	1
 #define SIS133NEW	2

==== //depot/projects/uart/dev/fatm/if_fatm.c#3 (text+ko) ====

@@ -29,7 +29,7 @@
  * Fore PCA200E driver for NATM
  */
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fatm/if_fatm.c,v 1.2 2003/07/01 15:51:56 scottl Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fatm/if_fatm.c,v 1.3 2003/07/02 13:53:41 harti Exp $");
 
 #include "opt_inet.h"
 #include "opt_natm.h"
@@ -2877,7 +2877,7 @@
 	if (bus_dma_tag_create(NULL, 1, 0,
 	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
 	    NULL, NULL, BUS_SPACE_MAXSIZE_32BIT, MAXDMASEGS,
-	    BUS_SPACE_MAXSIZE_32BIT, 0, busdma_lock_mutex, &Giant,
+	    BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL,
 	    &sc->parent_dmat)) {
 		if_printf(ifp, "could not allocate parent DMA tag\n");
 		error = ENOMEM;
@@ -2891,20 +2891,21 @@
 	if (bus_dma_tag_create(sc->parent_dmat, 1, 0,
 	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
 	    NULL, NULL, MCLBYTES, 1, MCLBYTES, 0, 
-	    busdma_lock_mutex, &Giant, &sc->rbuf_tag)) {
+	    NULL, NULL, &sc->rbuf_tag)) {
 		if_printf(ifp, "could not allocate rbuf DMA tag\n");
 		error = ENOMEM;
 		goto fail;
 	}
 
 	/*
-	 * Allocate the transmission DMA tag.
+	 * Allocate the transmission DMA tag. Must add 1, because
+	 * rounded up PDU will be 65536 bytes long.
 	 */
 	if (bus_dma_tag_create(sc->parent_dmat, 1, 0,
 	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
 	    NULL, NULL,
-	    FATM_MAXPDU, TPD_EXTENSIONS + TXD_FIXED, MCLBYTES, 0,
-	    busdma_lock_mutex, &Giant, &sc->tx_tag)) {
+	    FATM_MAXPDU + 1, TPD_EXTENSIONS + TXD_FIXED, MCLBYTES, 0,
+	    NULL, NULL, &sc->tx_tag)) {
 		if_printf(ifp, "could not allocate tx DMA tag\n");
 		error = ENOMEM;
 		goto fail;

==== //depot/projects/uart/dev/ips/ips_pci.c#3 (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/ips/ips_pci.c,v 1.3 2003/07/01 15:51:58 scottl Exp $
+ * $FreeBSD: src/sys/dev/ips/ips_pci.c,v 1.4 2003/07/02 16:09:00 jhb Exp $
  */
 
 
@@ -50,13 +50,10 @@
 static int ips_pci_attach(device_t dev)
 {
         u_int32_t command;
-        int tval;
         ips_softc_t *sc;
 
 
-	tval = 0;
-	if (resource_int_value(device_get_name(dev), device_get_unit(dev),
-	    "disable", &tval) == 0 && tval) {
+	if (resource_disabled(device_get_name(dev), device_get_unit(dev))) {
 		device_printf(dev, "device is disabled\n");
 		/* but return 0 so the !$)$)*!$*) unit isn't reused */
 		return (0);

==== //depot/projects/uart/dev/kbd/atkbd.c#2 (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/kbd/atkbd.c,v 1.38 2003/04/30 12:57:38 markm Exp $
+ * $FreeBSD: src/sys/dev/kbd/atkbd.c,v 1.39 2003/07/02 16:09:01 jhb Exp $
  */
 
 #include "opt_kbd.h"
@@ -277,8 +277,7 @@
 	atkbdc_configure();
 
 	/* if the driver is disabled, unregister the keyboard if any */
-	if ((resource_int_value("atkbd", ATKBD_DEFAULT, "disabled", &i) == 0)
-	    && i != 0) {
+	if (resource_disabled("atkbd", ATKBD_DEFAULT)) {
 		i = kbd_find_keyboard(ATKBD_DRIVER_NAME, ATKBD_DEFAULT);
 		if (i >= 0) {
 			kbd = kbd_get_keyboard(i);

==== //depot/projects/uart/dev/random/randomdev.c#2 (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/random/randomdev.c,v 1.40 2003/03/03 12:15:45 phk Exp $
+ * $FreeBSD: src/sys/dev/random/randomdev.c,v 1.41 2003/07/02 08:04:57 phk Exp $
  */
 
 #include <sys/param.h>
@@ -327,7 +327,7 @@
 
 		if ((harvestring.tail == harvestring.head) ||
 			(random_systat.burst && burst == random_systat.burst)) {
-				tsleep(&harvestring, PUSER, "sleep", hz/10);
+				tsleep(&harvestring, PUSER, "-", hz/10);
 				burst = 0;
 
 		}

==== //depot/projects/uart/dev/sio/sio.c#2 (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/dev/sio/sio.c,v 1.400 2003/06/09 21:25:14 scottl Exp $
+ * $FreeBSD: src/sys/dev/sio/sio.c,v 1.401 2003/07/02 16:09:01 jhb Exp $
  *	from: @(#)com.c	7.5 (Berkeley) 5/16/91
  *	from: i386/isa sio.c,v 1.234
  */
@@ -2967,11 +2967,9 @@
 
 	for (unit = 0; unit < 16; unit++) { /* XXX need to know how many */
 		int flags;
-		int disabled;
-		if (resource_int_value("sio", unit, "disabled", &disabled) == 0) {
-			if (disabled)
-				continue;
-		}
+
+		if (resource_disabled("sio", unit))
+			continue;
 		if (resource_int_value("sio", unit, "flags", &flags))
 			continue;
 		if (COM_CONSOLE(flags) || COM_DEBUGGER(flags)) {

==== //depot/projects/uart/geom/geom_ctl.c#2 (text+ko) ====

@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/geom/geom_ctl.c,v 1.28 2003/06/11 06:49:15 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/geom/geom_ctl.c,v 1.29 2003/07/02 08:07:07 phk Exp $");
 
 #include "opt_geom.h"
 
@@ -266,7 +266,7 @@
 		} else if (ap->flag & GCTL_PARAM_ASCII) {
 			printf("\"%s\"", (char *)ap->kvalue);
 		} else if (ap->len > 0) {
-			for (j = 0; j < ap->len; j++)
+			for (j = 0; j < ap->len && j < 512; j++)
 				printf(" %02x", ((u_char *)ap->kvalue)[j]);
 		} else {
 			printf(" = %p", ap->kvalue);
@@ -473,6 +473,7 @@
 		gctl_copyout(req);
 	}
 
+	g_waitidle();
 	gctl_free(req);
 	return (req->nerror);
 }

==== //depot/projects/uart/i386/bios/apm.c#2 (text+ko) ====

@@ -17,7 +17,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/i386/bios/apm.c,v 1.135 2003/06/22 05:08:10 mdodd Exp $");
+__FBSDID("$FreeBSD: src/sys/i386/bios/apm.c,v 1.136 2003/07/02 16:09:01 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -846,6 +846,9 @@
 		return;
 	}
 
+	if (resource_disabled("apm", 0))
+		return;
+
 	child = BUS_ADD_CHILD(parent, 0, "apm", 0);
 	if (child == NULL)
 		panic("apm_identify");
@@ -860,18 +863,12 @@
 #define APM_KERNBASE	KERNBASE
 	struct vm86frame	vmf;
 	struct apm_softc	*sc = &apm_softc;
-	int			disabled, flags;
+	int			flags;
 #ifdef PC98
 	int			rid;
 #endif
 
 	device_set_desc(dev, "APM BIOS");
-
-	if (resource_int_value("apm", 0, "disabled", &disabled) != 0)
-		disabled = 0;
-	if (disabled)
-		return ENXIO;
-
 	if (device_get_unit(dev) > 0) {
 		printf("apm: Only one APM driver supported.\n");
 		return ENXIO;
@@ -1544,10 +1541,8 @@
 static void
 apm_pm_register(void *arg)
 {
-	int	disabled = 0;
 
-	resource_int_value("apm", 0, "disabled", &disabled);
-	if (disabled == 0)
+	if (!resource_disabled("apm", 0))
 		power_pm_register(POWER_PM_TYPE_APM, apm_pm_func, NULL);
 }
 

==== //depot/projects/uart/i386/isa/pcvt/pcvt_drv.c#2 (text+ko) ====

@@ -50,7 +50,7 @@
  *
  *	Last Edit-Date: [Sat Jul 15 15:06:06 2000]
  *
- * $FreeBSD: src/sys/i386/isa/pcvt/pcvt_drv.c,v 1.77 2003/03/25 00:07:03 jake Exp $
+ * $FreeBSD: src/sys/i386/isa/pcvt/pcvt_drv.c,v 1.78 2003/07/02 16:09:01 jhb Exp $
  *
  *---------------------------------------------------------------------------*/
 
@@ -642,8 +642,8 @@
 	int unit = 0;
 	int i;
 
-	/* See if this driver is disabled in probe hint. */ 
-	if (resource_int_value("vt", unit, "disabled", &i) == 0 && i)
+	/* See if this driver is disabled in probe hint. */
+	if (resource_disabled("vt", unit))
 	{
 		cp->cn_pri = CN_DEAD;
 		return;

==== //depot/projects/uart/isa/atkbdc_isa.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/isa/atkbdc_isa.c,v 1.26 2003/06/11 00:32:45 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/isa/atkbdc_isa.c,v 1.27 2003/07/02 16:09:01 jhb Exp $");
 
 #include "opt_kbd.h"
 
@@ -255,7 +255,7 @@
 
 	if (resource_int_value(name, unit, "flags", &t) == 0)
 		device_set_flags(child, t);
-	if (resource_int_value(name, unit, "disabled", &t) == 0 && t != 0)
+	if (resource_disabled(name, unit))
 		device_disable(child);
 
 	device_set_ivars(child, ivar);

==== //depot/projects/uart/isa/fd.c#2 (text+ko) ====

@@ -53,7 +53,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/isa/fd.c,v 1.255 2003/06/16 08:42:20 yar Exp $");
+__FBSDID("$FreeBSD: src/sys/isa/fd.c,v 1.256 2003/07/02 16:09:01 jhb Exp $");
 
 #include "opt_fdc.h"
 #include "card.h"
@@ -973,7 +973,7 @@
 static void
 fdc_add_child(device_t dev, const char *name, int unit)
 {
-	int	disabled, flags;
+	int	flags;
 	struct fdc_ivars *ivar;
 	device_t child;
 
@@ -990,8 +990,7 @@
 	device_set_ivars(child, ivar);
 	if (resource_int_value(name, unit, "flags", &flags) == 0)
 		 device_set_flags(child, flags);
-	if (resource_int_value(name, unit, "disabled", &disabled) == 0
-	    && disabled != 0)
+	if (resource_disabled(name, unit))
 		device_disable(child);
 }
 

==== //depot/projects/uart/isa/isahint.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/isa/isahint.c,v 1.13 2003/06/11 00:32:45 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/isa/isahint.c,v 1.14 2003/07/02 16:09:01 jhb Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -79,7 +79,7 @@
 	if (resource_int_value(name, unit, "flags", &t) == 0)
 		device_set_flags(child, t);
 
-	if (resource_int_value(name, unit, "disabled", &t) == 0 && t != 0)
+	if (resource_disabled(name, unit))
 		device_disable(child);
 }
 

==== //depot/projects/uart/isa/syscons_isa.c#2 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/isa/syscons_isa.c,v 1.22 2003/06/11 00:32:45 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/isa/syscons_isa.c,v 1.23 2003/07/02 16:09:01 jhb Exp $");
 
 #include "opt_syscons.h"
 
@@ -195,14 +195,12 @@
 int
 sc_get_cons_priority(int *unit, int *flags)
 {
-	int disabled;
 	const char *at;
 	int u, f;
 
 	*unit = -1;
 	for (u = 0; u < 16; u++) {
-		if ((resource_int_value(SC_DRIVER_NAME, u, "disabled",
-					&disabled) == 0) && disabled)
+		if (resource_disabled(SC_DRIVER_NAME, u))
 			continue;
 		if (resource_string_value(SC_DRIVER_NAME, u, "at", &at) != 0)
 			continue;

==== //depot/projects/uart/kern/kern_mutex.c#2 (text+ko) ====

@@ -34,7 +34,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_mutex.c,v 1.128 2003/06/11 00:56:56 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_mutex.c,v 1.129 2003/07/02 16:14:09 jhb Exp $");
 
 #include "opt_adaptive_mutexes.h"
 #include "opt_ddb.h"
@@ -524,12 +524,15 @@
 
 		/*
 		 * The mutex was marked contested on release. This means that
-		 * there are threads blocked on it.
+		 * there are other threads blocked on it.  Grab ownership of
+		 * it and propagate its priority to the current thread if
+		 * necessary.
 		 */
 		if (v == MTX_CONTESTED) {
 			td1 = TAILQ_FIRST(&m->mtx_blocked);
 			MPASS(td1 != NULL);
 			m->mtx_lock = (uintptr_t)td | MTX_CONTESTED;
+			LIST_INSERT_HEAD(&td->td_contested, m, mtx_contested);
 
 			if (td1->td_priority < td->td_priority)
 				td->td_priority = td1->td_priority;
@@ -593,7 +596,9 @@
 #endif
 
 		/*
-		 * Put us on the list of threads blocked on this mutex.
+		 * Put us on the list of threads blocked on this mutex

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list