PERFORCE change 166455 for review
Andre Oppermann
andre at FreeBSD.org
Thu Jul 23 15:18:21 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=166455
Change 166455 by andre at 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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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 <sys/param.h>
#include <sys/systm.h>
@@ -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 <sys/cdefs.h>
-__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 <sys/cdefs.h>
-__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) <<<
More information about the p4-projects
mailing list