From owner-p4-projects@FreeBSD.ORG Thu Jul 23 15:18:18 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6AB501065673; Thu, 23 Jul 2009 15:18:18 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F966106566B for ; Thu, 23 Jul 2009 15:18:18 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id EFBB08FC23 for ; Thu, 23 Jul 2009 15:18:17 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n6NFIH3s036300 for ; Thu, 23 Jul 2009 15:18:17 GMT (envelope-from andre@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n6NFIHX3036298 for perforce@freebsd.org; Thu, 23 Jul 2009 15:18:17 GMT (envelope-from andre@freebsd.org) Date: Thu, 23 Jul 2009 15:18:17 GMT Message-Id: <200907231518.n6NFIHX3036298@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to andre@freebsd.org using -f From: Andre Oppermann To: Perforce Change Reviews Cc: Subject: PERFORCE change 166455 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 Jul 2009 15:18:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=166455 Change 166455 by andre@andre_flirtbox on 2009/07/23 15:18:04 IFC. Affected files ... .. //depot/projects/tcp_reass/amd64/amd64/initcpu.c#4 integrate .. //depot/projects/tcp_reass/amd64/amd64/pmap.c#10 integrate .. //depot/projects/tcp_reass/amd64/include/cpufunc.h#5 integrate .. //depot/projects/tcp_reass/amd64/include/md_var.h#4 integrate .. //depot/projects/tcp_reass/arm/arm/busdma_machdep.c#5 integrate .. //depot/projects/tcp_reass/arm/arm/cpufunc.c#4 integrate .. //depot/projects/tcp_reass/arm/arm/pmap.c#8 integrate .. //depot/projects/tcp_reass/arm/arm/vm_machdep.c#6 integrate .. //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#5 integrate .. //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 integrate .. //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#6 integrate .. //depot/projects/tcp_reass/conf/files#10 integrate .. //depot/projects/tcp_reass/dev/ath/ath_hal/ar5212/ar5212_recv.c#4 integrate .. //depot/projects/tcp_reass/dev/ath/if_ath.c#9 integrate .. //depot/projects/tcp_reass/dev/ath/if_athvar.h#8 integrate .. //depot/projects/tcp_reass/dev/ciss/ciss.c#7 integrate .. //depot/projects/tcp_reass/dev/if_ndis/if_ndis.c#8 integrate .. //depot/projects/tcp_reass/dev/mxge/if_mxge.c#9 integrate .. //depot/projects/tcp_reass/dev/pci/pci.c#7 integrate .. //depot/projects/tcp_reass/dev/siis/siis.c#1 branch .. //depot/projects/tcp_reass/dev/siis/siis.h#1 branch .. //depot/projects/tcp_reass/dev/uart/uart_cpu_powerpc.c#5 integrate .. //depot/projects/tcp_reass/fs/nfs/nfsport.h#5 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clbio.c#4 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clrpcops.c#5 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clstate.c#5 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clvfsops.c#4 integrate .. //depot/projects/tcp_reass/fs/nfsclient/nfs_clvnops.c#6 integrate .. //depot/projects/tcp_reass/i386/i386/pmap.c#9 integrate .. //depot/projects/tcp_reass/i386/xen/pmap.c#5 integrate .. //depot/projects/tcp_reass/kern/kern_linker.c#11 integrate .. //depot/projects/tcp_reass/kern/kern_sysctl.c#7 integrate .. //depot/projects/tcp_reass/kern/kern_vimage.c#8 integrate .. //depot/projects/tcp_reass/kern/link_elf_obj.c#9 integrate .. //depot/projects/tcp_reass/kern/uipc_socket.c#9 integrate .. //depot/projects/tcp_reass/kern/vfs_bio.c#8 integrate .. //depot/projects/tcp_reass/modules/Makefile#9 integrate .. //depot/projects/tcp_reass/modules/siis/Makefile#1 branch .. //depot/projects/tcp_reass/modules/wlan/Makefile#7 integrate .. //depot/projects/tcp_reass/net/flowtable.c#7 integrate .. //depot/projects/tcp_reass/net/if.c#11 integrate .. //depot/projects/tcp_reass/net/vnet.h#7 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_crypto.c#6 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_crypto.h#6 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_hwmp.c#2 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_input.c#9 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_ioctl.h#8 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_mesh.c#2 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_mesh.h#2 integrate .. //depot/projects/tcp_reass/net80211/ieee80211_output.c#7 integrate .. //depot/projects/tcp_reass/netinet/igmp.c#9 integrate .. //depot/projects/tcp_reass/netinet/ip_input.c#10 integrate .. //depot/projects/tcp_reass/netinet/tcp_subr.c#14 integrate .. //depot/projects/tcp_reass/netinet6/in6_proto.c#7 integrate .. //depot/projects/tcp_reass/netinet6/ip6_input.c#8 integrate .. //depot/projects/tcp_reass/netinet6/mld6.c#9 integrate .. //depot/projects/tcp_reass/netipsec/ipsec.c#7 integrate .. //depot/projects/tcp_reass/netipsec/xform_ipcomp.c#5 integrate .. //depot/projects/tcp_reass/netipsec/xform_ipip.c#6 integrate .. //depot/projects/tcp_reass/powerpc/mpc85xx/lbc.h#3 integrate .. //depot/projects/tcp_reass/sparc64/include/param.h#6 integrate .. //depot/projects/tcp_reass/sys/param.h#10 integrate .. //depot/projects/tcp_reass/sys/vimage.h#8 integrate .. //depot/projects/tcp_reass/vm/device_pager.c#6 integrate .. //depot/projects/tcp_reass/xen/evtchn/evtchn.c#4 integrate Differences ... ==== //depot/projects/tcp_reass/amd64/amd64/initcpu.c#4 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/initcpu.c,v 1.53 2009/01/12 19:17:35 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/initcpu.c,v 1.54 2009/07/22 14:32:38 kib Exp $"); #include "opt_cpu.h" @@ -65,6 +65,7 @@ u_int cpu_vendor_id; /* CPU vendor ID */ u_int cpu_fxsr; /* SSE enabled */ u_int cpu_mxcsr_mask; /* Valid bits in mxcsr */ +u_int cpu_clflush_line_size = 32; SYSCTL_UINT(_hw, OID_AUTO, via_feature_rng, CTLFLAG_RD, &via_feature_rng, 0, "VIA C3/C7 RNG feature available in CPU"); @@ -156,4 +157,12 @@ AMD64_CPU_FAMILY(cpu_id) == 0x6 && AMD64_CPU_MODEL(cpu_id) >= 0xf) init_via(); + + /* + * CPUID with %eax = 1, %ebx returns + * Bits 15-8: CLFLUSH line size + * (Value * 8 = cache line size in bytes) + */ + if ((cpu_feature & CPUID_CLFSH) != 0) + cpu_clflush_line_size = ((cpu_procinfo >> 8) & 0xff) * 8; } ==== //depot/projects/tcp_reass/amd64/amd64/pmap.c#10 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.664 2009/07/18 01:50:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.666 2009/07/22 14:32:38 kib Exp $"); /* * Manages physical address maps. @@ -231,6 +231,7 @@ vm_page_t m, vm_prot_t prot, vm_page_t mpte); static void pmap_fill_ptp(pt_entry_t *firstpte, pt_entry_t newpte); static void pmap_insert_pt_page(pmap_t pmap, vm_page_t mpte); +static void pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva); static boolean_t pmap_is_modified_pvh(struct md_page *pvh); static void pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode); static vm_page_t pmap_lookup_pt_page(pmap_t pmap, vm_offset_t va); @@ -921,6 +922,40 @@ } #endif /* !SMP */ +static void +pmap_invalidate_cache_range(vm_offset_t sva, vm_offset_t eva) +{ + + KASSERT((sva & PAGE_MASK) == 0, + ("pmap_invalidate_cache_range: sva not page-aligned")); + KASSERT((eva & PAGE_MASK) == 0, + ("pmap_invalidate_cache_range: eva not page-aligned")); + + if (cpu_feature & CPUID_SS) + ; /* If "Self Snoop" is supported, do nothing. */ + else if (cpu_feature & CPUID_CLFSH) { + + /* + * Otherwise, do per-cache line flush. Use the mfence + * instruction to insure that previous stores are + * included in the write-back. The processor + * propagates flush to other processors in the cache + * coherence domain. + */ + mfence(); + for (; eva < sva; eva += cpu_clflush_line_size) + clflush(eva); + mfence(); + } else { + + /* + * No targeted cache flush methods are supported by CPU, + * globally invalidate cache as a last resort. + */ + pmap_invalidate_cache(); + } +} + /* * Are we current address space or kernel? */ @@ -4256,7 +4291,8 @@ void * pmap_mapdev_attr(vm_paddr_t pa, vm_size_t size, int mode) { - vm_offset_t va, tmpva, offset; + vm_offset_t va, offset; + vm_size_t tmpsize; /* * If the specified range of physical addresses fits within the direct @@ -4273,16 +4309,10 @@ if (!va) panic("pmap_mapdev: Couldn't alloc kernel virtual memory"); pa = trunc_page(pa); - for (tmpva = va; size > 0; ) { - pmap_kenter_attr(tmpva, pa, mode); - size -= PAGE_SIZE; - tmpva += PAGE_SIZE; - pa += PAGE_SIZE; - } - pmap_invalidate_range(kernel_pmap, va, tmpva); - /* If "Self Snoop" is supported, do nothing. */ - if (!(cpu_feature & CPUID_SS)) - pmap_invalidate_cache(); + for (tmpsize = 0; tmpsize < size; tmpsize += PAGE_SIZE) + pmap_kenter_attr(va + tmpsize, pa + tmpsize, mode); + pmap_invalidate_range(kernel_pmap, va, va + tmpsize); + pmap_invalidate_cache_range(va, va + tmpsize); return ((void *)(va + offset)); } @@ -4381,9 +4411,12 @@ m->md.pat_mode = ma; /* - * Update the direct mapping and flush the cache. + * If "m" is a normal page, update its direct mapping. This update + * can be relied upon to perform any cache operations that are + * required for data coherence. */ - if (pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, + if ((m->flags & PG_FICTITIOUS) == 0 && + pmap_change_attr(PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)), PAGE_SIZE, m->md.pat_mode)) panic("memory attribute change on the direct map failed"); } @@ -4621,9 +4654,7 @@ */ if (changed) { pmap_invalidate_range(kernel_pmap, base, tmpva); - /* If "Self Snoop" is supported, do nothing. */ - if (!(cpu_feature & CPUID_SS)) - pmap_invalidate_cache(); + pmap_invalidate_cache_range(base, tmpva); } return (error); } ==== //depot/projects/tcp_reass/amd64/include/cpufunc.h#5 (text+ko) ==== @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.153 2009/04/11 14:01:01 ed Exp $ + * $FreeBSD: src/sys/amd64/include/cpufunc.h,v 1.154 2009/07/22 14:32:38 kib Exp $ */ /* @@ -100,6 +100,13 @@ } static __inline void +clflush(u_long addr) +{ + + __asm __volatile("clflush %0" : : "m" (*(char *)addr)); +} + +static __inline void disable_intr(void) { __asm __volatile("cli" : : : "memory"); @@ -267,6 +274,13 @@ } static __inline void +mfence(void) +{ + + __asm__ __volatile("mfence" : : : "memory"); +} + +static __inline void ia32_pause(void) { __asm __volatile("pause"); ==== //depot/projects/tcp_reass/amd64/include/md_var.h#4 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.85 2009/04/01 13:09:26 kib Exp $ + * $FreeBSD: src/sys/amd64/include/md_var.h,v 1.86 2009/07/22 14:32:38 kib Exp $ */ #ifndef _MACHINE_MD_VAR_H_ @@ -47,6 +47,7 @@ extern u_int amd_pminfo; extern u_int via_feature_rng; extern u_int via_feature_xcrypt; +extern u_int cpu_clflush_line_size; extern u_int cpu_fxsr; extern u_int cpu_high; extern u_int cpu_id; ==== //depot/projects/tcp_reass/arm/arm/busdma_machdep.c#5 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.47 2009/04/23 20:24:19 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.48 2009/07/20 07:53:07 raj Exp $"); /* * ARM bus dma support routines @@ -630,10 +630,6 @@ ((vm_offset_t)*vaddr & PAGE_MASK)); newmap->origbuffer = *vaddr; newmap->allocbuffer = tmpaddr; - cpu_idcache_wbinv_range((vm_offset_t)*vaddr, - dmat->maxsize); - cpu_l2cache_wbinv_range((vm_offset_t)*vaddr, - dmat->maxsize); *vaddr = tmpaddr; } else newmap->origbuffer = newmap->allocbuffer = NULL; ==== //depot/projects/tcp_reass/arm/arm/cpufunc.c#4 (text+ko) ==== @@ -45,7 +45,7 @@ * Created : 30/01/97 */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.26 2009/05/05 12:57:16 stas Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/cpufunc.c,v 1.27 2009/07/21 08:29:19 raj Exp $"); #include #include @@ -265,7 +265,7 @@ arm9_dcache_wbinv_all, /* dcache_wbinv_all */ arm9_dcache_wbinv_range, /* dcache_wbinv_range */ -/*XXX*/ arm9_dcache_wbinv_range, /* dcache_inv_range */ + arm9_dcache_inv_range, /* dcache_inv_range */ arm9_dcache_wb_range, /* dcache_wb_range */ arm9_idcache_wbinv_all, /* idcache_wbinv_all */ @@ -327,7 +327,7 @@ armv5_ec_dcache_wbinv_all, /* dcache_wbinv_all */ armv5_ec_dcache_wbinv_range, /* dcache_wbinv_range */ -/*XXX*/ armv5_ec_dcache_wbinv_range, /* dcache_inv_range */ + armv5_ec_dcache_inv_range, /* dcache_inv_range */ armv5_ec_dcache_wb_range, /* dcache_wb_range */ armv5_ec_idcache_wbinv_all, /* idcache_wbinv_all */ ==== //depot/projects/tcp_reass/arm/arm/pmap.c#8 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.111 2009/06/24 21:03:59 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.112 2009/07/20 07:53:07 raj Exp $"); #include #include #include @@ -2984,6 +2984,7 @@ pmap_free_pv_entry(pve); PMAP_UNLOCK(pmap_kernel()); vm_page_unlock_queues(); + va = va & ~PAGE_MASK; cpu_dcache_wbinv_range(va, PAGE_SIZE); cpu_l2cache_wbinv_range(va, PAGE_SIZE); cpu_tlb_flushD_SE(va); ==== //depot/projects/tcp_reass/arm/arm/vm_machdep.c#6 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.39 2009/06/24 21:00:13 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.40 2009/07/20 07:53:07 raj Exp $"); #include #include @@ -426,10 +426,15 @@ vm_offset_t tomap = arm_nocache_startaddr + i * PAGE_SIZE; void *ret = (void *)tomap; vm_paddr_t physaddr = vtophys((vm_offset_t)addr); + vm_offset_t vaddr = (vm_offset_t) addr; + vaddr = vaddr & ~PAGE_MASK; for (; tomap < (vm_offset_t)ret + size; tomap += PAGE_SIZE, - physaddr += PAGE_SIZE, i++) { + vaddr += PAGE_SIZE, physaddr += PAGE_SIZE, i++) { + cpu_idcache_wbinv_range(vaddr, PAGE_SIZE); + cpu_l2cache_wbinv_range(vaddr, PAGE_SIZE); pmap_kenter_nocache(tomap, physaddr); + cpu_tlb_flushID_SE(vaddr); arm_nocache_allocated[i / BITS_PER_INT] |= 1 << (i % BITS_PER_INT); } ==== //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c#5 (text+ko) ==== @@ -2360,6 +2360,15 @@ is_attr = ((zp->z_phys->zp_flags & ZFS_XATTR) && (ZTOV(zp)->v_type == VDIR)); +#ifdef __FreeBSD__ + /* + * In FreeBSD, we don't care about permissions of individual ADS. + * Note that not checking them is not just an optimization - without + * this shortcut, EA operations may bogusly fail with EACCES. + */ + if (zp->z_phys->zp_flags & ZFS_XATTR) + return (0); +#else /* * If attribute then validate against base file */ @@ -2385,6 +2394,7 @@ mode |= ACE_READ_NAMED_ATTRS; } } +#endif if ((error = zfs_zaccess_common(check_zp, mode, &working_mode, &check_privs, skipaclchk, cr)) == 0) { ==== //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 (text+ko) ==== @@ -831,8 +831,14 @@ *xvpp = NULL; + /* + * In FreeBSD, access checking for creating an EA is being done + * in zfs_setextattr(), + */ +#ifndef __FreeBSD__ if (error = zfs_zaccess(zp, ACE_WRITE_NAMED_ATTRS, 0, B_FALSE, cr)) return (error); +#endif tx = dmu_tx_create(zfsvfs->z_os); dmu_tx_hold_bonus(tx, zp->z_id); @@ -906,12 +912,14 @@ ASSERT(zp->z_phys->zp_xattr == 0); -#ifdef TODO if (!(flags & CREATE_XATTR_DIR)) { zfs_dirent_unlock(dl); +#ifdef __FreeBSD__ + return (ENOATTR); +#else return (ENOENT); +#endif } -#endif if (zfsvfs->z_vfs->vfs_flag & VFS_RDONLY) { zfs_dirent_unlock(dl); ==== //depot/projects/tcp_reass/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#6 (text+ko) ==== @@ -4502,6 +4502,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VREAD); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4523,6 +4528,8 @@ vp = nd.ni_vp; NDFREE(&nd, NDF_ONLY_PNBUF); if (error != 0) { + if (error == ENOENT) + error = ENOATTR; ZFS_EXIT(zfsvfs); return (error); } @@ -4564,6 +4571,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VWRITE); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4584,6 +4596,8 @@ vp = nd.ni_vp; NDFREE(&nd, NDF_ONLY_PNBUF); if (error != 0) { + if (error == ENOENT) + error = ENOATTR; ZFS_EXIT(zfsvfs); return (error); } @@ -4623,6 +4637,11 @@ vnode_t *xvp = NULL, *vp; int error, flags; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VWRITE); + if (error != 0) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, ap->a_name, attrname, sizeof(attrname)); if (error != 0) @@ -4631,7 +4650,7 @@ ZFS_ENTER(zfsvfs); error = zfs_lookup(ap->a_vp, NULL, &xvp, NULL, 0, ap->a_cred, td, - LOOKUP_XATTR); + LOOKUP_XATTR | CREATE_XATTR_DIR); if (error != 0) { ZFS_EXIT(zfsvfs); return (error); @@ -4690,6 +4709,11 @@ vnode_t *xvp = NULL, *vp; int done, error, eof, pos; + error = extattr_check_cred(ap->a_vp, ap->a_attrnamespace, + ap->a_cred, ap->a_td, VREAD); + if (error) + return (error); + error = zfs_create_attrname(ap->a_attrnamespace, "", attrprefix, sizeof(attrprefix)); if (error != 0) @@ -4698,9 +4722,18 @@ ZFS_ENTER(zfsvfs); + if (sizep != NULL) + *sizep = 0; + error = zfs_lookup(ap->a_vp, NULL, &xvp, NULL, 0, ap->a_cred, td, LOOKUP_XATTR); if (error != 0) { + /* + * ENOATTR means that the EA directory does not yet exist, + * i.e. there are no extended attributes there. + */ + if (error == ENOATTR) + error = 0; ZFS_EXIT(zfsvfs); return (error); } @@ -4722,9 +4755,6 @@ auio.uio_rw = UIO_READ; auio.uio_offset = 0; - if (sizep != NULL) - *sizep = 0; - do { u_char nlen; ==== //depot/projects/tcp_reass/conf/files#10 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1453 2009/07/14 22:48:30 rwatson Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1455 2009/07/21 12:32:46 mav Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1391,6 +1391,7 @@ dev/si/si_eisa.c optional si eisa dev/si/si_isa.c optional si isa dev/si/si_pci.c optional si pci +dev/siis/siis.c optional siis pci dev/sis/if_sis.c optional sis pci dev/sk/if_sk.c optional sk pci inet dev/smbus/smb.c optional smb @@ -1627,6 +1628,7 @@ dev/usb/wlan/if_rum.c optional rum dev/usb/wlan/if_uath.c optional uath dev/usb/wlan/if_ural.c optional ural +dev/usb/wlan/if_urtw.c optional urtw dev/usb/wlan/if_zyd.c optional zyd # # USB serial and parallel port drivers ==== //depot/projects/tcp_reass/dev/ath/ath_hal/ar5212/ar5212_recv.c#4 (text+ko) ==== @@ -14,7 +14,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c,v 1.2 2009/06/27 20:06:56 sam Exp $ + * $FreeBSD: src/sys/dev/ath/ath_hal/ar5212/ar5212_recv.c,v 1.3 2009/07/21 19:23:34 sam Exp $ */ #include "opt_ah.h" @@ -164,7 +164,7 @@ if (phybits & (AR_PHY_ERR_OFDM_TIMING|AR_PHY_ERR_CCK_TIMING)) bits |= HAL_RX_FILTER_PHYERR; if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport && - (OS_REG_READ(ah, AR_MISC_MODE) & AR_MISC_MODE_BSSID_MATCH_FORCE)) + (AH5212(ah)->ah_miscMode & AR_MISC_MODE_BSSID_MATCH_FORCE)) bits |= HAL_RX_FILTER_BSSID; return bits; } @@ -175,6 +175,7 @@ void ar5212SetRxFilter(struct ath_hal *ah, uint32_t bits) { + struct ath_hal_5212 *ahp = AH5212(ah); uint32_t phybits; OS_REG_WRITE(ah, AR_RX_FILTER, @@ -194,12 +195,11 @@ OS_REG_READ(ah, AR_RXCFG) &~ AR_RXCFG_ZLFDMA); } if (AH_PRIVATE(ah)->ah_caps.halBssidMatchSupport) { - uint32_t miscbits = OS_REG_READ(ah, AR_MISC_MODE); if (bits & HAL_RX_FILTER_BSSID) - miscbits |= AR_MISC_MODE_BSSID_MATCH_FORCE; + ahp->ah_miscMode |= AR_MISC_MODE_BSSID_MATCH_FORCE; else - miscbits &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; - OS_REG_WRITE(ah, AR_MISC_MODE, miscbits); + ahp->ah_miscMode &= ~AR_MISC_MODE_BSSID_MATCH_FORCE; + OS_REG_WRITE(ah, AR_MISC_MODE, ahp->ah_miscMode); } } ==== //depot/projects/tcp_reass/dev/ath/if_ath.c#9 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.261 2009/07/11 16:02:06 rpaulo Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ath/if_ath.c,v 1.262 2009/07/21 19:01:04 sam Exp $"); /* * Driver for the Atheros Wireless LAN controller. @@ -1023,6 +1023,8 @@ sc->sc_nvaps++; if (opmode == IEEE80211_M_STA) sc->sc_nstavaps++; + if (opmode == IEEE80211_M_MBSS) + sc->sc_nmeshvaps++; } switch (ic_opmode) { case IEEE80211_M_IBSS: @@ -1137,6 +1139,8 @@ vap->iv_opmode == IEEE80211_M_MBSS) { reclaim_address(sc, vap->iv_myaddr); ath_hal_setbssidmask(ah, sc->sc_hwbssidmask); + if (vap->iv_opmode == IEEE80211_M_MBSS) + sc->sc_nmeshvaps--; } if (vap->iv_opmode != IEEE80211_M_WDS) sc->sc_nvaps--; @@ -2381,7 +2385,7 @@ if (ic->ic_opmode == IEEE80211_M_HOSTAP && IEEE80211_IS_CHAN_ANYG(ic->ic_curchan)) rfilt |= HAL_RX_FILTER_BEACON; - if (ic->ic_opmode == IEEE80211_M_MBSS) { + if (sc->sc_nmeshvaps) { rfilt |= HAL_RX_FILTER_BEACON; if (sc->sc_hasbmatch) rfilt |= HAL_RX_FILTER_BSSID; ==== //depot/projects/tcp_reass/dev/ath/if_athvar.h#8 (text+ko) ==== @@ -26,7 +26,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. * - * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.89 2009/07/11 15:02:45 rpaulo Exp $ + * $FreeBSD: src/sys/dev/ath/if_athvar.h,v 1.90 2009/07/21 19:01:04 sam Exp $ */ /* @@ -203,6 +203,7 @@ int sc_debug; int sc_nvaps; /* # vaps */ int sc_nstavaps; /* # station vaps */ + int sc_nmeshvaps; /* # mbss vaps */ u_int8_t sc_hwbssidmask[IEEE80211_ADDR_LEN]; u_int8_t sc_nbssid0; /* # vap's using base mac */ uint32_t sc_bssidmask; /* bssid mask */ ==== //depot/projects/tcp_reass/dev/ciss/ciss.c#7 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.96 2009/07/10 08:18:08 scottl Exp $ + * $FreeBSD: src/sys/dev/ciss/ciss.c,v 1.97 2009/07/20 03:59:00 scottl Exp $ */ /* @@ -2687,7 +2687,7 @@ if (cr->cr_flags & CISS_REQ_DATAOUT) bus_dmamap_sync(sc->ciss_buffer_dmat, cr->cr_datamap, BUS_DMASYNC_PREWRITE); - if (nseg == 1) + if (nseg == 0) cr->cr_sg_tag = CISS_SG_NONE; else if (nseg == 1) cr->cr_sg_tag = CISS_SG_1; ==== //depot/projects/tcp_reass/dev/if_ndis/if_ndis.c#8 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.165 2009/06/26 11:45:06 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/if_ndis/if_ndis.c,v 1.166 2009/07/20 23:21:19 cokane Exp $"); #include #include @@ -2292,6 +2292,8 @@ ifp = sc->ifp; ic = ifp->if_l2com; vap = TAILQ_FIRST(&ic->ic_vaps); + if (vap == NULL) + return; if (!NDIS_INITIALIZED(sc)) { DPRINTF(("%s: NDIS not initialized\n", __func__)); ==== //depot/projects/tcp_reass/dev/mxge/if_mxge.c#9 (text+ko) ==== @@ -28,7 +28,7 @@ ***************************************************************************/ #include -__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.63 2009/06/26 11:45:06 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/mxge/if_mxge.c,v 1.64 2009/07/22 11:57:34 gallatin Exp $"); #include #include @@ -4014,6 +4014,7 @@ TUNABLE_INT_FETCH("hw.mxge.lro_cnt", &sc->lro_cnt); TUNABLE_INT_FETCH("hw.mxge.always_promisc", &mxge_always_promisc); TUNABLE_INT_FETCH("hw.mxge.rss_hash_type", &mxge_rss_hash_type); + TUNABLE_INT_FETCH("hw.mxge.rss_hashtype", &mxge_rss_hash_type); TUNABLE_INT_FETCH("hw.mxge.initial_mtu", &mxge_initial_mtu); if (sc->lro_cnt != 0) mxge_lro_cnt = sc->lro_cnt; ==== //depot/projects/tcp_reass/dev/pci/pci.c#7 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.385 2009/06/22 20:08:06 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.386 2009/07/21 19:06:39 marius Exp $"); #include "opt_bus.h" @@ -2352,7 +2352,7 @@ { pci_addr_t base, map, testval; pci_addr_t start, end, count; - int barlen, maprange, mapsize, type; + int barlen, basezero, maprange, mapsize, type; uint16_t cmd; struct resource *res; @@ -2365,6 +2365,11 @@ type = SYS_RES_IOPORT; mapsize = pci_mapsize(testval); base = pci_mapbase(map); +#ifdef __PCI_BAR_ZERO_VALID + basezero = 0; +#else + basezero = base == 0; +#endif maprange = pci_maprange(map); barlen = maprange == 64 ? 2 : 1; @@ -2393,17 +2398,17 @@ } /* - * If base is 0, then we have problems. It is best to ignore - * such entries for the moment. These will be allocated later if - * the driver specifically requests them. However, some - * removable busses look better when all resources are allocated, - * so allow '0' to be overriden. + * If base is 0, then we have problems if this architecture does + * not allow that. It is best to ignore such entries for the + * moment. These will be allocated later if the driver specifically + * requests them. However, some removable busses look better when + * all resources are allocated, so allow '0' to be overriden. * * Similarly treat maps whose values is the same as the test value * read back. These maps have had all f's written to them by the * BIOS in an attempt to disable the resources. */ - if (!force && (base == 0 || map == testval)) + if (!force && (basezero || map == testval)) return (barlen); if ((u_long)base != base) { device_printf(bus, @@ -2440,7 +2445,7 @@ } count = 1 << mapsize; - if (base == 0 || base == pci_mapbase(testval)) { + if (basezero || base == pci_mapbase(testval)) { start = 0; /* Let the parent decide. */ end = ~0ULL; } else { @@ -3683,6 +3688,7 @@ return; } +#ifndef __PCI_BAR_ZERO_VALID /* * If this is a BAR, clear the BAR so it stops * decoding before releasing the resource. @@ -3693,6 +3699,7 @@ pci_write_bar(child, rid, 0); break; } +#endif bus_release_resource(dev, type, rid, rle->res); } resource_list_delete(rl, type, rid); ==== //depot/projects/tcp_reass/dev/uart/uart_cpu_powerpc.c#5 (text) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_powerpc.c,v 1.7 2009/04/08 22:19:39 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_powerpc.c,v 1.8 2009/07/23 12:51:27 nwhitehorn Exp $"); #include "opt_platform.h" @@ -78,6 +78,27 @@ return (uart_getenv(devtype, di, class)); } #else +static int +ofw_get_uart_console(phandle_t opts, phandle_t *result, const char *inputdev, + const char *outputdev) +{ + char buf[64]; + phandle_t input; + + if (OF_getprop(opts, inputdev, buf, sizeof(buf)) == -1) + return (ENXIO); + input = OF_finddevice(buf); + if (input == -1) + return (ENXIO); + if (OF_getprop(opts, outputdev, buf, sizeof(buf)) == -1) + return (ENXIO); + if (OF_finddevice(buf) != input) + return (ENXIO); + + *result = input; + return (0); +} + int uart_cpu_getdev(int devtype, struct uart_devinfo *di) { @@ -94,15 +115,17 @@ return (ENXIO); switch (devtype) { case UART_DEV_CONSOLE: - if (OF_getprop(opts, "input-device", buf, sizeof(buf)) == -1) - return (ENXIO); - input = OF_finddevice(buf); - if (input == -1) - return (ENXIO); - if (OF_getprop(opts, "output-device", buf, sizeof(buf)) == -1) - return (ENXIO); - if (OF_finddevice(buf) != input) - return (ENXIO); + if (ofw_get_uart_console(opts, &input, "input-device", + "output-device")) { + /* + * At least some G5 Xserves require that we + * probe input-device-1 as well + */ + + if (ofw_get_uart_console(opts, &input, "input-device-1", + "output-device-1")) + return (ENXIO); + } break; case UART_DEV_DBGPORT: if (!getenv_string("hw.uart.dbgport", buf, sizeof(buf))) ==== //depot/projects/tcp_reass/fs/nfs/nfsport.h#5 (text+ko) ==== @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/fs/nfs/nfsport.h,v 1.13 2009/07/14 22:48:30 rwatson Exp $ + * $FreeBSD: src/sys/fs/nfs/nfsport.h,v 1.14 2009/07/22 14:37:53 rmacklem Exp $ */ #ifndef _NFS_NFSPORT_H_ @@ -911,6 +911,13 @@ #define NFSVNO_DELEGOK(v) (1) #endif +/* + * Define this as the flags argument for msleep() when catching signals + * while holding a resource that other threads would block for, such as + * a vnode lock. + */ +#define NFS_PCATCH (PCATCH | PBDRY) + #endif /* _KERNEL */ #endif /* _NFSPORT_NFS_H */ ==== //depot/projects/tcp_reass/fs/nfsclient/nfs_clbio.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clbio.c,v 1.8 2009/06/18 05:56:24 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clbio.c,v 1.9 2009/07/22 14:37:53 rmacklem Exp $"); #include #include @@ -1357,7 +1357,7 @@ sigset_t oldset; ncl_set_sigmask(td, &oldset); - bp = getblk(vp, bn, size, PCATCH, 0, 0); + bp = getblk(vp, bn, size, NFS_PCATCH, 0, 0); ncl_restore_sigmask(td, &oldset); while (bp == NULL) { if (newnfs_sigintr(nmp, td)) @@ -1396,7 +1396,7 @@ if ((nmp->nm_mountp->mnt_kern_flag & MNTK_UNMOUNTF)) intrflg = 1; if (intrflg) { - slpflag = PCATCH; + slpflag = NFS_PCATCH; slptimeo = 2 * hz; } else { slpflag = 0; @@ -1484,7 +1484,7 @@ } again: if (nmp->nm_flag & NFSMNT_INT) - slpflag = PCATCH; + slpflag = NFS_PCATCH; gotiod = FALSE; /* @@ -1553,7 +1553,7 @@ mtx_unlock(&ncl_iod_mutex); return (error2); } - if (slpflag == PCATCH) { + if (slpflag == NFS_PCATCH) { slpflag = 0; slptimeo = 2 * hz; } ==== //depot/projects/tcp_reass/fs/nfsclient/nfs_clrpcops.c#5 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clrpcops.c,v 1.3 2009/07/09 19:00:29 rmacklem Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clrpcops.c,v 1.4 2009/07/22 18:10:44 rmacklem Exp $"); /* * Rpc op calls, generally called from the vnode op calls or through the @@ -753,7 +753,7 @@ nfsattrbit_t attrbits; u_int8_t *cp = NULL, *cp2, addr[INET6_ADDRSTRLEN + 9]; u_short port; - int error, isinet6, callblen; + int error, isinet6 = 0, callblen; nfsquad_t confirm; u_int32_t lease; static u_int32_t rev = 0; ==== //depot/projects/tcp_reass/fs/nfsclient/nfs_clstate.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clstate.c,v 1.6 2009/07/09 19:00:29 rmacklem Exp $"); +__FBSDID("$FreeBSD: src/sys/fs/nfsclient/nfs_clstate.c,v 1.7 2009/07/22 14:32:28 rmacklem Exp $"); >>> TRUNCATED FOR MAIL (1000 lines) <<<