From owner-svn-src-user@FreeBSD.ORG Sun Jul 8 23:17:04 2012 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 CC592106566B; Sun, 8 Jul 2012 23:17:04 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B42758FC0A; Sun, 8 Jul 2012 23:17:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q68NH4rs080185; Sun, 8 Jul 2012 23:17:04 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q68NH4Xb080177; Sun, 8 Jul 2012 23:17:04 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201207082317.q68NH4Xb080177@svn.freebsd.org> From: Attilio Rao Date: Sun, 8 Jul 2012 23:17:04 +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: r238267 - in user/attilio/vmcontention: gnu/usr.bin/cc/cc_tools sys/ia64/ia64 sys/ia64/include sys/netinet/ipfw sys/netinet6 sys/vm 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, 08 Jul 2012 23:17:04 -0000 Author: attilio Date: Sun Jul 8 23:17:04 2012 New Revision: 238267 URL: http://svn.freebsd.org/changeset/base/238267 Log: MFC Modified: user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h user/attilio/vmcontention/sys/ia64/ia64/machdep.c user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c user/attilio/vmcontention/sys/ia64/include/md_var.h user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c user/attilio/vmcontention/sys/netinet6/frag6.c user/attilio/vmcontention/sys/vm/vm_pageout.c Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/ (props changed) user/attilio/vmcontention/sys/ (props changed) Modified: user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h ============================================================================== --- user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/gnu/usr.bin/cc/cc_tools/auto-host.h Sun Jul 8 23:17:04 2012 (r238267) @@ -261,7 +261,7 @@ /* Define if your assembler supports R_PPC_REL16 relocs. */ #ifndef USED_FOR_TARGET -/* #undef HAVE_AS_REL16 */ +#define HAVE_AS_REL16 #endif Modified: user/attilio/vmcontention/sys/ia64/ia64/machdep.c ============================================================================== --- user/attilio/vmcontention/sys/ia64/ia64/machdep.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/ia64/ia64/machdep.c Sun Jul 8 23:17:04 2012 (r238267) @@ -506,6 +506,14 @@ cpu_pcpu_init(struct pcpu *pcpu, int cpu } void +cpu_pcpu_setup(struct pcpu *pc, u_int acpi_id, u_int sapic_id) +{ + + pc->pc_acpi_id = acpi_id; + pc->pc_md.lid = IA64_LID_SET_SAPIC_ID(sapic_id); +} + +void spinlock_enter(void) { struct thread *td; @@ -791,7 +799,7 @@ ia64_init(void) ia64_set_k4((u_int64_t)pcpup); pcpu_init(pcpup, 0, sizeof(pcpu0)); dpcpu_init(ia64_physmem_alloc(DPCPU_SIZE, PAGE_SIZE), 0); - PCPU_SET(md.lid, ia64_get_lid()); + cpu_pcpu_setup(pcpup, ~0U, ia64_get_lid()); PCPU_SET(curthread, &thread0); /* Modified: user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c ============================================================================== --- user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/ia64/ia64/mp_machdep.c Sun Jul 8 23:17:04 2012 (r238267) @@ -309,9 +309,8 @@ cpu_mp_add(u_int acpi_id, u_int id, u_in } else pc = pcpup; - pc->pc_acpi_id = acpi_id; - pc->pc_md.lid = IA64_LID_SET_SAPIC_ID(sapic_id); - + cpu_pcpu_setup(pc, acpi_id, sapic_id); + CPU_SET(pc->pc_cpuid, &all_cpus); } @@ -466,6 +465,7 @@ cpu_mp_unleash(void *dummy) */ ia64_bind_intr(); } +SYSINIT(start_aps, SI_SUB_KICK_SCHEDULER, SI_ORDER_ANY, cpu_mp_unleash, NULL); /* * send an IPI to a set of cpus. @@ -522,5 +522,3 @@ ipi_send(struct pcpu *cpu, int xiv) ia64_mf_a(); CTR3(KTR_SMP, "ipi_send(%p, %d): cpuid=%d", cpu, xiv, PCPU_GET(cpuid)); } - -SYSINIT(start_aps, SI_SUB_SMP, SI_ORDER_FIRST, cpu_mp_unleash, NULL); Modified: user/attilio/vmcontention/sys/ia64/include/md_var.h ============================================================================== --- user/attilio/vmcontention/sys/ia64/include/md_var.h Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/ia64/include/md_var.h Sun Jul 8 23:17:04 2012 (r238267) @@ -61,6 +61,7 @@ ia64_bsp_adjust(uint64_t bsp, int nslots #ifdef _KERNEL struct _special; +struct pcpu; struct thread; struct trapframe; @@ -80,6 +81,7 @@ void *acpi_find_table(const char *sig); void busdma_swi(void); int copyout_regstack(struct thread *, uint64_t *, uint64_t *); void cpu_mp_add(u_int, u_int, u_int); +void cpu_pcpu_setup(struct pcpu *, u_int, u_int); int do_ast(struct trapframe *); void ia32_trap(int, struct trapframe *); int ia64_count_cpus(void); Modified: user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c ============================================================================== --- user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/netinet/ipfw/ip_fw_table.c Sun Jul 8 23:17:04 2012 (r238267) @@ -344,9 +344,12 @@ ipfw_del_table_entry(struct ip_fw_chain struct xaddr_iface ifname, ifmask; memset(&ifname, 0, sizeof(ifname)); + /* Include last \0 into comparison */ + mlen++; + /* Set 'total' structure length */ - KEY_LEN(ifname) = mlen; - KEY_LEN(ifmask) = mlen; + KEY_LEN(ifname) = KEY_LEN_IFACE + mlen; + KEY_LEN(ifmask) = KEY_LEN_IFACE + mlen; /* Assume direct match */ /* FIXME: Add interface pattern matching */ #if 0 @@ -569,7 +572,7 @@ ipfw_lookup_table_extended(struct ip_fw_ case IPFW_TABLE_INTERFACE: KEY_LEN(iface) = KEY_LEN_IFACE + - strlcpy(iface.ifname, (char *)paddr, IF_NAMESIZE); + strlcpy(iface.ifname, (char *)paddr, IF_NAMESIZE) + 1; /* Assume direct match */ /* FIXME: Add interface pattern matching */ xent = (struct table_xentry *)(rnh->rnh_lookup(&iface, NULL, rnh)); Modified: user/attilio/vmcontention/sys/netinet6/frag6.c ============================================================================== --- user/attilio/vmcontention/sys/netinet6/frag6.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/netinet6/frag6.c Sun Jul 8 23:17:04 2012 (r238267) @@ -221,6 +221,19 @@ frag6_input(struct mbuf **mp, int *offp, /* offset now points to data portion */ offset += sizeof(struct ip6_frag); + /* + * XXX-BZ RFC XXXX (draft-gont-6man-ipv6-atomic-fragments) + * Handle "atomic" fragments (offset and m bit set to 0) upfront, + * unrelated to any reassembly. Just skip the fragment header. + */ + if ((ip6f->ip6f_offlg & ~IP6F_RESERVED_MASK) == 0) { + /* XXX-BZ we want dedicated counters for this. */ + V_ip6stat.ip6s_reassembled++; + in6_ifstat_inc(dstifp, ifs6_reass_ok); + *offp = offset; + return (ip6f->ip6f_nxt); + } + IP6Q_LOCK(); /* Modified: user/attilio/vmcontention/sys/vm/vm_pageout.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_pageout.c Sun Jul 8 21:21:45 2012 (r238266) +++ user/attilio/vmcontention/sys/vm/vm_pageout.c Sun Jul 8 23:17:04 2012 (r238267) @@ -1030,7 +1030,6 @@ rescan0: ++pageout_lock_miss; if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; - vm_page_lock_queues(); goto unlock_and_continue; } KASSERT(mp != NULL, @@ -1041,7 +1040,6 @@ rescan0: if (vget(vp, LK_EXCLUSIVE | LK_TIMELOCK, curthread)) { VM_OBJECT_LOCK(object); - vm_page_lock_queues(); ++pageout_lock_miss; if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; @@ -1083,14 +1081,14 @@ rescan0: * be undergoing I/O, so skip it */ if (m->hold_count) { - vm_page_lock_queues(); - queues_locked = TRUE; vm_page_unlock(m); vm_page_requeue(m); if (object->flags & OBJ_MIGHTBEDIRTY) vnodes_skipped++; goto unlock_and_continue; } + vm_page_unlock_queues(); + queues_locked = FALSE; } /*