WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Small fix for xenoprof.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Small fix for xenoprof.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sun, 17 Sep 2006 17:00:25 +0000
Delivery-date: Sun, 17 Sep 2006 10:01:40 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 3f57453d404c8faeab576e921bfb56976d7160e2
# Parent  e87e5d216c0b0243342487256e820aa5b5950d89
Small fix for xenoprof.

Update list of privileged xenoprof operations which were not in sync
with new added functions.
Since the number of privileged operations is larger than the non
privileged ones, change the logic to list unprivileged ones instead.
Also added a few printk statements on failed xenoprof initialization
to identify the source of the problem.

Signed-off-by: Jose Renato Santos <jsantos@xxxxxxxxxx>
---
 xen/arch/x86/oprofile/nmi_int.c  |   25 ++++++++++++++++++++++---
 xen/arch/x86/oprofile/xenoprof.c |   24 ++++++++++++++----------
 2 files changed, 36 insertions(+), 13 deletions(-)

diff -r e87e5d216c0b -r 3f57453d404c xen/arch/x86/oprofile/nmi_int.c
--- a/xen/arch/x86/oprofile/nmi_int.c   Fri Sep 15 10:59:18 2006 +0100
+++ b/xen/arch/x86/oprofile/nmi_int.c   Fri Sep 15 11:01:58 2006 +0100
@@ -269,8 +269,12 @@ static int __init p4_init(char * cpu_typ
 { 
        __u8 cpu_model = current_cpu_data.x86_model;
 
-       if ((cpu_model > 6) || (cpu_model == 5))
+       if ((cpu_model > 6) || (cpu_model == 5)) {
+               printk("xenoprof: Initialization failed. "
+                      "Intel processor model %d for pentium 4 family is not "
+                      "supported\n", cpu_model);
                return 0;
+       }
 
 #ifndef CONFIG_SMP
        strncpy (cpu_type, "i386/p4", XENOPROF_CPU_TYPE_SIZE - 1);
@@ -301,8 +305,12 @@ static int __init ppro_init(char *cpu_ty
 {
        __u8 cpu_model = current_cpu_data.x86_model;
 
-       if (cpu_model > 0xd)
+       if (cpu_model > 0xd) {
+               printk("xenoprof: Initialization failed. "
+                      "Intel processor model %d for P6 class family is not "
+                      "supported\n", cpu_model);
                return 0;
+       }
 
        if (cpu_model == 9) {
                strncpy (cpu_type, "i386/p6_mobile", XENOPROF_CPU_TYPE_SIZE - 
1);
@@ -324,8 +332,10 @@ int nmi_init(int *num_events, int *is_pr
        __u8 family = current_cpu_data.x86;
        int prim = 0;
  
-       if (!cpu_has_apic)
+       if (!cpu_has_apic) {
+               printk("xenoprof: Initialization failed. No apic.\n");
                return -ENODEV;
+       }
 
        if (primary_profiler == NULL) {
                /* For now, only dom0 can be the primary profiler */
@@ -344,6 +354,9 @@ int nmi_init(int *num_events, int *is_pr
 
                        switch (family) {
                        default:
+                               printk("xenoprof: Initialization failed. "
+                                      "AMD processor family %d is not "
+                                      "supported\n", family);
                                return -ENODEV;
                        case 6:
                                model = &op_athlon_spec;
@@ -375,11 +388,17 @@ int nmi_init(int *num_events, int *is_pr
                                        break;
 
                                default:
+                               printk("xenoprof: Initialization failed. "
+                                      "Intel processor family %d is not "
+                                      "supported\n", family);
                                        return -ENODEV;
                        }
                        break;
 
                default:
+                       printk("xenoprof: Initialization failed. "
+                              "Unsupported processor. Unknown vendor %d\n",
+                               vendor);
                        return -ENODEV;
        }
 
diff -r e87e5d216c0b -r 3f57453d404c xen/arch/x86/oprofile/xenoprof.c
--- a/xen/arch/x86/oprofile/xenoprof.c  Fri Sep 15 10:59:18 2006 +0100
+++ b/xen/arch/x86/oprofile/xenoprof.c  Fri Sep 15 11:01:58 2006 +0100
@@ -492,19 +492,23 @@ int xenoprof_op_get_buffer(XEN_GUEST_HAN
     return 0;
 }
 
-#define PRIV_OP(op) ( (op == XENOPROF_set_active)       \
-                   || (op == XENOPROF_reserve_counters) \
-                   || (op == XENOPROF_setup_events)     \
-                   || (op == XENOPROF_start)            \
-                   || (op == XENOPROF_stop)             \
-                   || (op == XENOPROF_release_counters) \
-                   || (op == XENOPROF_shutdown))
-
+#define NONPRIV_OP(op) ( (op == XENOPROF_init)          \
+                      || (op == XENOPROF_enable_virq)   \
+                      || (op == XENOPROF_disable_virq)  \
+                      || (op == XENOPROF_get_buffer))
+ 
 int do_xenoprof_op(int op, XEN_GUEST_HANDLE(void) arg)
 {
     int ret = 0;
-
-    if ( PRIV_OP(op) && (current->domain != primary_profiler) )
+    
+    if ( (op < 0) || (op>XENOPROF_last_op) )
+    {
+        printk("xenoprof: invalid operation %d for domain %d\n",
+               op, current->domain->domain_id);
+        return -EINVAL;
+    }
+
+    if ( !NONPRIV_OP(op) && (current->domain != primary_profiler) )
     {
         printk("xenoprof: dom %d denied privileged operation %d\n",
                current->domain->domain_id, op);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Small fix for xenoprof., Xen patchbot-unstable <=