RE: [PATCHv2 01/12] acpi: Create subtable parsing infrastructure

From: Schmauss, Erik
Date: Wed Dec 19 2018 - 20:15:47 EST




> -----Original Message-----
> From: linux-acpi-owner@xxxxxxxxxxxxxxx [mailto:linux-acpi-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Dan Williams
> Sent: Wednesday, December 19, 2018 4:00 PM
> To: Schmauss, Erik <erik.schmauss@xxxxxxxxx>
> Cc: Rafael J. Wysocki <rafael@xxxxxxxxxx>; Busch, Keith
> <keith.busch@xxxxxxxxx>; Moore, Robert <robert.moore@xxxxxxxxx>;
> Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>; ACPI Devel
> Maling List <linux-acpi@xxxxxxxxxxxxxxx>; Linux Memory Management
> List <linux-mm@xxxxxxxxx>; Greg Kroah-Hartman
> <gregkh@xxxxxxxxxxxxxxxxxxx>; Hansen, Dave
> <dave.hansen@xxxxxxxxx>
> Subject: Re: [PATCHv2 01/12] acpi: Create subtable parsing
> infrastructure
>
> On Wed, Dec 19, 2018 at 3:19 PM Schmauss, Erik
> <erik.schmauss@xxxxxxxxx> wrote:
> >
> >
> >
> > > -----Original Message-----
> > > From: linux-acpi-owner@xxxxxxxxxxxxxxx [mailto:linux-acpi-
> > > owner@xxxxxxxxxxxxxxx] On Behalf Of Rafael J. Wysocki
> > > Sent: Tuesday, December 11, 2018 1:45 AM
> > > To: Busch, Keith <keith.busch@xxxxxxxxx>
> > > Cc: Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>; ACPI
> > > Devel Maling List <linux-acpi@xxxxxxxxxxxxxxx>; Linux Memory
> > > Management List <linux-mm@xxxxxxxxx>; Greg Kroah-Hartman
> > > <gregkh@xxxxxxxxxxxxxxxxxxx>; Rafael J. Wysocki
> <rafael@xxxxxxxxxx>;
> > > Hansen, Dave <dave.hansen@xxxxxxxxx>; Williams, Dan J
> > > <dan.j.williams@xxxxxxxxx>
> > > Subject: Re: [PATCHv2 01/12] acpi: Create subtable parsing
> > > infrastructure
> > >
> > > On Tue, Dec 11, 2018 at 2:05 AM Keith Busch
> <keith.busch@xxxxxxxxx>
> > > wrote:
> > > >
> >
> > Hi Rafael and Bob,
> >
> > > > Parsing entries in an ACPI table had assumed a generic header
> > > > structure that is most common. There is no standard ACPI
> header,
> > > > though, so less common types would need custom parsers if they
> > > > want go through their sub-table entry list.
> > >
> > > It looks like the problem at hand is that acpi_hmat_structure is
> > > incompatible with acpi_subtable_header because of the different
> layout and field sizes.
> >
> > Just out of curiosity, why don't we use ACPICA code to parse static
> > ACPI tables in Linux?
> >
> > We have a disassembler for static tables that parses all supported
> > tables. This seems like a duplication of code/effort...
>
Hi Dan,

> Oh, I thought acpi_table_parse_entries() was the common code.
> What's the ACPICA duplicate?

I was thinking AcpiDmDumpTable(). After looking at this ACPICA code,
I realized that the this ACPICA doesn't actually build a parse tree or data structure.
It loops over the data structure to format the input ACPI table to a file.

To me, it seems like a good idea for Linux and ACPICA to share the same code when
parsing and analyzing these structures. I know that Linux may emit warnings
that are specific to Linux but there are structural analyses that should be the same (such as
checking lengths of tables and subtables so that we don't have out of bounds access).

Erik