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] [HVM] ACPI support patch 4 of 4: shutdown

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [HVM] ACPI support patch 4 of 4: shutdown.
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Mon, 19 Jun 2006 14:10:28 +0000
Delivery-date: Mon, 19 Jun 2006 07:13:23 -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 58b374f76a7165319a07c353a5a74ee8b9638d10
# Parent  e1c8212d78c3f57ef5b76cc84639a8d08a11659d
[HVM] ACPI support patch 4 of 4: shutdown.
The patch is incorporated  from Ben's Virtual Iron's ACPI shutdown patch
in changeset 9989:f8d20c3e4225
The patch support guest ACPI Windows shutdown, as well as ACPI guest
Linux "halt -p" and "shutdown -h now".

Signed-off-by: Ben Thomas <ben@xxxxxxxxxxxxxxx>
Signed-off-by: Winston Wang <winston.l.wang@xxxxxxxxx>
---
 tools/ioemu/hw/piix4acpi.c |   29 +++++++++++++++++++++++------
 1 files changed, 23 insertions(+), 6 deletions(-)

diff -r e1c8212d78c3 -r 58b374f76a71 tools/ioemu/hw/piix4acpi.c
--- a/tools/ioemu/hw/piix4acpi.c        Sat Jun 17 09:06:46 2006 +0100
+++ b/tools/ioemu/hw/piix4acpi.c        Sat Jun 17 09:08:14 2006 +0100
@@ -44,6 +44,10 @@
 #define GBL_RLS           (1 << 2)
 #define SLP_EN           (1 << 13)
 
+/* Bits of PM1a register define here  */ 
+#define SLP_TYP_MASK    0x1C00
+#define SLP_VAL         0x1C00
+
 typedef struct AcpiDeviceState AcpiDeviceState;
 AcpiDeviceState *acpi_device_table;
 
@@ -94,7 +98,7 @@ static int pmtimer_load(QEMUFile *f, voi
          qemu_get_be64s(f, &s->next_pm_time);
          qemu_get_timer(f, s->pm_timer);
          return 0;
-           
+        
 }
 
 static inline void acpi_set_irq(PCIAcpiState *s)
@@ -277,6 +281,13 @@ static void acpiPm1ControlP1_writeb(void
     s->pm1_control = (val<<8)||(s->pm1_control); 
 /*    printf("acpiPm1ControlP1_writeb \n addr %x val:%x\n", addr, val); */
 
+    // Check for power off request
+
+    if ( ( (val & SLP_EN) != 0) &&
+         ( (val & SLP_TYP_MASK) == SLP_VAL) ) {
+         s->pm1_timer=0x0; //clear ACPI timer
+         qemu_system_shutdown_request();
+      }
 } 
 
 static uint32_t acpiPm1ControlP1_readb(void *opaque, uint32_t addr)
@@ -304,7 +315,6 @@ static void acpiPm1Status_writew(void *o
     
 /*    printf("acpiPm1Status_writew \n addr %x val:%x pm1_status:%x \n", addr, 
val,s->pm1_status); */
 
-
 } 
 
 static uint32_t acpiPm1Status_readw(void *opaque, uint32_t addr)
@@ -344,6 +354,13 @@ static void acpiPm1Control_writew(void *
     
     s->pm1_control = val; 
 /*    printf("acpiPm1Control_writew \n addr %x val:%x\n", addr, val); */
+
+    // Check for power off request
+
+    if ( ( (val & SLP_EN) != 0) &&
+        ( (val & SLP_TYP_MASK) == SLP_VAL) ) {
+         qemu_system_shutdown_request();
+      }
 
 } 
 
@@ -403,9 +420,9 @@ static void acpi_map(PCIDevice *pci_dev,
 static void acpi_map(PCIDevice *pci_dev, int region_num, 
                     uint32_t addr, uint32_t size, int type)
 {
-      PCIAcpiState *d = (PCIAcpiState *)pci_dev;
-      printf("register acpi io \n ");
-   /*Byte access               */
+       PCIAcpiState *d = (PCIAcpiState *)pci_dev;
+       printf("register acpi io \n ");
+       /*Byte access           */
        register_ioport_write(addr, 1, 1, acpiPm1Status_writeb, d);
        register_ioport_read(addr, 1, 1, acpiPm1Status_readb, d);
        register_ioport_write(addr+1, 1, 1, acpiPm1StatusP1_writeb, d);
@@ -431,7 +448,7 @@ static void acpi_map(PCIDevice *pci_dev,
         register_ioport_write(addr + 4, 2, 2, acpiPm1Control_writew, d);
         register_ioport_read(addr + 4, 2, 2, acpiPm1Control_readw, d);
 
-   /* dword access */
+       /* dword access */
         register_ioport_write(addr, 4, 4, acpiPm1Event_writel, d);
         register_ioport_read(addr, 4, 4, acpiPm1Event_readl, d);
                

_______________________________________________
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] [HVM] ACPI support patch 4 of 4: shutdown., Xen patchbot-unstable <=