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] xenpm: Fix logic when Hyperthreading is e

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] xenpm: Fix logic when Hyperthreading is enabled.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 13 Oct 2008 06:10:09 -0700
Delivery-date: Mon, 13 Oct 2008 06:09:55 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
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/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/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 Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1223888793 -3600
# Node ID bf78a531eb66420ed4119a9bc695de3a76e9a9ce
# Parent  0c64c5fe261b336997e45b444469320d4835f9dc
xenpm: Fix logic when Hyperthreading is enabled.

Signed-off-by: Guanqun Lu <guanqun.lu@xxxxxxxxx>
---
 tools/misc/xenpm.c |   65 ++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 42 insertions(+), 23 deletions(-)

diff -r 0c64c5fe261b -r bf78a531eb66 tools/misc/xenpm.c
--- a/tools/misc/xenpm.c        Mon Oct 13 10:03:36 2008 +0100
+++ b/tools/misc/xenpm.c        Mon Oct 13 10:06:33 2008 +0100
@@ -81,11 +81,15 @@ int main(int argc, char **argv)
             if ( ret )
             {
                 if ( errno == ENODEV )
+                {
                     fprintf(stderr, "Xen cpuidle is not enabled!\n");
-                else
-                    fprintf(stderr, "failed to get max C-state\n");
-
-                break;
+                    break;
+                }
+                else
+                {
+                    fprintf(stderr, "[CPU%d] failed to get max C-state\n", i);
+                    continue;
+                }
             }
 
             cxstat->triggers = malloc(max_cx_num * sizeof(uint64_t));
@@ -105,15 +109,17 @@ int main(int argc, char **argv)
             ret = xc_pm_get_cxstat(xc_fd, i, cxstat);
             if( ret )
             {
-                fprintf(stderr, "failed to get C-states statistics 
information\n");
+                fprintf(stderr, "[CPU%d] failed to get C-states statistics "
+                        "information\n", i);
                 free(cxstat->triggers);
                 free(cxstat->residencies);
-                break;
+                continue;
             }
 
             printf("cpu id               : %d\n", i);
             printf("total C-states       : %d\n", cxstat->nr);
-            printf("idle time(ms)        : %"PRIu64"\n", 
cxstat->idle_time/1000000UL);
+            printf("idle time(ms)        : %"PRIu64"\n",
+                   cxstat->idle_time/1000000UL);
             for ( j = 0; j < cxstat->nr; j++ )
             {
                 printf("C%d                   : transition [%020"PRIu64"]\n",
@@ -138,19 +144,26 @@ int main(int argc, char **argv)
         for ( i = 0; i < physinfo.nr_cpus; i++ )
         {
             ret = xc_pm_get_max_px(xc_fd, i, &max_px_num);
-            if ( ret ) {
+            if ( ret )
+            {
                 if ( errno == ENODEV )
+                {
                     printf("Xen cpufreq is not enabled!\n");
-                else
-                    fprintf(stderr, "failed to get max P-state\n");
-
-                break;
-            }
-
-            pxstat->trans_pt = malloc(max_px_num * max_px_num * 
sizeof(uint64_t));
+                    break;
+                }
+                else
+                {
+                    fprintf(stderr, "[CPU%d] failed to get max P-state\n", i);
+                    continue;
+                }
+            }
+
+            pxstat->trans_pt = malloc(max_px_num * max_px_num *
+                                      sizeof(uint64_t));
             if ( !pxstat->trans_pt )
             {
-                fprintf(stderr, "failed to malloc for P-states transition 
table\n");
+                fprintf(stderr, "failed to malloc for P-states "
+                        "transition table\n");
                 break;
             }
             pxstat->pt = malloc(max_px_num * sizeof(struct xc_px_val));
@@ -162,26 +175,32 @@ int main(int argc, char **argv)
             }
 
             ret = xc_pm_get_pxstat(xc_fd, i, pxstat);
-            if( ret ) {
-                fprintf(stderr, "failed to get P-states statistics 
information\n");
+            if( ret )
+            {
+                fprintf(stderr, "[CPU%d] failed to get P-states "
+                        "statistics information\n", i);
                 free(pxstat->trans_pt);
                 free(pxstat->pt);
-                break;
+                continue;
             }
 
             printf("cpu id               : %d\n", i);
             printf("total P-states       : %d\n", pxstat->total);
             printf("usable P-states      : %d\n", pxstat->usable);
-            printf("current frequency    : %"PRIu64" MHz\n", 
pxstat->pt[pxstat->cur].freq);
+            printf("current frequency    : %"PRIu64" MHz\n",
+                   pxstat->pt[pxstat->cur].freq);
             for ( j = 0; j < pxstat->total; j++ )
             {
                 if ( pxstat->cur == j )
                     printf("*P%d", j);
                 else
                     printf("P%d ", j);
-                printf("                  : freq       [%04"PRIu64" MHz]\n", 
pxstat->pt[j].freq);
-                printf("                       transition [%020"PRIu64"]\n", 
pxstat->pt[j].count);
-                printf("                       residency  [%020"PRIu64" 
ms]\n", pxstat->pt[j].residency/1000000UL);
+                printf("                  : freq       [%04"PRIu64" MHz]\n",
+                       pxstat->pt[j].freq);
+                printf("                       transition [%020"PRIu64"]\n",
+                       pxstat->pt[j].count);
+                printf("                       residency  [%020"PRIu64" ms]\n",
+                       pxstat->pt[j].residency/1000000UL);
             }
 
             free(pxstat->trans_pt);

_______________________________________________
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] xenpm: Fix logic when Hyperthreading is enabled., Xen patchbot-unstable <=