Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 8 Dec 2008 14:01:17 GMT
From:      Paolo Pisati <piso@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 154339 for review
Message-ID:  <200812081401.mB8E1H4M060225@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=154339

Change 154339 by piso@piso_newluxor on 2008/12/08 14:00:30

	IFC@154338

Affected files ...

.. //depot/projects/soc2005/libalias/contrib/ncurses/FREEBSD-vendor#5 delete
.. //depot/projects/soc2005/libalias/lib/libpmc/pmc.core.3#2 integrate
.. //depot/projects/soc2005/libalias/share/man/man4/man4.i386/sbni.4#2 integrate
.. //depot/projects/soc2005/libalias/sys/compat/linprocfs/linprocfs.c#15 integrate
.. //depot/projects/soc2005/libalias/sys/dev/cnw/if_cnw.c#6 delete
.. //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbni.c#4 integrate
.. //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbni_isa.c#3 integrate
.. //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbni_pci.c#3 integrate
.. //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbnireg.h#2 integrate
.. //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbnivar.h#2 integrate
.. //depot/projects/soc2005/libalias/sys/fs/procfs/procfs_map.c#5 integrate
.. //depot/projects/soc2005/libalias/sys/kern/kern_proc.c#15 integrate
.. //depot/projects/soc2005/libalias/sys/modules/arl/Makefile#4 delete
.. //depot/projects/soc2005/libalias/sys/modules/ata/ata/Makefile#4 delete
.. //depot/projects/soc2005/libalias/sys/modules/ath_hal/Makefile#5 delete
.. //depot/projects/soc2005/libalias/sys/modules/cnw/Makefile#4 delete
.. //depot/projects/soc2005/libalias/sys/modules/oltr/Makefile#4 delete
.. //depot/projects/soc2005/libalias/sys/modules/pecoff/Makefile#4 delete
.. //depot/projects/soc2005/libalias/sys/modules/sbni/Makefile#4 integrate
.. //depot/projects/soc2005/libalias/sys/modules/sbsh/Makefile#4 delete
.. //depot/projects/soc2005/libalias/sys/pci/if_xl.c#11 delete
.. //depot/projects/soc2005/libalias/sys/pci/if_xlreg.h#7 delete
.. //depot/projects/soc2005/libalias/sys/sun4v/sun4v/clock.c#3 branch

Differences ...

==== //depot/projects/soc2005/libalias/lib/libpmc/pmc.core.3#2 (text+ko) ====

@@ -21,7 +21,7 @@
 .\" out of the use of this software, even if advised of the possibility of
 .\" such damage.
 .\"
-.\" $FreeBSD: src/lib/libpmc/pmc.core.3,v 1.6 2008/11/26 03:48:20 jkoshy Exp $
+.\" $FreeBSD: src/lib/libpmc/pmc.core.3,v 1.7 2008/12/08 12:28:48 jkoshy Exp $
 .\"
 .Dd November 12, 2008
 .Os
@@ -730,6 +730,58 @@
 .It Li interrupts Ta Li HW_Int_Rx
 .It Li unhalted-cycles Ta (unsupported)
 .El
+.Sh PROCESSOR ERRATA
+The following errata affect performance measurement on these
+processors.
+These errata are documented in
+.Rs
+.%T "Intel® CoreTM Duo Processor and Intel® CoreTM Solo Processor on 65 nm Process"
+.%B "Specification Update"
+.%N "Order Number 309222-017"
+.%D July 2008
+.%Q "Intel Corporation"
+.Re
+.Bl -tag -width indent -compact
+.It AE19
+Data prefetch performance monitoring events can only be enabled
+on a single core.
+.It AE25
+Performance monitoring counters that count external bus events
+may report incorrect values after processor power state transitions.
+.It AE28
+Performance monitoring events for retired floating point operations
+(C1H) may not be accurate.
+.It AE29
+DR3 address match on MOVD/MOVQ/MOVNTQ memory store
+instruction may incorrectly increment performance monitoring count
+for saturating simd instructions retired (Event CFH).
+.It AE33
+Hardware prefetch performance monitoring events may be counted
+inaccurately.
+.It AE36
+The
+.Li CPU_CLK_UNHALTED
+performance monitoring event (Event 3CH) counts
+clocks when the processor is in the C1/C2 processor power states.
+.It AE39
+Certain performance monitoring counters related to bus, L2 cache
+and power management are inaccurate.
+.It AE51
+Performance monitoring events for retired instructions (Event C0H) may
+not be accurate.
+.It AE67
+Performance monitoring event
+.Li FP_ASSIST
+may not be accurate.
+.It AE78
+Performance monitoring event for hardware prefetch requests (Event
+4EH) and hardware prefetch request cache misses (Event 4FH) may not be
+accurate.
+.It AE82
+Performance monitoring event
+.Li FP_MMX_TRANS_TO_MMX
+may not count some transitions.
+.El
 .Sh SEE ALSO
 .Xr pmc 3 ,
 .Xr pmc.atom 3 ,

==== //depot/projects/soc2005/libalias/share/man/man4/man4.i386/sbni.4#2 (text+ko) ====


==== //depot/projects/soc2005/libalias/sys/compat/linprocfs/linprocfs.c#15 (text+ko) ====

@@ -42,7 +42,7 @@
 #include "opt_compat.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.128 2008/12/02 21:37:28 bz Exp $");
+__FBSDID("$FreeBSD: src/sys/compat/linprocfs/linprocfs.c,v 1.130 2008/12/08 13:15:31 kib Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>
@@ -273,8 +273,7 @@
 		/* XXX per-cpu vendor / class / model / id? */
 	}
 
-	sbuf_cat(sb,
-	    "flags\t\t:");
+	sbuf_cat(sb, "flags\t\t:");
 
 	if (!strcmp(cpu_vendor, "AuthenticAMD") && (class < 6)) {
 		flags[16] = "fcmov";
@@ -876,10 +875,12 @@
 linprocfs_doprocmaps(PFS_FILL_ARGS)
 {
 	vm_map_t map = &p->p_vmspace->vm_map;
-	vm_map_entry_t entry;
+	vm_map_entry_t entry, tmp_entry;
 	vm_object_t obj, tobj, lobj;
-	vm_offset_t saved_end;
+	vm_offset_t e_start, e_end;
 	vm_ooffset_t off = 0;
+	vm_prot_t e_prot;
+	unsigned int last_timestamp;
 	char *name = "", *freename = NULL;
 	ino_t ino;
 	int ref_count, shadow_count, flags;
@@ -905,7 +906,9 @@
 		freename = NULL;
 		if (entry->eflags & MAP_ENTRY_IS_SUB_MAP)
 			continue;
-		saved_end = entry->end;
+		e_prot = entry->protection;
+		e_start = entry->start;
+		e_end = entry->end;
 		obj = entry->object.vm_object;
 		for (lobj = tobj = obj; tobj; tobj = tobj->backing_object) {
 			VM_OBJECT_LOCK(tobj);
@@ -913,6 +916,8 @@
 				VM_OBJECT_UNLOCK(lobj);
 			lobj = tobj;
 		}
+		last_timestamp = map->timestamp;
+		vm_map_unlock_read(map);
 		ino = 0;
 		if (lobj) {
 			off = IDX_TO_OFF(lobj->size);
@@ -950,10 +955,10 @@
 		 */
 		error = sbuf_printf(sb,
 		    "%08lx-%08lx %s%s%s%s %08lx %02x:%02x %lu%s%s\n",
-		    (u_long)entry->start, (u_long)entry->end,
-		    (entry->protection & VM_PROT_READ)?"r":"-",
-		    (entry->protection & VM_PROT_WRITE)?"w":"-",
-		    (entry->protection & VM_PROT_EXECUTE)?"x":"-",
+		    (u_long)e_start, (u_long)e_end,
+		    (e_prot & VM_PROT_READ)?"r":"-",
+		    (e_prot & VM_PROT_WRITE)?"w":"-",
+		    (e_prot & VM_PROT_EXECUTE)?"x":"-",
 		    "p",
 		    (u_long)off,
 		    0,
@@ -968,6 +973,16 @@
 			error = 0;
 			break;
 		}
+		vm_map_lock_read(map);
+		if (last_timestamp + 1 != map->timestamp) {
+			/*
+			 * Look again for the entry because the map was
+			 * modified while it was unlocked.  Specifically,
+			 * the entry may have been clipped, merged, or deleted.
+			 */
+			vm_map_lookup_entry(map, e_end - 1, &tmp_entry);
+			entry = tmp_entry;
+		}
 	}
 	vm_map_unlock_read(map);
 

==== //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbni.c#4 (text+ko) ====


==== //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbni_isa.c#3 (text+ko) ====


==== //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbni_pci.c#3 (text+ko) ====


==== //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbnireg.h#2 (text+ko) ====


==== //depot/projects/soc2005/libalias/sys/dev/sbni/if_sbnivar.h#2 (text+ko) ====


==== //depot/projects/soc2005/libalias/sys/fs/procfs/procfs_map.c#5 (text+ko) ====

@@ -32,7 +32,7 @@
  *
  *	@(#)procfs_status.c	8.3 (Berkeley) 2/17/94
  *
- * $FreeBSD: src/sys/fs/procfs/procfs_map.c,v 1.43 2008/11/04 19:04:01 jhb Exp $
+ * $FreeBSD: src/sys/fs/procfs/procfs_map.c,v 1.45 2008/12/08 13:15:31 kib Exp $
  */
 
 #include "opt_compat.h"
@@ -82,11 +82,12 @@
 int
 procfs_doprocmap(PFS_FILL_ARGS)
 {
-	int error, vfslocked;
 	vm_map_t map = &p->p_vmspace->vm_map;
-	vm_map_entry_t entry;
+	vm_map_entry_t entry, tmp_entry;
 	struct vnode *vp;
 	char *fullpath, *freepath;
+	int error, vfslocked;
+	unsigned int last_timestamp;
 #ifdef COMPAT_IA32
 	int wrap32 = 0;
 #endif
@@ -113,13 +114,19 @@
 	     entry = entry->next) {
 		vm_object_t obj, tobj, lobj;
 		int ref_count, shadow_count, flags;
-		vm_offset_t addr;
+		vm_offset_t e_start, e_end, addr;
 		int resident, privateresident;
 		char *type;
+		vm_eflags_t e_eflags;
+		vm_prot_t e_prot;
 
 		if (entry->eflags & MAP_ENTRY_IS_SUB_MAP)
 			continue;
 
+		e_eflags = entry->eflags;
+		e_prot = entry->protection;
+		e_start = entry->start;
+		e_end = entry->end;
 		privateresident = 0;
 		obj = entry->object.vm_object;
 		if (obj != NULL) {
@@ -143,11 +150,13 @@
 				VM_OBJECT_UNLOCK(lobj);
 			lobj = tobj;
 		}
+		last_timestamp = map->timestamp;
+		vm_map_unlock_read(map);
 
 		freepath = NULL;
 		fullpath = "-";
 		if (lobj) {
-			switch(lobj->type) {
+			switch (lobj->type) {
 			default:
 			case OBJT_DEFAULT:
 				type = "default";
@@ -193,19 +202,19 @@
 		 */
 		error = sbuf_printf(sb,
 		    "0x%lx 0x%lx %d %d %p %s%s%s %d %d 0x%x %s %s %s %s\n",
-			(u_long)entry->start, (u_long)entry->end,
+			(u_long)e_start, (u_long)e_end,
 			resident, privateresident,
 #ifdef COMPAT_IA32
 			wrap32 ? NULL : obj,	/* Hide 64 bit value */
 #else
 			obj,
 #endif
-			(entry->protection & VM_PROT_READ)?"r":"-",
-			(entry->protection & VM_PROT_WRITE)?"w":"-",
-			(entry->protection & VM_PROT_EXECUTE)?"x":"-",
+			(e_prot & VM_PROT_READ)?"r":"-",
+			(e_prot & VM_PROT_WRITE)?"w":"-",
+			(e_prot & VM_PROT_EXECUTE)?"x":"-",
 			ref_count, shadow_count, flags,
-			(entry->eflags & MAP_ENTRY_COW)?"COW":"NCOW",
-			(entry->eflags & MAP_ENTRY_NEEDS_COPY)?"NC":"NNC",
+			(e_eflags & MAP_ENTRY_COW)?"COW":"NCOW",
+			(e_eflags & MAP_ENTRY_NEEDS_COPY)?"NC":"NNC",
 			type, fullpath);
 
 		if (freepath != NULL)
@@ -215,6 +224,16 @@
 			error = 0;
 			break;
 		}
+		vm_map_lock_read(map);
+		if (last_timestamp + 1 != map->timestamp) {
+			/*
+			 * Look again for the entry because the map was
+			 * modified while it was unlocked.  Specifically,
+			 * the entry may have been clipped, merged, or deleted.
+			 */
+			vm_map_lookup_entry(map, e_end - 1, &tmp_entry);
+			entry = tmp_entry;
+		}
 	}
 	vm_map_unlock_read(map);
 	return (error);

==== //depot/projects/soc2005/libalias/sys/kern/kern_proc.c#15 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.274 2008/12/05 20:50:24 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.275 2008/12/08 12:29:30 kib Exp $");
 
 #include "opt_compat.h"
 #include "opt_ddb.h"
@@ -1412,13 +1412,32 @@
 			lobj = tobj;
 		}
 
+		kve->kve_start = (void*)entry->start;
+		kve->kve_end = (void*)entry->end;
+		kve->kve_offset = (off_t)entry->offset;
+
+		if (entry->protection & VM_PROT_READ)
+			kve->kve_protection |= KVME_PROT_READ;
+		if (entry->protection & VM_PROT_WRITE)
+			kve->kve_protection |= KVME_PROT_WRITE;
+		if (entry->protection & VM_PROT_EXECUTE)
+			kve->kve_protection |= KVME_PROT_EXEC;
+
+		if (entry->eflags & MAP_ENTRY_COW)
+			kve->kve_flags |= KVME_FLAG_COW;
+		if (entry->eflags & MAP_ENTRY_NEEDS_COPY)
+			kve->kve_flags |= KVME_FLAG_NEEDS_COPY;
+
+		last_timestamp = map->timestamp;
+		vm_map_unlock_read(map);
+
 		kve->kve_fileid = 0;
 		kve->kve_fsid = 0;
 		freepath = NULL;
 		fullpath = "";
 		if (lobj) {
 			vp = NULL;
-			switch(lobj->type) {
+			switch (lobj->type) {
 			case OBJT_DEFAULT:
 				kve->kve_type = KVME_TYPE_DEFAULT;
 				break;
@@ -1468,28 +1487,10 @@
 			kve->kve_shadow_count = 0;
 		}
 
-		kve->kve_start = (void*)entry->start;
-		kve->kve_end = (void*)entry->end;
-		kve->kve_offset = (off_t)entry->offset;
-
-		if (entry->protection & VM_PROT_READ)
-			kve->kve_protection |= KVME_PROT_READ;
-		if (entry->protection & VM_PROT_WRITE)
-			kve->kve_protection |= KVME_PROT_WRITE;
-		if (entry->protection & VM_PROT_EXECUTE)
-			kve->kve_protection |= KVME_PROT_EXEC;
-
-		if (entry->eflags & MAP_ENTRY_COW)
-			kve->kve_flags |= KVME_FLAG_COW;
-		if (entry->eflags & MAP_ENTRY_NEEDS_COPY)
-			kve->kve_flags |= KVME_FLAG_NEEDS_COPY;
-
 		strlcpy(kve->kve_path, fullpath, sizeof(kve->kve_path));
 		if (freepath != NULL)
 			free(freepath, M_TEMP);
 
-		last_timestamp = map->timestamp;
-		vm_map_unlock_read(map);
 		error = SYSCTL_OUT(req, kve, sizeof(*kve));
 		vm_map_lock_read(map);
 		if (error)
@@ -1577,13 +1578,32 @@
 			lobj = tobj;
 		}
 
+		kve->kve_start = entry->start;
+		kve->kve_end = entry->end;
+		kve->kve_offset = entry->offset;
+
+		if (entry->protection & VM_PROT_READ)
+			kve->kve_protection |= KVME_PROT_READ;
+		if (entry->protection & VM_PROT_WRITE)
+			kve->kve_protection |= KVME_PROT_WRITE;
+		if (entry->protection & VM_PROT_EXECUTE)
+			kve->kve_protection |= KVME_PROT_EXEC;
+
+		if (entry->eflags & MAP_ENTRY_COW)
+			kve->kve_flags |= KVME_FLAG_COW;
+		if (entry->eflags & MAP_ENTRY_NEEDS_COPY)
+			kve->kve_flags |= KVME_FLAG_NEEDS_COPY;
+
+		last_timestamp = map->timestamp;
+		vm_map_unlock_read(map);
+
 		kve->kve_fileid = 0;
 		kve->kve_fsid = 0;
 		freepath = NULL;
 		fullpath = "";
 		if (lobj) {
 			vp = NULL;
-			switch(lobj->type) {
+			switch (lobj->type) {
 			case OBJT_DEFAULT:
 				kve->kve_type = KVME_TYPE_DEFAULT;
 				break;
@@ -1633,28 +1653,10 @@
 			kve->kve_shadow_count = 0;
 		}
 
-		kve->kve_start = entry->start;
-		kve->kve_end = entry->end;
-		kve->kve_offset = entry->offset;
-
-		if (entry->protection & VM_PROT_READ)
-			kve->kve_protection |= KVME_PROT_READ;
-		if (entry->protection & VM_PROT_WRITE)
-			kve->kve_protection |= KVME_PROT_WRITE;
-		if (entry->protection & VM_PROT_EXECUTE)
-			kve->kve_protection |= KVME_PROT_EXEC;
-
-		if (entry->eflags & MAP_ENTRY_COW)
-			kve->kve_flags |= KVME_FLAG_COW;
-		if (entry->eflags & MAP_ENTRY_NEEDS_COPY)
-			kve->kve_flags |= KVME_FLAG_NEEDS_COPY;
-
 		strlcpy(kve->kve_path, fullpath, sizeof(kve->kve_path));
 		if (freepath != NULL)
 			free(freepath, M_TEMP);
 
-		last_timestamp = map->timestamp;
-		vm_map_unlock_read(map);
 		/* Pack record size down */
 		kve->kve_structsize = offsetof(struct kinfo_vmentry, kve_path) +
 		    strlen(kve->kve_path) + 1;

==== //depot/projects/soc2005/libalias/sys/modules/sbni/Makefile#4 (text+ko) ====




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812081401.mB8E1H4M060225>