* [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements
@ 2014-01-16 15:50 Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 1/3] acpi unit-test: renamed ssdt_tables to tables Marcel Apfelbaum
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Marcel Apfelbaum @ 2014-01-16 15:50 UTC (permalink / raw)
To: qemu-devel; +Cc: mst
patch 1: refactoring
Addressed Michael S. Tsirkin's prev comments:
Renamed ssdt_tables to tables to avoid confusion.
patch 2: resolved iasl crash
Addressed Michael S. Tsirkin's prev comments:
Do not assume the order of ssdt tables and
single ssdt table.
patch 3: do not fail on asl mismatch
Rather than failing the test, print a
warning message including the asl file
names that can be compared offline.
Marcel Apfelbaum (3):
acpi unit-test: renamed ssdt_tables to tables
acpi unit-test: resolved iasl crash
acpi unit-test: do not fail on asl mismatch
tests/acpi-test-data/pc/SSDT | Bin 2104 -> 2104 bytes
tests/acpi-test-data/q35/DSDT | Bin 7344 -> 7344 bytes
tests/acpi-test.c | 79 ++++++++++++++++++++++++++----------------
3 files changed, 50 insertions(+), 29 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 1/3] acpi unit-test: renamed ssdt_tables to tables
2014-01-16 15:50 [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Marcel Apfelbaum
@ 2014-01-16 15:50 ` Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 2/3] acpi unit-test: resolved iasl crash Marcel Apfelbaum
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Marcel Apfelbaum @ 2014-01-16 15:50 UTC (permalink / raw)
To: qemu-devel; +Cc: mst
Just a refactoring, ssdt_tables name was confusing as
it included other tables as well.
Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
---
tests/acpi-test.c | 48 ++++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 24 deletions(-)
diff --git a/tests/acpi-test.c b/tests/acpi-test.c
index 89c4b81..ef998e8 100644
--- a/tests/acpi-test.c
+++ b/tests/acpi-test.c
@@ -44,7 +44,7 @@ typedef struct {
AcpiFacsDescriptorRev1 facs_table;
uint32_t *rsdt_tables_addr;
int rsdt_tables_nr;
- GArray *ssdt_tables; /* first is DSDT */
+ GArray *tables;
} test_data;
#define LOW(x) ((x) & 0xff)
@@ -145,8 +145,8 @@ static void free_test_data(test_data *data)
g_free(data->rsdt_tables_addr);
}
- for (i = 0; i < data->ssdt_tables->len; ++i) {
- temp = &g_array_index(data->ssdt_tables, AcpiSdtTable, i);
+ for (i = 0; i < data->tables->len; ++i) {
+ temp = &g_array_index(data->tables, AcpiSdtTable, i);
if (temp->aml) {
g_free(temp->aml);
}
@@ -167,7 +167,7 @@ static void free_test_data(test_data *data)
}
}
- g_array_free(data->ssdt_tables, false);
+ g_array_free(data->tables, false);
}
static uint8_t acpi_checksum(const uint8_t *data, int len)
@@ -342,27 +342,27 @@ static void test_acpi_dsdt_table(test_data *data)
uint32_t addr = data->fadt_table.dsdt;
memset(&dsdt_table, 0, sizeof(dsdt_table));
- data->ssdt_tables = g_array_new(false, true, sizeof(AcpiSdtTable));
+ data->tables = g_array_new(false, true, sizeof(AcpiSdtTable));
test_dst_table(&dsdt_table, addr);
g_assert_cmphex(dsdt_table.header.signature, ==, ACPI_DSDT_SIGNATURE);
/* Place DSDT first */
- g_array_append_val(data->ssdt_tables, dsdt_table);
+ g_array_append_val(data->tables, dsdt_table);
}
-static void test_acpi_ssdt_tables(test_data *data)
+static void test_acpi_tables(test_data *data)
{
- int ssdt_tables_nr = data->rsdt_tables_nr - 1; /* fadt is first */
+ int tables_nr = data->rsdt_tables_nr - 1; /* fadt is first */
int i;
- for (i = 0; i < ssdt_tables_nr; i++) {
+ for (i = 0; i < tables_nr; i++) {
AcpiSdtTable ssdt_table;
memset(&ssdt_table, 0 , sizeof(ssdt_table));
uint32_t addr = data->rsdt_tables_addr[i + 1]; /* fadt is first */
test_dst_table(&ssdt_table, addr);
- g_array_append_val(data->ssdt_tables, ssdt_table);
+ g_array_append_val(data->tables, ssdt_table);
}
}
@@ -375,8 +375,8 @@ static void dump_aml_files(test_data *data, bool rebuild)
ssize_t ret;
int i;
- for (i = 0; i < data->ssdt_tables->len; ++i) {
- sdt = &g_array_index(data->ssdt_tables, AcpiSdtTable, i);
+ for (i = 0; i < data->tables->len; ++i) {
+ sdt = &g_array_index(data->tables, AcpiSdtTable, i);
g_assert(sdt->aml);
if (rebuild) {
@@ -474,10 +474,10 @@ static GArray *load_expected_aml(test_data *data)
GError *error = NULL;
gboolean ret;
- GArray *exp_ssdt_tables = g_array_new(false, true, sizeof(AcpiSdtTable));
- for (i = 0; i < data->ssdt_tables->len; ++i) {
+ GArray *exp_tables = g_array_new(false, true, sizeof(AcpiSdtTable));
+ for (i = 0; i < data->tables->len; ++i) {
AcpiSdtTable exp_sdt;
- sdt = &g_array_index(data->ssdt_tables, AcpiSdtTable, i);
+ sdt = &g_array_index(data->tables, AcpiSdtTable, i);
memset(&exp_sdt, 0, sizeof(exp_sdt));
exp_sdt.header.signature = sdt->header.signature;
@@ -493,10 +493,10 @@ static GArray *load_expected_aml(test_data *data)
g_assert(exp_sdt.aml);
g_assert(exp_sdt.aml_len);
- g_array_append_val(exp_ssdt_tables, exp_sdt);
+ g_array_append_val(exp_tables, exp_sdt);
}
- return exp_ssdt_tables;
+ return exp_tables;
}
static void test_acpi_asl(test_data *data)
@@ -506,18 +506,18 @@ static void test_acpi_asl(test_data *data)
test_data exp_data;
memset(&exp_data, 0, sizeof(exp_data));
- exp_data.ssdt_tables = load_expected_aml(data);
+ exp_data.tables = load_expected_aml(data);
dump_aml_files(data, false);
- for (i = 0; i < data->ssdt_tables->len; ++i) {
+ for (i = 0; i < data->tables->len; ++i) {
GString *asl, *exp_asl;
- sdt = &g_array_index(data->ssdt_tables, AcpiSdtTable, i);
- exp_sdt = &g_array_index(exp_data.ssdt_tables, AcpiSdtTable, i);
+ sdt = &g_array_index(data->tables, AcpiSdtTable, i);
+ exp_sdt = &g_array_index(exp_data.tables, AcpiSdtTable, i);
- load_asl(data->ssdt_tables, sdt);
+ load_asl(data->tables, sdt);
asl = normalize_asl(sdt->asl);
- load_asl(exp_data.ssdt_tables, exp_sdt);
+ load_asl(exp_data.tables, exp_sdt);
exp_asl = normalize_asl(exp_sdt->asl);
g_assert(!g_strcmp0(asl->str, exp_asl->str));
@@ -570,7 +570,7 @@ static void test_acpi_one(const char *params, test_data *data)
test_acpi_fadt_table(data);
test_acpi_facs_table(data);
test_acpi_dsdt_table(data);
- test_acpi_ssdt_tables(data);
+ test_acpi_tables(data);
if (iasl) {
if (getenv(ACPI_REBUILD_EXPECTED_AML)) {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 2/3] acpi unit-test: resolved iasl crash
2014-01-16 15:50 [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 1/3] acpi unit-test: renamed ssdt_tables to tables Marcel Apfelbaum
@ 2014-01-16 15:50 ` Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 3/3] acpi unit-test: do not fail on asl mismatch Marcel Apfelbaum
2014-01-20 9:35 ` [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Michael S. Tsirkin
3 siblings, 0 replies; 5+ messages in thread
From: Marcel Apfelbaum @ 2014-01-16 15:50 UTC (permalink / raw)
To: qemu-devel; +Cc: mst
It seems that iasl has an issue when disassembles
some ACPI tables using the command line:
iasl -e DSDT -e SSDT -d HPET
Modified the iasl command line to "iasl -d HPET"
until the problem is solved. The command line
remained the same for DSDT and SSDT tables.
Reported-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
---
tests/acpi-test.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/tests/acpi-test.c b/tests/acpi-test.c
index ef998e8..c73b3b1 100644
--- a/tests/acpi-test.c
+++ b/tests/acpi-test.c
@@ -23,6 +23,7 @@
#define MACHINE_Q35 "q35"
#define ACPI_REBUILD_EXPECTED_AML "TEST_ACPI_REBUILD_AML"
+#define ACPI_SSDT_SIGNATURE 0x54445353 /* SSDT */
/* DSDT and SSDTs format */
typedef struct {
@@ -403,6 +404,11 @@ static void dump_aml_files(test_data *data, bool rebuild)
}
}
+static bool compare_signature(AcpiSdtTable *sdt, uint32_t signature)
+{
+ return sdt->header.signature == signature;
+}
+
static void load_asl(GArray *sdts, AcpiSdtTable *sdt)
{
AcpiSdtTable *temp;
@@ -419,9 +425,15 @@ static void load_asl(GArray *sdts, AcpiSdtTable *sdt)
/* build command line */
g_string_append_printf(command_line, " -p %s ", sdt->asl_file);
- for (i = 0; i < 2; ++i) { /* reference DSDT and SSDT */
- temp = &g_array_index(sdts, AcpiSdtTable, i);
- g_string_append_printf(command_line, "-e %s ", temp->aml_file);
+ if (compare_signature(sdt, ACPI_DSDT_SIGNATURE) ||
+ compare_signature(sdt, ACPI_SSDT_SIGNATURE)) {
+ for (i = 0; i < sdts->len; ++i) {
+ temp = &g_array_index(sdts, AcpiSdtTable, i);
+ if (compare_signature(temp, ACPI_DSDT_SIGNATURE) ||
+ compare_signature(temp, ACPI_SSDT_SIGNATURE)) {
+ g_string_append_printf(command_line, "-e %s ", temp->aml_file);
+ }
+ }
}
g_string_append_printf(command_line, "-d %s", sdt->aml_file);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] [PATCH 3/3] acpi unit-test: do not fail on asl mismatch
2014-01-16 15:50 [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 1/3] acpi unit-test: renamed ssdt_tables to tables Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 2/3] acpi unit-test: resolved iasl crash Marcel Apfelbaum
@ 2014-01-16 15:50 ` Marcel Apfelbaum
2014-01-20 9:35 ` [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Michael S. Tsirkin
3 siblings, 0 replies; 5+ messages in thread
From: Marcel Apfelbaum @ 2014-01-16 15:50 UTC (permalink / raw)
To: qemu-devel; +Cc: mst
The asl comparison will break every time the ACPI
tables are updated. This may break the git bisect.
Instead of failing print a warning on stderr
including the retained asl files, so they can be
compared offline.
Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com>
---
tests/acpi-test.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/tests/acpi-test.c b/tests/acpi-test.c
index c73b3b1..41da079 100644
--- a/tests/acpi-test.c
+++ b/tests/acpi-test.c
@@ -34,6 +34,7 @@ typedef struct {
gchar *asl; /* asl code generated from aml */
gsize asl_len;
gchar *asl_file;
+ bool asl_file_retain; /* do not delete the temp asl */
} QEMU_PACKED AcpiSdtTable;
typedef struct {
@@ -161,7 +162,7 @@ static void free_test_data(test_data *data)
g_free(temp->asl);
}
if (temp->asl_file) {
- if (g_strstr_len(temp->asl_file, -1, "asl-")) {
+ if (!temp->asl_file_retain) {
unlink(temp->asl_file);
}
g_free(temp->asl_file);
@@ -532,7 +533,15 @@ static void test_acpi_asl(test_data *data)
load_asl(exp_data.tables, exp_sdt);
exp_asl = normalize_asl(exp_sdt->asl);
- g_assert(!g_strcmp0(asl->str, exp_asl->str));
+ if (g_strcmp0(asl->str, exp_asl->str)) {
+ sdt->asl_file_retain = true;
+ exp_sdt->asl_file_retain = true;
+ fprintf(stderr,
+ "acpi-test: Warning! %.4s mismatch. "
+ "Orig asl: %s, expected asl %s.\n",
+ (gchar *)&exp_sdt->header.signature,
+ sdt->asl_file, exp_sdt->asl_file);
+ }
g_string_free(asl, true);
g_string_free(exp_asl, true);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements
2014-01-16 15:50 [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Marcel Apfelbaum
` (2 preceding siblings ...)
2014-01-16 15:50 ` [Qemu-devel] [PATCH 3/3] acpi unit-test: do not fail on asl mismatch Marcel Apfelbaum
@ 2014-01-20 9:35 ` Michael S. Tsirkin
3 siblings, 0 replies; 5+ messages in thread
From: Michael S. Tsirkin @ 2014-01-20 9:35 UTC (permalink / raw)
To: Marcel Apfelbaum; +Cc: qemu-devel
On Thu, Jan 16, 2014 at 05:50:45PM +0200, Marcel Apfelbaum wrote:
> patch 1: refactoring
> Addressed Michael S. Tsirkin's prev comments:
> Renamed ssdt_tables to tables to avoid confusion.
> patch 2: resolved iasl crash
> Addressed Michael S. Tsirkin's prev comments:
> Do not assume the order of ssdt tables and
> single ssdt table.
> patch 3: do not fail on asl mismatch
> Rather than failing the test, print a
> warning message including the asl file
> names that can be compared offline.
Thanks, applied.
> Marcel Apfelbaum (3):
> acpi unit-test: renamed ssdt_tables to tables
> acpi unit-test: resolved iasl crash
> acpi unit-test: do not fail on asl mismatch
>
> tests/acpi-test-data/pc/SSDT | Bin 2104 -> 2104 bytes
> tests/acpi-test-data/q35/DSDT | Bin 7344 -> 7344 bytes
> tests/acpi-test.c | 79 ++++++++++++++++++++++++++----------------
> 3 files changed, 50 insertions(+), 29 deletions(-)
>
> --
> 1.8.3.1
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-01-20 9:31 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-16 15:50 [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 1/3] acpi unit-test: renamed ssdt_tables to tables Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 2/3] acpi unit-test: resolved iasl crash Marcel Apfelbaum
2014-01-16 15:50 ` [Qemu-devel] [PATCH 3/3] acpi unit-test: do not fail on asl mismatch Marcel Apfelbaum
2014-01-20 9:35 ` [Qemu-devel] [PATCH 0/3] acpi unit-test: fixes and improvements Michael S. Tsirkin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.