rpms/oprofile/devel oprofile-0.9.1-xen.patch, 1.3, 1.4 oprofile.spec, 1.54, 1.55

William Eden Cohen (wcohen) fedora-extras-commits at redhat.com
Wed Jul 25 19:39:31 UTC 2007


Author: wcohen

Update of /cvs/pkgs/rpms/oprofile/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv6062

Modified Files:
	oprofile-0.9.1-xen.patch oprofile.spec 
Log Message:
 Re-enable xen patch.



oprofile-0.9.1-xen.patch:

Index: oprofile-0.9.1-xen.patch
===================================================================
RCS file: /cvs/pkgs/rpms/oprofile/devel/oprofile-0.9.1-xen.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- oprofile-0.9.1-xen.patch	22 Sep 2006 18:17:22 -0000	1.3
+++ oprofile-0.9.1-xen.patch	25 Jul 2007 19:39:28 -0000	1.4
@@ -1,6 +1,237 @@
-diff -urN oprofile-0.9.1-xenact/daemon/init.c oprofile-0.9.1-xenpass/daemon/init.c
---- oprofile-0.9.1-xenact/daemon/init.c	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/init.c	2006-09-19 10:39:44.000000000 -0400
+--- oprofile-0.9.3/utils/opcontrol.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/utils/opcontrol	2007-07-25 15:28:20.000000000 -0400
+@@ -144,9 +144,16 @@
+    --cpu-buffer-size=num         per-cpu buffer size in units (2.6 only)
+    --note-table-size             kernel notes buffer size in notes units (2.4 only)
+ 
+-   --xen                         Xen image (for Xen only)
+-   --active-domains=<list>       List of domains in profiling session (for Xen only)
+-                                 (list contains domain ids separated by commas)
++   --xen=file                    Xen image (for Xen only)
++   --active-domains=id[,ids]     list of domains in multiple domain profiling session (Xen)
++                                 (detailed profiling of user level and kernel modules code)
++                                 (requires running oprofile on these domains)
++   --passive-domains=id[,ids]    list of domains to be profiled (Xen).
++     or --domains=id[,ids]       (coarse profiling of user level and kernel modules code)
++                                 (no need to run oprofile on these domains)
++   --passive-images=file[,files] list of kernel images associated with each passive domain
++     or 
++   --domain-images=file[,files]
+ " >&2
+ }
+ 
+@@ -289,6 +296,9 @@
+ 	SETUP_DIR="/root/.oprofile"
+ 	SETUP_FILE="$SETUP_DIR/daemonrc"
+ 
++	# location for passing info about passive domains to daemon
++	PASSIVE_SETUP_FILE="$SETUP_DIR/xendomain.setup"
++
+ 	# initialize daemon vars
+ 	decide_oprofile_device_mount
+ 	CPUTYPE=`cat $MOUNT/cpu_type`
+@@ -433,7 +443,7 @@
+ }
+ 
+ 
+-check_valid_args()
++check_valid_vmlinux()
+ {
+ 	if test -z "$VMLINUX"; then
+ 		echo "No vmlinux file specified. You must specify the correct vmlinux file, e.g." >&2
+@@ -454,8 +464,12 @@
+ 
+ 	echo "The specified vmlinux file \"$VMLINUX\" doesn't exist." >&2
+ 	exit 1
++}
++
+ 
+ # similar check for Xen image
++check_valid_xen()
++{
+ 	if test -f "$XENIMAGE"; then
+ 		return
+ 	fi
+@@ -511,6 +525,76 @@
+ 	fi
+ }
+  
++set_passive_domain()
++{
++	DOMAIN_ID=$1
++	FILE_IMAGE=$2
++	XEN_IMAGE=$3
++
++	if test "$FILE_IMAGE" = "none"; then
++		RANGE="0,0"
++		FILE_IMAGE="domain$DOMAIN_ID-kernel"
++	else
++		# Find VMA range for passive domain kernel image 
++		range_info=`objdump -h $FILE_IMAGE 2>/dev/null | grep " .text "`
++		tmp1=`echo $range_info | awk '{print $4}'`	
++		tmp_length=`echo $range_info | awk  '{print $3}'`
++		tmp2=`objdump -h $FILE_IMAGE --adjust-vma=0x$tmp_length 2>/dev/null | grep " .text " | awk  '{print $4}'`
++
++		if test -z "$tmp1" -o -z "$tmp2"; then
++			echo "The specified file $FILE_IMAGE does not seem to be valid" >&2
++			echo "Make sure you are using the non-compressed image file (e.g. vmlinux not vmlinuz)" >&2
++			vecho "found start as \"$tmp1\", end as \"$tmp2\"" >&2
++			exit 1
++		fi
++		RANGE="`echo $tmp1`,`echo $tmp2`"
++	fi
++	echo " $DOMAIN_ID $FILE_IMAGE $RANGE $XEN_IMAGE" >> $PASSIVE_SETUP_FILE
++}
++
++
++set_passive_domain_config()
++{
++
++	create_dir "$SETUP_DIR"
++
++	touch $PASSIVE_SETUP_FILE
++	chmod 644 $PASSIVE_SETUP_FILE
++	>$PASSIVE_SETUP_FILE
++
++	NDOMAINS=`echo "$PASSIVE_DOMAINS" | awk -F',' '{print NF}'`
++
++	if test -n "$PASSIVE_IMAGES"; then
++		NIMAGES=`echo "$PASSIVE_IMAGES" | awk -F',' '{print NF}'`
++		if [ $NDOMAINS != $NIMAGES ]; then
++			echo "# of passive domains and # of passive images doesn't match." >&2
++			do_help
++			exit 1
++		fi
++
++		for (( i=1; i<=$NDOMAINS; i++ )); do
++			ID=`echo "$PASSIVE_DOMAINS" | awk -F"," '{print $'$i'}'`
++			FILE=`echo "$PASSIVE_IMAGES" | awk -F',' '{print $'$i'}'`
++			if test ! -f "$FILE"; then
++				echo "Image $FILE for passive domain $ID not found." >&2
++				return 1
++			fi
++			LNK_KERNEL=/boot/domain$ID-kernel
++			ln -sf $FILE $LNK_KERNEL
++			LNK_XEN=/boot/domain$ID-xen
++			ln -sf $XENIMAGE $LNK_XEN
++			set_passive_domain $ID $LNK_KERNEL $LNK_XEN 
++		done
++	else
++			for (( i=1; i<=$NDOMAINS; i++ )); do
++				ID=`echo "$PASSIVE_DOMAINS" | awk -F"," '{print $'$i'}'`
++				LNK_XEN=/boot/domain$ID-xen
++				set_passive_domain $ID none $LNK_XEN
++		done 
++
++	fi
++}
++
+  
+ # validate --separate= parameters. This function is called with IFS=,
+ # so on each argument is splitted
+@@ -825,6 +909,16 @@
+ 				ACTIVE_DOMAINS=$val
+ 				DO_SETUP=yes
+ 				;;
++			--passive-domains|--domains)
++				error_if_empty $arg $val
++				PASSIVE_DOMAINS=$val
++				DO_SETUP=yes
++				;;
++			--passive-images|--domain-images)
++				error_if_empty $arg $val
++				PASSIVE_IMAGES=$val
++				DO_SETUP=yes
++				;;
+ 			--note-table-size)
+ 				error_if_empty $arg $val
+ 				if test "$KERNEL_SUPPORT" = "yes"; then
+@@ -897,6 +991,16 @@
+ 			exit 1
+ 		fi
+ 	fi
++
++	if test -n "$ACTIVE_DOMAINS" -a "$START_DAEMON" != "yes"; then
++		echo "Option \"--active-domains\" can only be used with option \"-start-daemon\"." >&2
++		exit 1
++	fi
++
++	if test -n "$PASSIVE_DOMAINS" -a "$START_DAEMON" != "yes" -a "$START" != "yes"; then
++		echo "Option \"--passive-domains\" or "--domains" can only be used with option \"--start-daemon\" or \"--start\"." >&2
++		exit 1
++	fi
+ }
+ 
+ 
+@@ -1167,6 +1271,15 @@
+ 		fi
+ 	fi
+ 
++	if test -n "$PASSIVE_DOMAINS"; then
++		if test "$KERNEL_SUPPORT" = "yes"; then
++			echo $PASSIVE_DOMAINS >$MOUNT/passive_domains
++			set_passive_domain_config
++		else
++			echo "passive-domains not supported - ignored" >&2
++		fi
++	fi
++	
+ 	if test $NOTE_SIZE != 0; then
+ 		set_param notesize $NOTE_SIZE
+ 	fi
+@@ -1284,7 +1397,8 @@
+ 	fi
+  
+ 	do_setup
+-	check_valid_args
++	check_valid_vmlinux
++	check_valid_xen
+ 	get_image_range "linux"
+ 	get_image_range "xen"
+ 	do_param_setup
+@@ -1312,6 +1426,10 @@
+ 		OPD_ARGS="$OPD_ARGS --image=$IMAGE_FILTER"
+ 	fi
+ 
++	if ! test -z "$PASSIVE_DOMAINS"; then
++		OPD_ARGS="$OPD_ARGS --xen-passive-setup=$PASSIVE_SETUP_FILE"
++	fi
++
+ 	if test -n "$VERBOSE"; then
+ 		OPD_ARGS="$OPD_ARGS --verbose=$VERBOSE"
+ 	fi
+@@ -1522,6 +1640,8 @@
+ 	move_and_remove $SAMPLES_DIR/current/{root}
+ 
+ 	hup_daemon
++
++	rm -f /boot/domain-*-kernel /boot/domain-*-xen
+ }
+ 
+ 
+@@ -1552,7 +1672,8 @@
+ 	fi
+  
+ 	if test "$SETUP" = "yes"; then
+-		check_valid_args
++		check_valid_vmlinux
++		check_valid_xen
+ 		do_save_setup
+ 	fi
+ 
+--- oprofile-0.9.3/daemon/opd_interface.h.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/opd_interface.h	2007-07-25 15:20:01.000000000 -0400
+@@ -29,6 +29,7 @@
+ #define XEN_ENTER_SWITCH_CODE		10
+ #define SPU_PROFILING_CODE		11
+ #define SPU_CTX_SWITCH_CODE		12
+-#define LAST_CODE			13
++#define DOMAIN_SWITCH_CODE		13
++#define LAST_CODE			14
+  
+ #endif /* OPD_INTERFACE_H */
+--- oprofile-0.9.3/daemon/init.c.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/init.c	2007-07-25 15:16:01.000000000 -0400
 @@ -226,6 +226,8 @@
  
  	opd_create_vmlinux(vmlinux, kernel_range);
@@ -10,21 +241,107 @@
  
  	opd_buf_size = opd_read_fs_int("/dev/oprofile/", "buffer_size", 1);
  	kernel_pointer_size = opd_read_fs_int("/dev/oprofile/", "pointer_size", 1);
-diff -urN oprofile-0.9.1-xenact/daemon/opd_interface.h oprofile-0.9.1-xenpass/daemon/opd_interface.h
---- oprofile-0.9.1-xenact/daemon/opd_interface.h	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/opd_interface.h	2006-09-19 10:39:44.000000000 -0400
-@@ -27,6 +27,7 @@
- /* Code 9 used to be TRACE_END_CODE which is not used anymore  */
- /* Code 9 is now considered an unknown escape code             */
- #define XEN_ENTER_SWITCH_CODE		10
--#define LAST_CODE			11
-+#define DOMAIN_SWITCH_CODE		11
-+#define LAST_CODE			12
-  
- #endif /* OPD_INTERFACE_H */
-diff -urN oprofile-0.9.1-xenact/daemon/opd_kernel.c oprofile-0.9.1-xenpass/daemon/opd_kernel.c
---- oprofile-0.9.1-xenact/daemon/opd_kernel.c	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/opd_kernel.c	2006-09-19 10:39:44.000000000 -0400
+--- oprofile-0.9.3/daemon/opd_trans.c.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/opd_trans.c	2007-07-25 15:26:55.000000000 -0400
+@@ -31,6 +31,8 @@
+ #include <stdio.h>
+ #include <errno.h>
+ 
++int32_t current_domain = COORDINATOR_DOMAIN;
++
+ extern size_t kernel_pointer_size;
+ 
+ 
+@@ -203,6 +205,9 @@
+ {
+ 	verbprintf(vmisc, "KERNEL_ENTER_SWITCH to kernel\n");
+ 	trans->in_kernel = 1;
++	/* if in passive domain mode cpu mode should be incremented */
++	if (current_domain != COORDINATOR_DOMAIN)
++		trans->in_kernel++;
+ 	clear_trans_current(trans);
+ 	/* subtlety: we must keep trans->cookie cached,
+ 	 * even though it's meaningless for the kernel -
+@@ -216,6 +221,9 @@
+ {
+ 	verbprintf(vmisc, "USER_ENTER_SWITCH to user-space\n");
+ 	trans->in_kernel = 0;
++	/* if in passive domain mode cpu mode should be incremented */
++	if (current_domain != COORDINATOR_DOMAIN)
++		trans->in_kernel++;
+ 	clear_trans_current(trans);
+ 	clear_trans_last(trans);
+ }
+@@ -244,17 +252,35 @@
+ static void code_xen_enter(struct transient * trans)
+ {
+ 	verbprintf(vmisc, "XEN_ENTER_SWITCH to xen\n");
+-	trans->in_kernel = 1;
++	trans->in_kernel = 2;
++	/* if in passive domain mode cpu mode should be incremented */
++	if (current_domain != COORDINATOR_DOMAIN)
++		trans->in_kernel++;
+ 	trans->current = NULL;
+ 	/* subtlety: we must keep trans->cookie cached, even though it's 
+-	 * meaningless for Xen - we won't necessarily get a cookie switch 
+-	 * on Xen exit. See comments in opd_sfile.c. It seems that we can 
+-	 * get away with in_kernel = 1 as long as we supply the correct 
+-	 * Xen image, and its address range in startup find_kernel_image 
+-	 * is modified to look in the Xen image also
++	 * meaningless for Xen - same reason as for kernel 
+ 	 */
+ }
+ 
++static void code_domain_switch(struct transient *trans)
++{
++	/* While processing passive domain samples we ensure (in_kernel!=0)
++	 * We do this in order to ignore cookies for passive domain samples 
++	 * But, we have to remember the kernel value for coordinator domain, 
++	 * so we do the safe thing: increment when leaving the coordinator
++	 * domain and decrement when returning to it 
++	 */
++	if (current_domain == COORDINATOR_DOMAIN)
++		trans->in_kernel++;
++
++	trans->current = NULL;
++	current_domain = (int32_t) pop_buffer_value(trans);
++
++	/* If returning to coordinator domain restore the kernel value */
++	if (current_domain == COORDINATOR_DOMAIN)
++		trans->in_kernel--;
++}
++
+ extern void code_spu_profiling(struct transient * trans);
+ extern void code_spu_ctx_switch(struct transient * trans);
+ 
+@@ -273,6 +299,7 @@
+  	&code_xen_enter,
+ 	&code_spu_profiling,
+ 	&code_spu_ctx_switch,
++	&code_domain_switch,
+ };
+ 
+ extern void (*special_processor)(struct transient *);
+--- oprofile-0.9.3/daemon/oprofiled.c.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/oprofiled.c	2007-07-25 15:16:01.000000000 -0400
+@@ -67,6 +67,7 @@
+ int no_xen;
+ char * xenimage;
+ char * xen_range;
++char * xen_passive_setup;
+ static char * verbose;
+ static char * binary_name_filter;
+ static char * events;
+@@ -86,6 +87,7 @@
+ 	{ "xen-range", 0, POPT_ARG_STRING, &xen_range, 0, "Xen VMA range", "start-end", },
+ 	{ "xen-image", 0, POPT_ARG_STRING, &xenimage, 0, "Xen image", "file", },
+ 	{ "image", 0, POPT_ARG_STRING, &binary_name_filter, 0, "image name filter", "profile these comma separated image" },
++	{ "xen-passive-setup", 0, POPT_ARG_STRING, &xen_passive_setup, 0, "Xen passive domain setup file", "filename", },
+ 	{ "separate-lib", 0, POPT_ARG_INT, &separate_lib, 0, "separate library samples for each distinct application", "[0|1]", },
+ 	{ "separate-kernel", 0, POPT_ARG_INT, &separate_kernel, 0, "separate kernel samples for each distinct application", "[0|1]", },
+ 	{ "separate-thread", 0, POPT_ARG_INT, &separate_thread, 0, "thread-profiling mode", "[0|1]" },
+--- oprofile-0.9.3/daemon/opd_kernel.c.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/opd_kernel.c	2007-07-25 15:16:01.000000000 -0400
 @@ -34,6 +34,11 @@
  
  static struct kernel_image xen_image;
@@ -216,130 +533,54 @@
 -
  	return NULL;
  }
-diff -urN oprofile-0.9.1-xenact/daemon/opd_kernel.h oprofile-0.9.1-xenpass/daemon/opd_kernel.h
---- oprofile-0.9.1-xenact/daemon/opd_kernel.h	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/opd_kernel.h	2006-09-19 10:39:44.000000000 -0400
+--- oprofile-0.9.3/daemon/opd_kernel.h.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/opd_kernel.h	2007-07-25 15:16:01.000000000 -0400
 @@ -23,8 +23,12 @@
  /** create the kernel image */
- void opd_create_vmlinux(char const * name, char const * arg);
- 
-+/** create Xen image */
- void opd_create_xen(char const * name, char const * arg);
- 
-+/** create Xen passive domain images */
-+void opd_create_passive(char const *setup_file);
-+
- /** opd_reread_module_info - parse /proc/modules for kernel modules */
- void opd_reread_module_info(void);
- 
-@@ -33,6 +37,7 @@
- 	char * name;
- 	vma_t start;
- 	vma_t end;
-+	int id;
- 	struct list_head list;
- };
- 
-diff -urN oprofile-0.9.1-xenact/daemon/opd_sfile.c oprofile-0.9.1-xenpass/daemon/opd_sfile.c
---- oprofile-0.9.1-xenact/daemon/opd_sfile.c	2005-05-25 20:00:02.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/opd_sfile.c	2006-09-19 10:39:44.000000000 -0400
-@@ -226,7 +226,7 @@
- 	}
- 
- 	/* we might need a kernel image start/end to hash on */
--	if (trans->in_kernel) {
-+	else if (trans->in_kernel) {
- 		ki = find_kernel_image(trans);
- 		if (!ki) {
- 			verbprintf(vsamples, "Lost kernel sample %llx\n", trans->pc);
-diff -urN oprofile-0.9.1-xenact/daemon/opd_trans.c oprofile-0.9.1-xenpass/daemon/opd_trans.c
---- oprofile-0.9.1-xenact/daemon/opd_trans.c	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/opd_trans.c	2006-09-19 10:39:44.000000000 -0400
-@@ -27,6 +27,8 @@
- #include <stdio.h>
- #include <errno.h>
- 
-+int32_t current_domain = COORDINATOR_DOMAIN;
-+
- extern size_t kernel_pointer_size;
- 
- 
-@@ -213,6 +215,9 @@
- {
- 	verbprintf(vmisc, "KERNEL_ENTER_SWITCH to kernel\n");
- 	trans->in_kernel = 1;
-+	/* if in passive domain mode cpu mode should be incremented */
-+	if (current_domain != COORDINATOR_DOMAIN)
-+		trans->in_kernel++;
- 	clear_trans_current(trans);
- 	/* subtlety: we must keep trans->cookie cached,
- 	 * even though it's meaningless for the kernel -
-@@ -226,6 +231,9 @@
- {
- 	verbprintf(vmisc, "USER_ENTER_SWITCH to user-space\n");
- 	trans->in_kernel = 0;
-+	/* if in passive domain mode cpu mode should be incremented */
-+	if (current_domain != COORDINATOR_DOMAIN)
-+		trans->in_kernel++;
- 	clear_trans_current(trans);
- 	clear_trans_last(trans);
- }
-@@ -254,17 +262,35 @@
- static void code_xen_enter(struct transient *trans)
- {
- 	verbprintf(vmisc, "XEN_ENTER_SWITCH to xen\n");
--	trans->in_kernel = 1;
-+	trans->in_kernel = 2;
-+	/* if in passive domain mode cpu mode should be incremented */
-+	if (current_domain != COORDINATOR_DOMAIN)
-+		trans->in_kernel++;
- 	trans->current = NULL;
- 	/* subtlety: we must keep trans->cookie cached, even though it's 
--	 * meaningless for Xen - we won't necessarily get a cookie switch 
--	 * on Xen exit. See comments in opd_sfile.c. It seems that we can 
--	 * get away with in_kernel = 1 as long as we supply the correct 
--	 * Xen image, and its address range in startup find_kernel_image 
--	 * is modified to look in the Xen image also
-+	 * meaningless for Xen - same reason as for kernel 
- 	 */
- }
- 
-+static void code_domain_switch(struct transient *trans)
-+{
-+	/* While processing passive domain samples we ensure (in_kernel!=0)
-+	 * We do this in order to ignore cookies for passive domain samples 
-+	 * But, we have to remember the kernel value for coordinator domain, 
-+	 * so we do the safe thing: increment when leaving the coordinator
-+	 * domain and decrement when returning to it 
-+	 */
-+	if (current_domain == COORDINATOR_DOMAIN)
-+		trans->in_kernel++;
-+
-+	trans->current = NULL;
-+	current_domain = (int32_t) pop_buffer_value(trans);
-+
-+	/* If returning to coordinator domain restore the kernel value */
-+	if (current_domain == COORDINATOR_DOMAIN)
-+		trans->in_kernel--;
-+}
+ void opd_create_vmlinux(char const * name, char const * arg);
+ 
++/** create Xen image */
+ void opd_create_xen(char const * name, char const * arg);
+ 
++/** create Xen passive domain images */
++void opd_create_passive(char const *setup_file);
 +
- typedef void (*handler_t)(struct transient *);
+ /** opd_reread_module_info - parse /proc/modules for kernel modules */
+ void opd_reread_module_info(void);
  
- static handler_t handlers[LAST_CODE + 1] = {
-@@ -280,6 +306,7 @@
- 	&code_trace_begin,
- 	&code_unknown,
-  	&code_xen_enter,
-+	&code_domain_switch,
+@@ -33,6 +37,7 @@
+ 	char * name;
+ 	vma_t start;
+ 	vma_t end;
++	int id;
+ 	struct list_head list;
  };
  
+--- oprofile-0.9.3/daemon/opd_sfile.c.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/opd_sfile.c	2007-07-25 15:16:01.000000000 -0400
+@@ -234,7 +234,7 @@
+ 	}
+ 
+ 	/* we might need a kernel image start/end to hash on */
+-	if (trans->in_kernel) {
++	else if (trans->in_kernel) {
+ 		ki = find_kernel_image(trans);
+ 		if (!ki) {
+ 			verbprintf(vsamples, "Lost kernel sample %llx\n", trans->pc);
+--- oprofile-0.9.3/daemon/oprofiled.h.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/oprofiled.h	2007-07-25 15:16:01.000000000 -0400
+@@ -64,5 +64,6 @@
+ extern int no_xen;
+ extern char * xenimage;
+ extern char * xen_range;
++extern char * xen_passive_setup;
+ 
+ #endif /* OPROFILED_H */
+--- oprofile-0.9.3/daemon/opd_trans.h.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/daemon/opd_trans.h	2007-07-25 15:16:01.000000000 -0400
+@@ -21,6 +21,10 @@
  
-diff -urN oprofile-0.9.1-xenact/daemon/opd_trans.h oprofile-0.9.1-xenpass/daemon/opd_trans.h
---- oprofile-0.9.1-xenact/daemon/opd_trans.h	2005-05-02 11:06:59.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/opd_trans.h	2006-09-19 10:39:44.000000000 -0400
-@@ -15,6 +15,10 @@
- #include "opd_cookie.h"
- #include "op_types.h"
+ #include <stdint.h>
  
 +#define COORDINATOR_DOMAIN -1
 +
@@ -348,49 +589,17 @@
  struct sfile;
  struct anon_mapping;
  
-diff -urN oprofile-0.9.1-xenact/daemon/oprofiled.c oprofile-0.9.1-xenpass/daemon/oprofiled.c
---- oprofile-0.9.1-xenact/daemon/oprofiled.c	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/oprofiled.c	2006-09-19 10:39:44.000000000 -0400
-@@ -66,6 +66,7 @@
- int no_xen;
- char * xenimage;
- char * xen_range;
-+char * xen_passive_setup;
- static char * verbose;
- static char * binary_name_filter;
- static char * events;
-@@ -84,6 +85,7 @@
- 	{ "xen-range", 0, POPT_ARG_STRING, &xen_range, 0, "Xen VMA range", "start-end", },
- 	{ "xen-image", 0, POPT_ARG_STRING, &xenimage, 0, "Xen image", "file", },
- 	{ "image", 0, POPT_ARG_STRING, &binary_name_filter, 0, "image name filter", "profile these comma separated image" },
-+	{ "xen-passive-setup", 0, POPT_ARG_STRING, &xen_passive_setup, 0, "Xen passive domain setup file", "filename", },
- 	{ "separate-lib", 0, POPT_ARG_INT, &separate_lib, 0, "separate library samples for each distinct application", "[0|1]", },
- 	{ "separate-kernel", 0, POPT_ARG_INT, &separate_kernel, 0, "separate kernel samples for each distinct application", "[0|1]", },
- 	{ "separate-thread", 0, POPT_ARG_INT, &separate_thread, 0, "thread-profiling mode", "[0|1]" },
-diff -urN oprofile-0.9.1-xenact/daemon/oprofiled.h oprofile-0.9.1-xenpass/daemon/oprofiled.h
---- oprofile-0.9.1-xenact/daemon/oprofiled.h	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/daemon/oprofiled.h	2006-09-19 10:39:44.000000000 -0400
-@@ -64,5 +64,6 @@
- extern int no_xen;
- extern char * xenimage;
- extern char * xen_range;
-+extern char * xen_passive_setup;
- 
- #endif /* OPROFILED_H */
-diff -urN oprofile-0.9.1-xenact/doc/opcontrol.1.in oprofile-0.9.1-xenpass/doc/opcontrol.1.in
---- oprofile-0.9.1-xenact/doc/opcontrol.1.in	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/doc/opcontrol.1.in	2006-09-19 10:39:44.000000000 -0400
-@@ -105,7 +105,8 @@
- .BI "--callgraph=#depth"
+--- oprofile-0.9.3/doc/opcontrol.1.in.orig	2007-07-16 14:22:17.000000000 -0400
++++ oprofile-0.9.3/doc/opcontrol.1.in	2007-07-25 15:29:15.000000000 -0400
+@@ -117,6 +117,7 @@
  Enable callgraph sample collection with a maximum depth. Use 0 to disable
- callgraph profiling. This option is currently only usable on x86, using a
--2.6+ kernel with callgraph support enabled.
-+2.6+ kernel with callgraph support enabled. This option is not yet supported
-+on Xen.
+ callgraph profiling. This option is available on x86 using a
+ 2.6+ kernel with callgraph support enabled.  It is also available on PowerPC using a 2.6.17+ kernel.
++This option is not yet supported on Xen.
  .br
  .TP
  .BI "--image="[name,name...|"all"]
-@@ -136,12 +137,41 @@
+@@ -147,12 +148,41 @@
  .br
  .TP
  .BI "--active-domains="<list>
@@ -434,225 +643,3 @@
  .br
  
  .SH ENVIRONMENT
-diff -urN oprofile-0.9.1-xenact/utils/opcontrol oprofile-0.9.1-xenpass/utils/opcontrol
---- oprofile-0.9.1-xenact/utils/opcontrol	2006-09-19 10:39:56.000000000 -0400
-+++ oprofile-0.9.1-xenpass/utils/opcontrol	2006-09-19 10:39:44.000000000 -0400
-@@ -145,9 +145,16 @@
-    --cpu-buffer-size=num         per-cpu buffer size in units (2.6 only)
-    --note-table-size             kernel notes buffer size in notes units (2.4 only)
- 
--   --xen                         Xen image (for Xen only)
--   --active-domains=<list>       List of domains in profiling session (for Xen only)
--                                 (list contains domain ids separated by commas)
-+   --xen=file                    Xen image (for Xen only)
-+   --active-domains=id[,ids]     list of domains in multiple domain profiling session (Xen)
-+                                 (detailed profiling of user level and kernel modules code)
-+                                 (requires running oprofile on these domains)
-+   --passive-domains=id[,ids]    list of domains to be profiled (Xen).
-+     or --domains=id[,ids]       (coarse profiling of user level and kernel modules code)
-+                                 (no need to run oprofile on these domains)
-+   --passive-images=file[,files] list of kernel images associated with each passive domain
-+     or 
-+   --domain-images=file[,files]
- " >&2
- }
- 
-@@ -264,6 +271,9 @@
- 	SETUP_DIR="/root/.oprofile"
- 	SETUP_FILE="$SETUP_DIR/daemonrc"
- 
-+	# location for passing info about passive domains to daemon
-+	PASSIVE_SETUP_FILE="$SETUP_DIR/xendomain.setup"
-+
- 	CPUTYPE=`cat $MOUNT/cpu_type`
- 	OP_COUNTERS=`ls $MOUNT/ | grep "^[0-9]\+\$" | tr "\n" " "`
- 	NR_CHOSEN=0
-@@ -369,7 +379,7 @@
- }
- 
- 
--check_valid_args()
-+check_valid_vmlinux()
- {
- 	if test -z "$VMLINUX"; then
- 		echo "No vmlinux file specified. You must specify the correct vmlinux file, e.g." >&2
-@@ -390,8 +400,12 @@
- 
- 	echo "The specified vmlinux file \"$VMLINUX\" doesn't exist." >&2
- 	exit 1
-+}
-+
- 
- # similar check for Xen image
-+check_valid_xen()
-+{
- 	if test -f "$XENIMAGE"; then
- 		return
- 	fi
-@@ -447,6 +461,76 @@
- 	fi
- }
-  
-+set_passive_domain()
-+{
-+	DOMAIN_ID=$1
-+	FILE_IMAGE=$2
-+	XEN_IMAGE=$3
-+
-+	if test "$FILE_IMAGE" = "none"; then
-+		RANGE="0,0"
-+		FILE_IMAGE="domain$DOMAIN_ID-kernel"
-+	else
-+		# Find VMA range for passive domain kernel image 
-+		range_info=`objdump -h $FILE_IMAGE 2>/dev/null | grep " .text "`
-+		tmp1=`echo $range_info | awk '{print $4}'`	
-+		tmp_length=`echo $range_info | awk  '{print $3}'`
-+		tmp2=`objdump -h $FILE_IMAGE --adjust-vma=0x$tmp_length 2>/dev/null | grep " .text " | awk  '{print $4}'`
-+
-+		if test -z "$tmp1" -o -z "$tmp2"; then
-+			echo "The specified file $FILE_IMAGE does not seem to be valid" >&2
-+			echo "Make sure you are using the non-compressed image file (e.g. vmlinux not vmlinuz)" >&2
-+			vecho "found start as \"$tmp1\", end as \"$tmp2\"" >&2
-+			exit 1
-+		fi
-+		RANGE="`echo $tmp1`,`echo $tmp2`"
-+	fi
-+	echo " $DOMAIN_ID $FILE_IMAGE $RANGE $XEN_IMAGE" >> $PASSIVE_SETUP_FILE
-+}
-+
-+
-+set_passive_domain_config()
-+{
-+
-+	create_dir "$SETUP_DIR"
-+
-+	touch $PASSIVE_SETUP_FILE
-+	chmod 644 $PASSIVE_SETUP_FILE
-+	>$PASSIVE_SETUP_FILE
-+
-+	NDOMAINS=`echo "$PASSIVE_DOMAINS" | awk -F',' '{print NF}'`
-+
-+	if test -n "$PASSIVE_IMAGES"; then
-+		NIMAGES=`echo "$PASSIVE_IMAGES" | awk -F',' '{print NF}'`
-+		if [ $NDOMAINS != $NIMAGES ]; then
-+			echo "# of passive domains and # of passive images doesn't match." >&2
-+			do_help
-+			exit 1
-+		fi
-+
-+		for (( i=1; i<=$NDOMAINS; i++ )); do
-+			ID=`echo "$PASSIVE_DOMAINS" | awk -F"," '{print $'$i'}'`
-+			FILE=`echo "$PASSIVE_IMAGES" | awk -F',' '{print $'$i'}'`
-+			if test ! -f "$FILE"; then
-+				echo "Image $FILE for passive domain $ID not found." >&2
-+				return 1
-+			fi
-+			LNK_KERNEL=/boot/domain$ID-kernel
-+			ln -sf $FILE $LNK_KERNEL
-+			LNK_XEN=/boot/domain$ID-xen
-+			ln -sf $XENIMAGE $LNK_XEN
-+			set_passive_domain $ID $LNK_KERNEL $LNK_XEN 
-+		done
-+	else
-+			for (( i=1; i<=$NDOMAINS; i++ )); do
-+				ID=`echo "$PASSIVE_DOMAINS" | awk -F"," '{print $'$i'}'`
-+				LNK_XEN=/boot/domain$ID-xen
-+				set_passive_domain $ID none $LNK_XEN
-+		done 
-+
-+	fi
-+}
-+
-  
- # validate --separate= parameters. This function is called with IFS=,
- # so on each argument is splitted
-@@ -746,6 +830,16 @@
- 				ACTIVE_DOMAINS=$val
- 				DO_SETUP=yes
- 				;;
-+			--passive-domains|--domains)
-+				error_if_empty $arg $val
-+				PASSIVE_DOMAINS=$val
-+				DO_SETUP=yes
-+				;;
-+			--passive-images|--domain-images)
-+				error_if_empty $arg $val
-+				PASSIVE_IMAGES=$val
-+				DO_SETUP=yes
-+				;;
- 			--note-table-size)
- 				error_if_empty $arg $val
- 				if test $"KERNEL_SUPPORT" = "yes"; then
-@@ -818,6 +912,16 @@
- 			exit 1
- 		fi
- 	fi
-+
-+	if test -n "$ACTIVE_DOMAINS" -a "$START_DAEMON" != "yes"; then
-+		echo "Option \"--active-domains\" can only be used with option \"-start-daemon\"." >&2
-+		exit 1
-+	fi
-+
-+	if test -n "$PASSIVE_DOMAINS" -a "$START_DAEMON" != "yes" -a "$START" != "yes"; then
-+		echo "Option \"--passive-domains\" or "--domains" can only be used with option \"--start-daemon\" or \"--start\"." >&2
-+		exit 1
-+	fi
- }
- 
- 
-@@ -1025,6 +1129,15 @@
- 		fi
- 	fi
- 
-+	if test -n "$PASSIVE_DOMAINS"; then
-+		if test "$KERNEL_SUPPORT" = "yes"; then
-+			echo $PASSIVE_DOMAINS >$MOUNT/passive_domains
-+			set_passive_domain_config
-+		else
-+			echo "passive-domains not supported - ignored" >&2
-+		fi
-+	fi
-+	
- 	if test $NOTE_SIZE != 0; then
- 		set_param notesize $NOTE_SIZE
- 	fi
-@@ -1117,7 +1230,8 @@
-  
- 	do_setup
- 	do_load_setup
--	check_valid_args
-+	check_valid_vmlinux
-+	check_valid_xen
- 	get_image_range "linux"
- 	get_image_range "xen"
- 	do_param_setup
-@@ -1144,6 +1258,10 @@
- 		OPD_ARGS="$OPD_ARGS --image=$IMAGE_FILTER"
- 	fi
- 
-+	if ! test -z "$PASSIVE_DOMAINS"; then
-+		OPD_ARGS="$OPD_ARGS --xen-passive-setup=$PASSIVE_SETUP_FILE"
-+	fi
-+
- 	if test -n "$VERBOSE"; then
- 		OPD_ARGS="$OPD_ARGS --verbose=$VERBOSE"
- 	fi
-@@ -1350,6 +1468,8 @@
- 	move_and_remove $SAMPLES_DIR/current/{root}
- 
- 	hup_daemon
-+
-+	rm -f /boot/domain-*-kernel /boot/domain-*-xen
- }
- 
- 
-@@ -1380,7 +1500,8 @@
- 	fi
-  
- 	if test "$SETUP" = "yes"; then
--		check_valid_args
-+		check_valid_vmlinux
-+		check_valid_xen
- 		do_save_setup
- 	fi
- 


Index: oprofile.spec
===================================================================
RCS file: /cvs/pkgs/rpms/oprofile/devel/oprofile.spec,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- oprofile.spec	17 Jul 2007 18:29:10 -0000	1.54
+++ oprofile.spec	25 Jul 2007 19:39:28 -0000	1.55
@@ -3,7 +3,7 @@
 Summary: System wide profiler
 Name: oprofile
 Version: 0.9.3
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: GPL
 Group: Development/System
 #
@@ -58,7 +58,7 @@
 %patch10 -p1 -b .guess2
 #%patch35 -p1 -b .separate
 %patch63 -p1 -b .libs
-#%patch83 -p1 -b .xen
+%patch83 -p1 -b .xen
 #%patch87 -p1 -b .power6
 #%patch88 -p0 -b .core
 #%patch89 -p0 -b .ppc64doc
@@ -178,6 +178,9 @@
 %{_bindir}/oprof_start
 
 %changelog
+* Tue Jul 25 2007 Will Cohen <wcohen at redhat.com> - 0.9.3-2
+- Re-enable xen patch.
+
 * Tue Jul 17 2007 Will Cohen <wcohen at redhat.com> - 0.9.3-1
 - Rebase on 0.9.3 release.
 - Disable xen patch until fixed.




More information about the scm-commits mailing list