Date: Tue, 5 Dec 2006 07:54:19 GMT From: Matt Jacob <mjacob@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 111126 for review Message-ID: <200612050754.kB57sJNc092581@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=111126 Change 111126 by mjacob@newisp on 2006/12/05 07:53:48 IFC Affected files ... .. //depot/projects/newisp/amd64/conf/GENERIC#6 integrate .. //depot/projects/newisp/amd64/isa/clock.c#3 integrate .. //depot/projects/newisp/amd64/linux32/linux32_sysvec.c#4 integrate .. //depot/projects/newisp/arm/arm/cpufunc.c#5 integrate .. //depot/projects/newisp/arm/arm/pmap.c#4 integrate .. //depot/projects/newisp/arm/include/cpuconf.h#3 integrate .. //depot/projects/newisp/arm/xscale/i80321/i80321_space.c#3 integrate .. //depot/projects/newisp/cam/cam_ccb.h#5 integrate .. //depot/projects/newisp/cam/cam_xpt.c#13 integrate .. //depot/projects/newisp/cam/scsi/scsi_all.h#4 integrate .. //depot/projects/newisp/compat/linsysfs/linsysfs.c#2 integrate .. //depot/projects/newisp/compat/linux/linux_misc.c#10 integrate .. //depot/projects/newisp/compat/linux/linux_stats.c#4 integrate .. //depot/projects/newisp/dev/ath/if_ath_pci.c#2 integrate .. //depot/projects/newisp/dev/bge/if_bge.c#12 integrate .. //depot/projects/newisp/dev/bge/if_bgereg.h#6 integrate .. //depot/projects/newisp/dev/ep/if_ep.c#2 integrate .. //depot/projects/newisp/dev/fxp/if_fxp.c#6 integrate .. //depot/projects/newisp/dev/hme/if_hme.c#2 integrate .. //depot/projects/newisp/dev/iicbus/iicbb.c#3 integrate .. //depot/projects/newisp/dev/iicbus/iicbus_if.m#2 integrate .. //depot/projects/newisp/dev/iicbus/iiconf.c#2 integrate .. //depot/projects/newisp/dev/iicbus/iiconf.h#3 integrate .. //depot/projects/newisp/dev/isp/isp_freebsd.c#31 integrate .. //depot/projects/newisp/dev/mii/acphy.c#2 integrate .. //depot/projects/newisp/dev/mii/amphy.c#2 integrate .. //depot/projects/newisp/dev/mii/bmtphy.c#3 integrate .. //depot/projects/newisp/dev/mii/brgphy.c#3 integrate .. //depot/projects/newisp/dev/mii/ciphy.c#3 integrate .. //depot/projects/newisp/dev/mii/inphy.c#2 integrate .. //depot/projects/newisp/dev/mii/ip1000phy.c#2 integrate .. //depot/projects/newisp/dev/mii/lxtphy.c#3 integrate .. //depot/projects/newisp/dev/mii/mii_physubr.c#3 integrate .. //depot/projects/newisp/dev/mii/miidevs#3 integrate .. //depot/projects/newisp/dev/mii/miivar.h#3 integrate .. //depot/projects/newisp/dev/mii/mlphy.c#2 integrate .. //depot/projects/newisp/dev/mii/nsgphy.c#3 integrate .. //depot/projects/newisp/dev/mii/nsphy.c#3 integrate .. //depot/projects/newisp/dev/mii/pnaphy.c#2 integrate .. //depot/projects/newisp/dev/mii/qsphy.c#3 integrate .. //depot/projects/newisp/dev/mii/rgephy.c#2 integrate .. //depot/projects/newisp/dev/mii/rlphy.c#3 integrate .. //depot/projects/newisp/dev/mii/tdkphy.c#2 integrate .. //depot/projects/newisp/dev/mii/tlphy.c#2 integrate .. //depot/projects/newisp/dev/mii/xmphy.c#2 integrate .. //depot/projects/newisp/dev/mpt/mpt.c#5 integrate .. //depot/projects/newisp/dev/mpt/mpt.h#7 integrate .. //depot/projects/newisp/dev/mpt/mpt_cam.c#17 integrate .. //depot/projects/newisp/dev/mpt/mpt_raid.c#5 integrate .. //depot/projects/newisp/dev/sound/pci/hda/hdac.c#5 integrate .. //depot/projects/newisp/dev/sound/pci/ich.c#3 integrate .. //depot/projects/newisp/fs/msdosfs/msdosfs_vnops.c#4 integrate .. //depot/projects/newisp/fs/unionfs/union.h#2 integrate .. //depot/projects/newisp/fs/unionfs/union_subr.c#2 integrate .. //depot/projects/newisp/fs/unionfs/union_vfsops.c#3 integrate .. //depot/projects/newisp/fs/unionfs/union_vnops.c#2 integrate .. //depot/projects/newisp/geom/journal/g_journal.c#3 integrate .. //depot/projects/newisp/i386/isa/clock.c#3 integrate .. //depot/projects/newisp/kern/kern_thr.c#6 integrate .. //depot/projects/newisp/kern/kern_umtx.c#11 integrate .. //depot/projects/newisp/kern/subr_lock.c#3 integrate .. //depot/projects/newisp/kern/subr_rman.c#3 integrate .. //depot/projects/newisp/modules/Makefile#7 integrate .. //depot/projects/newisp/net/bridgestp.c#7 integrate .. //depot/projects/newisp/net/bridgestp.h#5 integrate .. //depot/projects/newisp/net/ethernet.h#3 integrate .. //depot/projects/newisp/net/if_atmsubr.c#3 integrate .. //depot/projects/newisp/net/if_bridge.c#9 integrate .. //depot/projects/newisp/net/if_bridgevar.h#5 integrate .. //depot/projects/newisp/net/if_llc.h#2 integrate .. //depot/projects/newisp/net80211/ieee80211.h#2 integrate .. //depot/projects/newisp/net80211/ieee80211_input.c#3 integrate .. //depot/projects/newisp/net80211/ieee80211_output.c#3 integrate .. //depot/projects/newisp/netgraph/ng_nat.c#3 integrate .. //depot/projects/newisp/netinet/igmp.c#3 integrate .. //depot/projects/newisp/netinet/ip_carp.h#2 integrate .. //depot/projects/newisp/netinet/libalias/alias.c#3 integrate .. //depot/projects/newisp/netinet/libalias/alias.h#3 integrate .. //depot/projects/newisp/pci/if_rl.c#3 integrate .. //depot/projects/newisp/pci/if_rlreg.h#3 integrate .. //depot/projects/newisp/powerpc/include/pmap.h#2 integrate .. //depot/projects/newisp/powerpc/powerpc/mmu_if.m#2 integrate .. //depot/projects/newisp/powerpc/powerpc/mmu_oea.c#4 integrate .. //depot/projects/newisp/powerpc/powerpc/pmap_dispatch.c#3 integrate .. //depot/projects/newisp/powerpc/powerpc/uio_machdep.c#2 integrate .. //depot/projects/newisp/sun4v/conf/GENERIC#4 integrate .. //depot/projects/newisp/sun4v/include/tsb.h#3 integrate .. //depot/projects/newisp/sun4v/sun4v/pmap.c#6 integrate .. //depot/projects/newisp/sun4v/sun4v/tsb.c#3 integrate .. //depot/projects/newisp/sys/proc.h#5 integrate .. //depot/projects/newisp/sys/umtx.h#6 integrate Differences ... ==== //depot/projects/newisp/amd64/conf/GENERIC#6 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.469 2006/11/22 10:34:12 ru Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.470 2006/12/03 21:02:09 netchild Exp $ cpu HAMMER ident GENERIC @@ -71,11 +71,6 @@ # Make an SMP-capable kernel by default options SMP # Symmetric MultiProcessor Kernel -# Linux 32-bit ABI support -options COMPAT_LINUX32 # Compatible with i386 linux binaries -options LINPROCFS -options LINSYSFS - # Bus support. device acpi device pci ==== //depot/projects/newisp/amd64/isa/clock.c#3 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.227 2006/10/02 18:23:36 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.228 2006/12/03 03:49:28 bde Exp $"); /* * Routines to handle clock hardware. @@ -115,6 +115,7 @@ static int (*i8254_pending)(struct intsrc *); static int i8254_ticked; static int using_lapic_timer; +static int rtc_reg = -1; static u_char rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF; static u_char rtc_statusb = RTCSB_24HR; @@ -421,24 +422,30 @@ u_char val; RTC_LOCK; - outb(IO_RTC, reg); - inb(0x84); + if (rtc_reg != reg) { + inb(0x84); + outb(IO_RTC, reg); + rtc_reg = reg; + inb(0x84); + } val = inb(IO_RTC + 1); - inb(0x84); RTC_UNLOCK; return (val); } -static __inline void -writertc(u_char reg, u_char val) +static void +writertc(int reg, u_char val) { RTC_LOCK; - inb(0x84); - outb(IO_RTC, reg); + if (rtc_reg != reg) { + inb(0x84); + outb(IO_RTC, reg); + rtc_reg = reg; + inb(0x84); + } + outb(IO_RTC + 1, val); inb(0x84); - outb(IO_RTC + 1, val); - inb(0x84); /* XXX work around wrong order in rtcin() */ RTC_UNLOCK; } ==== //depot/projects/newisp/amd64/linux32/linux32_sysvec.c#4 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.25 2006/10/31 17:53:02 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/linux32/linux32_sysvec.c,v 1.26 2006/12/03 21:06:07 netchild Exp $"); #include "opt_compat.h" #ifndef COMPAT_IA32 @@ -1120,7 +1120,7 @@ printf("Could not deinstall ELF interpreter entry\n"); break; default: - break; + return EOPNOTSUPP; } return error; } ==== //depot/projects/newisp/arm/arm/cpufunc.c#5 (text+ko) ==== @@ -45,7 +45,7 @@ * Created : 30/01/97 */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.14 2006/11/19 23:55:23 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.15 2006/11/30 23:34:07 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1885,7 +1885,9 @@ xscale_setup(args) char *args; { +#ifndef CPU_XSCALE_CORE3 uint32_t auxctl; +#endif int cpuctrl, cpuctrlmask; /* @@ -1931,6 +1933,7 @@ /* cpu_control(cpuctrlmask, cpuctrl);*/ cpu_control(0xffffffff, cpuctrl); +#ifndef CPU_XSCALE_CORE3 /* Make sure write coalescing is turned on */ __asm __volatile("mrc p15, 0, %0, c1, c0, 1" : "=r" (auxctl)); @@ -1941,6 +1944,7 @@ #endif __asm __volatile("mcr p15, 0, %0, c1, c0, 1" : : "r" (auxctl)); +#endif } #endif /* CPU_XSCALE_80200 || CPU_XSCALE_80321 || CPU_XSCALE_PXA2X0 || CPU_XSCALE_IXP425 CPU_XSCALE_80219 */ ==== //depot/projects/newisp/arm/arm/pmap.c#4 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.73 2006/11/12 21:48:32 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.77 2006/12/04 12:55:00 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> @@ -585,7 +585,7 @@ #endif /* ARM_MMU_SA1 == 1*/ #if ARM_MMU_XSCALE == 1 -#if (ARM_NMMUS > 1) +#if (ARM_NMMUS > 1) || defined (CPU_XSCALE_CORE3) static u_int xscale_use_minidata; #endif @@ -614,9 +614,11 @@ * is significantly faster than the traditional, write-through * behavior of this case. */ +#ifndef CPU_XSCALE_CORE3 pte_l1_s_cache_mode |= L1_S_XSCALE_TEX(TEX_XSCALE_X); pte_l2_l_cache_mode |= L2_XSCALE_L_TEX(TEX_XSCALE_X); pte_l2_s_cache_mode |= L2_XSCALE_T_TEX(TEX_XSCALE_X); +#endif #endif /* XSCALE_CACHE_READ_WRITE_ALLOCATE */ #ifdef XSCALE_CACHE_WRITE_THROUGH /* @@ -673,8 +675,16 @@ pte_l1_c_proto = L1_C_PROTO_xscale; pte_l2_s_proto = L2_S_PROTO_xscale; +#ifdef CPU_XSCALE_CORE3 + pmap_copy_page_func = pmap_copy_page_generic; + pmap_zero_page_func = pmap_zero_page_generic; + xscale_use_minidata = 0; + pte_l1_s_cache_mode_pt = pte_l2_l_cache_mode_pt = + pte_l2_s_cache_mode_pt = 0; +#else pmap_copy_page_func = pmap_copy_page_xscale; pmap_zero_page_func = pmap_zero_page_xscale; +#endif /* * Disable ECC protection of page table access, for now. @@ -2797,6 +2807,7 @@ if (TAILQ_EMPTY(&m->md.pv_list)) vm_page_flag_clear(m, PG_WRITEABLE); pmap_free_pv_entry(pv); + pmap_free_l2_bucket(pmap, l2b, 1); } vm_page_unlock_queues(); cpu_idcache_wbinv_all(); @@ -3136,6 +3147,7 @@ if (TAILQ_EMPTY(&m->md.pv_list)) return; + mtx_assert(&vm_page_queue_mtx, MA_OWNED); curpm = vmspace_pmap(curproc->p_vmspace); while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { if (flush == FALSE && (pv->pv_pmap == curpm || @@ -3437,7 +3449,8 @@ else if (!pve && !(m->flags & (PG_UNMANAGED | PG_FICTITIOUS))) pve = pmap_get_pv_entry(); - KASSERT(pve != NULL, ("No pv")); + KASSERT(pve != NULL || m->flags & (PG_UNMANAGED | + PG_FICTITIOUS), ("No pv")); oflags = pve->pv_flags; /* @@ -4005,7 +4018,7 @@ * StrongARM accesses to non-cached pages are non-burst making writing * _any_ bulk data very slow. */ -#if (ARM_MMU_GENERIC + ARM_MMU_SA1) != 0 +#if (ARM_MMU_GENERIC + ARM_MMU_SA1) != 0 || defined(CPU_XSCALE_CORE3) void pmap_zero_page_generic(vm_paddr_t phys, int off, int size) { @@ -4094,7 +4107,7 @@ pt_entry_t *ptep, *sptep, pte; vm_offset_t next_bucket, eva; -#if (ARM_NMMUS > 1) +#if (ARM_NMMUS > 1) || defined(CPU_XSCALE_CORE3) if (xscale_use_minidata == 0) return; #endif @@ -4267,7 +4280,7 @@ * hook points. The same comment regarding cachability as in * pmap_zero_page also applies here. */ -#if (ARM_MMU_GENERIC + ARM_MMU_SA1) != 0 +#if (ARM_MMU_GENERIC + ARM_MMU_SA1) != 0 || defined (CPU_XSCALE_CORE3) void pmap_copy_page_generic(vm_paddr_t src, vm_paddr_t dst) { @@ -4430,6 +4443,9 @@ int pmap_ts_referenced(vm_page_t m) { + + if (m->flags & PG_FICTITIOUS) + return (0); return (pmap_clearbit(m, PVF_REF)); } ==== //depot/projects/newisp/arm/include/cpuconf.h#3 (text+ko) ==== @@ -34,7 +34,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/cpuconf.h,v 1.9 2006/11/07 22:36:56 cognet Exp $ + * $FreeBSD: src/sys/arm/include/cpuconf.h,v 1.10 2006/11/30 23:30:40 cognet Exp $ * */ @@ -139,4 +139,7 @@ #define ARM_XSCALE_PMU 0 #endif +#if defined(CPU_XSCALE_81342) +#define CPU_XSCALE_CORE3 +#endif #endif /* _MACHINE_CPUCONF_H_ */ ==== //depot/projects/newisp/arm/xscale/i80321/i80321_space.c#3 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_space.c,v 1.6 2006/11/20 13:21:02 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321_space.c,v 1.7 2006/12/02 13:37:29 cognet Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -139,6 +139,42 @@ generic_armv4_bs_c_2, NULL, NULL, + + /* read (single) stream */ + generic_bs_r_1, + generic_armv4_bs_r_2, + generic_bs_r_4, + NULL, + + /* read multiple stream */ + generic_bs_rm_1, + generic_armv4_bs_rm_2, + generic_bs_rm_4, + NULL, + + /* read region stream */ + generic_bs_rr_1, + generic_armv4_bs_rr_2, + generic_bs_rr_4, + NULL, + + /* write (single) stream */ + generic_bs_w_1, + generic_armv4_bs_w_2, + generic_bs_w_4, + NULL, + + /* write multiple stream */ + generic_bs_wm_1, + generic_armv4_bs_wm_2, + generic_bs_wm_4, + NULL, + + /* write region stream */ + NULL, + generic_armv4_bs_wr_2, + generic_bs_wr_4, + NULL, }; void ==== //depot/projects/newisp/cam/cam_ccb.h#5 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cam/cam_ccb.h,v 1.33 2006/11/02 00:54:32 mjacob Exp $ + * $FreeBSD: src/sys/cam/cam_ccb.h,v 1.34 2006/12/03 07:19:28 mjacob Exp $ */ #ifndef _CAM_CAM_CCB_H ==== //depot/projects/newisp/cam/cam_xpt.c#13 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.168 2006/11/07 23:06:00 mjacob Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.169 2006/12/04 23:04:13 mjacob Exp $"); #include <sys/param.h> #include <sys/bus.h> ==== //depot/projects/newisp/cam/scsi/scsi_all.h#4 (text+ko) ==== @@ -14,7 +14,7 @@ * * Ported to run under 386BSD by Julian Elischer (julian@tfs.com) Sept 1992 * - * $FreeBSD: src/sys/cam/scsi/scsi_all.h,v 1.27 2006/11/03 05:42:15 njl Exp $ + * $FreeBSD: src/sys/cam/scsi/scsi_all.h,v 1.28 2006/12/04 23:04:13 mjacob Exp $ */ /* ==== //depot/projects/newisp/compat/linsysfs/linsysfs.c#2 (text) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/linsysfs/linsysfs.c,v 1.2 2006/05/11 15:27:58 ambrisko Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linsysfs/linsysfs.c,v 1.3 2006/12/03 21:00:31 netchild Exp $"); #include <sys/param.h> #include <sys/queue.h> @@ -268,9 +268,10 @@ static int linsysfs_uninit(PFS_INIT_ARGS) { - struct scsi_host_queue *scsi_host; + struct scsi_host_queue *scsi_host, *scsi_host_tmp; - TAILQ_FOREACH(scsi_host, &scsi_host_q, scsi_host_next) { + TAILQ_FOREACH_SAFE(scsi_host, &scsi_host_q, scsi_host_next, + scsi_host_tmp) { TAILQ_REMOVE(&scsi_host_q, scsi_host, scsi_host_next); free(scsi_host->path, M_TEMP); free(scsi_host, M_TEMP); ==== //depot/projects/newisp/compat/linux/linux_misc.c#10 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.197 2006/11/18 14:37:54 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.199 2006/12/04 22:46:09 jkim Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -890,11 +890,34 @@ printf(ARGS(mknod, "%s, %d, %d"), path, args->mode, args->dev); #endif - if (S_ISFIFO(args->mode)) + switch (args->mode & S_IFMT) { + case S_IFIFO: + case S_IFSOCK: error = kern_mkfifo(td, path, UIO_SYSSPACE, args->mode); - else + break; + + case S_IFCHR: + case S_IFBLK: error = kern_mknod(td, path, UIO_SYSSPACE, args->mode, args->dev); + break; + + case S_IFDIR: + error = EPERM; + break; + + case 0: + args->mode |= S_IFREG; + /* fall through */ + case S_IFREG: + error = kern_open(td, path, UIO_SYSSPACE, + O_WRONLY | O_CREAT | O_TRUNC, args->mode); + break; + + default: + error = EINVAL; + break; + } LFREEPATH(path); return (error); } @@ -1588,7 +1611,7 @@ int linux_prctl(struct thread *td, struct linux_prctl_args *args) { - int error = 0; + int error = 0, max_size; struct proc *p = td->td_proc; char comm[LINUX_MAX_COMM_LEN]; struct linux_emuldata *em; @@ -1615,16 +1638,41 @@ EMUL_UNLOCK(&emul_lock); break; case LINUX_PR_SET_NAME: - comm[LINUX_MAX_COMM_LEN-1] = 0; - error = copyin(comm, (void *)(register_t) args->arg2, LINUX_MAX_COMM_LEN-1); + /* + * To be on the safe side we need to make sure to not + * overflow the size a linux program expects. We already + * do this here in the copyin, so that we don't need to + * check on copyout. + */ + max_size = MIN(sizeof(comm), sizeof(p->p_comm)); + error = copyinstr((void *)(register_t) args->arg2, comm, + max_size, NULL); + + /* Linux silently truncates the name if it is too long. */ + if (error == ENAMETOOLONG) { + /* + * XXX: copyinstr() isn't documented to populate the + * array completely, so do a copyin() to be on the + * safe side. This should be changed in case + * copyinstr() is changed to guarantee this. + */ + error = copyin((void *)(register_t)args->arg2, comm, + max_size - 1); + comm[max_size - 1] = '\0'; + } if (error) return (error); + PROC_LOCK(p); - strcpy(p->p_comm, comm); + strlcpy(p->p_comm, comm, sizeof(p->p_comm)); PROC_UNLOCK(p); break; case LINUX_PR_GET_NAME: - error = copyout(&p->p_comm, (void *)(register_t) args->arg2, MAXCOMLEN+1); + PROC_LOCK(p); + strlcpy(comm, p->p_comm, sizeof(comm)); + PROC_UNLOCK(p); + error = copyout(comm, (void *)(register_t) args->arg2, + strlen(comm)+1); break; default: error = EINVAL; ==== //depot/projects/newisp/compat/linux/linux_stats.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.85 2006/10/22 11:52:11 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/linux/linux_stats.c,v 1.86 2006/12/04 22:38:52 jkim Exp $"); #include "opt_compat.h" #include "opt_mac.h" @@ -100,23 +100,16 @@ translate_fd_major_minor(struct thread *td, int fd, struct stat *buf) { struct file *fp; - int error; int major, minor; - if ((error = fget(td, fd, &fp)) != 0) + if ((!S_ISCHR(buf->st_mode) && !S_ISBLK(buf->st_mode)) || + fget(td, fd, &fp) != 0) return; - if (fp->f_vnode) { - if (fp->f_vnode->v_type == VCHR - || fp->f_vnode->v_type == VBLK) { - if (fp->f_vnode->v_un.vu_cdev) { - if (linux_driver_get_major_minor( - fp->f_vnode->v_un.vu_cdev->si_name, - &major, &minor) == 0) { - buf->st_rdev = (major << 8 | minor); - } - } - } - } + if (fp->f_vnode != NULL && + fp->f_vnode->v_un.vu_cdev != NULL && + linux_driver_get_major_minor(fp->f_vnode->v_un.vu_cdev->si_name, + &major, &minor) == 0) + buf->st_rdev = (major << 8 | minor); fdrop(fp, td); } @@ -129,6 +122,8 @@ int fd; int temp; + if (!S_ISCHR(buf->st_mode) && !S_ISBLK(buf->st_mode)) + return; temp = td->td_retval[0]; if (kern_open(td, path, UIO_SYSSPACE, O_RDONLY, 0) != 0) return; @@ -179,18 +174,19 @@ #endif error = kern_stat(td, path, UIO_SYSSPACE, &buf); - if (!error && strlen(path) > strlen("/dev/pts/") && - !strncmp(path, "/dev/pts/", strlen("/dev/pts/")) - && path[9] >= '0' && path[9] <= '9') { - /* - * Linux checks major and minors of the slave device to make - * sure it's a pty device, so let's make him believe it is. - */ - buf.st_rdev = (136 << 8); - } - - translate_path_major_minor(td, path, &buf); - + if (!error) { + if (strlen(path) > strlen("/dev/pts/") && + !strncmp(path, "/dev/pts/", strlen("/dev/pts/")) && + path[9] >= '0' && path[9] <= '9') { + /* + * Linux checks major and minors of the slave device + * to make sure it's a pty device, so let's make him + * believe it is. + */ + buf.st_rdev = (136 << 8); + } else + translate_path_major_minor(td, path, &buf); + } LFREEPATH(path); if (error) return (error); @@ -212,7 +208,8 @@ #endif error = kern_lstat(td, path, UIO_SYSSPACE, &sb); - translate_path_major_minor(td, path, &sb); + if (!error) + translate_path_major_minor(td, path, &sb); LFREEPATH(path); if (error) return (error); @@ -524,18 +521,19 @@ #endif error = kern_stat(td, filename, UIO_SYSSPACE, &buf); - if (!error && strlen(filename) > strlen("/dev/pts/") && - !strncmp(filename, "/dev/pts/", strlen("/dev/pts/")) - && filename[9] >= '0' && filename[9] <= '9') { - /* - * Linux checks major and minors of the slave device to make - * sure it's a pty deivce, so let's make him believe it is. - */ - buf.st_rdev = (136 << 8); + if (!error) { + if (strlen(filename) > strlen("/dev/pts/") && + !strncmp(filename, "/dev/pts/", strlen("/dev/pts/")) && + filename[9] >= '0' && filename[9] <= '9') { + /* + * Linux checks major and minors of the slave device + * to make sure it's a pty deivce, so let's make him + * believe it is. + */ + buf.st_rdev = (136 << 8); + } else + translate_path_major_minor(td, filename, &buf); } - - translate_path_major_minor(td, filename, &buf); - LFREEPATH(filename); if (error) return (error); @@ -557,7 +555,8 @@ #endif error = kern_lstat(td, filename, UIO_SYSSPACE, &sb); - translate_path_major_minor(td, filename, &sb); + if (!error) + translate_path_major_minor(td, filename, &sb); LFREEPATH(filename); if (error) return (error); ==== //depot/projects/newisp/dev/ath/if_ath_pci.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath_pci.c,v 1.15 2006/06/07 20:37:14 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath_pci.c,v 1.16 2006/12/01 16:03:39 sam Exp $"); /* * PCI/Cardbus front-end for the Atheros Wireless LAN controller driver. @@ -196,8 +196,8 @@ ATH_LOCK_INIT(sc); error = ath_attach(pci_get_device(dev), sc); - if (error == 0) - return error; + if (error == 0) /* success */ + return 0; ATH_LOCK_DESTROY(sc); bus_dma_tag_destroy(sc->sc_dmat); ==== //depot/projects/newisp/dev/bge/if_bge.c#12 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.152 2006/11/30 13:40:39 glebius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.157 2006/12/04 22:12:21 jkim Exp $"); /* * Broadcom BCM570x family gigabit ethernet driver for FreeBSD. @@ -281,36 +281,12 @@ { 0, NULL } }; -#define BGE_IS_5705_OR_BEYOND(sc) \ - ((sc)->bge_asicrev == BGE_ASICREV_BCM5705 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5750 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5714_A0 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5780 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5714 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5752 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5755 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5787) - -#define BGE_IS_575X_PLUS(sc) \ - ((sc)->bge_asicrev == BGE_ASICREV_BCM5750 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5714_A0 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5780 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5714 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5752 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5755 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5787) +#define BGE_IS_JUMBO_CAPABLE(sc) ((sc)->bge_flags & BGE_FLAG_JUMBO) +#define BGE_IS_5700_FAMILY(sc) ((sc)->bge_flags & BGE_FLAG_5700_FAMILY) +#define BGE_IS_5705_PLUS(sc) ((sc)->bge_flags & BGE_FLAG_5705_PLUS) +#define BGE_IS_5714_FAMILY(sc) ((sc)->bge_flags & BGE_FLAG_5714_FAMILY) +#define BGE_IS_575X_PLUS(sc) ((sc)->bge_flags & BGE_FLAG_575X_PLUS) -#define BGE_IS_5714_FAMILY(sc) \ - ((sc)->bge_asicrev == BGE_ASICREV_BCM5714_A0 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5780 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5714) - -#define BGE_IS_JUMBO_CAPABLE(sc) \ - ((sc)->bge_asicrev == BGE_ASICREV_BCM5700 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5701 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5703 || \ - (sc)->bge_asicrev == BGE_ASICREV_BCM5704) - const struct bge_revision * bge_lookup_rev(uint32_t); const struct bge_vendor * bge_lookup_vendor(uint16_t); static int bge_probe(device_t); @@ -1229,23 +1205,13 @@ /* Note: the BCM5704 has a smaller mbuf space than other chips. */ - if (!(BGE_IS_5705_OR_BEYOND(sc))) { + if (!(BGE_IS_5705_PLUS(sc))) { /* Configure mbuf memory pool */ - if (sc->bge_flags & BGE_FLAG_EXTRAM) { - CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR, - BGE_EXT_SSRAM); - if (sc->bge_asicrev == BGE_ASICREV_BCM5704) - CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x10000); - else - CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000); - } else { - CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR, - BGE_BUFFPOOL_1); - if (sc->bge_asicrev == BGE_ASICREV_BCM5704) - CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x10000); - else - CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000); - } + CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR, BGE_BUFFPOOL_1); + if (sc->bge_asicrev == BGE_ASICREV_BCM5704) + CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x10000); + else + CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000); /* Configure DMA resource pool */ CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_BASEADDR, @@ -1254,7 +1220,7 @@ } /* Configure mbuf pool watermarks */ - if (!(BGE_IS_5705_OR_BEYOND(sc))) { + if (!(BGE_IS_5705_PLUS(sc))) { CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x0); CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x10); } else { @@ -1268,7 +1234,7 @@ CSR_WRITE_4(sc, BGE_BMAN_DMA_DESCPOOL_HIWAT, 10); /* Enable buffer manager */ - if (!(BGE_IS_5705_OR_BEYOND(sc))) { + if (!(BGE_IS_5705_PLUS(sc))) { CSR_WRITE_4(sc, BGE_BMAN_MODE, BGE_BMANMODE_ENABLE|BGE_BMANMODE_LOMBUF_ATTN); @@ -1310,15 +1276,12 @@ BGE_ADDR_HI(sc->bge_ldata.bge_rx_std_ring_paddr); bus_dmamap_sync(sc->bge_cdata.bge_rx_std_ring_tag, sc->bge_cdata.bge_rx_std_ring_map, BUS_DMASYNC_PREREAD); - if (BGE_IS_5705_OR_BEYOND(sc)) + if (BGE_IS_5705_PLUS(sc)) rcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(512, 0); else rcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(BGE_MAX_FRAMELEN, 0); - if (sc->bge_flags & BGE_FLAG_EXTRAM) - rcb->bge_nicaddr = BGE_EXT_STD_RX_RINGS; - else - rcb->bge_nicaddr = BGE_STD_RX_RINGS; + rcb->bge_nicaddr = BGE_STD_RX_RINGS; CSR_WRITE_4(sc, BGE_RX_STD_RCB_HADDR_HI, rcb->bge_hostaddr.bge_addr_hi); CSR_WRITE_4(sc, BGE_RX_STD_RCB_HADDR_LO, rcb->bge_hostaddr.bge_addr_lo); @@ -1344,10 +1307,7 @@ BUS_DMASYNC_PREREAD); rcb->bge_maxlen_flags = BGE_RCB_MAXLEN_FLAGS(0, BGE_RCB_FLAG_USE_EXT_RX_BD|BGE_RCB_FLAG_RING_DISABLED); - if (sc->bge_flags & BGE_FLAG_EXTRAM) - rcb->bge_nicaddr = BGE_EXT_JUMBO_RX_RINGS; - else - rcb->bge_nicaddr = BGE_JUMBO_RX_RINGS; + rcb->bge_nicaddr = BGE_JUMBO_RX_RINGS; CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_HI, rcb->bge_hostaddr.bge_addr_hi); CSR_WRITE_4(sc, BGE_RX_JUMBO_RCB_HADDR_LO, @@ -1393,7 +1353,7 @@ RCB_WRITE_4(sc, vrcb, bge_hostaddr.bge_addr_lo, taddr.bge_addr_lo); RCB_WRITE_4(sc, vrcb, bge_nicaddr, BGE_NIC_TXRING_ADDR(0, BGE_TX_RING_CNT)); - if (!(BGE_IS_5705_OR_BEYOND(sc))) + if (!(BGE_IS_5705_PLUS(sc))) RCB_WRITE_4(sc, vrcb, bge_maxlen_flags, BGE_RCB_MAXLEN_FLAGS(BGE_TX_RING_CNT, 0)); @@ -1477,7 +1437,7 @@ CSR_WRITE_4(sc, BGE_HCC_TX_COAL_TICKS, sc->bge_tx_coal_ticks); CSR_WRITE_4(sc, BGE_HCC_RX_MAX_COAL_BDS, sc->bge_rx_max_coal_bds); CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS, sc->bge_tx_max_coal_bds); - if (!(BGE_IS_5705_OR_BEYOND(sc))) { + if (!(BGE_IS_5705_PLUS(sc))) { CSR_WRITE_4(sc, BGE_HCC_RX_COAL_TICKS_INT, 0); CSR_WRITE_4(sc, BGE_HCC_TX_COAL_TICKS_INT, 0); } @@ -1485,7 +1445,7 @@ CSR_WRITE_4(sc, BGE_HCC_TX_MAX_COAL_BDS_INT, 0); /* Set up address of statistics block */ - if (!(BGE_IS_5705_OR_BEYOND(sc))) { + if (!(BGE_IS_5705_PLUS(sc))) { CSR_WRITE_4(sc, BGE_HCC_STATS_ADDR_HI, BGE_ADDR_HI(sc->bge_ldata.bge_stats_paddr)); CSR_WRITE_4(sc, BGE_HCC_STATS_ADDR_LO, @@ -1514,7 +1474,7 @@ CSR_WRITE_4(sc, BGE_RXLP_MODE, BGE_RXLPMODE_ENABLE); /* Turn on RX list selector state machine. */ - if (!(BGE_IS_5705_OR_BEYOND(sc))) + if (!(BGE_IS_5705_PLUS(sc))) CSR_WRITE_4(sc, BGE_RXLS_MODE, BGE_RXLSMODE_ENABLE); /* Turn on DMA, clear stats */ @@ -1537,7 +1497,7 @@ #endif /* Turn on DMA completion state machine */ - if (!(BGE_IS_5705_OR_BEYOND(sc))) + if (!(BGE_IS_5705_PLUS(sc))) CSR_WRITE_4(sc, BGE_DMAC_MODE, BGE_DMACMODE_ENABLE); /* Turn on write DMA state machine */ @@ -1558,7 +1518,7 @@ CSR_WRITE_4(sc, BGE_RDBDI_MODE, BGE_RDBDIMODE_ENABLE); /* Turn on Mbuf cluster free state machine */ - if (!(BGE_IS_5705_OR_BEYOND(sc))) + if (!(BGE_IS_5705_PLUS(sc))) CSR_WRITE_4(sc, BGE_MBCF_MODE, BGE_MBCFMODE_ENABLE); /* Turn on send BD completion state machine */ @@ -2156,11 +2116,38 @@ sc->bge_asicrev = BGE_ASICREV(sc->bge_chipid); sc->bge_chiprev = BGE_CHIPREV(sc->bge_chipid); + /* Save chipset family. */ + switch (sc->bge_asicrev) { + case BGE_ASICREV_BCM5700: + case BGE_ASICREV_BCM5701: + case BGE_ASICREV_BCM5703: + case BGE_ASICREV_BCM5704: + sc->bge_flags |= BGE_FLAG_5700_FAMILY | BGE_FLAG_JUMBO; + break; + + case BGE_ASICREV_BCM5714_A0: + case BGE_ASICREV_BCM5780: + case BGE_ASICREV_BCM5714: + sc->bge_flags |= BGE_FLAG_5714_FAMILY /* | BGE_FLAG_JUMBO */; + /* Fall through */ + + case BGE_ASICREV_BCM5750: + case BGE_ASICREV_BCM5752: + case BGE_ASICREV_BCM5755: + case BGE_ASICREV_BCM5787: + sc->bge_flags |= BGE_FLAG_575X_PLUS; + /* Fall through */ + + case BGE_ASICREV_BCM5705: + sc->bge_flags |= BGE_FLAG_5705_PLUS; + break; + } + /* * XXX: Broadcom Linux driver. Not in specs or eratta. * PCI-Express? */ - if (BGE_IS_5705_OR_BEYOND(sc)) { + if (BGE_IS_5705_PLUS(sc)) { uint32_t v; v = pci_read_config(dev, BGE_PCI_MSI_CAPID, 4); @@ -2240,7 +2227,7 @@ } /* 5705 limits RX return ring to 512 entries. */ - if (BGE_IS_5705_OR_BEYOND(sc)) + if (BGE_IS_5705_PLUS(sc)) sc->bge_return_ring_cnt = BGE_RETURN_RING_CNT_5705; else sc->bge_return_ring_cnt = BGE_RETURN_RING_CNT; @@ -2943,7 +2930,7 @@ BGE_LOCK_ASSERT(sc); - if (BGE_IS_5705_OR_BEYOND(sc)) + if (BGE_IS_5705_PLUS(sc)) bge_stats_update_regs(sc); else bge_stats_update(sc); @@ -2978,27 +2965,19 @@ static void bge_stats_update_regs(struct bge_softc *sc) >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200612050754.kB57sJNc092581>