Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Nov 2010 17:50:23 +0000 (UTC)
From:      Sean Bruno <sbruno@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r215458 - in projects/sbruno_64cpus: . cddl contrib/top gnu/usr.bin/binutils gnu/usr.bin/binutils/as gnu/usr.bin/binutils/as/powerpc64-freebsd gnu/usr.bin/binutils/ld gnu/usr.bin/binuti...
Message-ID:  <201011181750.oAIHoNdW039889@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sbruno
Date: Thu Nov 18 17:50:23 2010
New Revision: 215458
URL: http://svn.freebsd.org/changeset/base/215458

Log:
  Merge to HEAD.  Building my own release for testing.

Deleted:
  projects/sbruno_64cpus/gnu/usr.bin/binutils/as/powerpc64-freebsd/
  projects/sbruno_64cpus/gnu/usr.bin/binutils/libopcodes/Makefile.powerpc64
  projects/sbruno_64cpus/lib/libautofs/
  projects/sbruno_64cpus/sbin/mount_autofs/
Modified:
  projects/sbruno_64cpus/Makefile.inc1
  projects/sbruno_64cpus/cddl/Makefile.inc
  projects/sbruno_64cpus/gnu/usr.bin/binutils/Makefile.inc0
  projects/sbruno_64cpus/gnu/usr.bin/binutils/as/Makefile
  projects/sbruno_64cpus/gnu/usr.bin/binutils/ld/Makefile.amd64
  projects/sbruno_64cpus/gnu/usr.bin/binutils/libbfd/Makefile
  projects/sbruno_64cpus/gnu/usr.bin/cc/cc_tools/Makefile
  projects/sbruno_64cpus/lib/libusb/libusb.3
  projects/sbruno_64cpus/share/mk/Makefile
  projects/sbruno_64cpus/share/mk/bsd.crunchgen.mk
  projects/sbruno_64cpus/sys/amd64/amd64/amd64_mem.c
  projects/sbruno_64cpus/sys/boot/arm/uboot/ldscript.arm
  projects/sbruno_64cpus/sys/boot/forth/beastie.4th
  projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_copy.c
  projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_net.c
  projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.c
  projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.h
  projects/sbruno_64cpus/sys/boot/powerpc/ofw/start.c
  projects/sbruno_64cpus/sys/cam/ata/ata_xpt.c
  projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  projects/sbruno_64cpus/sys/compat/linsysfs/linsysfs.c
  projects/sbruno_64cpus/sys/compat/ndis/ntoskrnl_var.h
  projects/sbruno_64cpus/sys/compat/ndis/subr_ntoskrnl.c
  projects/sbruno_64cpus/sys/crypto/aesni/aesni_wrap.c
  projects/sbruno_64cpus/sys/dev/ata/ata-pci.h
  projects/sbruno_64cpus/sys/dev/ata/ata-sata.c
  projects/sbruno_64cpus/sys/dev/ata/chipsets/ata-via.c
  projects/sbruno_64cpus/sys/dev/drm/drmP.h
  projects/sbruno_64cpus/sys/dev/drm/drm_agpsupport.c
  projects/sbruno_64cpus/sys/dev/drm/drm_drv.c
  projects/sbruno_64cpus/sys/dev/drm/drm_memory.c
  projects/sbruno_64cpus/sys/dev/drm/drm_sysctl.c
  projects/sbruno_64cpus/sys/dev/drm/radeon_cs.c
  projects/sbruno_64cpus/sys/dev/mii/brgphy.c
  projects/sbruno_64cpus/sys/dev/mii/mii.c
  projects/sbruno_64cpus/sys/dev/nfe/if_nfe.c
  projects/sbruno_64cpus/sys/i386/i386/i686_mem.c
  projects/sbruno_64cpus/sys/kern/kern_rmlock.c
  projects/sbruno_64cpus/sys/kern/subr_bus.c
  projects/sbruno_64cpus/sys/netinet/cc.h
  projects/sbruno_64cpus/sys/netinet/cc/cc.c
  projects/sbruno_64cpus/sys/netinet/sctp.h
  projects/sbruno_64cpus/sys/netinet/sctp_uio.h
  projects/sbruno_64cpus/sys/netinet/sctp_usrreq.c
  projects/sbruno_64cpus/sys/netinet/tcp.h
  projects/sbruno_64cpus/sys/netinet/tcp_output.c
  projects/sbruno_64cpus/sys/netinet/tcp_reass.c
  projects/sbruno_64cpus/sys/netinet/tcp_subr.c
  projects/sbruno_64cpus/sys/netinet/tcp_usrreq.c
  projects/sbruno_64cpus/sys/netinet/tcp_var.h
  projects/sbruno_64cpus/sys/netinet6/nd6.c
  projects/sbruno_64cpus/sys/sparc64/pci/psycho.c
  projects/sbruno_64cpus/sys/sparc64/pci/schizo.c
  projects/sbruno_64cpus/sys/sys/bus.h
  projects/sbruno_64cpus/sys/x86/cpufreq/hwpstate.c
  projects/sbruno_64cpus/tools/tools/mctest/mctest.cc
  projects/sbruno_64cpus/usr.bin/netstat/inet.c
  projects/sbruno_64cpus/usr.bin/netstat/main.c
  projects/sbruno_64cpus/usr.bin/netstat/netstat.1
  projects/sbruno_64cpus/usr.bin/netstat/netstat.h
  projects/sbruno_64cpus/usr.sbin/iostat/iostat.8
  projects/sbruno_64cpus/usr.sbin/iostat/iostat.c
Directory Properties:
  projects/sbruno_64cpus/   (props changed)
  projects/sbruno_64cpus/cddl/contrib/opensolaris/   (props changed)
  projects/sbruno_64cpus/contrib/bind9/   (props changed)
  projects/sbruno_64cpus/contrib/binutils/   (props changed)
  projects/sbruno_64cpus/contrib/bzip2/   (props changed)
  projects/sbruno_64cpus/contrib/ee/   (props changed)
  projects/sbruno_64cpus/contrib/expat/   (props changed)
  projects/sbruno_64cpus/contrib/file/   (props changed)
  projects/sbruno_64cpus/contrib/gdb/   (props changed)
  projects/sbruno_64cpus/contrib/gdtoa/   (props changed)
  projects/sbruno_64cpus/contrib/gnu-sort/   (props changed)
  projects/sbruno_64cpus/contrib/groff/   (props changed)
  projects/sbruno_64cpus/contrib/less/   (props changed)
  projects/sbruno_64cpus/contrib/libpcap/   (props changed)
  projects/sbruno_64cpus/contrib/llvm/   (props changed)
  projects/sbruno_64cpus/contrib/llvm/tools/clang/   (props changed)
  projects/sbruno_64cpus/contrib/ncurses/   (props changed)
  projects/sbruno_64cpus/contrib/netcat/   (props changed)
  projects/sbruno_64cpus/contrib/ntp/   (props changed)
  projects/sbruno_64cpus/contrib/one-true-awk/   (props changed)
  projects/sbruno_64cpus/contrib/openbsm/   (props changed)
  projects/sbruno_64cpus/contrib/openpam/   (props changed)
  projects/sbruno_64cpus/contrib/pf/   (props changed)
  projects/sbruno_64cpus/contrib/sendmail/   (props changed)
  projects/sbruno_64cpus/contrib/tcpdump/   (props changed)
  projects/sbruno_64cpus/contrib/tcsh/   (props changed)
  projects/sbruno_64cpus/contrib/top/   (props changed)
  projects/sbruno_64cpus/contrib/top/install-sh   (props changed)
  projects/sbruno_64cpus/contrib/tzcode/stdtime/   (props changed)
  projects/sbruno_64cpus/contrib/tzcode/zic/   (props changed)
  projects/sbruno_64cpus/contrib/tzdata/   (props changed)
  projects/sbruno_64cpus/contrib/wpa/   (props changed)
  projects/sbruno_64cpus/contrib/xz/   (props changed)
  projects/sbruno_64cpus/crypto/openssh/   (props changed)
  projects/sbruno_64cpus/crypto/openssl/   (props changed)
  projects/sbruno_64cpus/lib/libc/   (props changed)
  projects/sbruno_64cpus/lib/libc/stdtime/   (props changed)
  projects/sbruno_64cpus/lib/libutil/   (props changed)
  projects/sbruno_64cpus/lib/libz/   (props changed)
  projects/sbruno_64cpus/sbin/   (props changed)
  projects/sbruno_64cpus/sbin/ipfw/   (props changed)
  projects/sbruno_64cpus/share/mk/bsd.arch.inc.mk   (props changed)
  projects/sbruno_64cpus/share/zoneinfo/   (props changed)
  projects/sbruno_64cpus/sys/   (props changed)
  projects/sbruno_64cpus/sys/amd64/include/xen/   (props changed)
  projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/   (props changed)
  projects/sbruno_64cpus/sys/contrib/dev/acpica/   (props changed)
  projects/sbruno_64cpus/sys/contrib/pf/   (props changed)
  projects/sbruno_64cpus/sys/contrib/x86emu/   (props changed)
  projects/sbruno_64cpus/sys/dev/xen/xenpci/   (props changed)
  projects/sbruno_64cpus/usr.bin/calendar/   (props changed)
  projects/sbruno_64cpus/usr.bin/csup/   (props changed)
  projects/sbruno_64cpus/usr.bin/procstat/   (props changed)
  projects/sbruno_64cpus/usr.sbin/zic/   (props changed)

Modified: projects/sbruno_64cpus/Makefile.inc1
==============================================================================
--- projects/sbruno_64cpus/Makefile.inc1	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/Makefile.inc1	Thu Nov 18 17:50:23 2010	(r215458)
@@ -322,7 +322,7 @@ LIB32WMAKEENV+=	MAKEOBJDIRPREFIX=${OBJTR
 
 LIB32WMAKE=	${LIB32WMAKEENV} ${MAKE} -DNO_CPU_CFLAGS -DCOMPAT_32BIT \
 		-DWITHOUT_BIND -DWITHOUT_MAN -DWITHOUT_INFO \
-		-DWITHOUT_HTML -DNO_CTF DESTDIR=${LIB32TMP}
+		-DWITHOUT_HTML -DNO_CTF -DNO_LINT DESTDIR=${LIB32TMP}
 LIB32IMAKE=	${LIB32WMAKE:NINSTALL=*:NDESTDIR=*} -DNO_INCS
 .endif
 

Modified: projects/sbruno_64cpus/cddl/Makefile.inc
==============================================================================
--- projects/sbruno_64cpus/cddl/Makefile.inc	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/cddl/Makefile.inc	Thu Nov 18 17:50:23 2010	(r215458)
@@ -9,3 +9,8 @@ CFLAGS+=	-DNEED_SOLARIS_BOOLEAN
 
 WARNS?=		6
 CSTD?=		gnu89
+
+# Do not lint the CDDL stuff. It is all externally maintained and
+# lint output is wasteful noise here.
+
+NO_LINT=

Modified: projects/sbruno_64cpus/gnu/usr.bin/binutils/Makefile.inc0
==============================================================================
--- projects/sbruno_64cpus/gnu/usr.bin/binutils/Makefile.inc0	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/gnu/usr.bin/binutils/Makefile.inc0	Thu Nov 18 17:50:23 2010	(r215458)
@@ -36,28 +36,15 @@ CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=64
 .endif
 
 CFLAGS+= -I.
-.if exists(${.CURDIR}/${TARGET_CPUARCH})
-CFLAGS+= -I${.CURDIR}/${TARGET_CPUARCH}
-.endif
 CFLAGS+= -I${.CURDIR}
 CFLAGS+= -I${.CURDIR}/${RELTOP}/libbfd
 CFLAGS+= -I${.OBJDIR}/${RELTOP}/libbfd
 CFLAGS+= -I${SRCDIR}/include
 
-.if exists(${.CURDIR}/${TARGET_CPUARCH})
-.PATH: ${.CURDIR}/${TARGET_CPUARCH}
-.endif
-
 ARCHS=	${TARGET_CPUARCH}
 
-.for _arch in ${CROSS_ARCH}
-.if (${ARCHS:R:M${_arch:R}} == "")
-ARCHS+= $(_arch)
-.endif
-.endfor
-
-.for _arch in ${ARCHS}
-.if exists(${.CURDIR}/Makefile.${_arch})
-.include "${.CURDIR}/Makefile.${_arch}"
+.if exists(${.CURDIR}/Makefile.${TARGET_ARCH})
+.include "${.CURDIR}/Makefile.${TARGET_ARCH}"
+.elif exists(${.CURDIR}/Makefile.${TARGET_CPUARCH})
+.include "${.CURDIR}/Makefile.${TARGET_CPUARCH}"
 .endif
-.endfor

Modified: projects/sbruno_64cpus/gnu/usr.bin/binutils/as/Makefile
==============================================================================
--- projects/sbruno_64cpus/gnu/usr.bin/binutils/as/Makefile	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/gnu/usr.bin/binutils/as/Makefile	Thu Nov 18 17:50:23 2010	(r215458)
@@ -26,7 +26,7 @@ SRCS+=	itbl-ops.c itbl-parse.y itbl-lex.
 
 .if ${TARGET_ARCH} == "amd64"
 SRCS+=	tc-i386.c
-.elif ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "powerpc64"
+.elif ${TARGET_CPUARCH} == "powerpc"
 SRCS+=	tc-ppc.c
 .elif ${TARGET_ARCH} == "sparc64"
 # change back to tc-sparc.c when new binutils is imported

Modified: projects/sbruno_64cpus/gnu/usr.bin/binutils/ld/Makefile.amd64
==============================================================================
--- projects/sbruno_64cpus/gnu/usr.bin/binutils/ld/Makefile.amd64	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/gnu/usr.bin/binutils/ld/Makefile.amd64	Thu Nov 18 17:50:23 2010	(r215458)
@@ -12,7 +12,7 @@ e${NATIVE_EMULATION}.c: emulparams/${NAT
 	    ${NATIVE_EMULATION} "" no ${NATIVE_EMULATION} ${TARGET_TUPLE}
 
 X86_EMULATION=	elf_i386_fbsd
-_i386_path=	\"${TOOLS_PREFIX}/usr/lib/i386\"
+_i386_path=	\"${TOOLS_PREFIX}/usr/lib32\"
 EMS+=		${X86_EMULATION}
 .for ext in ${ELF_SCR_EXT}
 LDSCRIPTS+=	${X86_EMULATION}.${ext}

Modified: projects/sbruno_64cpus/gnu/usr.bin/binutils/libbfd/Makefile
==============================================================================
--- projects/sbruno_64cpus/gnu/usr.bin/binutils/libbfd/Makefile	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/gnu/usr.bin/binutils/libbfd/Makefile	Thu Nov 18 17:50:23 2010	(r215458)
@@ -24,8 +24,6 @@ SELARCH=
 SELARCH= &bfd_i386_arch
 .elif ${TARGET_ARCH} == "sparc64"
 SELARCH= &bfd_sparc_arch
-.elif ${TARGET_ARCH} == "powerpc64"
-SELARCH= &bfd_powerpc_arch,&bfd_rs6000_arch
 .else
 .for _a in ${ARCHS}
 .if ${SELARCH} == ""

Modified: projects/sbruno_64cpus/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- projects/sbruno_64cpus/gnu/usr.bin/cc/cc_tools/Makefile	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/gnu/usr.bin/cc/cc_tools/Makefile	Thu Nov 18 17:50:23 2010	(r215458)
@@ -307,7 +307,7 @@ GENSRCS+=	gcov-iov.h
 
 # Multilib config file
 multilib.h:
-.if ${TARGET_ARCH} == "powerpc64"
+.if ${TARGET_ARCH} == "powerpc64" || ${TARGET_ARCH} == "amd64"
 	echo 'static const char *const multilib_raw[] = { \
 	    ". !m64 !m32;", \
 	    "64:../lib m64 !m32;", \

Modified: projects/sbruno_64cpus/lib/libusb/libusb.3
==============================================================================
--- projects/sbruno_64cpus/lib/libusb/libusb.3	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/lib/libusb/libusb.3	Thu Nov 18 17:50:23 2010	(r215458)
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd October 14, 2010
+.Dd November 18, 2010
 .Dt LIBUSB 3
 .Os
 .Sh NAME
@@ -380,10 +380,15 @@ LIBUSB_ERROR code on failure.
 .Pp
 .Ft int
 .Fn libusb_control_transfer "libusb_device_handle *devh" "uint8_t bmRequestType" "uint8_t bRequest" "uint16_t wValue" "uint16_t wIndex" "unsigned char *data" "uint16_t wLength" "unsigned int timeout"
-Perform a USB control transfer. Returns 0 on success, LIBUSB_ERROR_TIMEOUT 
-if the transfer timeout, LIBUSB_ERROR_PIPE if the control request was not 
-supported, LIBUSB_ERROR_NO_DEVICE if the device has been disconnected and 
-LIBUSB_ERROR code on other failure.
+Perform a USB control transfer. Returns the actual number of bytes
+transferred on success in the range from and including zero until and
+including
+.Xa wLength .
+On error a libusb error code is returned, for example
+LIBUSB_ERROR_TIMEOUT if the transfer timeout, LIBUSB_ERROR_PIPE if the
+control request was not supported, LIBUSB_ERROR_NO_DEVICE if the
+device has been disconnected or another LIBUSB_ERROR code on other failures.
+The libusb error codes are always negative.
 .
 .Pp
 .Ft int

Modified: projects/sbruno_64cpus/share/mk/Makefile
==============================================================================
--- projects/sbruno_64cpus/share/mk/Makefile	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/share/mk/Makefile	Thu Nov 18 17:50:23 2010	(r215458)
@@ -5,7 +5,7 @@ FILES=	bsd.README
 FILES+=	bsd.arch.inc.mk
 FILES+=	bsd.compat.mk bsd.cpu.mk bsd.dep.mk bsd.doc.mk bsd.dtrace.mk
 FILES+=	bsd.endian.mk
-FILES+=	bsd.files.mk bsd.incs.mk bsd.info.mk bsd.init.mk
+FILES+=	bsd.files.mk bsd.crunchgen.mk bsd.incs.mk bsd.info.mk bsd.init.mk
 FILES+=	bsd.kmod.mk
 FILES+=	bsd.lib.mk bsd.libnames.mk bsd.links.mk bsd.man.mk bsd.nls.mk
 FILES+=	bsd.obj.mk bsd.own.mk

Modified: projects/sbruno_64cpus/share/mk/bsd.crunchgen.mk
==============================================================================
--- projects/sbruno_64cpus/share/mk/bsd.crunchgen.mk	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/share/mk/bsd.crunchgen.mk	Thu Nov 18 17:50:23 2010	(r215458)
@@ -51,17 +51,14 @@ $(OUTPUTS): $(CRUNCH_SRCDIR_${P})/Makefi
 .else
 $(OUTPUTS): $(.CURDIR)/../../$(D)/$(P)/Makefile
 .endif
-# Disable building links for bsdbox - whatever is installing the binaries into
-# the embedded system should (for now) do the linking there. This may change
-# in the future. -adrian
-#.ifndef CRUNCH_SUPPRESS_LINK_${P}
-#LINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(P)
-#.endif
-#.for A in $(CRUNCH_ALIAS_$(P))
-#.ifndef CRUNCH_SUPPRESS_LINK_${A}
-#LINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(A)
-#.endif
-#.endfor
+.ifndef CRUNCH_SUPPRESS_LINK_${P}
+LINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(P)
+.endif
+.for A in $(CRUNCH_ALIAS_$(P))
+.ifndef CRUNCH_SUPPRESS_LINK_${A}
+LINKS+= $(BINDIR)/$(PROG) $(BINDIR)/$(A)
+.endif
+.endfor
 .endfor
 .endfor
 

Modified: projects/sbruno_64cpus/sys/amd64/amd64/amd64_mem.c
==============================================================================
--- projects/sbruno_64cpus/sys/amd64/amd64/amd64_mem.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/amd64/amd64/amd64_mem.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -307,20 +307,21 @@ amd64_mrstoreone(void *arg)
 	struct mem_range_desc *mrd;
 	u_int64_t omsrv, msrv;
 	int i, j, msr;
-	u_int cr4save;
+	u_long cr0, cr4;
 
 	mrd = sc->mr_desc;
 
 	/* Disable PGE. */
-	cr4save = rcr4();
-	if (cr4save & CR4_PGE)
-		load_cr4(cr4save & ~CR4_PGE);
+	cr4 = rcr4();
+	load_cr4(cr4 & ~CR4_PGE);
 
 	/* Disable caches (CD = 1, NW = 0). */
-	load_cr0((rcr0() & ~CR0_NW) | CR0_CD);
+	cr0 = rcr0();
+	load_cr0((cr0 & ~CR0_NW) | CR0_CD);
 
 	/* Flushes caches and TLBs. */
 	wbinvd();
+	invltlb();
 
 	/* Disable MTRRs (E = 0). */
 	wrmsr(MSR_MTRRdefType, rdmsr(MSR_MTRRdefType) & ~MTRR_DEF_ENABLE);
@@ -388,17 +389,16 @@ amd64_mrstoreone(void *arg)
 		wrmsr(msr + 1, msrv);
 	}
 
-	/* Flush caches, TLBs. */
+	/* Flush caches and TLBs. */
 	wbinvd();
+	invltlb();
 
 	/* Enable MTRRs. */
 	wrmsr(MSR_MTRRdefType, rdmsr(MSR_MTRRdefType) | MTRR_DEF_ENABLE);
 
-	/* Enable caches (CD = 0, NW = 0). */
-	load_cr0(rcr0() & ~(CR0_CD | CR0_NW));
-
-	/* Restore PGE. */
-	load_cr4(cr4save);
+	/* Restore caches and PGE. */
+	load_cr0(cr0);
+	load_cr4(cr4);
 }
 
 /*

Modified: projects/sbruno_64cpus/sys/boot/arm/uboot/ldscript.arm
==============================================================================
--- projects/sbruno_64cpus/sys/boot/arm/uboot/ldscript.arm	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/boot/arm/uboot/ldscript.arm	Thu Nov 18 17:50:23 2010	(r215458)
@@ -1,6 +1,5 @@
 /* $FreeBSD$ */
 
-OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm")
 OUTPUT_ARCH(arm)
 ENTRY(_start)
 SECTIONS

Modified: projects/sbruno_64cpus/sys/boot/forth/beastie.4th
==============================================================================
--- projects/sbruno_64cpus/sys/boot/forth/beastie.4th	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/boot/forth/beastie.4th	Thu Nov 18 17:50:23 2010	(r215458)
@@ -140,12 +140,16 @@ at-xy ."         `--{__________) "
 	fbsdbw-logo
 ;
 
-: acpienabled? ( -- flag )
+: acpipresent? ( -- flag )
 	s" hint.acpi.0.rsdp" getenv
 	dup -1 = if
 		drop false exit
 	then
 	2drop
+	true
+;
+
+: acpienabled? ( -- flag )
 	s" hint.acpi.0.disabled" getenv
 	dup -1 <> if
 		s" 0" compare 0<> if
@@ -180,11 +184,18 @@ at-xy ."         `--{__________) "
 	printmenuitem ."  Boot FreeBSD [default]" bootkey !
 	s" arch-i386" environment? if
 		drop
-		printmenuitem ."  Boot FreeBSD with ACPI " bootacpikey !
-		acpienabled? if
-			." disabled"
+		acpipresent? if
+			printmenuitem ."  Boot FreeBSD with ACPI " bootacpikey !
+			acpienabled? if
+				." disabled"
+			else
+				." enabled"
+			then
 		else
-			." enabled"
+			menuidx @
+			1+ dup
+			menuidx !
+			-2 bootacpikey !
 		then
 	else
 		-2 bootacpikey !

Modified: projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_copy.c
==============================================================================
--- projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_copy.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_copy.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -91,16 +91,22 @@ ofw_mapmem(vm_offset_t dest, const size_
                 return (ENOMEM);
         }
 
-        if (OF_call_method("claim", mmu, 3, 1, destp, dlen, 0, &addr) == -1) {
-                printf("ofw_mapmem: virtual claim failed\n");
-                return (ENOMEM);
-        }
-
-        if (OF_call_method("map", mmu, 4, 0, destp, destp, dlen, 0) == -1) {
-                printf("ofw_mapmem: map failed\n");
-                return (ENOMEM);
-        }
+	/*
+	 * We only do virtual memory management when real_mode is false.
+	 */
+	if (real_mode == 0) {
+		if (OF_call_method("claim", mmu, 3, 1, destp, dlen, 0, &addr)
+		    == -1) {
+			printf("ofw_mapmem: virtual claim failed\n");
+			return (ENOMEM);
+		}
 
+		if (OF_call_method("map", mmu, 4, 0, destp, destp, dlen, 0)
+		    == -1) {
+			printf("ofw_mapmem: map failed\n");
+			return (ENOMEM);
+		}
+	}
         last_dest = (vm_offset_t) destp;
         last_len  = dlen;
 

Modified: projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_net.c
==============================================================================
--- projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_net.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/boot/ofw/libofw/ofw_net.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -90,11 +90,11 @@ ofwn_probe(struct netif *nif, void *mach
 static int
 ofwn_put(struct iodesc *desc, void *pkt, size_t len)
 {
-	struct ether_header	*eh;
 	size_t			sendlen;
 	ssize_t			rv;
 
 #if defined(NETIF_DEBUG)
+	struct ether_header	*eh;
 	printf("netif_put: desc=0x%x pkt=0x%x len=%d\n", desc, pkt, len);
 	eh = pkt;
 	printf("dst: %s ", ether_sprintf(eh->ether_dhost));

Modified: projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.c
==============================================================================
--- projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -69,12 +69,15 @@ int (*openfirmware)(void *);
 phandle_t chosen;
 ihandle_t mmu;
 ihandle_t memory;
+int	  real_mode = 0;
 
 /* Initialiser */
 
 void
 OF_init(int (*openfirm)(void *))
 {
+	phandle_t options;
+	char	  mode[8];
 
 	openfirmware = openfirm;
 
@@ -89,6 +92,15 @@ OF_init(int (*openfirm)(void *))
 	}
 	if (OF_getprop(chosen, "mmu", &mmu, sizeof(mmu)) == -1)
 		OF_exit();
+
+	/* 
+	 * Check if we run in real mode. If so, we do not need to map
+	 * memory later on.
+	 */
+	options = OF_finddevice("/options");
+	OF_getprop(options, "real-mode?", mode, sizeof(mode));
+	if (strncmp(mode, "true", 4) == 0)
+		real_mode = 1;
 }
 
 /*

Modified: projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.h
==============================================================================
--- projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.h	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/boot/ofw/libofw/openfirm.h	Thu Nov 18 17:50:23 2010	(r215458)
@@ -72,6 +72,7 @@ typedef unsigned long int	cell_t;
 extern int		(*openfirmware)(void *);
 extern phandle_t	chosen;
 extern ihandle_t	memory, mmu;
+extern int		real_mode;
 
 /*
  * This isn't actually an Open Firmware function, but it seemed like the right

Modified: projects/sbruno_64cpus/sys/boot/powerpc/ofw/start.c
==============================================================================
--- projects/sbruno_64cpus/sys/boot/powerpc/ofw/start.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/boot/powerpc/ofw/start.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -50,7 +50,20 @@ _start:				\n\
 	addi	%r1,%r1,stack@l	\n\
 	addi	%r1,%r1,8192	\n\
 				\n\
-	b	startup		\n\
+	/* Clear the .bss!!! */	\n\
+	li      %r0,0		\n\
+	lis     %r8,_edata@ha	\n\
+	addi    %r8,%r8,_edata@l\n\
+	lis     %r9,_end@ha	\n\
+	addi    %r9,%r9,_end@l	\n\
+				\n\
+1:	cmpw    0,%r8,%r9	\n\
+	bge     2f		\n\
+	stw     %r0,0(%r8)	\n\
+	addi    %r8,%r8,4	\n\
+	b       1b		\n\
+				\n\
+2:	b	startup		\n\
 ");
 
 void

Modified: projects/sbruno_64cpus/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/sbruno_64cpus/sys/cam/ata/ata_xpt.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/cam/ata/ata_xpt.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -963,6 +963,8 @@ noerror:
 		xpt_action((union ccb *)&cts);
 		if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
 			caps &= cts.xport_specific.sata.caps;
+		else
+			caps = 0;
 		/* Store result to SIM. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);
@@ -1103,6 +1105,8 @@ notsata:
 		xpt_action((union ccb *)&cts);
 		if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
 			caps &= cts.xport_specific.sata.caps;
+		else
+			caps = 0;
 		/* Store result to SIM. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);

Modified: projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
==============================================================================
--- projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -1557,7 +1557,7 @@ zfs_vget(vfs_t *vfsp, ino_t ino, int fla
 	int 		err;
 
 	/*
-	 * zfs_zget() can't operate on virtual entires like .zfs/ or
+	 * zfs_zget() can't operate on virtual entries like .zfs/ or
 	 * .zfs/snapshot/ directories, that's why we return EOPNOTSUPP.
 	 * This will make NFS to switch to LOOKUP instead of using VGET.
 	 */

Modified: projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -67,6 +67,7 @@
 #include <sys/sf_buf.h>
 #include <sys/sched.h>
 #include <sys/acl.h>
+#include <vm/vm_pageout.h>
 
 /*
  * Programming rules.
@@ -481,7 +482,7 @@ again:
 				uiomove_fromphys(&m, off, bytes, uio);
 			VM_OBJECT_LOCK(obj);
 			vm_page_wakeup(m);
-		} else if (m != NULL && uio->uio_segflg == UIO_NOCOPY) {
+		} else if (uio->uio_segflg == UIO_NOCOPY) {
 			/*
 			 * The code below is here to make sendfile(2) work
 			 * correctly with ZFS. As pointed out by ups@
@@ -491,7 +492,7 @@ again:
 			 */
 			KASSERT(off == 0,
 			    ("unexpected offset in mappedread for sendfile"));
-			if ((m->oflags & VPO_BUSY) != 0) {
+			if (m != NULL && (m->oflags & VPO_BUSY) != 0) {
 				/*
 				 * Reference the page before unlocking and
 				 * sleeping so that the page daemon is less
@@ -501,8 +502,17 @@ again:
 				vm_page_flag_set(m, PG_REFERENCED);
 				vm_page_sleep(m, "zfsmrb");
 				goto again;
+			} else if (m == NULL) {
+				m = vm_page_alloc(obj, OFF_TO_IDX(start),
+				    VM_ALLOC_NOBUSY | VM_ALLOC_NORMAL);
+				if (m == NULL) {
+					VM_OBJECT_UNLOCK(obj);
+					VM_WAIT;
+					VM_OBJECT_LOCK(obj);
+					goto again;
+				}
 			}
-			vm_page_busy(m);
+			vm_page_io_start(m);
 			VM_OBJECT_UNLOCK(obj);
 			if (dirbytes > 0) {
 				error = dmu_read_uio(os, zp->z_id, uio,
@@ -520,7 +530,7 @@ again:
 			VM_OBJECT_LOCK(obj);
 			if (error == 0)
 				m->valid = VM_PAGE_BITS_ALL;
-			vm_page_wakeup(m);
+			vm_page_io_finish(m);
 			if (error == 0) {
 				uio->uio_resid -= bytes;
 				uio->uio_offset += bytes;

Modified: projects/sbruno_64cpus/sys/compat/linsysfs/linsysfs.c
==============================================================================
--- projects/sbruno_64cpus/sys/compat/linsysfs/linsysfs.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/compat/linsysfs/linsysfs.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -182,8 +182,8 @@ linsysfs_run_bus(device_t dev, struct pf
 					sprintf(host, "host%d", host_number++);
 					strcat(new_path, "/");
 					strcat(new_path, host);
-					sub_dir = pfs_create_dir(dir,
-					    host, NULL, NULL, NULL, 0);
+					pfs_create_dir(dir, host,
+					    NULL, NULL, NULL, 0);
 					scsi_host = malloc(sizeof(
 					    struct scsi_host_queue),
 					    M_DEVBUF, M_NOWAIT);

Modified: projects/sbruno_64cpus/sys/compat/ndis/ntoskrnl_var.h
==============================================================================
--- projects/sbruno_64cpus/sys/compat/ndis/ntoskrnl_var.h	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/compat/ndis/ntoskrnl_var.h	Thu Nov 18 17:50:23 2010	(r215458)
@@ -162,6 +162,16 @@ typedef struct mdl mdl, ndis_buffer;
 #define	WDM_MINOR_WINXP		0x20
 #define	WDM_MINOR_WIN2003	0x30
 
+enum nt_caching_type {
+	MmNonCached			= 0,
+	MmCached			= 1,
+	MmWriteCombined			= 2,
+	MmHardwareCoherentCached	= 3,
+	MmNonCachedUnordered		= 4,
+	MmUSWCCached			= 5,
+	MmMaximumCacheType		= 6
+};
+
 /*-
  * The ndis_kspin_lock type is called KSPIN_LOCK in MS-Windows.
  * According to the Windows DDK header files, KSPIN_LOCK is defined like this:

Modified: projects/sbruno_64cpus/sys/compat/ndis/subr_ntoskrnl.c
==============================================================================
--- projects/sbruno_64cpus/sys/compat/ndis/subr_ntoskrnl.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/compat/ndis/subr_ntoskrnl.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -68,6 +68,7 @@ __FBSDID("$FreeBSD$");
 #include <vm/uma.h>
 #include <vm/vm_kern.h>
 #include <vm/vm_map.h>
+#include <vm/vm_extern.h>
 
 #include <compat/ndis/pe_var.h>
 #include <compat/ndis/cfg_var.h>
@@ -197,9 +198,10 @@ static uint32_t InterlockedDecrement(vol
 static void ExInterlockedAddLargeStatistic(uint64_t *, uint32_t);
 static void *MmAllocateContiguousMemory(uint32_t, uint64_t);
 static void *MmAllocateContiguousMemorySpecifyCache(uint32_t,
-	uint64_t, uint64_t, uint64_t, uint32_t);
+	uint64_t, uint64_t, uint64_t, enum nt_caching_type);
 static void MmFreeContiguousMemory(void *);
-static void MmFreeContiguousMemorySpecifyCache(void *, uint32_t, uint32_t);
+static void MmFreeContiguousMemorySpecifyCache(void *, uint32_t,
+	enum nt_caching_type);
 static uint32_t MmSizeOfMdl(void *, size_t);
 static void *MmMapLockedPages(mdl *, uint8_t);
 static void *MmMapLockedPagesSpecifyCache(mdl *,
@@ -2424,11 +2426,34 @@ MmAllocateContiguousMemorySpecifyCache(s
 	uint64_t		lowest;
 	uint64_t		highest;
 	uint64_t		boundary;
-	uint32_t		cachetype;
+	enum nt_caching_type	cachetype;
 {
+	vm_memattr_t		memattr;
+	void			*ret;
 
-	return (contigmalloc(size, M_DEVBUF, M_ZERO|M_NOWAIT, lowest,
-	    highest, PAGE_SIZE, boundary));
+	switch (cachetype) {
+	case MmNonCached:
+		memattr = VM_MEMATTR_UNCACHEABLE;
+		break;
+	case MmWriteCombined:
+		memattr = VM_MEMATTR_WRITE_COMBINING;
+		break;
+	case MmNonCachedUnordered:
+		memattr = VM_MEMATTR_UNCACHEABLE;
+		break;
+	case MmCached:
+	case MmHardwareCoherentCached:
+	case MmUSWCCached:
+	default:
+		memattr = VM_MEMATTR_DEFAULT;
+		break;
+	}
+
+	ret = (void *)kmem_alloc_contig(kernel_map, size, M_ZERO | M_NOWAIT,
+	    lowest, highest, PAGE_SIZE, boundary, memattr);
+	if (ret != NULL)
+		malloc_type_allocated(M_DEVBUF, round_page(size));
+	return (ret);
 }
 
 static void
@@ -2442,7 +2467,7 @@ static void
 MmFreeContiguousMemorySpecifyCache(base, size, cachetype)
 	void			*base;
 	uint32_t		size;
-	uint32_t		cachetype;
+	enum nt_caching_type	cachetype;
 {
 	contigfree(base, size, M_DEVBUF);
 }
@@ -4212,8 +4237,8 @@ image_patch_table ntoskrnl_functbl[] = {
 	IMPORT_FFUNC(ExInterlockedAddLargeStatistic, 2),
 	IMPORT_SFUNC(IoAllocateMdl, 5),
 	IMPORT_SFUNC(IoFreeMdl, 1),
-	IMPORT_SFUNC(MmAllocateContiguousMemory, 2),
-	IMPORT_SFUNC(MmAllocateContiguousMemorySpecifyCache, 5),
+	IMPORT_SFUNC(MmAllocateContiguousMemory, 2 + 1),
+	IMPORT_SFUNC(MmAllocateContiguousMemorySpecifyCache, 5 + 3),
 	IMPORT_SFUNC(MmFreeContiguousMemory, 1),
 	IMPORT_SFUNC(MmFreeContiguousMemorySpecifyCache, 3),
 	IMPORT_SFUNC_MAP(MmGetPhysicalAddress, pmap_kextract, 1),

Modified: projects/sbruno_64cpus/sys/crypto/aesni/aesni_wrap.c
==============================================================================
--- projects/sbruno_64cpus/sys/crypto/aesni/aesni_wrap.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/crypto/aesni/aesni_wrap.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -246,14 +246,21 @@ int
 aesni_cipher_setup(struct aesni_session *ses, struct cryptoini *encini)
 {
 	struct thread *td;
-	int error;
+	int error, saved_ctx;
 
 	td = curthread;
-	error = fpu_kern_enter(td, &ses->fpu_ctx, FPU_KERN_NORMAL);
+	if (!is_fpu_kern_thread(0)) {
+		error = fpu_kern_enter(td, &ses->fpu_ctx, FPU_KERN_NORMAL);
+		saved_ctx = 1;
+	} else {
+		error = 0;
+		saved_ctx = 0;
+	}
 	if (error == 0) {
 		error = aesni_cipher_setup_common(ses, encini->cri_key,
 		    encini->cri_klen);
-		fpu_kern_leave(td, &ses->fpu_ctx);
+		if (saved_ctx)
+			fpu_kern_leave(td, &ses->fpu_ctx);
 	}
 	return (error);
 }
@@ -264,16 +271,22 @@ aesni_cipher_process(struct aesni_sessio
 {
 	struct thread *td;
 	uint8_t *buf;
-	int error, allocated;
+	int error, allocated, saved_ctx;
 
 	buf = aesni_cipher_alloc(enccrd, crp, &allocated);
 	if (buf == NULL)
 		return (ENOMEM);
 
 	td = curthread;
-	error = fpu_kern_enter(td, &ses->fpu_ctx, FPU_KERN_NORMAL);
-	if (error != 0)
-		goto out;
+	if (!is_fpu_kern_thread(0)) {
+		error = fpu_kern_enter(td, &ses->fpu_ctx, FPU_KERN_NORMAL);
+		if (error != 0)
+			goto out;
+		saved_ctx = 1;
+	} else {
+		saved_ctx = 0;
+		error = 0;
+	}
 
 	if ((enccrd->crd_flags & CRD_F_KEY_EXPLICIT) != 0) {
 		error = aesni_cipher_setup_common(ses, enccrd->crd_key,
@@ -311,7 +324,8 @@ aesni_cipher_process(struct aesni_sessio
 			    ses->iv);
 		}
 	}
-	fpu_kern_leave(td, &ses->fpu_ctx);
+	if (saved_ctx)
+		fpu_kern_leave(td, &ses->fpu_ctx);
 	if (allocated)
 		crypto_copyback(crp->crp_flags, crp->crp_buf, enccrd->crd_skip,
 		    enccrd->crd_len, buf);

Modified: projects/sbruno_64cpus/sys/dev/ata/ata-pci.h
==============================================================================
--- projects/sbruno_64cpus/sys/dev/ata/ata-pci.h	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/ata/ata-pci.h	Thu Nov 18 17:50:23 2010	(r215458)
@@ -512,7 +512,10 @@ struct ata_pci_controller {
 #define ATA_VIACX700            0x83241106
 #define ATA_VIASATAIDE          0x53241106
 #define ATA_VIAVX800            0x83531106
+#define ATA_VIASATAIDE2         0xc4091106
 #define ATA_VIAVX855            0x84091106
+#define ATA_VIASATAIDE3         0x90011106
+#define ATA_VIAVX900            0x84101106
 
 /* global prototypes ata-pci.c */
 int ata_pci_probe(device_t dev);

Modified: projects/sbruno_64cpus/sys/dev/ata/ata-sata.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/ata/ata-sata.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/ata/ata-sata.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -153,8 +153,12 @@ ata_sata_phy_reset(device_t dev, int por
     if (quick) {
 	if (ata_sata_scr_read(ch, port, ATA_SCONTROL, &val))
 	    return (0);
-	if ((val & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE)
+	if ((val & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE) {
+	    ata_sata_scr_write(ch, port, ATA_SCONTROL,
+		ATA_SC_DET_IDLE | ((ch->pm_level > 0) ? 0 :
+		ATA_SC_IPM_DIS_PARTIAL | ATA_SC_IPM_DIS_SLUMBER));
 	    return ata_sata_connect(ch, port, quick);
+	}
     }
 
     if (bootverbose) {

Modified: projects/sbruno_64cpus/sys/dev/ata/chipsets/ata-via.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/ata/chipsets/ata-via.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/ata/chipsets/ata-via.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -63,6 +63,12 @@ static int ata_via_new_setmode(device_t 
 static int ata_via_sata_ch_attach(device_t dev);
 static int ata_via_sata_getrev(device_t dev, int target);
 static int ata_via_sata_setmode(device_t dev, int target, int mode);
+static void ata_via_sata_reset(device_t dev);
+static int ata_via_sata_scr_read(device_t dev, int port, int reg,
+    u_int32_t *result);
+static int ata_via_sata_scr_write(device_t dev, int port, int reg,
+    u_int32_t value);
+static int ata_via_sata_status(device_t dev);
 
 /* misc defines */
 #define VIA33           0
@@ -106,6 +112,7 @@ ata_via_probe(device_t dev)
      { ATA_VIACX700,  0x00, VIA133, VIASATA, ATA_SA150, "CX700" },
      { ATA_VIAVX800,  0x00, VIA133, VIASATA, ATA_SA150, "VX800" },
      { ATA_VIAVX855,  0x00, VIA133, 0x00,    ATA_UDMA6, "VX855" },
+     { ATA_VIAVX900,  0x00, VIA133, VIASATA, ATA_SA300, "VX900" },
      { 0, 0, 0, 0, 0, 0 }};
     static struct ata_chip_id new_ids[] =
     {{ ATA_VIA6410,   0x00, 0,      0x00,    ATA_UDMA6, "6410" },
@@ -123,7 +130,9 @@ ata_via_probe(device_t dev)
 
     if (pci_get_devid(dev) == ATA_VIA82C571 ||
 	pci_get_devid(dev) == ATA_VIACX700IDE ||
-	pci_get_devid(dev) == ATA_VIASATAIDE) {
+	pci_get_devid(dev) == ATA_VIASATAIDE ||
+	pci_get_devid(dev) == ATA_VIASATAIDE2 ||
+	pci_get_devid(dev) == ATA_VIASATAIDE3) {
 	if (!(ctlr->chip = ata_find_chip(dev, ids, -99))) 
 	    return ENXIO;
     }
@@ -150,11 +159,12 @@ ata_via_chipinit(device_t dev)
 	if (ata_ahci_chipinit(dev) != ENXIO)
 	    return (0);
     }
-    /* 2 SATA without SATA registers on first channel + 1 PATA on second */
+    /* 2 SATA with "SATA registers" at PCI config space + PATA on secondary */
     if (ctlr->chip->cfg2 & VIASATA) {
 	ctlr->ch_attach = ata_via_sata_ch_attach;
 	ctlr->setmode = ata_via_sata_setmode;
 	ctlr->getrev = ata_via_sata_getrev;
+	ctlr->reset = ata_via_sata_reset;
 	return 0;
     }
     /* Legacy SATA/SATA+PATA with SATA registers in BAR(5). */
@@ -402,18 +412,30 @@ ata_via_sata_ch_attach(device_t dev)
 
 	if (ata_pci_ch_attach(dev))
 		return ENXIO;
-	if (ch->unit == 0)
+	if (ch->unit == 0) {
+		ch->hw.status = ata_via_sata_status;
+		ch->hw.pm_read = ata_via_sata_scr_read;
+		ch->hw.pm_write = ata_via_sata_scr_write;
+		ch->flags |= ATA_PERIODIC_POLL;
 		ch->flags |= ATA_SATA;
+		ata_sata_scr_write(ch, 0, ATA_SERROR, 0xffffffff);
+		ata_sata_scr_write(ch, 1, ATA_SERROR, 0xffffffff);
+	}
 	return (0);
 }
 
 static int
 ata_via_sata_getrev(device_t dev, int target)
 {
+	device_t parent = device_get_parent(dev);
 	struct ata_channel *ch = device_get_softc(dev);
 
-	if (ch->unit == 0)
-		return (1);
+	if (ch->unit == 0) {
+		if (pci_read_config(parent, 0xa0 + target, 1) & 0x10)
+			return (2);
+		else
+			return (1);
+	}
 	return (0);
 }
 
@@ -427,5 +449,112 @@ ata_via_sata_setmode(device_t dev, int t
 	return (ata_via_old_setmode(dev, target, mode));
 }
 
+static void
+ata_via_sata_reset(device_t dev)
+{
+	struct ata_channel *ch = device_get_softc(dev);
+	int devs;
+
+	if (ch->unit == 0) {
+		devs = ata_sata_phy_reset(dev, 0, 0);
+		DELAY(10000);
+		devs += ata_sata_phy_reset(dev, 1, 0);
+	} else
+		devs = 1;
+	if (devs)
+		ata_generic_reset(dev);
+	else
+		ch->devices = 0;
+}
+
+static int
+ata_via_sata_scr_read(device_t dev, int port, int reg, u_int32_t *result)
+{
+	struct ata_channel *ch;
+	device_t parent;
+	uint32_t val;
+
+	parent = device_get_parent(dev);
+	ch = device_get_softc(dev);
+	port = (port == 1) ? 1 : 0;
+	switch (reg) {
+	case ATA_SSTATUS:
+		val = pci_read_config(parent, 0xa0 + port, 1);
+		*result = val & 0x03;
+		if (*result != ATA_SS_DET_NO_DEVICE) {
+			if (val & 0x04)
+				*result |= ATA_SS_IPM_PARTIAL;
+			else if (val & 0x08)
+				*result |= ATA_SS_IPM_SLUMBER;
+			else
+				*result |= ATA_SS_IPM_ACTIVE;
+			if (val & 0x10)
+				*result |= ATA_SS_SPD_GEN2;
+			else
+				*result |= ATA_SS_SPD_GEN1;
+		}
+		break;
+	case ATA_SERROR:
+		*result = pci_read_config(parent, 0xa8 + port * 4, 4);
+		break;
+	case ATA_SCONTROL:
+		val = pci_read_config(parent, 0xa4 + port, 1);
+		*result = 0;
+		if (val & 0x01)
+			*result |= ATA_SC_DET_RESET;
+		if (val & 0x02)
+			*result |= ATA_SC_DET_DISABLE;
+		if (val & 0x04)
+			*result |= ATA_SC_IPM_DIS_PARTIAL;
+		if (val & 0x08)
+			*result |= ATA_SC_IPM_DIS_SLUMBER;
+		break;
+	default:
+		return (EINVAL);
+	}
+	return (0);
+}
+
+static int
+ata_via_sata_scr_write(device_t dev, int port, int reg, u_int32_t value)
+{
+	struct ata_channel *ch;
+	device_t parent;
+	uint32_t val;
+
+	parent = device_get_parent(dev);
+	ch = device_get_softc(dev);
+	port = (port == 1) ? 1 : 0;
+	switch (reg) {
+	case ATA_SERROR:
+		pci_write_config(parent, 0xa8 + port * 4, value, 4);
+		break;
+	case ATA_SCONTROL:
+		val = 0;
+		if (value & ATA_SC_DET_RESET)
+			val |= 0x01;
+		if (value & ATA_SC_DET_DISABLE)
+			val |= 0x02;
+		if (value & ATA_SC_IPM_DIS_PARTIAL)
+			val |= 0x04;
+		if (value & ATA_SC_IPM_DIS_SLUMBER)
+			val |= 0x08;
+		pci_write_config(parent, 0xa4 + port, val, 1);
+		break;
+	default:
+		return (EINVAL);
+	}
+	return (0);
+}
+
+static int
+ata_via_sata_status(device_t dev)
+{
+
+	ata_sata_phy_check_events(dev, 0);
+	ata_sata_phy_check_events(dev, 1);
+	return (ata_pci_status(dev));
+}
+
 ATA_DECLARE_DRIVER(ata_via);
 MODULE_DEPEND(ata_via, ata_ahci, 1, 1, 1);

Modified: projects/sbruno_64cpus/sys/dev/drm/drmP.h
==============================================================================
--- projects/sbruno_64cpus/sys/dev/drm/drmP.h	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/drm/drmP.h	Thu Nov 18 17:50:23 2010	(r215458)
@@ -80,7 +80,9 @@ struct drm_file;
 #include <machine/pmap.h>
 #include <machine/bus.h>
 #include <machine/resource.h>
+#if defined(__i386__) || defined(__amd64__)
 #include <machine/specialreg.h>
+#endif
 #include <machine/sysarch.h>
 #include <sys/endian.h>
 #include <sys/mman.h>
@@ -246,20 +248,20 @@ typedef u_int8_t u8;
 	*(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) +		\
 	    (vm_offset_t)(offset))
 #define DRM_READ16(map, offset)						\
-	*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset))
+	le16toh(*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) +	\
+	    (vm_offset_t)(offset)))
 #define DRM_READ32(map, offset)						\
-	*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset))
+	le32toh(*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) +	\
+	    (vm_offset_t)(offset)))
 #define DRM_WRITE8(map, offset, val)					\
 	*(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) +		\
 	    (vm_offset_t)(offset)) = val
 #define DRM_WRITE16(map, offset, val)					\
 	*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset)) = val
+	    (vm_offset_t)(offset)) = htole16(val)
 #define DRM_WRITE32(map, offset, val)					\
 	*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset)) = val
+	    (vm_offset_t)(offset)) = htole32(val)
 
 #define DRM_VERIFYAREA_READ( uaddr, size )		\
 	(!useracc(__DECONST(caddr_t, uaddr), size, VM_PROT_READ))

Modified: projects/sbruno_64cpus/sys/dev/drm/drm_agpsupport.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/drm/drm_agpsupport.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/drm/drm_agpsupport.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -318,7 +318,7 @@ int drm_agp_bind(struct drm_device *dev,
 	if (!dev->agp || !dev->agp->acquired)
 		return EINVAL;
 
-	DRM_DEBUG("agp_bind, page_size=%x\n", PAGE_SIZE);
+	DRM_DEBUG("agp_bind, page_size=%x\n", (int)PAGE_SIZE);
 
 	entry = drm_agp_lookup_entry(dev, (void *)request->handle);
 	if (entry == NULL || entry->bound)

Modified: projects/sbruno_64cpus/sys/dev/drm/drm_drv.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/drm/drm_drv.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/drm/drm_drv.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -478,7 +478,7 @@ static int drm_load(struct drm_device *d
 			retcode = ENOMEM;
 			goto error;
 		}
-		if (dev->agp != NULL) {
+		if (dev->agp != NULL && dev->agp->info.ai_aperture_base != 0) {
 			if (drm_mtrr_add(dev->agp->info.ai_aperture_base,
 			    dev->agp->info.ai_aperture_size, DRM_MTRR_WC) == 0)
 				dev->agp->mtrr = 1;

Modified: projects/sbruno_64cpus/sys/dev/drm/drm_memory.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/drm/drm_memory.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/drm/drm_memory.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -73,7 +73,7 @@ void drm_mem_uninit(void)
 
 void *drm_ioremap_wc(struct drm_device *dev, drm_local_map_t *map)
 {
-	return pmap_mapdev_attr(map->offset, map->size, PAT_WRITE_COMBINING);
+	return pmap_mapdev_attr(map->offset, map->size, VM_MEMATTR_WRITE_COMBINING);
 }
 
 void *drm_ioremap(struct drm_device *dev, drm_local_map_t *map)

Modified: projects/sbruno_64cpus/sys/dev/drm/drm_sysctl.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/drm/drm_sysctl.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/drm/drm_sysctl.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -259,7 +259,7 @@ static int drm_bufs_info DRM_SYSCTL_HAND
 				       *(1 << dma->bufs[i].page_order),
 				       (dma->bufs[i].seg_count
 					* (1 << dma->bufs[i].page_order))
-				       * PAGE_SIZE / 1024);
+				       * (int)PAGE_SIZE / 1024);
 	}
 	DRM_SYSCTL_PRINT("\n");
 	for (i = 0; i < dma->buf_count; i++) {

Modified: projects/sbruno_64cpus/sys/dev/drm/radeon_cs.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/drm/radeon_cs.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/drm/radeon_cs.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -765,7 +765,7 @@ static int r600_cs_parse(struct drm_rade
 	memcpy(parser->ib, ib_chunk->kdata, ib_chunk->length_dw * sizeof(uint32_t));
 
 	/* read back last byte to flush WC buffers */
-	rb = readl(((vm_offset_t)parser->ib + (ib_chunk->length_dw-1) * sizeof(uint32_t)));
+	rb = *(volatile u_int32_t *) (((vm_offset_t)parser->ib + (ib_chunk->length_dw-1) * sizeof(uint32_t)));
 
 	return 0;
 }

Modified: projects/sbruno_64cpus/sys/dev/mii/brgphy.c
==============================================================================
--- projects/sbruno_64cpus/sys/dev/mii/brgphy.c	Thu Nov 18 17:49:24 2010	(r215457)
+++ projects/sbruno_64cpus/sys/dev/mii/brgphy.c	Thu Nov 18 17:50:23 2010	(r215458)
@@ -154,15 +154,19 @@ static int
 detect_hs21(struct bce_softc *bce_sc)
 {
 	char *sysenv;
+	int found;
 
-	if (bce_sc->bce_chipid != HS21_BCM_CHIPID)
-		return (0);
-	sysenv = getenv("smbios.system.product");
-	if (sysenv == NULL)
-		return (0);
-	if (strncmp(sysenv, HS21_PRODUCT_ID, strlen(HS21_PRODUCT_ID)) != 0)
-		return (0);
-	return (1);
+	found = 0;
+	if (bce_sc->bce_chipid == HS21_BCM_CHIPID) {
+		sysenv = getenv("smbios.system.product");
+		if (sysenv != NULL) {
+			if (strncmp(sysenv, HS21_PRODUCT_ID,
+			    strlen(HS21_PRODUCT_ID)) == 0)
+				found = 1;
+			freeenv(sysenv);
+		}
+	}

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011181750.oAIHoNdW039889>