From owner-svn-src-user@FreeBSD.ORG Sun Oct 11 21:25:48 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6EEAD106566B; Sun, 11 Oct 2009 21:25:48 +0000 (UTC) (envelope-from eri@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5ADBF8FC08; Sun, 11 Oct 2009 21:25:48 +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 n9BLPmaE031036; Sun, 11 Oct 2009 21:25:48 GMT (envelope-from eri@svn.freebsd.org) Received: (from eri@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n9BLPl4Y030996; Sun, 11 Oct 2009 21:25:47 GMT (envelope-from eri@svn.freebsd.org) Message-Id: <200910112125.n9BLPl4Y030996@svn.freebsd.org> From: Ermal Luçi Date: Sun, 11 Oct 2009 21:25:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r197972 - in user/eri/pf45/head: . contrib/openpam contrib/openpam/doc/man crypto/openssh etc etc/rc.d lib/libc/include lib/libc/sys lib/libthr lib/libthr/thread libexec/rtld-elf share/... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Oct 2009 21:25:48 -0000 Author: eri Date: Sun Oct 11 21:25:47 2009 New Revision: 197972 URL: http://svn.freebsd.org/changeset/base/197972 Log: IFH Added: user/eri/pf45/head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c - copied unchanged from r197971, head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c user/eri/pf45/head/sys/dev/ath/ath_hal/ah_eeprom_v4k.h - copied unchanged from r197971, head/sys/dev/ath/ath_hal/ah_eeprom_v4k.h Modified: user/eri/pf45/head/ (props changed) user/eri/pf45/head/contrib/openpam/ (props changed) user/eri/pf45/head/contrib/openpam/doc/man/pam.conf.5 user/eri/pf45/head/crypto/openssh/sshd_config user/eri/pf45/head/etc/rc.d/bgfsck user/eri/pf45/head/etc/rc.d/cleartmp user/eri/pf45/head/etc/rc.d/faith user/eri/pf45/head/etc/rc.d/fsck user/eri/pf45/head/etc/rc.d/hostid user/eri/pf45/head/etc/rc.d/hostname user/eri/pf45/head/etc/rc.d/ldconfig user/eri/pf45/head/etc/rc.d/motd user/eri/pf45/head/etc/rc.d/mountcritlocal user/eri/pf45/head/etc/rc.d/moused user/eri/pf45/head/etc/rc.d/netif user/eri/pf45/head/etc/rc.d/newsyslog user/eri/pf45/head/etc/rc.d/nfsclient user/eri/pf45/head/etc/rc.d/pf user/eri/pf45/head/etc/rc.d/savecore user/eri/pf45/head/etc/rc.d/stf user/eri/pf45/head/etc/rc.subr user/eri/pf45/head/lib/libc/include/namespace.h user/eri/pf45/head/lib/libc/include/un-namespace.h user/eri/pf45/head/lib/libc/sys/Symbol.map user/eri/pf45/head/lib/libc/sys/intro.2 user/eri/pf45/head/lib/libc/sys/nanosleep.2 user/eri/pf45/head/lib/libthr/pthread.map user/eri/pf45/head/lib/libthr/thread/thr_private.h user/eri/pf45/head/lib/libthr/thread/thr_syscalls.c user/eri/pf45/head/libexec/rtld-elf/rtld.c user/eri/pf45/head/share/man/man4/lindev.4 user/eri/pf45/head/sys/amd64/include/atomic.h user/eri/pf45/head/sys/amd64/include/elf.h user/eri/pf45/head/sys/arm/include/elf.h user/eri/pf45/head/sys/cam/ata/ata_da.c user/eri/pf45/head/sys/conf/files user/eri/pf45/head/sys/conf/files.amd64 user/eri/pf45/head/sys/conf/files.i386 user/eri/pf45/head/sys/dev/agp/agp_i810.c user/eri/pf45/head/sys/dev/drm/drm_pciids.h user/eri/pf45/head/sys/dev/drm/i915_drv.h user/eri/pf45/head/sys/dev/fdc/fdc.c user/eri/pf45/head/sys/fs/tmpfs/tmpfs.h user/eri/pf45/head/sys/fs/tmpfs/tmpfs_subr.c user/eri/pf45/head/sys/fs/tmpfs/tmpfs_vnops.c user/eri/pf45/head/sys/geom/concat/g_concat.c user/eri/pf45/head/sys/geom/label/g_label.c user/eri/pf45/head/sys/geom/part/g_part.c user/eri/pf45/head/sys/geom/shsec/g_shsec.c user/eri/pf45/head/sys/geom/stripe/g_stripe.c user/eri/pf45/head/sys/geom/uzip/g_uzip.c user/eri/pf45/head/sys/i386/include/atomic.h user/eri/pf45/head/sys/i386/include/elf.h user/eri/pf45/head/sys/ia64/include/elf.h user/eri/pf45/head/sys/kern/imgact_elf.c user/eri/pf45/head/sys/kern/kern_event.c user/eri/pf45/head/sys/kern/kern_exit.c user/eri/pf45/head/sys/kern/kern_sig.c user/eri/pf45/head/sys/kern/kern_thr.c user/eri/pf45/head/sys/kern/subr_trap.c user/eri/pf45/head/sys/mips/include/elf.h user/eri/pf45/head/sys/net/if_bridge.c user/eri/pf45/head/sys/net/if_ethersubr.c user/eri/pf45/head/sys/net/pfil.c user/eri/pf45/head/sys/netgraph/ng_bridge.c user/eri/pf45/head/sys/netinet/ip_fastfwd.c user/eri/pf45/head/sys/netinet/ip_input.c user/eri/pf45/head/sys/netinet/ip_output.c user/eri/pf45/head/sys/netinet/ip_var.h user/eri/pf45/head/sys/netinet/ipfw/ip_fw2.c user/eri/pf45/head/sys/netinet/ipfw/ip_fw_pfil.c user/eri/pf45/head/sys/netinet/raw_ip.c user/eri/pf45/head/sys/netinet/sctp_bsd_addr.c user/eri/pf45/head/sys/netinet/sctp_os_bsd.h user/eri/pf45/head/sys/netinet/sctp_pcb.c user/eri/pf45/head/sys/netinet6/ip6_forward.c user/eri/pf45/head/sys/netinet6/ip6_input.c user/eri/pf45/head/sys/netinet6/ip6_output.c user/eri/pf45/head/sys/netinet6/ip6_var.h user/eri/pf45/head/sys/powerpc/aim/swtch.S user/eri/pf45/head/sys/powerpc/aim/trap_subr.S user/eri/pf45/head/sys/powerpc/include/elf.h user/eri/pf45/head/sys/sparc64/include/elf.h user/eri/pf45/head/sys/sun4v/include/elf.h user/eri/pf45/head/sys/sys/signalvar.h user/eri/pf45/head/tools/regression/sigqueue/sigqtest1/sigqtest1.c user/eri/pf45/head/tools/regression/sigqueue/sigqtest2/sigqtest2.c user/eri/pf45/head/usr.bin/systat/keyboard.c user/eri/pf45/head/usr.bin/systat/main.c user/eri/pf45/head/usr.sbin/mfiutil/mfiutil.8 (props changed) Modified: user/eri/pf45/head/contrib/openpam/doc/man/pam.conf.5 ============================================================================== --- user/eri/pf45/head/contrib/openpam/doc/man/pam.conf.5 Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/contrib/openpam/doc/man/pam.conf.5 Sun Oct 11 21:25:47 2009 (r197972) @@ -109,7 +109,7 @@ will be failure regardless of the succes .It Cm requisite If this module succeeds, the result of the chain will be success unless a later module fails. -If it module fails, the chain is broken and the result is failure. +If the module fails, the chain is broken and the result is failure. .It Cm sufficient If this module succeeds, the chain is broken and the result is success. Modified: user/eri/pf45/head/crypto/openssh/sshd_config ============================================================================== --- user/eri/pf45/head/crypto/openssh/sshd_config Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/crypto/openssh/sshd_config Sun Oct 11 21:25:47 2009 (r197972) @@ -17,7 +17,6 @@ #VersionAddendum FreeBSD-20091001 #Port 22 -#Protocol 2 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: Modified: user/eri/pf45/head/etc/rc.d/bgfsck ============================================================================== --- user/eri/pf45/head/etc/rc.d/bgfsck Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/bgfsck Sun Oct 11 21:25:47 2009 (r197972) @@ -31,7 +31,7 @@ bgfsck_start () bgfsck_msg="${bgfsck_msg} in ${background_fsck_delay} seconds" fi if [ -z "${rc_force}" ]; then - [ -z "${rc_quiet}" ] && echo "${bgfsck_msg}." + check_startmsgs && echo "${bgfsck_msg}." fi (sleep ${background_fsck_delay}; nice -4 fsck -B -p) 2>&1 | \ Modified: user/eri/pf45/head/etc/rc.d/cleartmp ============================================================================== --- user/eri/pf45/head/etc/rc.d/cleartmp Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/cleartmp Sun Oct 11 21:25:47 2009 (r197972) @@ -25,7 +25,7 @@ cleartmp_start() ${tmp}/.ICE-unix ${tmp}/.font-unix" if checkyesno ${rcvar1}; then - [ -z "${rc_quiet}" ] && echo "Clearing ${tmp}." + check_startmsgs && echo "Clearing ${tmp}." # This is not needed for mfs, but doesn't hurt anything. # Things to note: @@ -44,7 +44,7 @@ cleartmp_start() elif checkyesno clear_tmp_X; then # Remove X lock files, since they will prevent you from # restarting X. Remove other X related directories. - [ -z "${rc_quiet}" ] && echo "Clearing ${tmp} (X related)." + check_startmsgs && echo "Clearing ${tmp} (X related)." rm -rf ${tmp}/.X[0-9]-lock ${x11_socket_dirs} fi if checkyesno clear_tmp_X; then Modified: user/eri/pf45/head/etc/rc.d/faith ============================================================================== --- user/eri/pf45/head/etc/rc.d/faith Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/faith Sun Oct 11 21:25:47 2009 (r197972) @@ -39,9 +39,7 @@ faith_up() route change -inet6 ${prefix} -prefixlen ${prefixlen} \ -ifp faith0 done - if [ -z "${rc_quiet}" ]; then - ifconfig faith0 - fi + check_startmsgs && ifconfig faith0 ;; esac } Modified: user/eri/pf45/head/etc/rc.d/fsck ============================================================================== --- user/eri/pf45/head/etc/rc.d/fsck Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/fsck Sun Oct 11 21:25:47 2009 (r197972) @@ -23,7 +23,7 @@ fsck_start() # During fsck ignore SIGQUIT trap : 3 - [ -z "${rc_quiet}" ] && echo "Starting file system checks:" + check_startmsgs && echo "Starting file system checks:" if checkyesno background_fsck; then fsck -F -p else Modified: user/eri/pf45/head/etc/rc.d/hostid ============================================================================== --- user/eri/pf45/head/etc/rc.d/hostid Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/hostid Sun Oct 11 21:25:47 2009 (r197972) @@ -49,9 +49,9 @@ hostid_set() # Set both kern.hostuuid and kern.hostid. # - [ -z "${rc_quiet}" ] && echo "Setting hostuuid: ${uuid}." + check_startmsgs && echo "Setting hostuuid: ${uuid}." ${SYSCTL_W} kern.hostuuid="${uuid}" >/dev/null - [ -z "${rc_quiet}" ] && echo "Setting hostid: ${id}." + check_startmsgs && echo "Setting hostid: ${id}." ${SYSCTL_W} kern.hostid=${id} >/dev/null } Modified: user/eri/pf45/head/etc/rc.d/hostname ============================================================================== --- user/eri/pf45/head/etc/rc.d/hostname Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/hostname Sun Oct 11 21:25:47 2009 (r197972) @@ -72,8 +72,9 @@ hostname_start() # All right, it is safe to invoke hostname(1) now. # - [ -z "${rc_quiet}" ] && echo "Setting hostname: ${hostname}." + check_startmsgs && echo -n "Setting hostname: ${hostname}" /bin/hostname "${hostname}" + check_startmsgs && echo '.' } load_rc_config $name Modified: user/eri/pf45/head/etc/rc.d/ldconfig ============================================================================== --- user/eri/pf45/head/etc/rc.d/ldconfig Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/ldconfig Sun Oct 11 21:25:47 2009 (r197972) @@ -36,7 +36,7 @@ ldconfig_start() _LDC="${_LDC} ${i}" fi done - [ -z "${rc_quiet}" ] && echo 'ELF ldconfig path:' ${_LDC} + check_startmsgs && echo 'ELF ldconfig path:' ${_LDC} ${ldconfig} -elf ${_ins} ${_LDC} case `sysctl -n hw.machine_arch` in @@ -55,7 +55,7 @@ ldconfig_start() _LDC="${_LDC} ${i}" fi done - [ -z "${rc_quiet}" ] && + check_startmsgs && echo '32-bit compatibility ldconfig path:' ${_LDC} ${ldconfig} -32 -m ${_ins} ${_LDC} ;; @@ -72,8 +72,7 @@ ldconfig_start() _LDC="${_LDC} ${i}" fi done - [ -z "${rc_quiet}" ] && - echo 'a.out ldconfig path:' ${_LDC} + check_startmsgs && echo 'a.out ldconfig path:' ${_LDC} ${ldconfig} -aout ${_ins} ${_LDC} ;; esac Modified: user/eri/pf45/head/etc/rc.d/motd ============================================================================== --- user/eri/pf45/head/etc/rc.d/motd Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/motd Sun Oct 11 21:25:47 2009 (r197972) @@ -22,7 +22,7 @@ motd_start() # Must be done *before* interactive logins are possible # to prevent possible race conditions. # - [ -z "${rc_quiet}" ] && echo -n 'Updating motd:' + check_startmsgs && echo -n 'Updating motd:' if [ ! -f /etc/motd ]; then install -c -o root -g wheel -m ${PERMS} /dev/null /etc/motd fi @@ -42,7 +42,7 @@ motd_start() } rm -f $T - [ -z "${rc_quiet}" ] && echo . + check_startmsgs && echo '.' } load_rc_config $name Modified: user/eri/pf45/head/etc/rc.d/mountcritlocal ============================================================================== --- user/eri/pf45/head/etc/rc.d/mountcritlocal Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/mountcritlocal Sun Oct 11 21:25:47 2009 (r197972) @@ -28,7 +28,7 @@ mountcritlocal_start() esac # Mount everything except nfs filesystems. - [ -z "${rc_quiet}" ] && echo -n 'Mounting local file systems:' + check_startmsgs && echo -n 'Mounting local file systems:' mount_excludes='no' for i in ${netfs_types}; do fstype=${i%:*} @@ -37,7 +37,7 @@ mountcritlocal_start() mount_excludes=${mount_excludes%,} mount -a -t ${mount_excludes} err=$? - [ -z "${rc_quiet}" ] && echo '.' + check_startmsgs && echo '.' case ${err} in 0) Modified: user/eri/pf45/head/etc/rc.d/moused ============================================================================== --- user/eri/pf45/head/etc/rc.d/moused Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/moused Sun Oct 11 21:25:47 2009 (r197972) @@ -51,8 +51,9 @@ moused_start() mytype="$moused_type" fi - [ -z "${rc_quiet}" ] && echo -n "Starting ${ms} moused." + check_startmsgs && echo -n "Starting ${ms} moused" /usr/sbin/moused ${myflags} -p ${myport} -t ${mytype} ${pidarg} + check_startmsgs && echo '.' mousechar_arg= case ${mousechar_start} in Modified: user/eri/pf45/head/etc/rc.d/netif ============================================================================== --- user/eri/pf45/head/etc/rc.d/netif Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/netif Sun Oct 11 21:25:47 2009 (r197972) @@ -143,7 +143,7 @@ network_common() ;; esac echo "${_str} Network:${_ok}." - if [ -z "${rc_quiet}" ]; then + if check_startmsgs; then for ifn in ${_ok}; do /sbin/ifconfig ${ifn} done Modified: user/eri/pf45/head/etc/rc.d/newsyslog ============================================================================== --- user/eri/pf45/head/etc/rc.d/newsyslog Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/newsyslog Sun Oct 11 21:25:47 2009 (r197972) @@ -17,9 +17,9 @@ stop_cmd=":" newsyslog_start() { - [ -z "${rc_quiet}" ] && echo -n "Creating and/or trimming log files:" + check_startmsgs && echo -n 'Creating and/or trimming log files' ${command} ${rc_flags} - [ -z "${rc_quiet}" ] && echo "." + check_startmsgs && echo '.' } load_rc_config $name Modified: user/eri/pf45/head/etc/rc.d/nfsclient ============================================================================== --- user/eri/pf45/head/etc/rc.d/nfsclient Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/nfsclient Sun Oct 11 21:25:47 2009 (r197972) @@ -22,7 +22,8 @@ nfsclient_start() # if [ -n "${nfs_access_cache}" ]; then - [ -z "${rc_quiet}" ] && echo "NFS access cache time=${nfs_access_cache}" + check_startmsgs && + echo "NFS access cache time=${nfs_access_cache}" if ! sysctl vfs.nfs.access_cache_timeout=${nfs_access_cache} >/dev/null; then warn "failed to set access cache timeout" fi Modified: user/eri/pf45/head/etc/rc.d/pf ============================================================================== --- user/eri/pf45/head/etc/rc.d/pf Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/pf Sun Oct 11 21:25:47 2009 (r197972) @@ -25,19 +25,21 @@ required_modules="pf" pf_start() { - [ -z "${rc_quiet}" ] && echo "Enabling pf." + check_startmsgs && echo -n 'Enabling pf' $pf_program -F all > /dev/null 2>&1 $pf_program -f "$pf_rules" $pf_flags if ! $pf_program -s info | grep -q "Enabled" ; then $pf_program -e fi + check_startmsgs && echo '.' } pf_stop() { if $pf_program -s info | grep -q "Enabled" ; then - [ -z "${rc_quiet}" ] && echo "Disabling pf." + echo -n 'Disabling pf' $pf_program -d + echo '.' fi } Modified: user/eri/pf45/head/etc/rc.d/savecore ============================================================================== --- user/eri/pf45/head/etc/rc.d/savecore Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/savecore Sun Oct 11 21:25:47 2009 (r197972) @@ -69,7 +69,7 @@ savecore_start() ${crashinfo_program} -d ${dumpdir} fi else - [ -z "${rc_quiet}" ] && echo "No core dumps found" + check_startmsgs && echo 'No core dumps found.' fi } Modified: user/eri/pf45/head/etc/rc.d/stf ============================================================================== --- user/eri/pf45/head/etc/rc.d/stf Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.d/stf Sun Oct 11 21:25:47 2009 (r197972) @@ -53,9 +53,8 @@ stf_up() ifconfig stf0 create >/dev/null 2>&1 ifconfig stf0 inet6 2002:${ipv4_in_hexformat}:${stf_interface_ipv6_slaid:-0}:${stf_interface_ipv6_ifid} \ prefixlen ${stf_prefixlen} - if [ -z "${rc_quiet}" ]; then - /sbin/ifconfig stf0 - fi + check_startmsgs && /sbin/ifconfig stf0 + # disallow packets to malicious 6to4 prefix route add -inet6 2002:e000:: -prefixlen 20 ::1 -reject route add -inet6 2002:7f00:: -prefixlen 24 ::1 -reject Modified: user/eri/pf45/head/etc/rc.subr ============================================================================== --- user/eri/pf45/head/etc/rc.subr Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/etc/rc.subr Sun Oct 11 21:25:47 2009 (r197972) @@ -398,6 +398,20 @@ wait_for_pids() } # +# check_startmsgs +# If rc_quiet is set (usually as a result of using faststart at +# boot time) check if rc_startmsgs is enabled. +# +check_startmsgs() +{ + if [ -n "$rc_quiet" ]; then + checkyesno rc_startmsgs + else + return 0 + fi +} + +# # run_rc_command argument # Search for argument in the list of supported commands, which is: # "start stop restart rcvar status poll ${extra_commands}" @@ -708,13 +722,7 @@ run_rc_command() # setup the full command to run # - _show_startmsgs=1 - if [ -n "${rc_quiet}" ]; then - if ! checkyesno rc_startmsgs; then - unset _show_startmsgs - fi - fi - [ -n "$_show_startmsgs" ] && echo "Starting ${name}." + check_startmsgs && echo "Starting ${name}." if [ -n "$_chroot" ]; then _doit="\ ${_nice:+nice -n $_nice }\ Modified: user/eri/pf45/head/lib/libc/include/namespace.h ============================================================================== --- user/eri/pf45/head/lib/libc/include/namespace.h Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libc/include/namespace.h Sun Oct 11 21:25:47 2009 (r197972) @@ -80,6 +80,7 @@ #define listen _listen #define nanosleep _nanosleep #define open _open +#define openat _openat #define poll _poll #define pthread_atfork _pthread_atfork #define pthread_attr_destroy _pthread_attr_destroy Modified: user/eri/pf45/head/lib/libc/include/un-namespace.h ============================================================================== --- user/eri/pf45/head/lib/libc/include/un-namespace.h Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libc/include/un-namespace.h Sun Oct 11 21:25:47 2009 (r197972) @@ -61,6 +61,7 @@ #undef listen #undef nanosleep #undef open +#undef openat #undef poll #undef pthread_atfork #undef pthread_attr_destroy Modified: user/eri/pf45/head/lib/libc/sys/Symbol.map ============================================================================== --- user/eri/pf45/head/lib/libc/sys/Symbol.map Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libc/sys/Symbol.map Sun Oct 11 21:25:47 2009 (r197972) @@ -769,6 +769,8 @@ FBSDprivate_1.0 { __sys_olio_listio; _open; __sys_open; + _openat; + __sys_openat; _pathconf; __sys_pathconf; _pipe; Modified: user/eri/pf45/head/lib/libc/sys/intro.2 ============================================================================== --- user/eri/pf45/head/lib/libc/sys/intro.2 Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libc/sys/intro.2 Sun Oct 11 21:25:47 2009 (r197972) @@ -456,6 +456,14 @@ The specified extended attribute does no .It Er 88 EDOOFUS Em "Programming error" . A function or API is being abused in a way which could only be detected at run-time. +.It Er 89 EBADMSG Em "Bad message" . +A corrupted message was detected. +.It Er 90 EMULTIHOP Em "Multihop attempted" . +This error code is unused, but present for compatibility with other systems. +.It Er 91 ENOLINK Em "Link has been severed" . +This error code is unused, but present for compatibility with other systems. +.It Er 92 EPROTO Em "Protocol error" . +A device or socket encountered an unrecoverable protocol error. .It Er 93 ENOTCAPABLE Em "Capabilities insufficient" . An operation on a capability file descriptor requires greater privilege than the capability allows. Modified: user/eri/pf45/head/lib/libc/sys/nanosleep.2 ============================================================================== --- user/eri/pf45/head/lib/libc/sys/nanosleep.2 Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libc/sys/nanosleep.2 Sun Oct 11 21:25:47 2009 (r197972) @@ -47,7 +47,9 @@ The .Fn nanosleep system call -causes the process to sleep for the specified time. +causes the calling thread to sleep until the time interval specified by +.Fa rqtp +has elapsed. An unmasked signal will cause it to terminate the sleep early, regardless of the .Dv SA_RESTART Modified: user/eri/pf45/head/lib/libthr/pthread.map ============================================================================== --- user/eri/pf45/head/lib/libthr/pthread.map Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libthr/pthread.map Sun Oct 11 21:25:47 2009 (r197972) @@ -195,6 +195,7 @@ FBSDprivate_1.0 { __msync; __nanosleep; __open; + __openat; __poll; __pthread_cond_timedwait; __pthread_cond_wait; @@ -406,3 +407,7 @@ FBSD_1.1 { pthread_mutex_setspinloops_np; pthread_mutex_setyieldloops_np; }; + +FBSD_1.2 { + openat; +}; Modified: user/eri/pf45/head/lib/libthr/thread/thr_private.h ============================================================================== --- user/eri/pf45/head/lib/libthr/thread/thr_private.h Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libthr/thread/thr_private.h Sun Oct 11 21:25:47 2009 (r197972) @@ -668,6 +668,7 @@ void _pthread_cleanup_pop(int); #ifdef _SYS_FCNTL_H_ int __sys_fcntl(int, int, ...); int __sys_open(const char *, int, ...); +int __sys_openat(int, const char *, int, ...); #endif /* #include */ Modified: user/eri/pf45/head/lib/libthr/thread/thr_syscalls.c ============================================================================== --- user/eri/pf45/head/lib/libthr/thread/thr_syscalls.c Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/lib/libthr/thread/thr_syscalls.c Sun Oct 11 21:25:47 2009 (r197972) @@ -139,6 +139,7 @@ int __fsync(int); int __msync(void *, size_t, int); int __nanosleep(const struct timespec *, struct timespec *); int __open(const char *, int,...); +int __openat(int, const char *, int,...); int __poll(struct pollfd *, unsigned int, int); ssize_t __read(int, void *buf, size_t); ssize_t __readv(int, const struct iovec *, int); @@ -341,6 +342,33 @@ __open(const char *path, int flags,...) return ret; } +__weak_reference(__openat, openat); + +int +__openat(int fd, const char *path, int flags, ...) +{ + struct pthread *curthread = _get_curthread(); + int ret; + int mode = 0; + va_list ap; + + _thr_cancel_enter(curthread); + + /* Check if the file is being created: */ + if (flags & O_CREAT) { + /* Get the creation mode: */ + va_start(ap, flags); + mode = va_arg(ap, int); + va_end(ap); + } + + ret = __sys_openat(fd, path, flags, mode); + + _thr_cancel_leave(curthread); + + return ret; +} + __weak_reference(__poll, poll); int Modified: user/eri/pf45/head/libexec/rtld-elf/rtld.c ============================================================================== --- user/eri/pf45/head/libexec/rtld-elf/rtld.c Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/libexec/rtld-elf/rtld.c Sun Oct 11 21:25:47 2009 (r197972) @@ -474,6 +474,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_ /* Initialize a fake symbol for resolving undefined weak references. */ sym_zero.st_info = ELF_ST_INFO(STB_GLOBAL, STT_NOTYPE); sym_zero.st_shndx = SHN_UNDEF; + sym_zero.st_value = -(uintptr_t)obj_main->relocbase; if (!libmap_disable) libmap_disable = (bool)lm_init(libmap_override); @@ -991,26 +992,26 @@ digest_phdr(const Elf_Phdr *phdr, int ph obj = obj_new(); for (ph = phdr; ph < phlimit; ph++) { - switch (ph->p_type) { + if (ph->p_type != PT_PHDR) + continue; - case PT_PHDR: - if ((const Elf_Phdr *)ph->p_vaddr != phdr) { - _rtld_error("%s: invalid PT_PHDR", path); - return NULL; - } - obj->phdr = (const Elf_Phdr *) ph->p_vaddr; - obj->phsize = ph->p_memsz; - break; + obj->phdr = phdr; + obj->phsize = ph->p_memsz; + obj->relocbase = (caddr_t)phdr - ph->p_vaddr; + break; + } + + for (ph = phdr; ph < phlimit; ph++) { + switch (ph->p_type) { case PT_INTERP: - obj->interp = (const char *) ph->p_vaddr; + obj->interp = (const char *)(ph->p_vaddr + obj->relocbase); break; case PT_LOAD: if (nsegs == 0) { /* First load segment */ obj->vaddrbase = trunc_page(ph->p_vaddr); - obj->mapbase = (caddr_t) obj->vaddrbase; - obj->relocbase = obj->mapbase - obj->vaddrbase; + obj->mapbase = obj->vaddrbase + obj->relocbase; obj->textsize = round_page(ph->p_vaddr + ph->p_memsz) - obj->vaddrbase; } else { /* Last load segment */ @@ -1021,7 +1022,7 @@ digest_phdr(const Elf_Phdr *phdr, int ph break; case PT_DYNAMIC: - obj->dynamic = (const Elf_Dyn *) ph->p_vaddr; + obj->dynamic = (const Elf_Dyn *)(ph->p_vaddr + obj->relocbase); break; case PT_TLS: @@ -1029,7 +1030,7 @@ digest_phdr(const Elf_Phdr *phdr, int ph obj->tlssize = ph->p_memsz; obj->tlsalign = ph->p_align; obj->tlsinitsize = ph->p_filesz; - obj->tlsinit = (void*) ph->p_vaddr; + obj->tlsinit = (void*)(ph->p_vaddr + obj->relocbase); break; } } Modified: user/eri/pf45/head/share/man/man4/lindev.4 ============================================================================== --- user/eri/pf45/head/share/man/man4/lindev.4 Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/share/man/man4/lindev.4 Sun Oct 11 21:25:47 2009 (r197972) @@ -30,7 +30,7 @@ .Os .Sh NAME .Nm lindev -.Nd the lindev module +.Nd Linux-specific pseudo devices support .Sh SYNOPSIS To compile this collection of linux-specific pseudo devices into the kernel, place the following line in your kernel configuration file: Modified: user/eri/pf45/head/sys/amd64/include/atomic.h ============================================================================== --- user/eri/pf45/head/sys/amd64/include/atomic.h Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/amd64/include/atomic.h Sun Oct 11 21:25:47 2009 (r197972) @@ -78,8 +78,6 @@ void atomic_##NAME##_barr_##TYPE(volatil int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src); int atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src); -int atomic_cmpset_barr_int(volatile u_int *dst, u_int exp, u_int src); -int atomic_cmpset_barr_long(volatile u_long *dst, u_long exp, u_long src); u_int atomic_fetchadd_int(volatile u_int *p, u_int v); u_long atomic_fetchadd_long(volatile u_long *p, u_long v); @@ -131,33 +129,47 @@ struct __hack * Returns 0 on failure, non-zero on success */ -#define DEFINE_CMPSET_GEN(NAME, TYPE, OP) \ -static __inline int \ -atomic_cmpset_##NAME(volatile u_##TYPE *dst, u_##TYPE exp, u_##TYPE src)\ -{ \ - u_char res; \ - \ - __asm __volatile( \ - " " MPLOCKED " " \ - " " OP " %2,%1 ; " \ - " sete %0 ; " \ - "1: " \ - "# atomic_cmpset_##NAME" \ - : "=a" (res), /* 0 */ \ - "=m" (*dst) /* 1 */ \ - : "r" (src), /* 2 */ \ - "a" (exp), /* 3 */ \ - "m" (*dst) /* 4 */ \ - : "memory"); \ - \ - return (res); \ -} \ -struct __hack +static __inline int +atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src) +{ + u_char res; + + __asm __volatile( + " " MPLOCKED " " + " cmpxchgl %2,%1 ; " + " sete %0 ; " + "1: " + "# atomic_cmpset_int" + : "=a" (res), /* 0 */ + "=m" (*dst) /* 1 */ + : "r" (src), /* 2 */ + "a" (exp), /* 3 */ + "m" (*dst) /* 4 */ + : "memory"); + + return (res); +} + +static __inline int +atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src) +{ + u_char res; -DEFINE_CMPSET_GEN(int, int, "cmpxchgl"); -DEFINE_CMPSET_GEN(long, long, "cmpxchgq"); -DEFINE_CMPSET_GEN(barr_int, int, "cmpxchgl"); -DEFINE_CMPSET_GEN(barr_long, long, "cmpxchgq"); + __asm __volatile( + " " MPLOCKED " " + " cmpxchgq %2,%1 ; " + " sete %0 ; " + "1: " + "# atomic_cmpset_long" + : "=a" (res), /* 0 */ + "=m" (*dst) /* 1 */ + : "r" (src), /* 2 */ + "a" (exp), /* 3 */ + "m" (*dst) /* 4 */ + : "memory"); + + return (res); +} /* * Atomically add the value of v to the integer pointed to by p and return @@ -358,8 +370,8 @@ u_long atomic_readandclear_long(volatile #define atomic_add_rel_int atomic_add_barr_int #define atomic_subtract_acq_int atomic_subtract_barr_int #define atomic_subtract_rel_int atomic_subtract_barr_int -#define atomic_cmpset_acq_int atomic_cmpset_barr_int -#define atomic_cmpset_rel_int atomic_cmpset_barr_int +#define atomic_cmpset_acq_int atomic_cmpset_int +#define atomic_cmpset_rel_int atomic_cmpset_int #define atomic_set_acq_long atomic_set_barr_long #define atomic_set_rel_long atomic_set_barr_long @@ -369,8 +381,8 @@ u_long atomic_readandclear_long(volatile #define atomic_add_rel_long atomic_add_barr_long #define atomic_subtract_acq_long atomic_subtract_barr_long #define atomic_subtract_rel_long atomic_subtract_barr_long -#define atomic_cmpset_acq_long atomic_cmpset_barr_long -#define atomic_cmpset_rel_long atomic_cmpset_barr_long +#define atomic_cmpset_acq_long atomic_cmpset_long +#define atomic_cmpset_rel_long atomic_cmpset_long /* Operations on 8-bit bytes. */ #define atomic_set_8 atomic_set_char Modified: user/eri/pf45/head/sys/amd64/include/elf.h ============================================================================== --- user/eri/pf45/head/sys/amd64/include/elf.h Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/amd64/include/elf.h Sun Oct 11 21:25:47 2009 (r197972) @@ -106,4 +106,10 @@ __ElfType(Auxinfo); #define ELF_TARG_MACH EM_X86_64 #define ELF_TARG_VER 1 +#if __ELF_WORD_SIZE == 32 +#define ET_DYN_LOAD_ADDR 0x01001000 +#else +#define ET_DYN_LOAD_ADDR 0x01021000 +#endif + #endif /* !_MACHINE_ELF_H_ */ Modified: user/eri/pf45/head/sys/arm/include/elf.h ============================================================================== --- user/eri/pf45/head/sys/arm/include/elf.h Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/arm/include/elf.h Sun Oct 11 21:25:47 2009 (r197972) @@ -97,4 +97,7 @@ __ElfType(Auxinfo); * value. */ #define MAGIC_TRAMP_NUMBER 0x5c000003 + +#define ET_DYN_LOAD_ADDR 0x12000 + #endif /* !_MACHINE_ELF_H_ */ Modified: user/eri/pf45/head/sys/cam/ata/ata_da.c ============================================================================== --- user/eri/pf45/head/sys/cam/ata/ata_da.c Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/cam/ata/ata_da.c Sun Oct 11 21:25:47 2009 (r197972) @@ -721,6 +721,8 @@ adaregister(struct cam_periph *periph, v softc->disk->d_flags = 0; if (softc->flags & ADA_FLAG_CAN_FLUSHCACHE) softc->disk->d_flags |= DISKFLAG_CANFLUSHCACHE; + strlcpy(softc->disk->d_ident, cgd->serial_num, + MIN(sizeof(softc->disk->d_ident), cgd->serial_num_len + 1)); adasetgeom(periph, cgd); softc->disk->d_sectorsize = softc->params.secsize; Modified: user/eri/pf45/head/sys/conf/files ============================================================================== --- user/eri/pf45/head/sys/conf/files Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/conf/files Sun Oct 11 21:25:47 2009 (r197972) @@ -1921,7 +1921,6 @@ gnu/fs/reiserfs/reiserfs_vnops.c optiona isa/isa_if.m standard isa/isa_common.c optional isa isa/isahint.c optional isa -isa/orm.c optional isa isa/pnp.c optional isa isapnp isa/pnpparse.c optional isa isapnp fs/cd9660/cd9660_bmap.c optional cd9660 Modified: user/eri/pf45/head/sys/conf/files.amd64 ============================================================================== --- user/eri/pf45/head/sys/conf/files.amd64 Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/conf/files.amd64 Sun Oct 11 21:25:47 2009 (r197972) @@ -228,6 +228,7 @@ dev/syscons/scvtb.c optional sc dev/uart/uart_cpu_amd64.c optional uart dev/wpi/if_wpi.c optional wpi isa/atrtc.c standard +isa/orm.c optional isa isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/link_elf_obj.c standard Modified: user/eri/pf45/head/sys/conf/files.i386 ============================================================================== --- user/eri/pf45/head/sys/conf/files.i386 Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/conf/files.i386 Sun Oct 11 21:25:47 2009 (r197972) @@ -362,6 +362,7 @@ i386/svr4/svr4_locore.s optional compat i386/svr4/svr4_machdep.c optional compat_svr4 # isa/atrtc.c optional atpic +isa/orm.c optional isa isa/syscons_isa.c optional sc isa/vga_isa.c optional vga kern/imgact_aout.c optional compat_aout Modified: user/eri/pf45/head/sys/dev/agp/agp_i810.c ============================================================================== --- user/eri/pf45/head/sys/dev/agp/agp_i810.c Sun Oct 11 20:52:18 2009 (r197971) +++ user/eri/pf45/head/sys/dev/agp/agp_i810.c Sun Oct 11 21:25:47 2009 (r197972) @@ -175,6 +175,8 @@ static const struct agp_i810_match { "Intel Q45 SVGA controller"}, {0x2E228086, CHIP_G4X, 0x00020000, "Intel G45 SVGA controller"}, + {0x2E328086, CHIP_G4X, 0x00020000, + "Intel G41 SVGA controller"}, {0, 0, 0, NULL} }; Copied: user/eri/pf45/head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c (from r197971, head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/eri/pf45/head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c Sun Oct 11 21:25:47 2009 (r197972, copy of r197971, head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c) @@ -0,0 +1,404 @@ +/* + * Copyright (c) 2009 Rui Paulo + * Copyright (c) 2008 Sam Leffler, Errno Consulting + * Copyright (c) 2008 Atheros Communications, Inc. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * $FreeBSD$ + */ +#include "opt_ah.h" + +#include "ah.h" +#include "ah_internal.h" +#include "ah_eeprom_v14.h" +#include "ah_eeprom_v4k.h" + +static HAL_STATUS +v4kEepromGet(struct ath_hal *ah, int param, void *val) +{ +#define CHAN_A_IDX 0 +#define CHAN_B_IDX 1 +#define IS_VERS(op, v) ((pBase->version & AR5416_EEP_VER_MINOR_MASK) op (v)) + HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; + const MODAL_EEP4K_HEADER *pModal = &ee->ee_base.modalHeader; + const BASE_EEP4K_HEADER *pBase = &ee->ee_base.baseEepHeader; + uint32_t sum; + uint8_t *macaddr; + int i; + + switch (param) { + case AR_EEP_NFTHRESH_5: + *(int16_t *)val = pModal[0].noiseFloorThreshCh[0]; + return HAL_OK; + case AR_EEP_NFTHRESH_2: + *(int16_t *)val = pModal[1].noiseFloorThreshCh[0]; + return HAL_OK; + case AR_EEP_MACADDR: /* Get MAC Address */ + sum = 0; + macaddr = val; + for (i = 0; i < 6; i++) { + macaddr[i] = pBase->macAddr[i]; + sum += pBase->macAddr[i]; + } + if (sum == 0 || sum == 0xffff*3) { + HALDEBUG(ah, HAL_DEBUG_ANY, "%s: bad mac address %s\n", + __func__, ath_hal_ether_sprintf(macaddr)); + return HAL_EEBADMAC; + } + return HAL_OK; + case AR_EEP_REGDMN_0: + return pBase->regDmn[0]; + case AR_EEP_REGDMN_1: + return pBase->regDmn[1]; + case AR_EEP_OPCAP: + return pBase->deviceCap; + case AR_EEP_OPMODE: + return pBase->opCapFlags; + case AR_EEP_RFSILENT: + return pBase->rfSilent; + case AR_EEP_OB_5: + return pModal[CHAN_A_IDX].ob; + case AR_EEP_DB_5: + return pModal[CHAN_A_IDX].db; + case AR_EEP_OB_2: + return pModal[CHAN_B_IDX].ob; + case AR_EEP_DB_2: + return pModal[CHAN_B_IDX].db; + case AR_EEP_TXMASK: + return pBase->txMask; + case AR_EEP_RXMASK: + return pBase->rxMask; + case AR_EEP_RXGAIN_TYPE: + return AR5416_EEP_RXGAIN_ORIG; + case AR_EEP_TXGAIN_TYPE: + return IS_VERS(>=, AR5416_EEP_MINOR_VER_19) ? + pBase->txGainType : AR5416_EEP_TXGAIN_ORIG; +#if 0 + case AR_EEP_OL_PWRCTRL: + HALASSERT(val == AH_NULL); + return pBase->openLoopPwrCntl ? HAL_OK : HAL_EIO; +#endif + case AR_EEP_AMODE: + HALASSERT(val == AH_NULL); + return pBase->opCapFlags & AR5416_OPFLAGS_11A ? + HAL_OK : HAL_EIO; + case AR_EEP_BMODE: + case AR_EEP_GMODE: + HALASSERT(val == AH_NULL); + return pBase->opCapFlags & AR5416_OPFLAGS_11G ? + HAL_OK : HAL_EIO; + case AR_EEP_32KHZCRYSTAL: + case AR_EEP_COMPRESS: + case AR_EEP_FASTFRAME: /* XXX policy decision, h/w can do it */ + case AR_EEP_WRITEPROTECT: /* NB: no write protect bit */ + HALASSERT(val == AH_NULL); + /* fall thru... */ + case AR_EEP_MAXQCU: /* NB: not in opCapFlags */ + case AR_EEP_KCENTRIES: /* NB: not in opCapFlags */ + return HAL_EIO; + case AR_EEP_AES: + case AR_EEP_BURST: + case AR_EEP_RFKILL: + case AR_EEP_TURBO5DISABLE: + case AR_EEP_TURBO2DISABLE: + HALASSERT(val == AH_NULL); + return HAL_OK; + case AR_EEP_ANTGAINMAX_2: + *(int8_t *) val = ee->ee_antennaGainMax[1]; + return HAL_OK; + case AR_EEP_ANTGAINMAX_5: + *(int8_t *) val = ee->ee_antennaGainMax[0]; + return HAL_OK; + default: + HALASSERT(0); + return HAL_EINVAL; + } +#undef IS_VERS +#undef CHAN_A_IDX +#undef CHAN_B_IDX +} + +static HAL_BOOL +v4kEepromSet(struct ath_hal *ah, int param, int v) +{ + HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; + + switch (param) { + case AR_EEP_ANTGAINMAX_2: + ee->ee_antennaGainMax[1] = (int8_t) v; + return HAL_OK; + case AR_EEP_ANTGAINMAX_5: + ee->ee_antennaGainMax[0] = (int8_t) v; + return HAL_OK; + } + return HAL_EINVAL; +} + +static HAL_BOOL +v4kEepromDiag(struct ath_hal *ah, int request, + const void *args, uint32_t argsize, void **result, uint32_t *resultsize) +{ + HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; + + switch (request) { + case HAL_DIAG_EEPROM: + *result = &ee->ee_base; + *resultsize = sizeof(ee->ee_base); + return AH_TRUE; + } + return AH_FALSE; +} + +/* Do structure specific swaps if Eeprom format is non native to host */ +static void +eepromSwap(struct ar5416eeprom_4k *ee) +{ + uint32_t integer, i; + uint16_t word; + MODAL_EEP4K_HEADER *pModal; + + /* convert Base Eep header */ + word = __bswap16(ee->baseEepHeader.length); + ee->baseEepHeader.length = word; + + word = __bswap16(ee->baseEepHeader.checksum); + ee->baseEepHeader.checksum = word; + + word = __bswap16(ee->baseEepHeader.version); + ee->baseEepHeader.version = word; + + word = __bswap16(ee->baseEepHeader.regDmn[0]); + ee->baseEepHeader.regDmn[0] = word; + + word = __bswap16(ee->baseEepHeader.regDmn[1]); + ee->baseEepHeader.regDmn[1] = word; + + word = __bswap16(ee->baseEepHeader.rfSilent); + ee->baseEepHeader.rfSilent = word; + + word = __bswap16(ee->baseEepHeader.blueToothOptions); + ee->baseEepHeader.blueToothOptions = word; + + word = __bswap16(ee->baseEepHeader.deviceCap); + ee->baseEepHeader.deviceCap = word; + + /* convert Modal Eep header */ + pModal = &ee->modalHeader; + + /* XXX linux/ah_osdep.h only defines __bswap32 for BE */ + integer = __bswap32(pModal->antCtrlCommon); + pModal->antCtrlCommon = integer; + + for (i = 0; i < AR5416_4K_MAX_CHAINS; i++) { + integer = __bswap32(pModal->antCtrlChain[i]); + pModal->antCtrlChain[i] = integer; + } + + for (i = 0; i < AR5416_EEPROM_MODAL_SPURS; i++) { + word = __bswap16(pModal->spurChans[i].spurChan); + pModal->spurChans[i].spurChan = word; + } +} + +static uint16_t +v4kEepromGetSpurChan(struct ath_hal *ah, int ix, HAL_BOOL is2GHz) +{ + HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; + + HALASSERT(0 <= ix && ix < AR5416_EEPROM_MODAL_SPURS); + HALASSERT(is2GHz); + return ee->ee_base.modalHeader.spurChans[ix].spurChan; +} + +/************************************************************************** + * fbin2freq + * + * Get channel value from binary representation held in eeprom + * RETURNS: the frequency in MHz + */ +static uint16_t +fbin2freq(uint8_t fbin, HAL_BOOL is2GHz) +{ + /* + * Reserved value 0xFF provides an empty definition both as + * an fbin and as a frequency - do not convert + */ + if (fbin == AR5416_BCHAN_UNUSED) + return fbin; + return (uint16_t)((is2GHz) ? (2300 + fbin) : (4800 + 5 * fbin)); +} + +/* + * Copy EEPROM Conformance Testing Limits contents + * into the allocated space + */ +/* USE CTLS from chain zero */ +#define CTL_CHAIN 0 + +static void +v4kEepromReadCTLInfo(struct ath_hal *ah, HAL_EEPROM_v4k *ee) +{ + RD_EDGES_POWER *rep = ee->ee_rdEdgesPower; + int i, j; + + HALASSERT(AR5416_NUM_CTLS <= sizeof(ee->ee_rdEdgesPower)/NUM_EDGES); + + for (i = 0; ee->ee_base.ctlIndex[i] != 0 && i < AR5416_4K_NUM_CTLS; i++) { + for (j = 0; j < NUM_EDGES; j ++) { + /* XXX Confirm this is the right thing to do when an invalid channel is stored */ + if (ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel == AR5416_BCHAN_UNUSED) { + rep[j].rdEdge = 0; + rep[j].twice_rdEdgePower = 0; + rep[j].flag = 0; + } else { + rep[j].rdEdge = fbin2freq( + ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].bChannel, + (ee->ee_base.ctlIndex[i] & CTL_MODE_M) != CTL_11A); + rep[j].twice_rdEdgePower = MS(ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].tPowerFlag, CAL_CTL_EDGES_POWER); + rep[j].flag = MS(ee->ee_base.ctlData[i].ctlEdges[CTL_CHAIN][j].tPowerFlag, CAL_CTL_EDGES_FLAG) != 0; + } + } + rep += NUM_EDGES; + } + ee->ee_numCtls = i; + HALDEBUG(ah, HAL_DEBUG_ATTACH | HAL_DEBUG_EEPROM, + "%s Numctls = %u\n",__func__,i); +} + +/* + * Reclaim any EEPROM-related storage. + */ +static void +v4kEepromDetach(struct ath_hal *ah) +{ + HAL_EEPROM_v4k *ee = AH_PRIVATE(ah)->ah_eeprom; + + ath_hal_free(ee); + AH_PRIVATE(ah)->ah_eeprom = AH_NULL; +} + +#define owl_get_eep_ver(_ee) \ + (((_ee)->ee_base.baseEepHeader.version >> 12) & 0xF) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***