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 <imammedo@redhat.com>
---
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
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 <imammedo@redhat.com>
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?
> ---
> 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
On Tue, 16 Jan 2018 06:16:34 +0200
"Michael S. Tsirkin" <mst@redhat.com> 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 <imammedo@redhat.com>
>
> 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
>
© 2016 - 2025 Red Hat, Inc.