| 
         
xen-devel
Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature
 
 Again the output and the debugging changes to acpi/boot.c.
 
 There are 5 additional calls to the fadt parser.
 
    Stefan
 
 [...]
 (XEN) sign: RSDT; name=RSDT0 
(XEN) ACPI: RSDT (v001 IBM    SERBLADE 0x00001000 IBM  0x45444f43)
@ 0x3ffcff80 
(XEN) (2) Mapped 0x3ffcfec0 to fff9bec0, base = 0xfff9b000 
(XEN) (2) Mapped 0x3ffcfec0 to fff9bec0, base = 0xfff9b000 
(XEN) sign: FACP; name=FADT 
(XEN) ACPI: FADT (v002 IBM    SERBLADE 0x00001000 IBM  0x45444f43)
@ 0x3ffcfec0 
(XEN) std_entry[0].id = 7,matches sign FACP 
(XEN) (2) Mapped 0x3ffcfe00 to fff9be00, base = 0xfff9b000 
(XEN) (2) Mapped 0x3ffcfe00 to fff9be00, base = 0xfff9b000 
(XEN) sign: APIC; name=MADT 
(XEN) ACPI: MADT (v001 IBM    SERBLADE 0x00001000 IBM  0x45444f43)
@ 0x3ffcfe00 
(XEN) std_entry[1].id = 1,matches sign APIC 
(XEN) (2) Mapped 0x3ffcfdc0 to fff9bdc0, base = 0xfff9b000 
(XEN) (2) Mapped 0x3ffcfdc0 to fff9bdc0, base = 0xfff9b000 
(XEN) sign: MCFG; name=MCFG< 
(XEN) ACPI: MCFG (v001 IBM    SERBLADE 0x00001000 IBM  0x45444f43)
@ 0x3ffcfdc0 
(XEN) std_entry[2].id = 18,matches sign MCFG 
(XEN) (2) Mapped 0x3ffcfec0 to fff9bec0, base = 0xfff9b000 
(XEN) (2) Mapped 0x3ffbe4a8 to fff9b4a8, base = 0xfff9b000 
(XEN) sign: DSDT; name=DSDT 
(XEN) ACPI: DSDT (v001 IBM    SERBLADE 0x00001000 INTL 0x02002025)
@ 0x00000000 
(XEN) NUMA turned off 
(XEN) Faking a node at 0000000000000000-000000003ffb0000 
(XEN) Xen heap: 9MB (10184kB) 
(XEN) Domain heap initialised: DMA width 32 bits 
(XEN) PAE enabled, limit: 16 GB 
(XEN) found SMP MP-table at 0009d540 
(XEN) DMI 2.3 present. 
(XEN) (1) Mapped 0xf601f to ff0f601f 
(XEN) Using APIC driver default 
(XEN) IN acpi_parse_fadt. 
(XEN) (2) Mapped 0x3ffcfec0 to fff9bec0, base = 0xfff9b000 
(XEN) ACPI: Invalid FADT signature A__ADR 
 (XEN) IN acpi_parse_fadt. 
(XEN) (2) Mapped 0x3ffcfec0 to fff9bec0, base = 0xfff9b000 
(XEN) ACPI: PM-Timer IO Port: 0x588 
 (XEN) (2) Mapped 0x3ffcfd80 to fff9bd80, base = 0xfff9b000 
(XEN) ACPI: ACPI SLEEP INFO: pm1x_cnt[584,0], pm1x_evt[580,0] 
(XEN)                  wakeup_vec[3ffcfd8c],
vec_size[20] 
(XEN) IN acpi_parse_fadt. 
(XEN) (2) Mapped 0x3ffcfec0 to fff9bec0, base = 0xfff9b000 
(XEN) ACPI: PM-Timer IO Port: 0x588 
 (XEN) (2) Mapped 0x3ffcfd80 to fff9bd80, base = 0xfff9b000 
(XEN) ACPI: ACPI SLEEP INFO: pm1x_cnt[584,0], pm1x_evt[580,0] 
(XEN)                  wakeup_vec[3ffcfd8c],
vec_size[20] 
(XEN) IN acpi_parse_fadt. 
(XEN) (2) Mapped 0x3ffcfec0 to fff9bec0, base = 0xfff9b000 
(XEN) ACPI: PM-Timer IO Port: 0x588 
(XEN) (2) Mapped 0x3ffcfd80 to fff9bd80, base = 0xfff9b000 
(XEN) ACPI: ACPI SLEEP INFO: pm1x_cnt[584,0], pm1x_evt[580,0] 
(XEN)                  wakeup_vec[3ffcfd8c],
vec_size[20]
 
 
 
 
 
 diff -r 7c5c3aa858cc xen/arch/x86/acpi/boot.c 
--- a/xen/arch/x86/acpi/boot.c          
      Tue Jul 31 15:09:45 2007 +0100 
+++ b/xen/arch/x86/acpi/boot.c          
      Fri Aug 10 07:34:46 2007 -0400 
@@ -106,8 +106,10 @@ char *__acpi_map_table(unsigned long phy 
                  unsigned
long base, offset, mapped_size; 
                  int
idx; 
  
-                
if (phys + size < 8 * 1024 * 1024) 
+                
if (phys + size < 8 * 1024 * 1024) { 
+                
                 printk("(1)
Mapped 0x%lx to %p\n",phys,__va(phys)); 
                  
               
return __va(phys); 
+                
} 
  
                  offset
= phys & (PAGE_SIZE - 1); 
                  mapped_size
= PAGE_SIZE - offset; 
@@ -126,6 +128,7 @@ char *__acpi_map_table(unsigned long phy 
                  
               
mapped_size += PAGE_SIZE; 
                  } 
  
+                
printk("(2) Mapped 0x%lx to %p, base = 0x%lx\n",phys,((char *)base
+ offset),base); 
                  return
((char *) base + offset); 
 } 
  
@@ -308,8 +311,10 @@ static int __init acpi_parse_sbf(unsigne 
 { 
                  struct
acpi_table_sbf *sb; 
  
-                
if (!phys_addr || !size) 
+                
if (!phys_addr || !size) { 
+                
                 printk("SBF:
Bad phys addr. or size.\n"); 
                  
               
return -EINVAL; 
+                
} 
  
                  sb
= (struct acpi_table_sbf *)__acpi_map_table(phys_addr, size); 
                  if
(!sb) { 
@@ -318,6 +323,7 @@ static int __init acpi_parse_sbf(unsigne 
                  } 
  
                  sbf_port
= sb->sbf_cmos;              
  /* Save CMOS port */ 
+printk("Successfully read SBF.\n"); 
  
                  return
0; 
 } 
@@ -467,11 +473,19 @@ static int __init acpi_parse_fadt(unsign 
 { 
                  struct
fadt_descriptor_rev2 *fadt = NULL; 
  
+printk("IN acpi_parse_fadt.\n"); 
                  fadt
= (struct fadt_descriptor_rev2 *)__acpi_map_table(phys, size); 
                  if
(!fadt) { 
                  
               
printk(KERN_WARNING PREFIX "Unable to map FADT\n"); 
                  
               
return 0; 
                  } 
+ 
+                
if (strncmp(fadt->signature, "FACP", 4)) { 
+                
                 printk(KERN_ERR
PREFIX "Invalid FADT signature %s\n", 
+                
                 
               
fadt->signature); 
+                
                 return
0; 
+                
} 
+ 
  
 #ifdef                
CONFIG_ACPI_INTERPRETER 
                  /*
initialize sci_int early for INT_SRC_OVR MADT parsing */ 
@@ -1002,19 +1016,24 @@ int __init acpi_boot_init(void) 
                  if
(acpi_disabled && !acpi_ht) 
                  
               
return 1; 
  
+acpi_table_parse(ACPI_FADT, acpi_parse_fadt); 
                  acpi_table_parse(ACPI_BOOT,
acpi_parse_sbf); 
  
                  /* 
                  
* set sci_int and PM timer address 
                  
*/ 
+acpi_table_parse(ACPI_FADT, acpi_parse_fadt); 
                  acpi_table_parse(ACPI_FADT,
acpi_parse_fadt); 
  
                  /* 
                  
* Process the Multiple APIC Description Table (MADT), if present 
                  
*/ 
+acpi_table_parse(ACPI_FADT, acpi_parse_fadt); 
                  acpi_process_madt(); 
  
+acpi_table_parse(ACPI_FADT, acpi_parse_fadt); 
                  acpi_table_parse(ACPI_HPET,
acpi_parse_hpet); 
- 
-                
return 0; 
-} 
+acpi_table_parse(ACPI_FADT, acpi_parse_fadt); 
+ 
+                
return 0; 
+} 
 
 
 
 
 Keir Fraser <keir@xxxxxxxxxxxxx> wrote on 08/10/2007
02:55:50 AM: 
 
> Did you check the signature on all three mappings, and only the  
> first time you mapped it was broken? Weird. 
>  
>  -- Keir 
>  
>  
> On 9/8/07 18:54, "Stefan Berger" <stefanb@xxxxxxxxxx>
wrote: 
 > (XEN) (2) Mapped 0x3ffcfec0 to fff9bec0 
> (XEN) ACPI: Invalid FADT signature A__ADR 
>  
> That one is bad. It has a bad signature! First call.  
>  
>  
> (XEN) (2) Mapped 0x3ffcfec0 to fff9bec0 
> (XEN) ACPI: PM-Timer IO Port: 0x588  
>  
> 2nd call. This one is good! POrt is also good.  
>  
> (XEN) (2) Mapped 0x3ffcfd80 to fff9bd80 
> (XEN) ACPI: ACPI SLEEP INFO: pm1x_cnt[584,0], pm1x_evt[580,0] 
> (XEN)                  wakeup_vec[3ffcfd8c],
vec_size[20] 
> (XEN) (2) Mapped 0x3ffcfec0 to fff9bec0 
> (XEN) ACPI: PM-Timer IO Port: 0x588  
>  
> 3rd call. This one is also good!  
>  
> Looks like the mapping does not work correctly. _______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] [PATCH] [Xen] Check FADT's signature, Stefan Berger
- Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Keir Fraser
 
- Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Jan Beulich
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Stefan Berger
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Keir Fraser
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Stefan Berger
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Keir Fraser
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Stefan Berger
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Keir Fraser
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Stefan Berger
 - Re: [Xen-devel] [PATCH] [Xen] Check FADT's signature, Keir Fraser
 
  
 
 |  
  
 | 
    |