qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 5/5] tests: acpi: fix FADT not being compared to


From: Igor Mammedov
Subject: Re: [Qemu-devel] [PATCH 5/5] tests: acpi: fix FADT not being compared to reference table
Date: Tue, 16 Jan 2018 14:17:54 +0100

On Tue, 16 Jan 2018 06:16:34 +0200
"Michael S. Tsirkin" <address@hidden> wrote:

> On Fri, Dec 29, 2017 at 04:16:42PM +0100, Igor Mammedov wrote:
> > It turns out that FADT isn't actually tested for changes
> > against reference table, since it happens to be the 1st
> > table in RSDT which is currently ignored.
> > Fix it by making sure that all tables from RSDT are added
> > to test list.
> > 
> > Signed-off-by: Igor Mammedov <address@hidden>  
> 
> This was intentional, wasn't it?
> The reason IIRC was that FADT includes things like the DSDT
> address which can change at any time.
> 
> So I think we'll have to tweak the FADT to compare it.
> 
> E.g. replace any non-zero pointer with a known pattern,
> and fix up the checksum.
> 
> What do you think?
allocated pointers seem to be stable within a BIOS,
but bios update might change that, so you are right.

Perhaps we can just zero out pointers and checksum
in the table when comparing/dumping it
(if isal is fine with it).

So, pls take the rest of the series modulo this
patch which I'll fix/respin to handle pointers.

> 
> > ---
> >  tests/bios-tables-test.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
> > index 81c558e..c5dccdb 100644
> > --- a/tests/bios-tables-test.c
> > +++ b/tests/bios-tables-test.c
> > @@ -248,14 +248,14 @@ static void test_acpi_dsdt_table(test_data *data)
> >  /* Load all tables and add to test list directly RSDT referenced tables */
> >  static void fetch_rsdt_referenced_tables(test_data *data)
> >  {
> > -    int tables_nr = data->rsdt_tables_nr - 1; /* fadt is first */
> > +    int tables_nr = data->rsdt_tables_nr;
> >      int i;
> >  
> >      for (i = 0; i < tables_nr; i++) {
> >          AcpiSdtTable ssdt_table;
> >          uint32_t addr;
> >  
> > -        addr = le32_to_cpu(data->rsdt_tables_addr[i + 1]); /* fadt is 
> > first */
> > +        addr = le32_to_cpu(data->rsdt_tables_addr[i]);
> >          fetch_table(&ssdt_table, addr);
> >  
> >          /* Add table to ASL test tables list */
> > -- 
> > 2.7.4  
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]