Hi, On Mon, Nov 24, 2014 at 11:37:05AM +0200, Marcel Apfelbaum wrote: > On Sat, 2014-11-22 at 20:05 +0100, Vasilis Liaskovitis wrote: > > The test enables intel_iommu on q35 and reads the DMAR table and its only > > DRHC structure (for now), checking only the header and checksums. > > > > Signed-off-by: Vasilis Liaskovitis <vlias...@gmail.com> > > --- > > tests/bios-tables-test.c | 34 +++++++++++++++++++++++++++++++++- > > 1 file changed, 33 insertions(+), 1 deletion(-) > > > > diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c > > index 9e4d205..f09b0cb 100644 > > --- a/tests/bios-tables-test.c > > +++ b/tests/bios-tables-test.c > > @@ -45,6 +45,8 @@ typedef struct { > > AcpiRsdtDescriptorRev1 rsdt_table; > > AcpiFadtDescriptorRev1 fadt_table; > > AcpiFacsDescriptorRev1 facs_table; > > + AcpiTableDmar dmar_table; > > + AcpiDmarHardwareUnit drhd; > > uint32_t *rsdt_tables_addr; > > int rsdt_tables_nr; > > GArray *tables; > > @@ -371,6 +373,33 @@ static void test_acpi_dsdt_table(test_data *data) > > g_array_append_val(data->tables, dsdt_table); > > } > > > > +static void test_acpi_dmar_table(test_data *data) > > +{ > > + AcpiTableDmar *dmar_table = &data->dmar_table; > > + AcpiDmarHardwareUnit *drhd = &data->drhd; > > + struct AcpiTableHeader *header = (struct AcpiTableHeader *) dmar_table; > > + int tables_nr = data->rsdt_tables_nr - 1; > > + uint32_t addr = data->rsdt_tables_addr[tables_nr]; /* dmar is last */ > Hi, > > The DMAR table is always last? If not, it will break when we add another > table test. > I suggest going over the tables and looking for the DMAR signature.
agreed, it would also break if hw/i386/acpi-build.c adds other tables after DMAR. I posted v2 following your suggestion. thanks, - Vasilis