qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS
@ 2008-11-10  9:11 Gleb Natapov
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
                   ` (5 more replies)
  0 siblings, 6 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10  9:11 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Hello,

This patch series adds S3 (suspend to RAM) ACPI state to BIOS. Most
changes concern themselves with preventing BIOS from using memory
locations available to a guest OS.

Changelog:

v2:
- Don't disable SMM.
- Jump to resume vector ASAP. Don't execute entire POST.
- Use smp_cpus directly for smp initialization instead of special memory
  location.

v3:
- Stack pointer for rombios32 code depends on EBDA settings
- Fix .data and .rodata* section overlap
- Various small fixes

---

Gleb Natapov (6):
      Don't power down vga card on entering S3 state.
      Don't use unreserved memory in BIOS.
      Execute rombios32 code from rom address 0xe0000.
      Preserve memory content during SMM init.
      Add S3 state to DSDT. Handle resume event in the BIOS.
      Move PIC initialization out of line to save space in post code area.


 bios/Makefile.in      |    1 
 bios/acpi-dsdt.dsl    |   45 +++++-
 bios/acpi-dsdt.hex    |  376 +++++++++++++++++++++++++------------------------
 bios/rombios.c        |  121 ++++++++++------
 bios/rombios.h        |    1 
 bios/rombios32.c      |  100 +++++++++++--
 bios/rombios32.ld     |   10 +
 bios/rombios32start.S |   11 +
 8 files changed, 411 insertions(+), 254 deletions(-)

--
		Gleb.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH v3 1/6] Move PIC initialization out of line to save space in post code area.
  2008-11-10  9:11 [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
@ 2008-11-10  9:11 ` Gleb Natapov
  2008-11-13  0:10   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out ofline " Sebastian Herbszt
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 2/6] Add S3 state to DSDT. Handle resume event in the BIOS Gleb Natapov
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10  9:11 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

There are only a couple of bytes left in post area.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/rombios.c |   48 ++++++++++++++++++++++++++----------------------
 1 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/bios/rombios.c b/bios/rombios.c
index 3366ad9..88eac04 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -10256,6 +10256,31 @@ rom_scan_increment:
   mov  ds, ax
   ret
 
+post_init_pic:
+  mov al, #0x11 ; send initialisation commands
+  out 0x20, al
+  out 0xa0, al
+  mov al, #0x08
+  out 0x21, al
+  mov al, #0x70
+  out 0xa1, al
+  mov al, #0x04
+  out 0x21, al
+  mov al, #0x02
+  out 0xa1, al
+  mov al, #0x01
+  out 0x21, al
+  out 0xa1, al
+  mov  al, #0xb8
+  out  0x21, AL ;master pic: unmask IRQ 0, 1, 2, 6
+#if BX_USE_PS2_MOUSE
+  mov  al, #0x8f
+#else
+  mov  al, #0x9f
+#endif
+  out  0xa1, AL ;slave  pic: unmask IRQ 12, 13, 14
+  ret
+
 ;; the following area can be used to write dynamically generated tables
   .align 16
 bios_table_area_start:
@@ -10516,28 +10541,7 @@ post_default_ints:
   SET_INT_VECTOR(0x10, #0xF000, #int10_handler)
 
   ;; PIC
-  mov al, #0x11 ; send initialisation commands
-  out 0x20, al
-  out 0xa0, al
-  mov al, #0x08
-  out 0x21, al
-  mov al, #0x70
-  out 0xa1, al
-  mov al, #0x04
-  out 0x21, al
-  mov al, #0x02
-  out 0xa1, al
-  mov al, #0x01
-  out 0x21, al
-  out 0xa1, al
-  mov  al, #0xb8
-  out  0x21, AL ;master pic: unmask IRQ 0, 1, 2, 6
-#if BX_USE_PS2_MOUSE
-  mov  al, #0x8f
-#else
-  mov  al, #0x9f
-#endif
-  out  0xa1, AL ;slave  pic: unmask IRQ 12, 13, 14
+  call post_init_pic
 
   mov  cx, #0xc000  ;; init vga bios
   mov  ax, #0xc780

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH v3 2/6] Add S3 state to DSDT. Handle resume event in the BIOS.
  2008-11-10  9:11 [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
@ 2008-11-10  9:11 ` Gleb Natapov
  2008-11-15 17:43   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 2/6] Add S3 state to DSDT. Handleresume " Sebastian Herbszt
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 3/6] Preserve memory content during SMM init Gleb Natapov
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10  9:11 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/acpi-dsdt.dsl |   30 ++++++++++++++++----
 bios/acpi-dsdt.hex |   17 +++++++----
 bios/rombios.c     |   47 +++++++++++++++++++++++++++++++
 bios/rombios32.c   |   79 +++++++++++++++++++++++++++++++++++++++++++++++++---
 4 files changed, 155 insertions(+), 18 deletions(-)

diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
index 19ac2f9..280a05e 100644
--- a/bios/acpi-dsdt.dsl
+++ b/bios/acpi-dsdt.dsl
@@ -531,11 +531,29 @@ DefinitionBlock (
         }
     }
 
-    /* S5 = power off state */
-    Name (_S5, Package (4) {
-        0x00, // PM1a_CNT.SLP_TYP
-        0x00, // PM2a_CNT.SLP_TYP
-        0x00, // reserved
-        0x00, // reserved
+    /*
+     * S3 (suspend-to-ram), S4 (suspend-to-disk) and S5 (power-off) type codes:
+     * must match piix4 emulation.
+     */
+    Name (\_S3, Package (0x04)
+    {
+        0x01,  /* PM1a_CNT.SLP_TYP */
+        0x01,  /* PM1b_CNT.SLP_TYP */
+        Zero,  /* reserved */
+        Zero   /* reserved */
+    })
+    Name (\_S4, Package (0x04)
+    {
+        Zero,  /* PM1a_CNT.SLP_TYP */
+        Zero,  /* PM1b_CNT.SLP_TYP */
+        Zero,  /* reserved */
+        Zero   /* reserved */
+    })
+    Name (\_S5, Package (0x04)
+    {
+        Zero,  /* PM1a_CNT.SLP_TYP */
+        Zero,  /* PM1b_CNT.SLP_TYP */
+        Zero,  /* reserved */
+        Zero   /* reserved */
     })
 }
diff --git a/bios/acpi-dsdt.hex b/bios/acpi-dsdt.hex
index 6bc6268..6088b18 100644
--- a/bios/acpi-dsdt.hex
+++ b/bios/acpi-dsdt.hex
@@ -1,22 +1,22 @@
 /*
  * 
  * Intel ACPI Component Architecture
- * ASL Optimizing Compiler version 20060912 [Nov 25 2006]
+ * ASL Optimizing Compiler version 20061109 [May 15 2007]
  * Copyright (C) 2000 - 2006 Intel Corporation
  * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "acpi-dsdt.dsl" - Sun Sep 14 10:27:40 2008
+ * Compilation of "acpi-dsdt.dsl" - Mon Oct 27 10:37:05 2008
  * 
  * C source code output
  *
  */
-unsigned char AmlCode[] =
+const unsigned char AmlCode[] =
 {
-    0x44,0x53,0x44,0x54,0xC9,0x07,0x00,0x00,  /* 00000000    "DSDT...." */
-    0x01,0x0E,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    "..BXPC.." */
+    0x44,0x53,0x44,0x54,0xE1,0x07,0x00,0x00,  /* 00000000    "DSDT...." */
+    0x01,0x24,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    ".$BXPC.." */
     0x42,0x58,0x44,0x53,0x44,0x54,0x00,0x00,  /* 00000010    "BXDSDT.." */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x12,0x09,0x06,0x20,0x10,0x1C,0x5C,0x00,  /* 00000020    "... ..\." */
+    0x09,0x11,0x06,0x20,0x10,0x1C,0x5C,0x00,  /* 00000020    "... ..\." */
     0x5B,0x80,0x44,0x42,0x47,0x5F,0x01,0x0B,  /* 00000028    "[.DBG_.." */
     0x44,0xB0,0x0A,0x04,0x5B,0x81,0x0B,0x44,  /* 00000030    "D...[..D" */
     0x42,0x47,0x5F,0x03,0x44,0x42,0x47,0x4C,  /* 00000038    "BG_.DBGL" */
@@ -260,6 +260,9 @@ unsigned char AmlCode[] =
     0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,  /* 000007A8    ".h.TMP_." */
     0x54,0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,  /* 000007B0    "TMP_`v`p" */
     0x60,0x50,0x52,0x51,0x33,0x08,0x5F,0x53,  /* 000007B8    "`PRQ3._S" */
-    0x35,0x5F,0x12,0x06,0x04,0x00,0x00,0x00,  /* 000007C0    "5_......" */
+    0x33,0x5F,0x12,0x06,0x04,0x01,0x01,0x00,  /* 000007C0    "3_......" */
+    0x00,0x08,0x5F,0x53,0x34,0x5F,0x12,0x06,  /* 000007C8    ".._S4_.." */
+    0x04,0x00,0x00,0x00,0x00,0x08,0x5F,0x53,  /* 000007D0    "......_S" */
+    0x35,0x5F,0x12,0x06,0x04,0x00,0x00,0x00,  /* 000007D8    "5_......" */
     0x00,
 };
diff --git a/bios/rombios.c b/bios/rombios.c
index 88eac04..7330173 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -1917,6 +1917,11 @@ shutdown_status_panic(status)
   BX_PANIC("Unimplemented shutdown status: %02x\n",(Bit8u)status);
 }
 
+void s3_resume_panic()
+{
+  BX_PANIC("Returned from s3_resume.\n");
+}
+
 //--------------------------------------------------------------------------
 // print_bios_banner
 //   displays a the bios version
@@ -2198,6 +2203,32 @@ debugger_off()
   outb(0xfedc, 0x00);
 }
 
+void
+s3_resume()
+{
+    Bit32u s3_wakeup_vector;
+    Bit8u s3_resume_flag;
+
+    s3_resume_flag = read_byte(0x40, 0xb0);
+    s3_wakeup_vector = read_dword(0x40, 0xb2);
+
+    BX_INFO("S3 resume called %x 0x%lx\n", s3_resume_flag, s3_wakeup_vector);
+    if (s3_resume_flag != 0xFE || !s3_wakeup_vector)
+	    return;
+
+    write_byte(0x40, 0xb0, 0);
+
+    /* setup wakeup vector */
+    write_word(0x40, 0xb6, (s3_wakeup_vector & 0xF)); /* IP */
+    write_word(0x40, 0xb8, (s3_wakeup_vector >> 4)); /* CS */
+
+    BX_INFO("S3 resume jump to %x:%x\n", (s3_wakeup_vector >> 4),
+		    (s3_wakeup_vector & 0xF));
+ASM_START
+    jmpf [0x04b6]
+ASM_END
+}
+
 #if BX_USE_ATADRV
 
 // ---------------------------------------------------------------------------
@@ -9081,6 +9112,12 @@ retf_post_0x467:
   mov ss, [0x469]
   retf
 
+s3_post:
+#if BX_ROMBIOS32
+  call rombios32_init
+#endif
+  call _s3_resume
+  call _s3_resume_panic
 
 ;--------------------
 eoi_both_pics:
@@ -10005,6 +10042,10 @@ rombios32_05:
   ;; init the stack pointer
   mov esp, #0x00080000
 
+  ;; pass pointer to s3_resume_flag and s3_resume_vector to rombios32
+  push #0x04b0
+  push #0x04b2
+
   ;; call rombios32 code
   mov eax, #0x00040000
   call eax
@@ -10375,6 +10416,12 @@ normal_post:
   mov  ds, ax
   mov  ss, ax
 
+  ;; Save shutdown status
+  mov 0x04b0, bl
+
+  cmp bl, #0xfe
+  jz s3_post
+
   ;; zero out BIOS data area (40:00..40:ff)
   mov  es, ax
   mov  cx, #0x0080 ;; 128 words
diff --git a/bios/rombios32.c b/bios/rombios32.c
index 38cfe06..86942f4 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -180,6 +180,20 @@ void *memmove(void *d1, const void *s1, size_t len)
     return d1;
 }
 
+int memcmp(const void *s1, const void *s2, size_t len)
+{
+	const int8_t *p1 = s1;
+	const int8_t *p2 = s2;
+
+	while (len--) {
+		int r = *p1++ - *p2++;
+		if(r)
+			return r;
+	}
+
+	return 0;
+}
+
 size_t strlen(const char *s)
 {
     const char *s1;
@@ -625,7 +639,7 @@ static int pci_slot_get_pirq(PCIDevice *pci_dev, int irq_num)
     return (irq_num + slot_addend) & 3;
 }
 
-static int find_bios_table_area(void)
+static void find_bios_table_area(void)
 {
     unsigned long addr;
     for(addr = 0xf0000; addr < 0x100000; addr += 16) {
@@ -634,17 +648,17 @@ static int find_bios_table_area(void)
             bios_table_end_addr = bios_table_cur_addr + *(uint32_t *)(addr + 4);
             BX_INFO("bios_table_addr: 0x%08lx end=0x%08lx\n",
                     bios_table_cur_addr, bios_table_end_addr);
-            return 0;
+            return;
         }
     }
-    return -1;
+    return;
 }
 
 static void bios_shadow_init(PCIDevice *d)
 {
     int v;
 
-    if (find_bios_table_area() < 0)
+    if (bios_table_cur_addr == 0)
         return;
 
     /* remap the BIOS to shadow RAM an keep it read/write while we
@@ -1460,6 +1474,7 @@ void acpi_bios_init(void)
     memset(facs, 0, sizeof(*facs));
     memcpy(facs->signature, "FACS", 4);
     facs->length = cpu_to_le32(sizeof(*facs));
+    BX_INFO("Firmware waking vector %p\n", &facs->firmware_waking_vector);
 
     /* DSDT */
     memcpy(dsdt, AmlCode, sizeof(AmlCode));
@@ -2010,9 +2025,48 @@ void smbios_init(void)
     BX_INFO("SMBIOS table addr=0x%08lx\n", (unsigned long)start);
 }
 
-void rombios32_init(void)
+static uint32_t find_resume_vector(void)
+{
+    unsigned long addr, start, end;
+
+#ifdef BX_USE_EBDA_TABLES
+    start = align(ebda_cur_addr, 16);
+    end = 0xa000 << 4;
+#else
+    if (bios_table_cur_addr == 0)
+        return 0;
+    start = align(bios_table_cur_addr, 16);
+    end = bios_table_end_addr;
+#endif
+
+    for (addr = start; addr < end; addr += 16) {
+        if (!memcmp((void*)addr, "RSD PTR ", 8)) {
+            struct rsdp_descriptor *rsdp = (void*)addr;
+            struct rsdt_descriptor_rev1 *rsdt = (void*)rsdp->rsdt_physical_address;
+            struct fadt_descriptor_rev1 *fadt = (void*)rsdt->table_offset_entry[0];
+            struct facs_descriptor_rev1 *facs = (void*)fadt->firmware_ctrl;
+            return facs->firmware_waking_vector;
+        }
+    }
+
+    return 0;
+}
+
+static void find_440fx(PCIDevice *d)
+{
+    uint16_t vendor_id, device_id;
+
+    vendor_id = pci_config_readw(d, PCI_VENDOR_ID);
+    device_id = pci_config_readw(d, PCI_DEVICE_ID);
+
+    if (vendor_id == PCI_VENDOR_ID_INTEL && device_id == PCI_DEVICE_ID_INTEL_82441)
+        i440_pcidev = *d;
+}
+
+void rombios32_init(uint32_t *s3_resume_vector, uint8_t *shutdown_flag)
 {
     BX_INFO("Starting rombios32\n");
+    BX_INFO("Shutdown flag %x\n", *shutdown_flag);
 
 #ifdef BX_QEMU
     qemu_cfg_port = qemu_cfg_port_probe();
@@ -2024,6 +2078,21 @@ void rombios32_init(void)
 
     smp_probe();
 
+    find_bios_table_area();
+
+    if (*shutdown_flag == 0xfe) {
+        *s3_resume_vector = find_resume_vector();
+        if (!*s3_resume_vector) {
+	        BX_INFO("This is S3 resume but wakeup vector is NULL\n");
+        } else {
+	        BX_INFO("S3 resume vector %p\n", *s3_resume_vector);
+            /* redirect bios read access to RAM */
+            pci_for_each_device(find_440fx);
+            bios_lock_shadow_ram(); /* bios is already copied */
+            return;
+        }
+    }
+
     pci_bios_init();
 
     if (bios_table_cur_addr != 0) {

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH v3 3/6] Preserve memory content during SMM init.
  2008-11-10  9:11 [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 2/6] Add S3 state to DSDT. Handle resume event in the BIOS Gleb Natapov
@ 2008-11-10  9:11 ` Gleb Natapov
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 4/6] Execute rombios32 code from rom address 0xe0000 Gleb Natapov
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10  9:11 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/rombios32.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/bios/rombios32.c b/bios/rombios32.c
index 86942f4..53ae5e1 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -731,6 +731,12 @@ static void smm_init(PCIDevice *d)
     value = pci_config_readl(d, 0x58);
     if ((value & (1 << 25)) == 0) {
 
+        /* enable the SMM memory window */
+        pci_config_writeb(&i440_pcidev, 0x72, 0x02 | 0x48);
+
+        /* save original memory content */
+        memcpy((void *)0xa8000, (void *)0x38000, 0x8000);
+
         /* copy the SMM relocation code */
         memcpy((void *)0x38000, &smm_relocation_start,
                &smm_relocation_end - &smm_relocation_start);
@@ -747,8 +753,8 @@ static void smm_init(PCIDevice *d)
         /* wait until SMM code executed */
         while (inb(0xb3) != 0x00);
 
-        /* enable the SMM memory window */
-        pci_config_writeb(&i440_pcidev, 0x72, 0x02 | 0x48);
+        /* restore original memory content */
+        memcpy((void *)0x38000, (void *)0xa8000, 0x8000);
 
         /* copy the SMM code */
         memcpy((void *)0xa8000, &smm_code_start,

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH v3 4/6] Execute rombios32 code from rom address 0xe0000.
  2008-11-10  9:11 [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
                   ` (2 preceding siblings ...)
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 3/6] Preserve memory content during SMM init Gleb Natapov
@ 2008-11-10  9:11 ` Gleb Natapov
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 5/6] Don't use unreserved memory in BIOS Gleb Natapov
  2008-11-10  9:12 ` [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state Gleb Natapov
  5 siblings, 0 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10  9:11 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/Makefile.in      |    1 +
 bios/rombios.c        |   17 +----------------
 bios/rombios32.ld     |   10 ++++------
 bios/rombios32start.S |    9 ++++++++-
 4 files changed, 14 insertions(+), 23 deletions(-)

diff --git a/bios/Makefile.in b/bios/Makefile.in
index b055910..af674b4 100644
--- a/bios/Makefile.in
+++ b/bios/Makefile.in
@@ -106,6 +106,7 @@ rombios32.o: rombios32.c acpi-dsdt.hex
 ifeq ("1", "0")
 acpi-dsdt.hex: acpi-dsdt.dsl
 	iasl -tc -p $@ $<
+	sed -i -e's/^unsigned/const unsigned/' $@
 endif
 
 rombios32start.o: rombios32start.S
diff --git a/bios/rombios.c b/bios/rombios.c
index 7330173..630cfd2 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -10032,13 +10032,6 @@ rombios32_05:
   mov gs, ax
   cld
 
-  ;; copy rombios32 code to ram (ram offset = 1MB)
-  mov esi, #0xfffe0000
-  mov edi, #0x00040000
-  mov ecx, #0x10000 / 4
-  rep
-    movsd
-
   ;; init the stack pointer
   mov esp, #0x00080000
 
@@ -10047,17 +10040,9 @@ rombios32_05:
   push #0x04b2
 
   ;; call rombios32 code
-  mov eax, #0x00040000
+  mov eax, #0x000e0000
   call eax
 
-  ;; reset the memory (some boot loaders such as syslinux suppose
-  ;; that the memory is set to zero)
-  mov edi, #0x00040000
-  mov ecx, #0x40000 / 4
-  xor eax, eax
-  rep
-    stosd
-
   ;; return to 16 bit protected mode first
   db 0xea
   dd rombios32_10
diff --git a/bios/rombios32.ld b/bios/rombios32.ld
index c7f6066..ff765c8 100644
--- a/bios/rombios32.ld
+++ b/bios/rombios32.ld
@@ -3,14 +3,12 @@ OUTPUT_ARCH(i386)
 ENTRY(_start);
 SECTIONS
 {
-        . = 0x00040000;
+        . = 0x000e0000;
         .text     : { *(.text)    }
-        .rodata    : { *(.rodata) }
-        . = ALIGN(4096);
-        .data     : { *(.data)    }
-        __bss_start = . ;
-        .bss      : { *(.bss) *(COMMON) }
+        .rodata    : { *(.rodata*) }
         _end = . ;
+        .data 0x700 : AT (_end) { __data_start = .; *(.data); __data_end = .;}
+        .bss      : { __bss_start = .; *(.bss) *(COMMON); __bss_end = .;}
         /DISCARD/ : { *(.stab)
                      *(.stabstr)
                      *(.comment)
diff --git a/bios/rombios32start.S b/bios/rombios32start.S
index 601e2b0..1900261 100644
--- a/bios/rombios32start.S
+++ b/bios/rombios32start.S
@@ -32,10 +32,17 @@ _start:
   /* clear bss section */
   xor %eax, %eax
   mov $__bss_start, %edi
-  mov $_end, %ecx
+  mov $__bss_end, %ecx
   sub %edi, %ecx
   rep stosb
 
+  /* copy data section */
+  mov $_end, %esi
+  mov $__data_start, %edi
+  mov $__data_end, %ecx
+  sub %edi, %ecx
+  rep movsb
+
   jmp rombios32_init
 
   .code16

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH v3 5/6] Don't use unreserved memory in BIOS.
  2008-11-10  9:11 [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
                   ` (3 preceding siblings ...)
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 4/6] Execute rombios32 code from rom address 0xe0000 Gleb Natapov
@ 2008-11-10  9:11 ` Gleb Natapov
  2008-11-13  0:43   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 5/6] Don't use unreserved memory inBIOS Sebastian Herbszt
  2008-11-10  9:12 ` [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state Gleb Natapov
  5 siblings, 1 reply; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10  9:11 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Use only first page and last page of low memory. OSes assumes that first
page is used by bios and last page is reserved in e820 map.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/rombios.c        |   11 +++++++----
 bios/rombios.h        |    1 -
 bios/rombios32.c      |   11 ++++-------
 bios/rombios32start.S |    2 +-
 4 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/bios/rombios.c b/bios/rombios.c
index 630cfd2..c6c8b19 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -4547,7 +4547,7 @@ ASM_END
                 {
                     case 0:
                         set_e820_range(ES, regs.u.r16.di,
-                                       0x0000000L, 0x0009fc00L, 1);
+                                       0x0000000L, 0x0009f000L, 1);
                         regs.u.r32.ebx = 1;
                         regs.u.r32.eax = 0x534D4150;
                         regs.u.r32.ecx = 0x14;
@@ -4556,7 +4556,7 @@ ASM_END
                         break;
                     case 1:
                         set_e820_range(ES, regs.u.r16.di,
-                                       0x0009fc00L, 0x000a0000L, 2);
+                                       0x0009f000L, 0x000a0000L, 2);
                         regs.u.r32.ebx = 2;
                         regs.u.r32.eax = 0x534D4150;
                         regs.u.r32.ecx = 0x14;
@@ -10032,8 +10032,11 @@ rombios32_05:
   mov gs, ax
   cld
 
-  ;; init the stack pointer
-  mov esp, #0x00080000
+  ;; init the stack pointer to point below EBDA
+  mov ax, [0x040e]
+  shl eax, #4
+  mov esp, #-0x10
+  add esp, eax
 
   ;; pass pointer to s3_resume_flag and s3_resume_vector to rombios32
   push #0x04b0
diff --git a/bios/rombios.h b/bios/rombios.h
index f0ed88e..b3df88b 100644
--- a/bios/rombios.h
+++ b/bios/rombios.h
@@ -56,7 +56,6 @@
 #define ACPI_DATA_SIZE    0x00010000L
 #define PM_IO_BASE        0xb000
 #define SMB_IO_BASE       0xb100
-#define CPU_COUNT_ADDR    0xf000
 
   // Define the application NAME
 #if defined(BX_QEMU)
diff --git a/bios/rombios32.c b/bios/rombios32.c
index 53ae5e1..0c0ac90 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -57,7 +57,7 @@ typedef unsigned long long uint64_t;
 
 #define APIC_ENABLED 0x0100
 
-#define AP_BOOT_ADDR 0x10000
+#define AP_BOOT_ADDR 0x9f000
 
 #define MPTABLE_MAX_SIZE  0x00002000
 #define SMI_CMD_IO_ADDR   0xb2
@@ -392,7 +392,7 @@ void delay_ms(int n)
     }
 }
 
-int smp_cpus;
+uint16_t smp_cpus;
 uint32_t cpuid_signature;
 uint32_t cpuid_features;
 uint32_t cpuid_ext_features;
@@ -495,7 +495,7 @@ void smp_probe(void)
 {
     uint32_t val, sipi_vector;
 
-    smp_cpus = 1;
+    writew(&smp_cpus, 1);
     if (cpuid_features & CPUID_APIC) {
 
         /* enable local APIC */
@@ -503,7 +503,6 @@ void smp_probe(void)
         val |= APIC_ENABLED;
         writel(APIC_BASE + APIC_SVR, val);
 
-        writew((void *)CPU_COUNT_ADDR, 1);
         /* copy AP boot code */
         memcpy((void *)AP_BOOT_ADDR, &smp_ap_boot_code_start,
                &smp_ap_boot_code_end - &smp_ap_boot_code_start);
@@ -514,10 +513,8 @@ void smp_probe(void)
         writel(APIC_BASE + APIC_ICR_LOW, 0x000C4600 | sipi_vector);
 
         delay_ms(10);
-
-        smp_cpus = readw((void *)CPU_COUNT_ADDR);
     }
-    BX_INFO("Found %d cpu(s)\n", smp_cpus);
+    BX_INFO("Found %d cpu(s)\n", readw(&smp_cpus));
 }
 
 /****************************************************/
diff --git a/bios/rombios32start.S b/bios/rombios32start.S
index 1900261..836652c 100644
--- a/bios/rombios32start.S
+++ b/bios/rombios32start.S
@@ -49,7 +49,7 @@ _start:
 smp_ap_boot_code_start:
   xor %ax, %ax
   mov %ax, %ds
-  lock incw CPU_COUNT_ADDR
+  lock incw smp_cpus
 1:
   hlt
   jmp 1b

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state.
  2008-11-10  9:11 [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
                   ` (4 preceding siblings ...)
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 5/6] Don't use unreserved memory in BIOS Gleb Natapov
@ 2008-11-10  9:12 ` Gleb Natapov
  2008-11-10 12:07   ` Glauber Costa
  2008-11-10 20:25   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 6/6] Don't power down vga card onentering " Sebastian Herbszt
  5 siblings, 2 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10  9:12 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

This is needed to fool windows to enter S3. The trick works for XP and
Windows2003, but Vista still refuse to allow S3.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/acpi-dsdt.dsl |   15 ++
 bios/acpi-dsdt.hex |  373 ++++++++++++++++++++++++++--------------------------
 2 files changed, 204 insertions(+), 184 deletions(-)

diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
index 280a05e..5fc3636 100644
--- a/bios/acpi-dsdt.dsl
+++ b/bios/acpi-dsdt.dsl
@@ -133,6 +133,21 @@ DefinitionBlock (
     }
 
     Scope(\_SB.PCI0) {
+        Device (VGA) {
+                 Name (_ADR, 0x00020000)
+                 Method (_S1D, 0, NotSerialized)
+                 {
+                         Return (0x00)
+                 }
+                 Method (_S2D, 0, NotSerialized)
+                 {
+                         Return (0x00)
+                 }
+                 Method (_S3D, 0, NotSerialized)
+                 {
+                         Return (0x00)
+                 }
+        }
 
 	/* PIIX3 ISA bridge */
         Device (ISA) {
diff --git a/bios/acpi-dsdt.hex b/bios/acpi-dsdt.hex
index 6088b18..a4c64e6 100644
--- a/bios/acpi-dsdt.hex
+++ b/bios/acpi-dsdt.hex
@@ -5,15 +5,15 @@
  * Copyright (C) 2000 - 2006 Intel Corporation
  * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "acpi-dsdt.dsl" - Mon Oct 27 10:37:05 2008
+ * Compilation of "acpi-dsdt.dsl" - Mon Oct 27 10:39:43 2008
  * 
  * C source code output
  *
  */
 const unsigned char AmlCode[] =
 {
-    0x44,0x53,0x44,0x54,0xE1,0x07,0x00,0x00,  /* 00000000    "DSDT...." */
-    0x01,0x24,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    ".$BXPC.." */
+    0x44,0x53,0x44,0x54,0x0D,0x08,0x00,0x00,  /* 00000000    "DSDT...." */
+    0x01,0xA1,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    "..BXPC.." */
     0x42,0x58,0x44,0x53,0x44,0x54,0x00,0x00,  /* 00000010    "BXDSDT.." */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
     0x09,0x11,0x06,0x20,0x10,0x1C,0x5C,0x00,  /* 00000020    "... ..\." */
@@ -83,186 +83,191 @@ const unsigned char AmlCode[] =
     0x17,0x00,0x00,0x0C,0x01,0x00,0x00,0x00,  /* 00000220    "........" */
     0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xBF,  /* 00000228    "........" */
     0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,  /* 00000230    "........" */
-    0x1E,0x79,0x00,0x10,0x41,0x29,0x2E,0x5F,  /* 00000238    ".y..A)._" */
+    0x1E,0x79,0x00,0x10,0x4D,0x2B,0x2E,0x5F,  /* 00000238    ".y..M+._" */
     0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x5B,  /* 00000240    "SB_PCI0[" */
-    0x82,0x42,0x23,0x49,0x53,0x41,0x5F,0x08,  /* 00000248    ".B#ISA_." */
-    0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,0x01,  /* 00000250    "_ADR...." */
-    0x00,0x5B,0x80,0x50,0x34,0x30,0x43,0x02,  /* 00000258    ".[.P40C." */
-    0x0A,0x60,0x0A,0x04,0x5B,0x82,0x2D,0x52,  /* 00000260    ".`..[.-R" */
-    0x54,0x43,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000268    "TC_._HID" */
-    0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F,0x43,  /* 00000270    ".A...._C" */
-    0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01,  /* 00000278    "RS....G." */
-    0x70,0x00,0x70,0x00,0x10,0x02,0x22,0x00,  /* 00000280    "p.p..."." */
-    0x01,0x47,0x01,0x72,0x00,0x72,0x00,0x02,  /* 00000288    ".G.r.r.." */
-    0x06,0x79,0x00,0x5B,0x82,0x44,0x04,0x4B,  /* 00000290    ".y.[.D.K" */
-    0x42,0x44,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000298    "BD_._HID" */
-    0x0C,0x41,0xD0,0x03,0x03,0x14,0x09,0x5F,  /* 000002A0    ".A....._" */
-    0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,0x14,  /* 000002A8    "STA....." */
-    0x29,0x5F,0x43,0x52,0x53,0x00,0x08,0x54,  /* 000002B0    ")_CRS..T" */
-    0x4D,0x50,0x5F,0x11,0x18,0x0A,0x15,0x47,  /* 000002B8    "MP_....G" */
-    0x01,0x60,0x00,0x60,0x00,0x01,0x01,0x47,  /* 000002C0    ".`.`...G" */
-    0x01,0x64,0x00,0x64,0x00,0x01,0x01,0x22,  /* 000002C8    ".d.d..."" */
-    0x02,0x00,0x79,0x00,0xA4,0x54,0x4D,0x50,  /* 000002D0    "..y..TMP" */
-    0x5F,0x5B,0x82,0x33,0x4D,0x4F,0x55,0x5F,  /* 000002D8    "_[.3MOU_" */
-    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 000002E0    "._HID.A." */
-    0x0F,0x13,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 000002E8    "...._STA" */
-    0x00,0xA4,0x0A,0x0F,0x14,0x19,0x5F,0x43,  /* 000002F0    "......_C" */
-    0x52,0x53,0x00,0x08,0x54,0x4D,0x50,0x5F,  /* 000002F8    "RS..TMP_" */
-    0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79,  /* 00000300    "...."..y" */
-    0x00,0xA4,0x54,0x4D,0x50,0x5F,0x5B,0x82,  /* 00000308    "..TMP_[." */
-    0x47,0x04,0x46,0x44,0x43,0x30,0x08,0x5F,  /* 00000310    "G.FDC0._" */
-    0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00,  /* 00000318    "HID.A..." */
-    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000320    ".._STA.." */
-    0x0A,0x0F,0x14,0x2C,0x5F,0x43,0x52,0x53,  /* 00000328    "...,_CRS" */
-    0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x1B,  /* 00000330    "..BUF0.." */
-    0x0A,0x18,0x47,0x01,0xF2,0x03,0xF2,0x03,  /* 00000338    "..G....." */
-    0x00,0x04,0x47,0x01,0xF7,0x03,0xF7,0x03,  /* 00000340    "..G....." */
-    0x00,0x01,0x22,0x40,0x00,0x2A,0x04,0x00,  /* 00000348    ".."@.*.." */
-    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 00000350    "y..BUF0[" */
-    0x82,0x4B,0x05,0x4C,0x50,0x54,0x5F,0x08,  /* 00000358    ".K.LPT_." */
-    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x04,  /* 00000360    "_HID.A.." */
-    0x00,0x14,0x28,0x5F,0x53,0x54,0x41,0x00,  /* 00000368    "..(_STA." */
-    0x70,0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,  /* 00000370    "p^^^.PX1" */
-    0x33,0x44,0x52,0x53,0x41,0x60,0x7B,0x60,  /* 00000378    "3DRSA`{`" */
-    0x0C,0x00,0x00,0x00,0x80,0x60,0xA0,0x06,  /* 00000380    ".....`.." */
-    0x93,0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,  /* 00000388    ".`......" */
-    0x0A,0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,  /* 00000390    "...!_CRS" */
-    0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x10,  /* 00000398    "..BUF0.." */
-    0x0A,0x0D,0x47,0x01,0x78,0x03,0x78,0x03,  /* 000003A0    "..G.x.x." */
-    0x08,0x08,0x22,0x80,0x00,0x79,0x00,0xA4,  /* 000003A8    ".."..y.." */
-    0x42,0x55,0x46,0x30,0x5B,0x82,0x41,0x06,  /* 000003B0    "BUF0[.A." */
-    0x43,0x4F,0x4D,0x31,0x08,0x5F,0x48,0x49,  /* 000003B8    "COM1._HI" */
-    0x44,0x0C,0x41,0xD0,0x05,0x01,0x08,0x5F,  /* 000003C0    "D.A...._" */
-    0x55,0x49,0x44,0x01,0x14,0x28,0x5F,0x53,  /* 000003C8    "UID..(_S" */
-    0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,0x2E,  /* 000003D0    "TA.p^^^." */
-    0x50,0x58,0x31,0x33,0x44,0x52,0x53,0x43,  /* 000003D8    "PX13DRSC" */
-    0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,0x08,  /* 000003E0    "`{`....." */
-    0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,0x00,  /* 000003E8    "`...`..." */
-    0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,0x5F,  /* 000003F0    "......!_" */
-    0x43,0x52,0x53,0x00,0x08,0x42,0x55,0x46,  /* 000003F8    "CRS..BUF" */
-    0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00000400    "0....G.." */
-    0x03,0xF8,0x03,0x00,0x08,0x22,0x10,0x00,  /* 00000408    ".....".." */
-    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 00000410    "y..BUF0[" */
-    0x82,0x42,0x06,0x43,0x4F,0x4D,0x32,0x08,  /* 00000418    ".B.COM2." */
-    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05,  /* 00000420    "_HID.A.." */
-    0x01,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,  /* 00000428    ".._UID.." */
-    0x14,0x28,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 00000430    ".(_STA.p" */
-    0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,0x33,  /* 00000438    "^^^.PX13" */
-    0x44,0x52,0x53,0x43,0x60,0x7B,0x60,0x0C,  /* 00000440    "DRSC`{`." */
-    0x00,0x00,0x00,0x80,0x60,0xA0,0x06,0x93,  /* 00000448    "....`..." */
-    0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,  /* 00000450    "`......." */
-    0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,0x00,  /* 00000458    "..!_CRS." */
-    0x08,0x42,0x55,0x46,0x30,0x11,0x10,0x0A,  /* 00000460    ".BUF0..." */
-    0x0D,0x47,0x01,0xF8,0x02,0xF8,0x02,0x00,  /* 00000468    ".G......" */
-    0x08,0x22,0x08,0x00,0x79,0x00,0xA4,0x42,  /* 00000470    "."..y..B" */
-    0x55,0x46,0x30,0x5B,0x82,0x40,0x05,0x50,  /* 00000478    "UF0[.@.P" */
-    0x58,0x31,0x33,0x08,0x5F,0x41,0x44,0x52,  /* 00000480    "X13._ADR" */
-    0x0C,0x03,0x00,0x01,0x00,0x5B,0x80,0x50,  /* 00000488    ".....[.P" */
-    0x31,0x33,0x43,0x02,0x0A,0x5C,0x0A,0x24,  /* 00000490    "13C..\.$" */
-    0x5B,0x81,0x33,0x50,0x31,0x33,0x43,0x03,  /* 00000498    "[.3P13C." */
-    0x44,0x52,0x53,0x41,0x20,0x44,0x52,0x53,  /* 000004A0    "DRSA DRS" */
-    0x42,0x20,0x44,0x52,0x53,0x43,0x20,0x44,  /* 000004A8    "B DRSC D" */
-    0x52,0x53,0x45,0x20,0x44,0x52,0x53,0x46,  /* 000004B0    "RSE DRSF" */
-    0x20,0x44,0x52,0x53,0x47,0x20,0x44,0x52,  /* 000004B8    " DRSG DR" */
-    0x53,0x48,0x20,0x44,0x52,0x53,0x49,0x20,  /* 000004C0    "SH DRSI " */
-    0x44,0x52,0x53,0x4A,0x20,0x10,0x4F,0x2E,  /* 000004C8    "DRSJ .O." */
-    0x5F,0x53,0x42,0x5F,0x5B,0x81,0x24,0x2F,  /* 000004D0    "_SB_[.$/" */
-    0x03,0x50,0x43,0x49,0x30,0x49,0x53,0x41,  /* 000004D8    ".PCI0ISA" */
-    0x5F,0x50,0x34,0x30,0x43,0x01,0x50,0x52,  /* 000004E0    "_P40C.PR" */
-    0x51,0x30,0x08,0x50,0x52,0x51,0x31,0x08,  /* 000004E8    "Q0.PRQ1." */
-    0x50,0x52,0x51,0x32,0x08,0x50,0x52,0x51,  /* 000004F0    "PRQ2.PRQ" */
-    0x33,0x08,0x5B,0x82,0x4E,0x0A,0x4C,0x4E,  /* 000004F8    "3.[.N.LN" */
-    0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000500    "KA._HID." */
-    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 00000508    "A...._UI" */
-    0x44,0x01,0x08,0x5F,0x50,0x52,0x53,0x11,  /* 00000510    "D.._PRS." */
-    0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18,0x79,  /* 00000518    "...#...y" */
-    0x00,0x14,0x1A,0x5F,0x53,0x54,0x41,0x00,  /* 00000520    "..._STA." */
-    0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B,0x0A,  /* 00000528    "p..`..{." */
-    0x80,0x50,0x52,0x51,0x30,0x61,0x70,0x0A,  /* 00000530    ".PRQ0ap." */
-    0x09,0x60,0xA4,0x60,0x14,0x11,0x5F,0x44,  /* 00000538    ".`.`.._D" */
-    0x49,0x53,0x00,0x7D,0x50,0x52,0x51,0x30,  /* 00000540    "IS.}PRQ0" */
-    0x0A,0x80,0x50,0x52,0x51,0x30,0x14,0x3F,  /* 00000548    "..PRQ0.?" */
-    0x5F,0x43,0x52,0x53,0x00,0x08,0x50,0x52,  /* 00000550    "_CRS..PR" */
-    0x52,0x30,0x11,0x09,0x0A,0x06,0x23,0x02,  /* 00000558    "R0....#." */
-    0x00,0x18,0x79,0x00,0x8B,0x50,0x52,0x52,  /* 00000560    "..y..PRR" */
-    0x30,0x01,0x54,0x4D,0x50,0x5F,0x70,0x50,  /* 00000568    "0.TMP_pP" */
-    0x52,0x51,0x30,0x60,0xA0,0x0C,0x95,0x60,  /* 00000570    "RQ0`...`" */
-    0x0A,0x80,0x79,0x01,0x60,0x54,0x4D,0x50,  /* 00000578    "..y.`TMP" */
-    0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D,0x50,  /* 00000580    "_..p.TMP" */
-    0x5F,0xA4,0x50,0x52,0x52,0x30,0x14,0x1B,  /* 00000588    "_.PRR0.." */
-    0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,0x01,  /* 00000590    "_SRS..h." */
-    0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D,0x50,  /* 00000598    "TMP_.TMP" */
-    0x5F,0x60,0x76,0x60,0x70,0x60,0x50,0x52,  /* 000005A0    "_`v`p`PR" */
-    0x51,0x30,0x5B,0x82,0x4F,0x0A,0x4C,0x4E,  /* 000005A8    "Q0[.O.LN" */
-    0x4B,0x42,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 000005B0    "KB._HID." */
-    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 000005B8    "A...._UI" */
-    0x44,0x0A,0x02,0x08,0x5F,0x50,0x52,0x53,  /* 000005C0    "D..._PRS" */
-    0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18,  /* 000005C8    "....#..." */
-    0x79,0x00,0x14,0x1A,0x5F,0x53,0x54,0x41,  /* 000005D0    "y..._STA" */
-    0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B,  /* 000005D8    ".p..`..{" */
-    0x0A,0x80,0x50,0x52,0x51,0x31,0x61,0x70,  /* 000005E0    "..PRQ1ap" */
-    0x0A,0x09,0x60,0xA4,0x60,0x14,0x11,0x5F,  /* 000005E8    "..`.`.._" */
-    0x44,0x49,0x53,0x00,0x7D,0x50,0x52,0x51,  /* 000005F0    "DIS.}PRQ" */
-    0x31,0x0A,0x80,0x50,0x52,0x51,0x31,0x14,  /* 000005F8    "1..PRQ1." */
-    0x3F,0x5F,0x43,0x52,0x53,0x00,0x08,0x50,  /* 00000600    "?_CRS..P" */
-    0x52,0x52,0x30,0x11,0x09,0x0A,0x06,0x23,  /* 00000608    "RR0....#" */
-    0x02,0x00,0x18,0x79,0x00,0x8B,0x50,0x52,  /* 00000610    "...y..PR" */
-    0x52,0x30,0x01,0x54,0x4D,0x50,0x5F,0x70,  /* 00000618    "R0.TMP_p" */
-    0x50,0x52,0x51,0x31,0x60,0xA0,0x0C,0x95,  /* 00000620    "PRQ1`..." */
-    0x60,0x0A,0x80,0x79,0x01,0x60,0x54,0x4D,  /* 00000628    "`..y.`TM" */
-    0x50,0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D,  /* 00000630    "P_..p.TM" */
-    0x50,0x5F,0xA4,0x50,0x52,0x52,0x30,0x14,  /* 00000638    "P_.PRR0." */
-    0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,  /* 00000640    "._SRS..h" */
-    0x01,0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D,  /* 00000648    ".TMP_.TM" */
-    0x50,0x5F,0x60,0x76,0x60,0x70,0x60,0x50,  /* 00000650    "P_`v`p`P" */
-    0x52,0x51,0x31,0x5B,0x82,0x4F,0x0A,0x4C,  /* 00000658    "RQ1[.O.L" */
-    0x4E,0x4B,0x43,0x08,0x5F,0x48,0x49,0x44,  /* 00000660    "NKC._HID" */
-    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 00000668    ".A...._U" */
-    0x49,0x44,0x0A,0x03,0x08,0x5F,0x50,0x52,  /* 00000670    "ID..._PR" */
-    0x53,0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E,  /* 00000678    "S....#.." */
-    0x18,0x79,0x00,0x14,0x1A,0x5F,0x53,0x54,  /* 00000680    ".y..._ST" */
-    0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D,  /* 00000688    "A.p..`.." */
-    0x7B,0x0A,0x80,0x50,0x52,0x51,0x32,0x61,  /* 00000690    "{..PRQ2a" */
-    0x70,0x0A,0x09,0x60,0xA4,0x60,0x14,0x11,  /* 00000698    "p..`.`.." */
-    0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x52,  /* 000006A0    "_DIS.}PR" */
-    0x51,0x32,0x0A,0x80,0x50,0x52,0x51,0x32,  /* 000006A8    "Q2..PRQ2" */
-    0x14,0x3F,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 000006B0    ".?_CRS.." */
-    0x50,0x52,0x52,0x30,0x11,0x09,0x0A,0x06,  /* 000006B8    "PRR0...." */
-    0x23,0x02,0x00,0x18,0x79,0x00,0x8B,0x50,  /* 000006C0    "#...y..P" */
-    0x52,0x52,0x30,0x01,0x54,0x4D,0x50,0x5F,  /* 000006C8    "RR0.TMP_" */
-    0x70,0x50,0x52,0x51,0x32,0x60,0xA0,0x0C,  /* 000006D0    "pPRQ2`.." */
-    0x95,0x60,0x0A,0x80,0x79,0x01,0x60,0x54,  /* 000006D8    ".`..y.`T" */
-    0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00,0x54,  /* 000006E0    "MP_..p.T" */
-    0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52,0x30,  /* 000006E8    "MP_.PRR0" */
-    0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,  /* 000006F0    ".._SRS.." */
-    0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,0x54,  /* 000006F8    "h.TMP_.T" */
-    0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,0x60,  /* 00000700    "MP_`v`p`" */
-    0x50,0x52,0x51,0x32,0x5B,0x82,0x4F,0x0A,  /* 00000708    "PRQ2[.O." */
-    0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,  /* 00000710    "LNKD._HI" */
-    0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,  /* 00000718    "D.A...._" */
-    0x55,0x49,0x44,0x0A,0x04,0x08,0x5F,0x50,  /* 00000720    "UID..._P" */
-    0x52,0x53,0x11,0x09,0x0A,0x06,0x23,0xF8,  /* 00000728    "RS....#." */
-    0x1E,0x18,0x79,0x00,0x14,0x1A,0x5F,0x53,  /* 00000730    "..y..._S" */
-    0x54,0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0,  /* 00000738    "TA.p..`." */
-    0x0D,0x7B,0x0A,0x80,0x50,0x52,0x51,0x33,  /* 00000740    ".{..PRQ3" */
-    0x61,0x70,0x0A,0x09,0x60,0xA4,0x60,0x14,  /* 00000748    "ap..`.`." */
-    0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,  /* 00000750    "._DIS.}P" */
-    0x52,0x51,0x33,0x0A,0x80,0x50,0x52,0x51,  /* 00000758    "RQ3..PRQ" */
-    0x33,0x14,0x3F,0x5F,0x43,0x52,0x53,0x00,  /* 00000760    "3.?_CRS." */
-    0x08,0x50,0x52,0x52,0x30,0x11,0x09,0x0A,  /* 00000768    ".PRR0..." */
-    0x06,0x23,0x02,0x00,0x18,0x79,0x00,0x8B,  /* 00000770    ".#...y.." */
-    0x50,0x52,0x52,0x30,0x01,0x54,0x4D,0x50,  /* 00000778    "PRR0.TMP" */
-    0x5F,0x70,0x50,0x52,0x51,0x33,0x60,0xA0,  /* 00000780    "_pPRQ3`." */
-    0x0C,0x95,0x60,0x0A,0x80,0x79,0x01,0x60,  /* 00000788    "..`..y.`" */
-    0x54,0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00,  /* 00000790    "TMP_..p." */
-    0x54,0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52,  /* 00000798    "TMP_.PRR" */
-    0x30,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,  /* 000007A0    "0.._SRS." */
-    0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,  /* 000007A8    ".h.TMP_." */
-    0x54,0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,  /* 000007B0    "TMP_`v`p" */
-    0x60,0x50,0x52,0x51,0x33,0x08,0x5F,0x53,  /* 000007B8    "`PRQ3._S" */
-    0x33,0x5F,0x12,0x06,0x04,0x01,0x01,0x00,  /* 000007C0    "3_......" */
-    0x00,0x08,0x5F,0x53,0x34,0x5F,0x12,0x06,  /* 000007C8    ".._S4_.." */
-    0x04,0x00,0x00,0x00,0x00,0x08,0x5F,0x53,  /* 000007D0    "......_S" */
-    0x35,0x5F,0x12,0x06,0x04,0x00,0x00,0x00,  /* 000007D8    "5_......" */
-    0x00,
+    0x82,0x2A,0x56,0x47,0x41,0x5F,0x08,0x5F,  /* 00000248    ".*VGA_._" */
+    0x41,0x44,0x52,0x0C,0x00,0x00,0x02,0x00,  /* 00000250    "ADR....." */
+    0x14,0x08,0x5F,0x53,0x31,0x44,0x00,0xA4,  /* 00000258    ".._S1D.." */
+    0x00,0x14,0x08,0x5F,0x53,0x32,0x44,0x00,  /* 00000260    "..._S2D." */
+    0xA4,0x00,0x14,0x08,0x5F,0x53,0x33,0x44,  /* 00000268    "...._S3D" */
+    0x00,0xA4,0x00,0x5B,0x82,0x42,0x23,0x49,  /* 00000270    "...[.B#I" */
+    0x53,0x41,0x5F,0x08,0x5F,0x41,0x44,0x52,  /* 00000278    "SA_._ADR" */
+    0x0C,0x00,0x00,0x01,0x00,0x5B,0x80,0x50,  /* 00000280    ".....[.P" */
+    0x34,0x30,0x43,0x02,0x0A,0x60,0x0A,0x04,  /* 00000288    "40C..`.." */
+    0x5B,0x82,0x2D,0x52,0x54,0x43,0x5F,0x08,  /* 00000290    "[.-RTC_." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0B,  /* 00000298    "_HID.A.." */
+    0x00,0x08,0x5F,0x43,0x52,0x53,0x11,0x18,  /* 000002A0    ".._CRS.." */
+    0x0A,0x15,0x47,0x01,0x70,0x00,0x70,0x00,  /* 000002A8    "..G.p.p." */
+    0x10,0x02,0x22,0x00,0x01,0x47,0x01,0x72,  /* 000002B0    ".."..G.r" */
+    0x00,0x72,0x00,0x02,0x06,0x79,0x00,0x5B,  /* 000002B8    ".r...y.[" */
+    0x82,0x44,0x04,0x4B,0x42,0x44,0x5F,0x08,  /* 000002C0    ".D.KBD_." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x03,  /* 000002C8    "_HID.A.." */
+    0x03,0x14,0x09,0x5F,0x53,0x54,0x41,0x00,  /* 000002D0    "..._STA." */
+    0xA4,0x0A,0x0F,0x14,0x29,0x5F,0x43,0x52,  /* 000002D8    "....)_CR" */
+    0x53,0x00,0x08,0x54,0x4D,0x50,0x5F,0x11,  /* 000002E0    "S..TMP_." */
+    0x18,0x0A,0x15,0x47,0x01,0x60,0x00,0x60,  /* 000002E8    "...G.`.`" */
+    0x00,0x01,0x01,0x47,0x01,0x64,0x00,0x64,  /* 000002F0    "...G.d.d" */
+    0x00,0x01,0x01,0x22,0x02,0x00,0x79,0x00,  /* 000002F8    "..."..y." */
+    0xA4,0x54,0x4D,0x50,0x5F,0x5B,0x82,0x33,  /* 00000300    ".TMP_[.3" */
+    0x4D,0x4F,0x55,0x5F,0x08,0x5F,0x48,0x49,  /* 00000308    "MOU_._HI" */
+    0x44,0x0C,0x41,0xD0,0x0F,0x13,0x14,0x09,  /* 00000310    "D.A....." */
+    0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,  /* 00000318    "_STA...." */
+    0x14,0x19,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 00000320    ".._CRS.." */
+    0x54,0x4D,0x50,0x5F,0x11,0x08,0x0A,0x05,  /* 00000328    "TMP_...." */
+    0x22,0x00,0x10,0x79,0x00,0xA4,0x54,0x4D,  /* 00000330    ""..y..TM" */
+    0x50,0x5F,0x5B,0x82,0x47,0x04,0x46,0x44,  /* 00000338    "P_[.G.FD" */
+    0x43,0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000340    "C0._HID." */
+    0x41,0xD0,0x07,0x00,0x14,0x09,0x5F,0x53,  /* 00000348    "A....._S" */
+    0x54,0x41,0x00,0xA4,0x0A,0x0F,0x14,0x2C,  /* 00000350    "TA.....," */
+    0x5F,0x43,0x52,0x53,0x00,0x08,0x42,0x55,  /* 00000358    "_CRS..BU" */
+    0x46,0x30,0x11,0x1B,0x0A,0x18,0x47,0x01,  /* 00000360    "F0....G." */
+    0xF2,0x03,0xF2,0x03,0x00,0x04,0x47,0x01,  /* 00000368    "......G." */
+    0xF7,0x03,0xF7,0x03,0x00,0x01,0x22,0x40,  /* 00000370    "......"@" */
+    0x00,0x2A,0x04,0x00,0x79,0x00,0xA4,0x42,  /* 00000378    ".*..y..B" */
+    0x55,0x46,0x30,0x5B,0x82,0x4B,0x05,0x4C,  /* 00000380    "UF0[.K.L" */
+    0x50,0x54,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000388    "PT_._HID" */
+    0x0C,0x41,0xD0,0x04,0x00,0x14,0x28,0x5F,  /* 00000390    ".A....(_" */
+    0x53,0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,  /* 00000398    "STA.p^^^" */
+    0x2E,0x50,0x58,0x31,0x33,0x44,0x52,0x53,  /* 000003A0    ".PX13DRS" */
+    0x41,0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,  /* 000003A8    "A`{`...." */
+    0x80,0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,  /* 000003B0    ".`...`.." */
+    0x00,0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,  /* 000003B8    ".......!" */
+    0x5F,0x43,0x52,0x53,0x00,0x08,0x42,0x55,  /* 000003C0    "_CRS..BU" */
+    0x46,0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,  /* 000003C8    "F0....G." */
+    0x78,0x03,0x78,0x03,0x08,0x08,0x22,0x80,  /* 000003D0    "x.x..."." */
+    0x00,0x79,0x00,0xA4,0x42,0x55,0x46,0x30,  /* 000003D8    ".y..BUF0" */
+    0x5B,0x82,0x41,0x06,0x43,0x4F,0x4D,0x31,  /* 000003E0    "[.A.COM1" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 000003E8    "._HID.A." */
+    0x05,0x01,0x08,0x5F,0x55,0x49,0x44,0x01,  /* 000003F0    "..._UID." */
+    0x14,0x28,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 000003F8    ".(_STA.p" */
+    0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,0x33,  /* 00000400    "^^^.PX13" */
+    0x44,0x52,0x53,0x43,0x60,0x7B,0x60,0x0C,  /* 00000408    "DRSC`{`." */
+    0x00,0x00,0x00,0x08,0x60,0xA0,0x06,0x93,  /* 00000410    "....`..." */
+    0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,  /* 00000418    "`......." */
+    0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,0x00,  /* 00000420    "..!_CRS." */
+    0x08,0x42,0x55,0x46,0x30,0x11,0x10,0x0A,  /* 00000428    ".BUF0..." */
+    0x0D,0x47,0x01,0xF8,0x03,0xF8,0x03,0x00,  /* 00000430    ".G......" */
+    0x08,0x22,0x10,0x00,0x79,0x00,0xA4,0x42,  /* 00000438    "."..y..B" */
+    0x55,0x46,0x30,0x5B,0x82,0x42,0x06,0x43,  /* 00000440    "UF0[.B.C" */
+    0x4F,0x4D,0x32,0x08,0x5F,0x48,0x49,0x44,  /* 00000448    "OM2._HID" */
+    0x0C,0x41,0xD0,0x05,0x01,0x08,0x5F,0x55,  /* 00000450    ".A...._U" */
+    0x49,0x44,0x0A,0x02,0x14,0x28,0x5F,0x53,  /* 00000458    "ID...(_S" */
+    0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,0x2E,  /* 00000460    "TA.p^^^." */
+    0x50,0x58,0x31,0x33,0x44,0x52,0x53,0x43,  /* 00000468    "PX13DRSC" */
+    0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,0x80,  /* 00000470    "`{`....." */
+    0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,0x00,  /* 00000478    "`...`..." */
+    0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,0x5F,  /* 00000480    "......!_" */
+    0x43,0x52,0x53,0x00,0x08,0x42,0x55,0x46,  /* 00000488    "CRS..BUF" */
+    0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00000490    "0....G.." */
+    0x02,0xF8,0x02,0x00,0x08,0x22,0x08,0x00,  /* 00000498    ".....".." */
+    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 000004A0    "y..BUF0[" */
+    0x82,0x40,0x05,0x50,0x58,0x31,0x33,0x08,  /* 000004A8    ".@.PX13." */
+    0x5F,0x41,0x44,0x52,0x0C,0x03,0x00,0x01,  /* 000004B0    "_ADR...." */
+    0x00,0x5B,0x80,0x50,0x31,0x33,0x43,0x02,  /* 000004B8    ".[.P13C." */
+    0x0A,0x5C,0x0A,0x24,0x5B,0x81,0x33,0x50,  /* 000004C0    ".\.$[.3P" */
+    0x31,0x33,0x43,0x03,0x44,0x52,0x53,0x41,  /* 000004C8    "13C.DRSA" */
+    0x20,0x44,0x52,0x53,0x42,0x20,0x44,0x52,  /* 000004D0    " DRSB DR" */
+    0x53,0x43,0x20,0x44,0x52,0x53,0x45,0x20,  /* 000004D8    "SC DRSE " */
+    0x44,0x52,0x53,0x46,0x20,0x44,0x52,0x53,  /* 000004E0    "DRSF DRS" */
+    0x47,0x20,0x44,0x52,0x53,0x48,0x20,0x44,  /* 000004E8    "G DRSH D" */
+    0x52,0x53,0x49,0x20,0x44,0x52,0x53,0x4A,  /* 000004F0    "RSI DRSJ" */
+    0x20,0x10,0x4F,0x2E,0x5F,0x53,0x42,0x5F,  /* 000004F8    " .O._SB_" */
+    0x5B,0x81,0x24,0x2F,0x03,0x50,0x43,0x49,  /* 00000500    "[.$/.PCI" */
+    0x30,0x49,0x53,0x41,0x5F,0x50,0x34,0x30,  /* 00000508    "0ISA_P40" */
+    0x43,0x01,0x50,0x52,0x51,0x30,0x08,0x50,  /* 00000510    "C.PRQ0.P" */
+    0x52,0x51,0x31,0x08,0x50,0x52,0x51,0x32,  /* 00000518    "RQ1.PRQ2" */
+    0x08,0x50,0x52,0x51,0x33,0x08,0x5B,0x82,  /* 00000520    ".PRQ3.[." */
+    0x4E,0x0A,0x4C,0x4E,0x4B,0x41,0x08,0x5F,  /* 00000528    "N.LNKA._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,  /* 00000530    "HID.A..." */
+    0x08,0x5F,0x55,0x49,0x44,0x01,0x08,0x5F,  /* 00000538    "._UID.._" */
+    0x50,0x52,0x53,0x11,0x09,0x0A,0x06,0x23,  /* 00000540    "PRS....#" */
+    0xF8,0x1E,0x18,0x79,0x00,0x14,0x1A,0x5F,  /* 00000548    "...y..._" */
+    0x53,0x54,0x41,0x00,0x70,0x0A,0x0B,0x60,  /* 00000550    "STA.p..`" */
+    0xA0,0x0D,0x7B,0x0A,0x80,0x50,0x52,0x51,  /* 00000558    "..{..PRQ" */
+    0x30,0x61,0x70,0x0A,0x09,0x60,0xA4,0x60,  /* 00000560    "0ap..`.`" */
+    0x14,0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,  /* 00000568    ".._DIS.}" */
+    0x50,0x52,0x51,0x30,0x0A,0x80,0x50,0x52,  /* 00000570    "PRQ0..PR" */
+    0x51,0x30,0x14,0x3F,0x5F,0x43,0x52,0x53,  /* 00000578    "Q0.?_CRS" */
+    0x00,0x08,0x50,0x52,0x52,0x30,0x11,0x09,  /* 00000580    "..PRR0.." */
+    0x0A,0x06,0x23,0x02,0x00,0x18,0x79,0x00,  /* 00000588    "..#...y." */
+    0x8B,0x50,0x52,0x52,0x30,0x01,0x54,0x4D,  /* 00000590    ".PRR0.TM" */
+    0x50,0x5F,0x70,0x50,0x52,0x51,0x30,0x60,  /* 00000598    "P_pPRQ0`" */
+    0xA0,0x0C,0x95,0x60,0x0A,0x80,0x79,0x01,  /* 000005A0    "...`..y." */
+    0x60,0x54,0x4D,0x50,0x5F,0xA1,0x07,0x70,  /* 000005A8    "`TMP_..p" */
+    0x00,0x54,0x4D,0x50,0x5F,0xA4,0x50,0x52,  /* 000005B0    ".TMP_.PR" */
+    0x52,0x30,0x14,0x1B,0x5F,0x53,0x52,0x53,  /* 000005B8    "R0.._SRS" */
+    0x01,0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F,  /* 000005C0    "..h.TMP_" */
+    0x82,0x54,0x4D,0x50,0x5F,0x60,0x76,0x60,  /* 000005C8    ".TMP_`v`" */
+    0x70,0x60,0x50,0x52,0x51,0x30,0x5B,0x82,  /* 000005D0    "p`PRQ0[." */
+    0x4F,0x0A,0x4C,0x4E,0x4B,0x42,0x08,0x5F,  /* 000005D8    "O.LNKB._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,  /* 000005E0    "HID.A..." */
+    0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,0x08,  /* 000005E8    "._UID..." */
+    0x5F,0x50,0x52,0x53,0x11,0x09,0x0A,0x06,  /* 000005F0    "_PRS...." */
+    0x23,0xF8,0x1E,0x18,0x79,0x00,0x14,0x1A,  /* 000005F8    "#...y..." */
+    0x5F,0x53,0x54,0x41,0x00,0x70,0x0A,0x0B,  /* 00000600    "_STA.p.." */
+    0x60,0xA0,0x0D,0x7B,0x0A,0x80,0x50,0x52,  /* 00000608    "`..{..PR" */
+    0x51,0x31,0x61,0x70,0x0A,0x09,0x60,0xA4,  /* 00000610    "Q1ap..`." */
+    0x60,0x14,0x11,0x5F,0x44,0x49,0x53,0x00,  /* 00000618    "`.._DIS." */
+    0x7D,0x50,0x52,0x51,0x31,0x0A,0x80,0x50,  /* 00000620    "}PRQ1..P" */
+    0x52,0x51,0x31,0x14,0x3F,0x5F,0x43,0x52,  /* 00000628    "RQ1.?_CR" */
+    0x53,0x00,0x08,0x50,0x52,0x52,0x30,0x11,  /* 00000630    "S..PRR0." */
+    0x09,0x0A,0x06,0x23,0x02,0x00,0x18,0x79,  /* 00000638    "...#...y" */
+    0x00,0x8B,0x50,0x52,0x52,0x30,0x01,0x54,  /* 00000640    "..PRR0.T" */
+    0x4D,0x50,0x5F,0x70,0x50,0x52,0x51,0x31,  /* 00000648    "MP_pPRQ1" */
+    0x60,0xA0,0x0C,0x95,0x60,0x0A,0x80,0x79,  /* 00000650    "`...`..y" */
+    0x01,0x60,0x54,0x4D,0x50,0x5F,0xA1,0x07,  /* 00000658    ".`TMP_.." */
+    0x70,0x00,0x54,0x4D,0x50,0x5F,0xA4,0x50,  /* 00000660    "p.TMP_.P" */
+    0x52,0x52,0x30,0x14,0x1B,0x5F,0x53,0x52,  /* 00000668    "RR0.._SR" */
+    0x53,0x01,0x8B,0x68,0x01,0x54,0x4D,0x50,  /* 00000670    "S..h.TMP" */
+    0x5F,0x82,0x54,0x4D,0x50,0x5F,0x60,0x76,  /* 00000678    "_.TMP_`v" */
+    0x60,0x70,0x60,0x50,0x52,0x51,0x31,0x5B,  /* 00000680    "`p`PRQ1[" */
+    0x82,0x4F,0x0A,0x4C,0x4E,0x4B,0x43,0x08,  /* 00000688    ".O.LNKC." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,  /* 00000690    "_HID.A.." */
+    0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,0x03,  /* 00000698    ".._UID.." */
+    0x08,0x5F,0x50,0x52,0x53,0x11,0x09,0x0A,  /* 000006A0    "._PRS..." */
+    0x06,0x23,0xF8,0x1E,0x18,0x79,0x00,0x14,  /* 000006A8    ".#...y.." */
+    0x1A,0x5F,0x53,0x54,0x41,0x00,0x70,0x0A,  /* 000006B0    "._STA.p." */
+    0x0B,0x60,0xA0,0x0D,0x7B,0x0A,0x80,0x50,  /* 000006B8    ".`..{..P" */
+    0x52,0x51,0x32,0x61,0x70,0x0A,0x09,0x60,  /* 000006C0    "RQ2ap..`" */
+    0xA4,0x60,0x14,0x11,0x5F,0x44,0x49,0x53,  /* 000006C8    ".`.._DIS" */
+    0x00,0x7D,0x50,0x52,0x51,0x32,0x0A,0x80,  /* 000006D0    ".}PRQ2.." */
+    0x50,0x52,0x51,0x32,0x14,0x3F,0x5F,0x43,  /* 000006D8    "PRQ2.?_C" */
+    0x52,0x53,0x00,0x08,0x50,0x52,0x52,0x30,  /* 000006E0    "RS..PRR0" */
+    0x11,0x09,0x0A,0x06,0x23,0x02,0x00,0x18,  /* 000006E8    "....#..." */
+    0x79,0x00,0x8B,0x50,0x52,0x52,0x30,0x01,  /* 000006F0    "y..PRR0." */
+    0x54,0x4D,0x50,0x5F,0x70,0x50,0x52,0x51,  /* 000006F8    "TMP_pPRQ" */
+    0x32,0x60,0xA0,0x0C,0x95,0x60,0x0A,0x80,  /* 00000700    "2`...`.." */
+    0x79,0x01,0x60,0x54,0x4D,0x50,0x5F,0xA1,  /* 00000708    "y.`TMP_." */
+    0x07,0x70,0x00,0x54,0x4D,0x50,0x5F,0xA4,  /* 00000710    ".p.TMP_." */
+    0x50,0x52,0x52,0x30,0x14,0x1B,0x5F,0x53,  /* 00000718    "PRR0.._S" */
+    0x52,0x53,0x01,0x8B,0x68,0x01,0x54,0x4D,  /* 00000720    "RS..h.TM" */
+    0x50,0x5F,0x82,0x54,0x4D,0x50,0x5F,0x60,  /* 00000728    "P_.TMP_`" */
+    0x76,0x60,0x70,0x60,0x50,0x52,0x51,0x32,  /* 00000730    "v`p`PRQ2" */
+    0x5B,0x82,0x4F,0x0A,0x4C,0x4E,0x4B,0x44,  /* 00000738    "[.O.LNKD" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000740    "._HID.A." */
+    0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,  /* 00000748    "..._UID." */
+    0x04,0x08,0x5F,0x50,0x52,0x53,0x11,0x09,  /* 00000750    ".._PRS.." */
+    0x0A,0x06,0x23,0xF8,0x1E,0x18,0x79,0x00,  /* 00000758    "..#...y." */
+    0x14,0x1A,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 00000760    ".._STA.p" */
+    0x0A,0x0B,0x60,0xA0,0x0D,0x7B,0x0A,0x80,  /* 00000768    "..`..{.." */
+    0x50,0x52,0x51,0x33,0x61,0x70,0x0A,0x09,  /* 00000770    "PRQ3ap.." */
+    0x60,0xA4,0x60,0x14,0x11,0x5F,0x44,0x49,  /* 00000778    "`.`.._DI" */
+    0x53,0x00,0x7D,0x50,0x52,0x51,0x33,0x0A,  /* 00000780    "S.}PRQ3." */
+    0x80,0x50,0x52,0x51,0x33,0x14,0x3F,0x5F,  /* 00000788    ".PRQ3.?_" */
+    0x43,0x52,0x53,0x00,0x08,0x50,0x52,0x52,  /* 00000790    "CRS..PRR" */
+    0x30,0x11,0x09,0x0A,0x06,0x23,0x02,0x00,  /* 00000798    "0....#.." */
+    0x18,0x79,0x00,0x8B,0x50,0x52,0x52,0x30,  /* 000007A0    ".y..PRR0" */
+    0x01,0x54,0x4D,0x50,0x5F,0x70,0x50,0x52,  /* 000007A8    ".TMP_pPR" */
+    0x51,0x33,0x60,0xA0,0x0C,0x95,0x60,0x0A,  /* 000007B0    "Q3`...`." */
+    0x80,0x79,0x01,0x60,0x54,0x4D,0x50,0x5F,  /* 000007B8    ".y.`TMP_" */
+    0xA1,0x07,0x70,0x00,0x54,0x4D,0x50,0x5F,  /* 000007C0    "..p.TMP_" */
+    0xA4,0x50,0x52,0x52,0x30,0x14,0x1B,0x5F,  /* 000007C8    ".PRR0.._" */
+    0x53,0x52,0x53,0x01,0x8B,0x68,0x01,0x54,  /* 000007D0    "SRS..h.T" */
+    0x4D,0x50,0x5F,0x82,0x54,0x4D,0x50,0x5F,  /* 000007D8    "MP_.TMP_" */
+    0x60,0x76,0x60,0x70,0x60,0x50,0x52,0x51,  /* 000007E0    "`v`p`PRQ" */
+    0x33,0x08,0x5F,0x53,0x33,0x5F,0x12,0x06,  /* 000007E8    "3._S3_.." */
+    0x04,0x01,0x01,0x00,0x00,0x08,0x5F,0x53,  /* 000007F0    "......_S" */
+    0x34,0x5F,0x12,0x06,0x04,0x00,0x00,0x00,  /* 000007F8    "4_......" */
+    0x00,0x08,0x5F,0x53,0x35,0x5F,0x12,0x06,  /* 00000800    ".._S5_.." */
+    0x04,0x00,0x00,0x00,0x00,
 };

^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state.
  2008-11-10  9:12 ` [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state Gleb Natapov
@ 2008-11-10 12:07   ` Glauber Costa
  2008-11-10 13:28     ` Gleb Natapov
  2008-11-10 20:25   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 6/6] Don't power down vga card onentering " Sebastian Herbszt
  1 sibling, 1 reply; 20+ messages in thread
From: Glauber Costa @ 2008-11-10 12:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: bochs-developers

On Mon, Nov 10, 2008 at 7:12 AM, Gleb Natapov <gleb@redhat.com> wrote:
> This is needed to fool windows to enter S3. The trick works for XP and
> Windows2003, but Vista still refuse to allow S3.
>
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> ---
>
>  bios/acpi-dsdt.dsl |   15 ++
>  bios/acpi-dsdt.hex |  373 ++++++++++++++++++++++++++--------------------------
>  2 files changed, 204 insertions(+), 184 deletions(-)
>
> diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
> index 280a05e..5fc3636 100644
> --- a/bios/acpi-dsdt.dsl
> +++ b/bios/acpi-dsdt.dsl
> @@ -133,6 +133,21 @@ DefinitionBlock (
>     }
>
>     Scope(\_SB.PCI0) {
> +        Device (VGA) {
> +                 Name (_ADR, 0x00020000)
> +                 Method (_S1D, 0, NotSerialized)
> +                 {
> +                         Return (0x00)
> +                 }
> +                 Method (_S2D, 0, NotSerialized)
> +                 {
> +                         Return (0x00)
> +                 }
> +                 Method (_S3D, 0, NotSerialized)
> +                 {
> +                         Return (0x00)
> +                 }
> +        }
>
>        /* PIIX3 ISA bridge */
>         Device (ISA) {
> diff --git a/bios/acpi-dsdt.hex b/bios/acpi-dsdt.hex
> index 6088b18..a4c64e6 100644
> --- a/bios/acpi-dsdt.hex
> +++ b/bios/acpi-dsdt.hex
This one should be generated, right?
I don't think we actually need it in the patch

-- 
Glauber  Costa.
"Free as in Freedom"
http://glommer.net

"The less confident you are, the more serious you have to act."

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state.
  2008-11-10 12:07   ` Glauber Costa
@ 2008-11-10 13:28     ` Gleb Natapov
  0 siblings, 0 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10 13:28 UTC (permalink / raw)
  To: qemu-devel; +Cc: bochs-developers

On Mon, Nov 10, 2008 at 10:07:19AM -0200, Glauber Costa wrote:
> > diff --git a/bios/acpi-dsdt.hex b/bios/acpi-dsdt.hex
> > index 6088b18..a4c64e6 100644
> > --- a/bios/acpi-dsdt.hex
> > +++ b/bios/acpi-dsdt.hex
> This one should be generated, right?
> I don't think we actually need it in the patch
> 
That is bochs-devel people request to include this in the patches that
change DSDT.

--
			Gleb.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] Re: [Bochs-developers] [PATCH v3 6/6] Don't power down vga card onentering S3 state.
  2008-11-10  9:12 ` [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state Gleb Natapov
  2008-11-10 12:07   ` Glauber Costa
@ 2008-11-10 20:25   ` Sebastian Herbszt
  2008-11-10 21:20     ` Gleb Natapov
  1 sibling, 1 reply; 20+ messages in thread
From: Sebastian Herbszt @ 2008-11-10 20:25 UTC (permalink / raw)
  To: Gleb Natapov, bochs-developers; +Cc: qemu-devel

Gleb Natapov wrote:
> This is needed to fool windows to enter S3. The trick works for XP and
> Windows2003, but Vista still refuse to allow S3.
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> ---
> 
> bios/acpi-dsdt.dsl |   15 ++
> bios/acpi-dsdt.hex |  373 ++++++++++++++++++++++++++--------------------------
> 2 files changed, 204 insertions(+), 184 deletions(-)
> 
> diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
> index 280a05e..5fc3636 100644
> --- a/bios/acpi-dsdt.dsl
> +++ b/bios/acpi-dsdt.dsl
> @@ -133,6 +133,21 @@ DefinitionBlock (
>     }
> 
>     Scope(\_SB.PCI0) {
> +        Device (VGA) {
> +                 Name (_ADR, 0x00020000)
> +                 Method (_S1D, 0, NotSerialized)
> +                 {
> +                         Return (0x00)
> +                 }
> +                 Method (_S2D, 0, NotSerialized)
> +                 {
> +                         Return (0x00)
> +                 }
> +                 Method (_S3D, 0, NotSerialized)
> +                 {
> +                         Return (0x00)
> +                 }
> +        }

Which vga card does need this? std, cirrus, vmware?

- Sebastian

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] Re: [Bochs-developers] [PATCH v3 6/6] Don't power down vga card onentering S3 state.
  2008-11-10 20:25   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 6/6] Don't power down vga card onentering " Sebastian Herbszt
@ 2008-11-10 21:20     ` Gleb Natapov
  0 siblings, 0 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-10 21:20 UTC (permalink / raw)
  To: Sebastian Herbszt; +Cc: bochs-developers, qemu-devel

On Mon, Nov 10, 2008 at 09:25:02PM +0100, Sebastian Herbszt wrote:
> Gleb Natapov wrote:
>> This is needed to fool windows to enter S3. The trick works for XP and
>> Windows2003, but Vista still refuse to allow S3.
>>
>> Signed-off-by: Gleb Natapov <gleb@redhat.com>
>> ---
>>
>> bios/acpi-dsdt.dsl |   15 ++
>> bios/acpi-dsdt.hex |  373 ++++++++++++++++++++++++++--------------------------
>> 2 files changed, 204 insertions(+), 184 deletions(-)
>>
>> diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
>> index 280a05e..5fc3636 100644
>> --- a/bios/acpi-dsdt.dsl
>> +++ b/bios/acpi-dsdt.dsl
>> @@ -133,6 +133,21 @@ DefinitionBlock (
>>     }
>>
>>     Scope(\_SB.PCI0) {
>> +        Device (VGA) {
>> +                 Name (_ADR, 0x00020000)
>> +                 Method (_S1D, 0, NotSerialized)
>> +                 {
>> +                         Return (0x00)
>> +                 }
>> +                 Method (_S2D, 0, NotSerialized)
>> +                 {
>> +                         Return (0x00)
>> +                 }
>> +                 Method (_S3D, 0, NotSerialized)
>> +                 {
>> +                         Return (0x00)
>> +                 }
>> +        }
>
> Which vga card does need this? std, cirrus, vmware?
>
I tested with cirrus, but I believe std needs it too. Both of them to old
to support low power state. Don't know about vmware.

--
			Gleb.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] Re: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out ofline to save space in post code area.
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
@ 2008-11-13  0:10   ` Sebastian Herbszt
  2008-11-13 19:15     ` [Qemu-devel] " Stanislav Shwartsman
  0 siblings, 1 reply; 20+ messages in thread
From: Sebastian Herbszt @ 2008-11-13  0:10 UTC (permalink / raw)
  To: Gleb Natapov, bochs-developers, Stanislav Shwartsman; +Cc: qemu-devel

Gleb Natapov wrote:
> There are only a couple of bytes left in post area.
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> ---
> 
> bios/rombios.c |   48 ++++++++++++++++++++++++++----------------------
> 1 files changed, 26 insertions(+), 22 deletions(-)

Stanislav, please apply this one.

- Sebastian

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] Re: [Bochs-developers] [PATCH v3 5/6] Don't use unreserved memory inBIOS.
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 5/6] Don't use unreserved memory in BIOS Gleb Natapov
@ 2008-11-13  0:43   ` Sebastian Herbszt
  2008-11-13  7:41     ` Gleb Natapov
  0 siblings, 1 reply; 20+ messages in thread
From: Sebastian Herbszt @ 2008-11-13  0:43 UTC (permalink / raw)
  To: Gleb Natapov, bochs-developers; +Cc: qemu-devel

Gleb Natapov wrote:
> Use only first page and last page of low memory. OSes assumes that first
> page is used by bios and last page is reserved in e820 map.
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> ---
> 
> bios/rombios.c        |   11 +++++++----
> bios/rombios.h        |    1 -
> bios/rombios32.c      |   11 ++++-------
> bios/rombios32start.S |    2 +-
> 4 files changed, 12 insertions(+), 13 deletions(-)
> 
> diff --git a/bios/rombios.c b/bios/rombios.c
> index 630cfd2..c6c8b19 100644
> --- a/bios/rombios.c
> +++ b/bios/rombios.c
> @@ -4547,7 +4547,7 @@ ASM_END
>                 {
>                     case 0:
>                         set_e820_range(ES, regs.u.r16.di,
> -                                       0x0000000L, 0x0009fc00L, 1);
> +                                       0x0000000L, 0x0009f000L, 1);
>                         regs.u.r32.ebx = 1;
>                         regs.u.r32.eax = 0x534D4150;
>                         regs.u.r32.ecx = 0x14;
> @@ -4556,7 +4556,7 @@ ASM_END
>                         break;
>                     case 1:
>                         set_e820_range(ES, regs.u.r16.di,
> -                                       0x0009fc00L, 0x000a0000L, 2);
> +                                       0x0009f000L, 0x000a0000L, 2);
>                         regs.u.r32.ebx = 2;
>                         regs.u.r32.eax = 0x534D4150;
>                         regs.u.r32.ecx = 0x14;
> @@ -10032,8 +10032,11 @@ rombios32_05:
>   mov gs, ax
>   cld
> 
> -  ;; init the stack pointer
> -  mov esp, #0x00080000
> +  ;; init the stack pointer to point below EBDA
> +  mov ax, [0x040e]
> +  shl eax, #4
> +  mov esp, #-0x10
> +  add esp, eax

This could be a problem if the OS decides to put the wakeup
vector just below the EBDA. But as long as the EBDA is located
above 0x9f000 it should be ok and this can be changed later.

- Sebastian

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] Re: [Bochs-developers] [PATCH v3 5/6] Don't use unreserved memory inBIOS.
  2008-11-13  0:43   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 5/6] Don't use unreserved memory inBIOS Sebastian Herbszt
@ 2008-11-13  7:41     ` Gleb Natapov
  0 siblings, 0 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-13  7:41 UTC (permalink / raw)
  To: Sebastian Herbszt; +Cc: bochs-developers, qemu-devel

On Thu, Nov 13, 2008 at 01:43:35AM +0100, Sebastian Herbszt wrote:
>> @@ -10032,8 +10032,11 @@ rombios32_05:
>>   mov gs, ax
>>   cld
>>
>> -  ;; init the stack pointer
>> -  mov esp, #0x00080000
>> +  ;; init the stack pointer to point below EBDA
>> +  mov ax, [0x040e]
>> +  shl eax, #4
>> +  mov esp, #-0x10
>> +  add esp, eax
>
> This could be a problem if the OS decides to put the wakeup
> vector just below the EBDA. But as long as the EBDA is located
> above 0x9f000 it should be ok and this can be changed later.
>
The other problem is that extended ROM can relocate EBDA below 0x9f000.
I don't think that should stop us from applying this patch series :)

--
			Gleb.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] RE: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out ofline to save space in post code area.
  2008-11-13  0:10   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out ofline " Sebastian Herbszt
@ 2008-11-13 19:15     ` Stanislav Shwartsman
  2008-11-13 20:00       ` Anthony Liguori
  0 siblings, 1 reply; 20+ messages in thread
From: Stanislav Shwartsman @ 2008-11-13 19:15 UTC (permalink / raw)
  To: 'Sebastian Herbszt', 'Gleb Natapov',
	bochs-developers
  Cc: qemu-devel

Done.

-----Original Message-----
From: Sebastian Herbszt [mailto:herbszt@gmx.de] 
Sent: Thursday, November 13, 2008 2:10 AM
To: Gleb Natapov; bochs-developers@lists.sourceforge.net; Stanislav
Shwartsman
Cc: qemu-devel@nongnu.org
Subject: Re: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out
ofline to save space in post code area.

Gleb Natapov wrote:
> There are only a couple of bytes left in post area.
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> ---
> 
> bios/rombios.c |   48 ++++++++++++++++++++++++++----------------------
> 1 files changed, 26 insertions(+), 22 deletions(-)

Stanislav, please apply this one.

- Sebastian

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] RE: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out ofline to save space in post code area.
  2008-11-13 19:15     ` [Qemu-devel] " Stanislav Shwartsman
@ 2008-11-13 20:00       ` Anthony Liguori
  2008-11-14  9:47         ` Gleb Natapov
  0 siblings, 1 reply; 20+ messages in thread
From: Anthony Liguori @ 2008-11-13 20:00 UTC (permalink / raw)
  To: qemu-devel; +Cc: 'Gleb Natapov', 'Sebastian Herbszt'

Stanislav Shwartsman wrote:
> Done.
>   

Gleb,

What's the status of this patch series?  Are there particular patches 
that haven't made it into upstream Bochs yet that requiring 
refactoring?  Are there things that we should take in the bios.diff?  
Until the Bochs folks get around to applying?

Regards,

Anthony Liguori

> -----Original Message-----
> From: Sebastian Herbszt [mailto:herbszt@gmx.de] 
> Sent: Thursday, November 13, 2008 2:10 AM
> To: Gleb Natapov; bochs-developers@lists.sourceforge.net; Stanislav
> Shwartsman
> Cc: qemu-devel@nongnu.org
> Subject: Re: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out
> ofline to save space in post code area.
>
> Gleb Natapov wrote:
>   
>> There are only a couple of bytes left in post area.
>>
>> Signed-off-by: Gleb Natapov <gleb@redhat.com>
>> ---
>>
>> bios/rombios.c |   48 ++++++++++++++++++++++++++----------------------
>> 1 files changed, 26 insertions(+), 22 deletions(-)
>>     
>
> Stanislav, please apply this one.
>
> - Sebastian
>
>
>
>   

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] RE: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out ofline to save space in post code area.
  2008-11-13 20:00       ` Anthony Liguori
@ 2008-11-14  9:47         ` Gleb Natapov
  2008-11-14 20:36           ` [Qemu-devel] RE: [Bochs-developers] [PATCH v3 1/6] Move PICinitialization " Sebastian Herbszt
  0 siblings, 1 reply; 20+ messages in thread
From: Gleb Natapov @ 2008-11-14  9:47 UTC (permalink / raw)
  To: Anthony Liguori; +Cc: qemu-devel, 'Sebastian Herbszt'

On Thu, Nov 13, 2008 at 02:00:45PM -0600, Anthony Liguori wrote:
> What's the status of this patch series?  Are there particular patches  
> that haven't made it into upstream Bochs yet that requiring refactoring?  
Most of them are not yet upstream, but as far as I know there are no
outstanding issues that need to be addressed.

> Are there things that we should take in the bios.diff?  Until the Bochs 
> folks get around to applying?
I think Sebastian wants to check the patches with Bochs, but Bochs had a
bug that prevented him from doing it. The bug should have been fixed
today, so lets wait a little bit more for Bochs merge. Sebastian is this
description accurate?

--
			Gleb.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [Qemu-devel] RE: [Bochs-developers] [PATCH v3 1/6] Move PICinitialization out ofline to save space in post code area.
  2008-11-14  9:47         ` Gleb Natapov
@ 2008-11-14 20:36           ` Sebastian Herbszt
  0 siblings, 0 replies; 20+ messages in thread
From: Sebastian Herbszt @ 2008-11-14 20:36 UTC (permalink / raw)
  To: Gleb Natapov, Anthony Liguori; +Cc: qemu-devel

Gleb Natapov wrote:
> On Thu, Nov 13, 2008 at 02:00:45PM -0600, Anthony Liguori wrote:
>> What's the status of this patch series?  Are there particular patches  
>> that haven't made it into upstream Bochs yet that requiring refactoring?  
> Most of them are not yet upstream, but as far as I know there are no
> outstanding issues that need to be addressed.
> 
>> Are there things that we should take in the bios.diff?  Until the Bochs 
>> folks get around to applying?
> I think Sebastian wants to check the patches with Bochs, but Bochs had a
> bug that prevented him from doing it. The bug should have been fixed
> today, so lets wait a little bit more for Bochs merge. Sebastian is this
> description accurate?

It is correct.

- Sebastian

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] Re: [Bochs-developers] [PATCH v3 2/6] Add S3 state to DSDT. Handleresume event in the BIOS.
  2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 2/6] Add S3 state to DSDT. Handle resume event in the BIOS Gleb Natapov
@ 2008-11-15 17:43   ` Sebastian Herbszt
  2008-11-15 17:56     ` Gleb Natapov
  0 siblings, 1 reply; 20+ messages in thread
From: Sebastian Herbszt @ 2008-11-15 17:43 UTC (permalink / raw)
  To: Gleb Natapov, bochs-developers; +Cc: qemu-devel

Gleb Natapov wrote:
> @@ -2024,6 +2078,21 @@ void rombios32_init(void)
> 
>     smp_probe();
> 
> +    find_bios_table_area();
> +
> +    if (*shutdown_flag == 0xfe) {
> +        *s3_resume_vector = find_resume_vector();
> +        if (!*s3_resume_vector) {
> +         BX_INFO("This is S3 resume but wakeup vector is NULL\n");
> +        } else {
> +         BX_INFO("S3 resume vector %p\n", *s3_resume_vector);
> +            /* redirect bios read access to RAM */
> +            pci_for_each_device(find_440fx);
> +            bios_lock_shadow_ram(); /* bios is already copied */
> +            return;
> +        }
> +    }
> +
>     pci_bios_init();
> 
>     if (bios_table_cur_addr != 0) {

Any reason not to immediately return if the wakeup vector is NULL?

@@ -2092,8 +2100,8 @@ void rombios32_init(uint32_t *s3_resume_
             /* redirect bios read access to RAM */
             pci_for_each_device(find_440fx);
             bios_lock_shadow_ram(); /* bios is already copied */
-            return;
         }
+        return;
     }

     pci_bios_init();


Right now it's

08129025147i[BIOS ] Starting rombios32
08129025685i[BIOS ] Shutdown flag fe
08129026400i[BIOS ] ram_size=0x02000000
08129026920i[BIOS ] Found 1 cpu(s)
08129042926i[BIOS ] bios_table_addr: 0x000fb8d8 end=0x000fcc00
08129043418i[BIOS ] addr: fb8e0
...
08129190123i[BIOS ] addr: fcbf0
08129190427i[BIOS ] not found!
08129191319i[BIOS ] This is S3 resume but wakeup vector is NULL
08129191563i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
08129519297i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
08129847706i[P2I  ] PCI IRQ routing: PIRQA# set to 0x0b
08129847754i[P2I  ] PCI IRQ routing: PIRQB# set to 0x09
08129847802i[P2I  ] PCI IRQ routing: PIRQC# set to 0x0b
08129847850i[P2I  ] PCI IRQ routing: PIRQD# set to 0x09
08129847865i[P2I  ] write: ELCR2 = 0x0a
08129848774i[BIOS ] PIIX3/PIIX4 init: elcr=00 0a
08129869073i[BIOS ] PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 class=0x0600
08129872394i[BIOS ] PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 class=0x0601
08129875211i[BIOS ] PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 class=0x0101
08129876440i[BIOS ] region 4: 0x0000c000
08129879084i[BIOS ] PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 class=0x0680
08129879610i[ACPI ] new irq line = 11
08129902500i[BIOS ] MP table addr=0x000fb9b0 MPC table addr=0x000fb8e0 size=0xd0
08129903706i[BIOS ] SMBIOS table addr=0x000fb9c0
08129906032i[BIOS ] ACPI tables: RSDP addr=0x000fbad0 ACPI DATA addr=0x01ff0000 size=0x9c0
08129908490i[BIOS ] Firmware waking vector 0x1ff00cc
08129919858i[PCI  ] 440FX PMC write to PAM register 59 (TLB Flush)
08129920699i[BIOS ] bios_table_cur_addr: 0x000fbaf4
08129923802i[BIOS ] S3 resume called 00fe 0x00000000
08129948224p[BIOS ] >>PANIC<< Returned from s3_resume.

In any case we bail out in s3_resume() and panic. But if we don' return and let
rombios_init() continue the ACPI tables get recreated which could make debugging
a bit harder since we lose the old state.

- Sebastian

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [Qemu-devel] Re: [Bochs-developers] [PATCH v3 2/6] Add S3 state to DSDT. Handleresume event in the BIOS.
  2008-11-15 17:43   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 2/6] Add S3 state to DSDT. Handleresume " Sebastian Herbszt
@ 2008-11-15 17:56     ` Gleb Natapov
  0 siblings, 0 replies; 20+ messages in thread
From: Gleb Natapov @ 2008-11-15 17:56 UTC (permalink / raw)
  To: Sebastian Herbszt; +Cc: bochs-developers, qemu-devel

On Sat, Nov 15, 2008 at 06:43:44PM +0100, Sebastian Herbszt wrote:
> Any reason not to immediately return if the wakeup vector is NULL?
>
> @@ -2092,8 +2100,8 @@ void rombios32_init(uint32_t *s3_resume_
>             /* redirect bios read access to RAM */
>             pci_for_each_device(find_440fx);
>             bios_lock_shadow_ram(); /* bios is already copied */
> -            return;
>         }
> +        return;
>     }
>
>     pci_bios_init();
The idea was that if wakeup vector is NULL we proceed with regular
boot process. After changing S3 resume to not do normal POST, but 
jump to s3_post instead that's no longer works. Lets return here earlier
as you suggest and s3_resume can jump to normal POST if resume vector is
NULL.

--
			Gleb.

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2008-11-15 17:56 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-10  9:11 [Qemu-devel] [PATCH v3 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
2008-11-13  0:10   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 1/6] Move PIC initialization out ofline " Sebastian Herbszt
2008-11-13 19:15     ` [Qemu-devel] " Stanislav Shwartsman
2008-11-13 20:00       ` Anthony Liguori
2008-11-14  9:47         ` Gleb Natapov
2008-11-14 20:36           ` [Qemu-devel] RE: [Bochs-developers] [PATCH v3 1/6] Move PICinitialization " Sebastian Herbszt
2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 2/6] Add S3 state to DSDT. Handle resume event in the BIOS Gleb Natapov
2008-11-15 17:43   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 2/6] Add S3 state to DSDT. Handleresume " Sebastian Herbszt
2008-11-15 17:56     ` Gleb Natapov
2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 3/6] Preserve memory content during SMM init Gleb Natapov
2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 4/6] Execute rombios32 code from rom address 0xe0000 Gleb Natapov
2008-11-10  9:11 ` [Qemu-devel] [PATCH v3 5/6] Don't use unreserved memory in BIOS Gleb Natapov
2008-11-13  0:43   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 5/6] Don't use unreserved memory inBIOS Sebastian Herbszt
2008-11-13  7:41     ` Gleb Natapov
2008-11-10  9:12 ` [Qemu-devel] [PATCH v3 6/6] Don't power down vga card on entering S3 state Gleb Natapov
2008-11-10 12:07   ` Glauber Costa
2008-11-10 13:28     ` Gleb Natapov
2008-11-10 20:25   ` [Qemu-devel] Re: [Bochs-developers] [PATCH v3 6/6] Don't power down vga card onentering " Sebastian Herbszt
2008-11-10 21:20     ` Gleb Natapov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).