diff mbox

[1/2] i386: Add an ACPI_EXTRACT_NAME_BUFFER16 directive.

Message ID 1410953992-14542-2-git-send-email-ghammer@redhat.com
State New
Headers show

Commit Message

Gal Hammer Sept. 17, 2014, 11:39 a.m. UTC
Add a 16-bytes buffer to allow storing a 128-bit UUID value in an
ACPI table.

Signed-off-by: Gal Hammer <ghammer@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
---
 scripts/acpi_extract.py | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

Comments

Michael S. Tsirkin Oct. 2, 2014, 12:20 p.m. UTC | #1
On Wed, Sep 17, 2014 at 02:39:51PM +0300, Gal Hammer wrote:
> Add a 16-bytes buffer to allow storing a 128-bit UUID value in an
> ACPI table.
> 
> Signed-off-by: Gal Hammer <ghammer@redhat.com>
> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>


This one looks good. Applied, thanks!

> ---
>  scripts/acpi_extract.py | 23 ++++++++++++++---------
>  1 file changed, 14 insertions(+), 9 deletions(-)
> 
> diff --git a/scripts/acpi_extract.py b/scripts/acpi_extract.py
> index 22ea468..10c1ffb 100755
> --- a/scripts/acpi_extract.py
> +++ b/scripts/acpi_extract.py
> @@ -139,13 +139,16 @@ def aml_name_string(offset):
>          offset += 1
>      return offset;
>  
> -# Given data offset, find 8 byte buffer offset
> -def aml_data_buffer8(offset):
> -    #0x08 NameOp NameString DataRef
> -    expect = [0x11, 0x0B, 0x0A, 0x08]
> +# Given data offset, find variable length byte buffer offset
> +def aml_data_buffer(offset, length):
> +    #0x11 PkgLength BufferSize ByteList
> +    if (length > 63):
> +        die( "Name offset 0x%x: expected a one byte PkgLength (length<=63)" %
> +             (offset));
> +    expect = [0x11, length+3, 0x0A, length]
>      if (aml[offset:offset+4] != expect):
>          die( "Name offset 0x%x: expected %s actual %s" %
> -             (offset, aml[offset:offset+4], expect))
> +             (offset, expect, aml[offset:offset+4]))
>      return offset + len(expect)
>  
>  # Given data offset, find dword const offset
> @@ -172,9 +175,9 @@ def aml_data_byte_const(offset):
>               (offset, aml[offset]));
>      return offset + 1;
>  
> -# Find name'd buffer8
> -def aml_name_buffer8(offset):
> -    return aml_data_buffer8(aml_name_string(offset) + 4)
> +# Find name'd buffer
> +def aml_name_buffer(offset, length):
> +    return aml_data_buffer(aml_name_string(offset) + 4, length)
>  
>  # Given name offset, find dword const offset
>  def aml_name_dword_const(offset):
> @@ -308,7 +311,9 @@ for i in range(len(asl)):
>          output[array] = aml
>          continue
>      if (directive == "ACPI_EXTRACT_NAME_BUFFER8"):
> -        offset = aml_name_buffer8(offset)
> +        offset = aml_name_buffer(offset, 8)
> +    elif (directive == "ACPI_EXTRACT_NAME_BUFFER16"):
> +        offset = aml_name_buffer(offset, 16)
>      elif (directive == "ACPI_EXTRACT_NAME_DWORD_CONST"):
>          offset = aml_name_dword_const(offset)
>      elif (directive == "ACPI_EXTRACT_NAME_WORD_CONST"):
> -- 
> 1.9.3
>
diff mbox

Patch

diff --git a/scripts/acpi_extract.py b/scripts/acpi_extract.py
index 22ea468..10c1ffb 100755
--- a/scripts/acpi_extract.py
+++ b/scripts/acpi_extract.py
@@ -139,13 +139,16 @@  def aml_name_string(offset):
         offset += 1
     return offset;
 
-# Given data offset, find 8 byte buffer offset
-def aml_data_buffer8(offset):
-    #0x08 NameOp NameString DataRef
-    expect = [0x11, 0x0B, 0x0A, 0x08]
+# Given data offset, find variable length byte buffer offset
+def aml_data_buffer(offset, length):
+    #0x11 PkgLength BufferSize ByteList
+    if (length > 63):
+        die( "Name offset 0x%x: expected a one byte PkgLength (length<=63)" %
+             (offset));
+    expect = [0x11, length+3, 0x0A, length]
     if (aml[offset:offset+4] != expect):
         die( "Name offset 0x%x: expected %s actual %s" %
-             (offset, aml[offset:offset+4], expect))
+             (offset, expect, aml[offset:offset+4]))
     return offset + len(expect)
 
 # Given data offset, find dword const offset
@@ -172,9 +175,9 @@  def aml_data_byte_const(offset):
              (offset, aml[offset]));
     return offset + 1;
 
-# Find name'd buffer8
-def aml_name_buffer8(offset):
-    return aml_data_buffer8(aml_name_string(offset) + 4)
+# Find name'd buffer
+def aml_name_buffer(offset, length):
+    return aml_data_buffer(aml_name_string(offset) + 4, length)
 
 # Given name offset, find dword const offset
 def aml_name_dword_const(offset):
@@ -308,7 +311,9 @@  for i in range(len(asl)):
         output[array] = aml
         continue
     if (directive == "ACPI_EXTRACT_NAME_BUFFER8"):
-        offset = aml_name_buffer8(offset)
+        offset = aml_name_buffer(offset, 8)
+    elif (directive == "ACPI_EXTRACT_NAME_BUFFER16"):
+        offset = aml_name_buffer(offset, 16)
     elif (directive == "ACPI_EXTRACT_NAME_DWORD_CONST"):
         offset = aml_name_dword_const(offset)
     elif (directive == "ACPI_EXTRACT_NAME_WORD_CONST"):