qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v6 6/6] bios: Add tests for the IPMI ACPI and SMBIOS


From: minyard
Subject: [Qemu-devel] [PATCH v6 6/6] bios: Add tests for the IPMI ACPI and SMBIOS entries
Date: Mon, 23 May 2016 12:40:17 -0500

From: Corey Minyard <address@hidden>

Signed-off-by: Corey Minyard <address@hidden>
---
 tests/acpi-test-data/pc/DSDT.ipmikcs | Bin 0 -> 5659 bytes
 tests/acpi-test-data/q35/DSDT.ipmibt | Bin 0 -> 8432 bytes
 tests/bios-tables-test.c             |  60 ++++++++++++++++++++++++++++++++---
 3 files changed, 56 insertions(+), 4 deletions(-)
 create mode 100644 tests/acpi-test-data/pc/DSDT.ipmikcs
 create mode 100644 tests/acpi-test-data/q35/DSDT.ipmibt

diff --git a/tests/acpi-test-data/pc/DSDT.ipmikcs 
b/tests/acpi-test-data/pc/DSDT.ipmikcs
new file mode 100644
index 
0000000000000000000000000000000000000000..b715983862972b4d02b488d4317434aa55bac244
GIT binary patch
literal 5659
address@hidden<{w*j(4r7|M~Req)R{-QF3#v3B^jmL
zq&~<t5Jd<eGpOR^EoEJ_Z?wy2`vdf$ee7dCLi!a_H1<=}nL94UDmfq}pu3%!-_FeL
z&dkoqu#MKj902=Ud0nsC+45~mH;~5wfX4JzYq2}v>>K4(mnEeba~>yyF+R$Q_7kJL
zvC973@&4p_4?p!-+lS5P>eJ1(|H%_?6A1KZ)90K9>Y{6xU8lQX>9w5VR%=G8^d*-S
address@hidden<address@hidden@UtY8q}<TXOAI
z34G#sKC#*#d0h4SsV{mS^t|NZ;Q;address@hidden@Tr3Yt{9a=
address@hidden@XmevTo;address@hidden<oF1aBNH<oZ$a=OGlj_$tw
zt4pMXW&%_%!(`p6G#Fe5SufE**30-(Z=Ag>3&W(%>0WHMbW|E{SrRvk{GI0~R+$ez
zsL~>^Rki~=AWiIo)4g`1Y>eQttR;e787(xJ=z#|eXKlkaz8582uhYF?u5XMcPR|~n
zsPOnAs01u2D~3Kg#L1yY3w(Z+eJy`2Lu{43l3(FQEiS{mu|RizrEZnPVXqjqnXC#t
z&address@hidden)EQw548u
z0*`wD&address@hidden)Hn+xP^h5;iBj`gel3Hts0M0QNKN6G
z8ZM3W;E6`+kzPxvM;YodYx&`N-cA6zW4D^=d;address@hidden@L
zL2ac)=;o~?NNQC%3dVg)w_7X;address@hidden|~Y
zZkSD$R6_v~dbzP-W*t_p>o-6<Z|Rja$vI2Z;i2Clp}))S0Zn%<5PJY>15>f=sy8^L
address@hidden|0r)|address@hidden>h^Z1vUN7J?F(e)Yx;1Gf9;dRwfY
z>9u)m#I|AkS$ag35R~a{acRUU4>|IPqr<address@hidden>;*#_|U+Gy{|HUoeAiPwfl
z?Sbb!K6hCrZz<;}Ynj!&nN#qQr$>PvMMayf-Naq(C-(S$2a88yz?0fi?WW#LAfTDc
zO!4Gr6Oagkb{9S;9*^U*)=xg|;F>!$9uV8<)+ce9m=s}Rr?3!FnNx7D?93dW{cH*n
zavY<b<6jd0c0rpCbD5kV_q2>_)NJ^e#(Y2EOjC7$0l5^=Cowi`_IW4t0;^)PM*N}m
address@hidden<Y|oe$0A4u%1W%#;address@hidden)?Jx+bk%KW3dv|A+a)nE66rzHrQZA;NrNXx=z(
z9xs|7y!zsp`C?$cc+7k;!hF%`uE%io_HpyE(address@hidden<iW
address@hidden@RGszkcz>et)12_4C$j;{kVsP
z^O-yVjq4UA`y&6Rwl;zGbie?z-Me_t``|rai9hu|C0oPE9<=*>&*PKu(I(q`mO}Pj
zyn$t)EZ=09;fsIhwYU7Oz(EiC9P_);TKT2No+-hb%a1&@aq*~%bxRk`suiA8+G<$2
zQf?_MhiUWf2lsb&vz_}7{r4aJI=gfC!Tm=&TX!FTHXCF~KhZOdMiXxWOj3uLLHR08
zn6}=4BN?v4IZLv`!{<MH>d_3}Gwn*fKie~F4V#&Pe?BAP*<address@hidden
address@hidden)d>nHAe*KA#q7Pb<address@hidden<fbLmQ^$aA0n7yw(2
zW4~_?!=GRe$wRC-G?7oCv-NN|gTrb#e7jx|+;?#}<j$F;+e7SW99Dg^S+3F~8q`S<
z4(e5!K!Z9d*&#L!Xf6?fm}d92r^F-q4$&-NW&$RAIO5Q#PO^I6nCuZ7aLL6&<_v%1
z)05*%rlry{X^Fw|iUrP5y^CwY;S|mt4(HGz*C)#)_DMMjee#n;address@hidden
address@hidden@b-NY&4(Oh_Ub*G}28DX4Qd=}DYdO3g!-x{ciD7~_YzR>+X?NAC
z1j(N+=~gY5!;r>IuIF-~z2{bPd2r6&IcfsKn|6$0>5Z0iVT?ftO~si7xD%!hrmA)d
address@hidden(}<address@hidden@PRHg|AZhDu*vUd>address@hidden>}
z)bb?%-IFv(*s#<2(E~fq*QwVjrXZh%Vf_lluTvvB9h~;R$76uw+0*q$KM4Yf=n0j>
address@hidden)T;address@hidden>Iodk5voekJSijuu42R)>address@hidden@G{T2lT%s2m6C;
z^*i<EySm^7ykHuBL%eebi<Mn;XC`6{oyPGMcSea}vx{vkQddbr3s8T0w0%zZ(#kLN
zmC%8k6>|e4q(JCn9;<OR&QfTl^!qz>#!mM}>=LywR<km?T=+!LR-|=n<A=Ha5?-<_
zZUeRxLI3!YXPw8XfS}sHtU8|*bqixP_-QHEEVW=jHxD2|A7Dt>Ezr^~rUFBvvIZS3
zL-k$4ir;|)nto5Ai(^J+^w~ES%R#jd>h{>#U<<@yo}8*$)SUw7^UmWlM95U7vQ)G1
zQKwNIN0_|m^_v7J!7>l(E>;Ds=0WkM-q(42BAk!4K1+Fw4_nV_6IAde)x1wTsgzNQ
zA(6CmIc(4ATh-~lYv+dq#;yb!o=o1rYla2|F(}f&>Aqv<uj52}qcQx}#VImqGr`_a
address@hidden<UB`9_RXbPeDWfK7vTH^v5kAfD3R*ZyD>qI0}Xq^<$$tdU*p%uT>Laj<9
address@hidden()FRcPe`$|IpdD<*O1Kr#xtB($akG!+RITGIlWj)GnjTBihbDiSKRVvisC
zIvoYQF0`rwszySE){KB=qM+{ytuq2T6A2YsX9aXN3R)address@hidden&address@hidden<)h=P`d
z);R&4i-ZcTCk6Cm6jT>l=LK{=5-PNw63|moP(address@hidden(p+f6|fG$KqD?;lV0{TWI
zRA_xuK;Mjlt_ZDf3FupqP@(mVfS&n2s8(address@hidden
zl4T^YB88HDB1n?n>m>32Wd}Bvl_4b&HIl`U!s0NLk*%vE85zSAAIiwu(nv<;Fj0px
zvUiPS(|aAPu6QFK*qCsF#yc75BRSs82R5dTkmHvW(noTYXiNej&address@hidden
z=p%WsVhl_n$IIlv*2m<uY7DWFoYrlO$!X;nEF*cA=rQ>+(s=A6`99Go*UnH6iT^yL
R|K89M;address@hidden@v=5

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/q35/DSDT.ipmibt 
b/tests/acpi-test-data/q35/DSDT.ipmibt
new file mode 100644
index 
0000000000000000000000000000000000000000..74fc9b69204df80de3855657d3a4ff74e0eb964c
GIT binary patch
literal 8432
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
address@hidden&coYjpLZlt4NwIluy>u}v_

literal 0
HcmV?d00001

diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 0352814..6de4e13 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -50,6 +50,8 @@ typedef struct {
     GArray *tables;
     uint32_t smbios_ep_addr;
     struct smbios_21_entry_point smbios_ep_table;
+    uint8_t *required_struct_types;
+    int required_struct_types_len;
 } test_data;
 
 #define ACPI_READ_FIELD(field, addr)           \
@@ -335,7 +337,7 @@ static void test_acpi_tables(test_data *data)
     for (i = 0; i < tables_nr; i++) {
         AcpiSdtTable ssdt_table;
 
-        memset(&ssdt_table, 0 , sizeof(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->tables, ssdt_table);
@@ -654,7 +656,6 @@ static void test_smbios_structs(test_data *data)
     uint32_t addr = ep_table->structure_table_address;
     int i, len, max_len = 0;
     uint8_t type, prv, crt;
-    uint8_t required_struct_types[] = {0, 1, 3, 4, 16, 17, 19, 32, 127};
 
     /* walk the smbios tables */
     for (i = 0; i < ep_table->number_of_structures; i++) {
@@ -694,8 +695,8 @@ static void test_smbios_structs(test_data *data)
     g_assert_cmpuint(ep_table->max_structure_size, ==, max_len);
 
     /* required struct types must all be present */
-    for (i = 0; i < ARRAY_SIZE(required_struct_types); i++) {
-        g_assert(test_bit(required_struct_types[i], struct_bitmap));
+    for (i = 0; i < data->required_struct_types_len; i++) {
+        g_assert(test_bit(data->required_struct_types[i], struct_bitmap));
     }
 }
 
@@ -735,6 +736,10 @@ static void test_acpi_one(const char *params, test_data 
*data)
     g_free(args);
 }
 
+static uint8_t base_required_struct_types[] = {
+    0, 1, 3, 4, 16, 17, 19, 32, 127
+};
+
 static void test_acpi_piix4_tcg(void)
 {
     test_data data;
@@ -744,6 +749,8 @@ static void test_acpi_piix4_tcg(void)
      */
     memset(&data, 0, sizeof(data));
     data.machine = MACHINE_PC;
+    data.required_struct_types = base_required_struct_types;
+    data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
     test_acpi_one("-machine accel=tcg", &data);
     free_test_data(&data);
 }
@@ -755,6 +762,8 @@ static void test_acpi_piix4_tcg_bridge(void)
     memset(&data, 0, sizeof(data));
     data.machine = MACHINE_PC;
     data.variant = ".bridge";
+    data.required_struct_types = base_required_struct_types;
+    data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
     test_acpi_one("-machine accel=tcg -device pci-bridge,chassis_nr=1", &data);
     free_test_data(&data);
 }
@@ -765,6 +774,8 @@ static void test_acpi_q35_tcg(void)
 
     memset(&data, 0, sizeof(data));
     data.machine = MACHINE_Q35;
+    data.required_struct_types = base_required_struct_types;
+    data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
     test_acpi_one("-machine q35,accel=tcg", &data);
     free_test_data(&data);
 }
@@ -776,11 +787,50 @@ static void test_acpi_q35_tcg_bridge(void)
     memset(&data, 0, sizeof(data));
     data.machine = MACHINE_Q35;
     data.variant = ".bridge";
+    data.required_struct_types = base_required_struct_types;
+    data.required_struct_types_len = ARRAY_SIZE(base_required_struct_types);
     test_acpi_one("-machine q35,accel=tcg -device pci-bridge,chassis_nr=1",
                   &data);
     free_test_data(&data);
 }
 
+static uint8_t ipmi_required_struct_types[] = {
+    0, 1, 3, 4, 16, 17, 19, 32, 38, 127
+};
+
+static void test_acpi_q35_tcg_ipmi(void)
+{
+    test_data data;
+
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_Q35;
+    data.variant = ".ipmibt";
+    data.required_struct_types = ipmi_required_struct_types;
+    data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types);
+    test_acpi_one("-machine q35,accel=tcg -device ipmi-bmc-sim,id=bmc0"
+                  " -device isa-ipmi-bt,bmc=bmc0",
+                  &data);
+    free_test_data(&data);
+}
+
+static void test_acpi_piix4_tcg_ipmi(void)
+{
+    test_data data;
+
+    /* Supplying -machine accel argument overrides the default (qtest).
+     * This is to make guest actually run.
+     */
+    memset(&data, 0, sizeof(data));
+    data.machine = MACHINE_PC;
+    data.variant = ".ipmikcs";
+    data.required_struct_types = ipmi_required_struct_types;
+    data.required_struct_types_len = ARRAY_SIZE(ipmi_required_struct_types);
+    test_acpi_one("-machine accel=tcg -device ipmi-bmc-sim,id=bmc0"
+                  " -device isa-ipmi-kcs,irq=0,bmc=bmc0",
+                  &data);
+    free_test_data(&data);
+}
+
 int main(int argc, char *argv[])
 {
     const char *arch = qtest_get_arch();
@@ -797,6 +847,8 @@ int main(int argc, char *argv[])
         qtest_add_func("acpi/piix4/tcg/bridge", test_acpi_piix4_tcg_bridge);
         qtest_add_func("acpi/q35/tcg", test_acpi_q35_tcg);
         qtest_add_func("acpi/q35/tcg/bridge", test_acpi_q35_tcg_bridge);
+        qtest_add_func("acpi/piix4/tcg/ipmi", test_acpi_piix4_tcg_ipmi);
+        qtest_add_func("acpi/q35/tcg/ipmi", test_acpi_q35_tcg_ipmi);
     }
     ret = g_test_run();
     boot_sector_cleanup(disk);
-- 
2.7.4




reply via email to

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