From owner-svn-src-projects@FreeBSD.ORG Thu Nov 18 17:50:24 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8B6A81065672; Thu, 18 Nov 2010 17:50:24 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 793E68FC1D; Thu, 18 Nov 2010 17:50:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAIHoOHr039926; Thu, 18 Nov 2010 17:50:24 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAIHoNdW039889; Thu, 18 Nov 2010 17:50:23 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201011181750.oAIHoNdW039889@svn.freebsd.org> From: Sean Bruno Date: Thu, 18 Nov 2010 17:50:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: 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... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Nov 2010 17:50:24 -0000 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 #include #include +#include /* * 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 #include #include +#include #include #include @@ -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 #include #include +#if defined(__i386__) || defined(__amd64__) #include +#endif #include #include #include @@ -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 ***