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...
Sean Bruno
sbruno at FreeBSD.org
Thu Nov 18 17:50:24 UTC 2010
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 ." `--{__________) [0m"
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 ." `--{__________) [0m"
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 at l \n\
addi %r1,%r1,8192 \n\
\n\
- b startup \n\
+ /* Clear the .bss!!! */ \n\
+ li %r0,0 \n\
+ lis %r8,_edata at ha \n\
+ addi %r8,%r8,_edata at l\n\
+ lis %r9,_end at ha \n\
+ addi %r9,%r9,_end at 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 ***
More information about the svn-src-projects
mailing list