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

Attilio Rao attilio at FreeBSD.org
Sun Jul 8 23:17:04 UTC 2012


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;
 			}
 
 			/*


More information about the svn-src-user mailing list