]> xenbits.xensource.com Git - osstest/seabios.git/commitdiff
acpi: parse Alias object
authorIgor Mammedov <imammedo@redhat.com>
Fri, 18 Nov 2022 14:27:55 +0000 (15:27 +0100)
committerGerd Hoffmann <kraxel@redhat.com>
Wed, 23 Nov 2022 08:23:30 +0000 (09:23 +0100)
Since QEMU commit
  47a373faa6 (acpi: pc/q35: drop ad-hoc PCI-ISA bridge AML routines and let bus ennumeration generate AML)
SeaBIOS fails to parse ISA bridge AML with:

   parse_termlist: parse error, skip from 92/517
   ...
   ACPI: no PS/2 keyboard present

due to Alias term in DSDT which isn't handled by SeaBIOS properly.
Add dumb Alias parsing which just skips over term,
so the rest of AML could be parsed successfully.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Reported-by: Volker RĂ¼melin <vr_qemu@t-online.de>
Message-Id: <20221118142755.3879231-1-imammedo@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
src/fw/dsdt_parser.c

index eb5496f3515aaa87c06fb0dd304be068e51c01d6..2ac82821e7f93a9bf3c755484381392c806038cd 100644 (file)
@@ -417,6 +417,10 @@ static int parse_termobj(struct parse_state *s,
         break;
     case 0x01: /* one */
         break;
+    case 0x06: /* AliasOp */
+        offset += parse_namestring(s, ptr + offset, "SourceObject");
+        offset += parse_namestring(s, ptr + offset, "AliasObject");
+        break;
     case 0x08: /* name op */
         offset += parse_namestring(s, ptr + offset, "name");
         offset += parse_termobj(s, ptr + offset);