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] ACPI S3: fix S3 resume fail on system w/

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] ACPI S3: fix S3 resume fail on system w/ msi capable hpet
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 26 Feb 2010 06:15:10 -0800
Delivery-date: Fri, 26 Feb 2010 06:17:11 -0800
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 1267193132 0
# Node ID 82661c9ad896470ddfa168028894c5190e462627
# Parent  bb7164fc680a2cb0253d7e4dfaacf0466fa687e4
ACPI S3: fix S3 resume fail on system w/ msi capable hpet

Don't re-allocate memory for irq_channel which will cause a BUG_ON in
hpet_msi_write, and make sure hpet_setup_msi_irq() executed during S3
resuming.

Signed-off-by: Wei Gang <gang.wei@xxxxxxxxx>
---
 xen/arch/x86/hpet.c |   40 +++++++++++++++++++++++-----------------
 1 files changed, 23 insertions(+), 17 deletions(-)

diff -r bb7164fc680a -r 82661c9ad896 xen/arch/x86/hpet.c
--- a/xen/arch/x86/hpet.c       Fri Feb 26 08:13:02 2010 +0000
+++ b/xen/arch/x86/hpet.c       Fri Feb 26 14:05:32 2010 +0000
@@ -39,11 +39,12 @@ struct hpet_event_channel
 
     unsigned int idx;   /* physical channel idx */
     int cpu;            /* msi target */
-    unsigned int irq;/* msi irq */
+    int irq;            /* msi irq */
     unsigned int flags; /* HPET_EVT_x */
 } __cacheline_aligned;
 static struct hpet_event_channel legacy_hpet_event;
-static struct hpet_event_channel hpet_events[MAX_HPET_NUM];
+static struct hpet_event_channel hpet_events[MAX_HPET_NUM] = 
+    { [0 ... MAX_HPET_NUM-1].irq = -1 };
 static unsigned int num_hpets_used; /* msi hpet channels used for broadcast */
 
 DEFINE_PER_CPU(struct hpet_event_channel *, cpu_bc_channel);
@@ -353,24 +354,26 @@ static int hpet_setup_msi_irq(unsigned i
 
 static int hpet_assign_irq(struct hpet_event_channel *ch)
 {
-    int irq;
-
-    if ( ch->irq )
-        return 0;
-
-    if ( (irq = create_irq()) < 0 )
-        return irq;
-
-    irq_channel[irq] = ch - &hpet_events[0];
-
+    int irq = ch->irq;
+
+    if ( irq < 0 )
+    {
+        if ( (irq = create_irq()) < 0 )
+            return irq;
+
+        irq_channel[irq] = ch - &hpet_events[0];
+        ch->irq = irq;
+    }
+
+    /* hpet_setup_msi_irq should also be called for S3 resuming */
     if ( hpet_setup_msi_irq(irq) )
     {
         destroy_irq(irq);
         irq_channel[irq] = -1;
+        ch->irq = -1;
         return -EINVAL;
     }
 
-    ch->irq = irq;
     return 0;
 }
 
@@ -532,10 +535,13 @@ void hpet_broadcast_init(void)
     u32 hpet_id, cfg;
     int i;
 
-    irq_channel= xmalloc_array(int, nr_irqs);
-    BUG_ON(!irq_channel);
-    for (i = 0; i < nr_irqs ; i++)
-        irq_channel[i] = -1;
+    if ( irq_channel == NULL )
+    {
+        irq_channel = xmalloc_array(int, nr_irqs);
+        BUG_ON(irq_channel == NULL);
+        for ( i = 0; i < nr_irqs; i++ )
+            irq_channel[i] = -1;
+    }
 
     hpet_rate = hpet_setup();
     if ( hpet_rate == 0 )

_______________________________________________
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] ACPI S3: fix S3 resume fail on system w/ msi capable hpet, Xen patchbot-unstable <=