From patchwork Wed Feb 24 18:59:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 62827 Delivered-To: patch@linaro.org Received: by 10.112.43.199 with SMTP id y7csp2611525lbl; Wed, 24 Feb 2016 12:01:29 -0800 (PST) X-Received: by 10.140.18.163 with SMTP id 32mr5147845qgf.11.1456344089802; Wed, 24 Feb 2016 12:01:29 -0800 (PST) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id g48si4319277qgd.15.2016.02.24.12.01.29 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 24 Feb 2016 12:01:29 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org Received: from localhost ([::1]:38031 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYfcn-0001tn-8Z for patch@linaro.org; Wed, 24 Feb 2016 15:01:29 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58356) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYfbj-0000xB-2h for qemu-devel@nongnu.org; Wed, 24 Feb 2016 15:00:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aYfbe-0003zB-34 for qemu-devel@nongnu.org; Wed, 24 Feb 2016 15:00:23 -0500 Received: from vms173013pub.verizon.net ([206.46.173.13]:65355) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aYfbd-0003z0-Tf for qemu-devel@nongnu.org; Wed, 24 Feb 2016 15:00:18 -0500 Received: from vz-proxy-l004.mx.aol.com ([64.236.82.152]) by vms173013.mailsrvcs.net (Oracle Communications Messaging Server 7.0.5.32.0 64bit (built Jul 16 2014)) with ESMTPA id <0O3200CFQFF2BYB0@vms173013.mailsrvcs.net> for qemu-devel@nongnu.org; Wed, 24 Feb 2016 12:59:27 -0600 (CST) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.1 cv=J+9Xl1TS c=1 sm=1 tr=0 a=a3t/a0oOYlYu/nGe1mf8ZA==:117 a=xqWC_Br6kY4A:10 a=jFJIQSaiL_oA:10 a=fk1lIlRQAAAA:8 a=sdyfO6E0t5vO0-VYLp4A:9 a=S_QiB_Mv5dX-tseG:21 a=jE2zh0Mzs2bjICUo:21 Received: by 173.57.176.17 with SMTP id 7d13b425; Wed, 24 Feb 2016 18:59:27 GMT Received: from t430.minyard.net (unknown [IPv6:2001:470:b8f6:1b:88cc:7bcf:2247:8571]) by serve.minyard.net (Postfix) with ESMTPA id 0293F30C3; Wed, 24 Feb 2016 12:59:21 -0600 (CST) Received: by t430.minyard.net (Postfix, from userid 1000) id 28CC6302BDB; Wed, 24 Feb 2016 12:59:18 -0600 (CST) From: minyard@acm.org To: Igor Mammedov , "Michael S. Tsirkin" , Paolo Bonzini , qemu-devel@nongnu.org Date: Wed, 24 Feb 2016 12:59:16 -0600 Message-id: <1456340356-17147-6-git-send-email-minyard@acm.org> X-Mailer: git-send-email 2.5.0 In-reply-to: <1456340356-17147-1-git-send-email-minyard@acm.org> References: <1456340356-17147-1-git-send-email-minyard@acm.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 206.46.173.13 Cc: Corey Minyard , minyard@acm.org Subject: [Qemu-devel] [PATCH 5/5] bios: Add tests for the IPMI ACPI and SMBIOS entries X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org From: Corey Minyard Signed-off-by: Corey Minyard --- tests/acpi-test-data/pc/DSDT.ipmikcs | Bin 0 -> 5574 bytes tests/acpi-test-data/q35/DSDT.ipmibt | Bin 0 -> 8420 bytes tests/bios-tables-test.c | 58 ++++++++++++++++++++++++++++++++--- 3 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 tests/acpi-test-data/pc/DSDT.ipmikcs create mode 100644 tests/acpi-test-data/q35/DSDT.ipmibt -- 2.5.0 diff --git a/tests/acpi-test-data/pc/DSDT.ipmikcs b/tests/acpi-test-data/pc/DSDT.ipmikcs new file mode 100644 index 0000000000000000000000000000000000000000..b73ccc0ee985c5d0d3aa9d11715d1e7ea9e1e85a GIT binary patch literal 5574 zcmb7I-ER}w6+hQANygW9GERmNz7{L6(4__Z0Rg0{iaq1R4jyOlIEZRcXPgApX}e_< zKw5}a3RyK|dE2^F?VF)~hCiWws`|Kp!uDU-s)Z-gb7p)UH!#vRQfBTs=XZbSew=ge z9UHdM{QD6A=9HH8ik&Ilv2+7<3;?K2Z?!7l1!vnRExIfblbQ205w!79Qna5KrIkhY zr?&S;&wKdHV=W(6U#TxvTmDyj-YO92(W=imHPl(xF1gOm2}`eL6}M6~lErViq_{<+ z0gAg)HJEBDA*QTUta4L;7=qA@!>CwI6OsVmzE6PcJXJ}ax?Qdt8LMHq8EwwBn?>+R zc;18`N{PW)<6onzLWTp<{1QUZoUv2q1H27F#V_9<*HqDLmVzF;jU!$82301_uMZo z5exMMs9c7znpLhdxDJwDq=uxI@TDvm_*82rE=$5aaXLE}8%-Ul!-Y%WlF_JV_>o2C zgAZzK7T6-&giVNzJ_cv!+Rc(NfJ>4V57uTd-Jqif9x&{+4(s@yjp3}Fo%81M%An)K z)ZvZ_ADIP}fJ^d%p%1ol478bW`Dp@PcNCYr2QTG;#}j;Jk$o?HFM+(s-b!zA9cSm^ zf*d&gS9#L+b%C* zW+|^JKoTVArEGZ#4W+u-UTpp-xSbv!sNJRvtJ8L{P(3JWbX`s_L z$9p`X%~fydjW_}t+4MM1d_4+rDq*-G&q>Ee@LBC9UbJz}ZEE*O?d;UXaGFK2=}D{y zRBaSoD?2^Sr@kJCxHN)19RCvmpEeOD6Aglfr=?w^YQvY*=G%d0g3=RuG^9X2>e>yP zJ#UAjz~a=XlD_Y~bjUl#?+^B#8}gnDyytLy!`^e+$GzvA9h2s+AM(y)|A+hhko$b# zK7Yu4KEi#z@7_4<9_#%No_%4+eIamPIOM(%;lAMPEXz21`>=aCbT2}P4u!`sD1!-Y zG}vq{5w0-}6;-sms+pv8)2`~4S!8$y>eh0-4W6G)a0L|P!M~Q@-lK#IUK02oN;33X z+Hu{&kUr?u9r3VszLa{PaowV1pXLA1mPXN^4j4eTdk>FWAG}u!BQLyXtg_XYNmSp%gHQs>@>PZzKKuJlYt3H^2IxVTV}9403qSYROC@-7>5-?_FCJ8} zo#I8aVud@Evg%g0n4Jqx?UZ@%^ZT2RGwu5i{og$LWoGl%fb!lNF(XWHdjcdBDn>ozlk@%fB|m(yLX zV>Zm&p_WUiMrqSyo^zf^dQ7`$HfT8yX#GF8As|e2%(Cq=pHB$1rxj;R%$T?sg1{5}TEi_C{?HvHEKkJjar2|P@_g9o1~@&^(7%NQ}3?!f^=lxB$)-ubf9Dp2O4VC$X4qb zV;xchPPvdzpXMi@9UY!BO_ioeQw*k8$a9YLF3t&?xaDjPoHKV1Zeig`JEXAmdeb>Sq#%T* zV$VF>4O0hGRXc`?0^GeUi|ZUE5=DRD>q_YIYWV68;94kM4_`OJS228*!j~StjPO+s zUkjj?(|y;$Et{^0r7`~7y%fao-c0*P54`fdOTJ4o1@$Zp>$hlrmmJ8cV7LD@90MHp zo{m5Ii$P!sj#m_w{r$hb4-D|P|IpP?mvL#stKp$)LHeN@ffxQ}ktf2-Y>M+m_T8KB z-Y_}5Us@Hb5pK}`mK?kvWGWxjn-96*HN0jTUdTSXi^a+=xRawY!$D*FiaV*uJcfms zq^o4138=;2-KBkUc5cd-=o(@*%7X)fj|NwRly0s3F!yiZ4a?wE@JbNe0pIY9^E4R< zRKMp{=c|HlVY~%@TGBO(P3Y0-0VvS73<`D=w3LhC%upyVL0d~xjgDc}Zo@8h-%zOd zPfCowpoZcxsMta69a>+!#&DRSK~*feVFKqf&ePK*NK|PuRCn-EqgD-Dn1DFyQv@i& zJP&FoW;Ryjpa9eT)p>d(?2q+2L%E0#ThC~tRJ3ENd7oBNDWMf(BVlK=c-5!RK4<5G zo$Cu2e=*Q-FLDMR71YR!Mu8g6&S!S+I(D>I>iy3~>>`0S8LSOmhsgn%37RKbg5qh8 zt`Le}6%kOuIwGJWQP6^5#YhNQM! z7SMDQ^oC%a6wt{?s9>EE(5WbBQLtjoEa676ml~>u~`+9tjn!Cj|6F6tpZ@PYUSCNT^^vC7`FGpbLWa69N4s z5-M0v3+U;OLAA;W<959n>n69___44{wQeI2R1~n9g+hh|VVOq(D^h6LCV?!et#$%` zdfK(Itn{TANdudV5*CNPjeK1l*vJ{Cc;80e<_0!$hl$#^k-uwXo7ie&b;VP4*T#es zGM=j_AK3A9-L)}wgdM+zP(HA$Bx4c?dnS+%?DHgJI1BrBARpL+8Dn4yJ02#xwmxL1 zS!0L|>@;s<$WAlIU>VpmBoEo=QO0c_*tbbWyLOuHf%pp?{Q^To*K8smmin zM{@X6UQITu6hZV`-nls7*S_6sq&ED|H{4&ZJqW+6P)WD9;7;@^`IjV%;YXl1*^UUcNSd@xD9druq76*$@|Vq()+FtupaHJrxRslx zStvG;#0X$3Kz{g8AYmP}H_FgC|3Y)@F}DWjsX)*}fnHJ+_9^Q7W;oK!Dgt61xbw}v z_kHtbcjv8k{EpxKrpTD}pURro=oBljg`ST-i!nxRIy%kFHP*Z9SL%H$m&#bZdpXg@ zPsMhB=2x!Ntv_!@pGVQHk0NV5W*ZNk2OI102Omcpj6kv);_Z!ph)b$M7DA8Zz8xzh{&vGQo~)P>Jqy;c75SAYM_{Wo|9 zfU`K-IIhGLP#$WmP^vrh!%x%i(D`g|(|R9gmIZowIQQ8=;bgZ%Cu0Ir|4v@^Qi1}x9mSKsAWrgzVwc=l>_)h~u^zh89E_dDG(i>W7y zscZech&$0R|LGuNgDAJRx66i8pAOd9pVss2pZ^=%WxISDv(@et3ViCr30z1dXBo!c zWln4Sc^VE)ZEt%m+w7G4VmdK^MGPivwlAl6M3<+9`ys{e@>K6$k=o2#3(9F`;ZVV$ z6?Xj;OVxa!1h|^w+XP+!xXQe8b=C4J_-TdssrmSES|?vftLjv_w|%DF^)LW=jdQrB zH0pVNtZv0DW=?8}S#@iRZLw7LUDn%v=~Bhtho{r-gqWLsxq=w6h*@C0&R)lHDFxNN z?Pr3uEBnOh*(A~CV@u2-;Kd9S?ca6d%$=9hPXeN07E`{N<0V&YYn$XX-?#>%{up|fD>M5ybWF?7xtI%iCs2z8yahR#_-=d7s{p{~<4bh?I4*VKtn*Llp)dCbsx z%+!fc*EwhCoHKOJnK}{bI*%JVj~hCVn>rEdI_C|Y^M=lOQzt@Q=Lx|qk5{|Y zb|)m$I|zyCkFW~{bHQLPm`sE^^Q6H%X)sTkOoTe~l)*e@Fi)9GggW!I!8~m+Pn%4H zI`b*PR4((BV5&9#Dalj|H$q}6Cs{OVE*do#&6)^hO&bPU)(o`XY3>^++9*6SPy{F| zgERtF6b34B!jde!I|-n2%#?(xkeEsu3{+y3fof1PPze=GGEjsVjWSS)9Ys`Ac`X^J zgzg(CLJVDCVW1K_iioKumkd-w1(OUEq0$Khl~}=qfof1PPze=GGEjs{Ck#|#1rr9U zLCHWRR4~av5h|T9P>B^x7^ns%1C>z0Bm+gLbizO-Rxn|p8k7uFLIsly6rs`y1C?08 zgn?>MGEfN>Ofpb}N+%3dVg(ZhszJ#>B~&oUKoKgPFi?pVOc2Z#2?Lc_!GwWoP%=;n6-+Wvgi0q2RAL1a2C6~HKqXW#$v_b* zoiI>|6-*eY1|DxEM;i4{y3s0Jkil~BPX14XEG!ayZfFkzq?lnhit z1(OUEq0$Khl~}=qfof1PPze=GGEjs{Ck#|#1rr9ULCHWRR4~av5h|T9P>B^x7^ns% z1C>z0Bm+gLbizO-Rxn|p8k7uFLIsly6rs`y14X16C?efJ5$XntP%}`C2?N!bWS|<8 z3{+#nKs6=|RAZ8XYD_XvjR^zQm@rU{Nd~Gh$v`zG3{+#nKs6>AsKz7%)tE3)MC$6o zKoQ}JiOD1bMTpCwLSm}9g@Gbca|;7Sq~?|k6rq}1GEjs*a~JxsP&UjD#6PRM^bhGy zmJa3KyEx@ok20E|;s+uF+4Oej2tr+q{g=R>O%q z{O%?`u1xImoO`Z$*=tV#&@L6Gc+e40@UgJ|Q6OKTkO z2xaxZcpjf==p&GgVRs61eD;$mHj#$AF|6MVD>1UU)AAb!4FRJmyM?~r?6CK#&F_ky zY5Hoyc4v)Bg*@u^3`Pd%oCKaYUQh< zd^J(NdPMo^sC+G1e(VX#*R=9AQNETaUpu0FZB)LVET4UX@^!6zU6ijU%GZx5Umulk zB+HLKLHUMOz9Gst66G65lyCI5s~K9#66Hrvy;?i)RzY9c#0OBb&&`VGd6Xvk_$Jce z72{AE*=MFnK8J}kc;7gbM)sL$lFw5j4PHJDrICGRn&fklNP{<#Luq86nI?IEC(_`x z&*6_L*st_gf+jURVyLk$s~yP9Szd+!wttC|lT6@xry$O%}z4 z9Jd+%tDwL2c=O|Ro?_yVW^sfl!*PNZV*&EeJkeE3LUxS`2eOkp@yKacF;b5uCT&O_kYS*9usK( zeYYq7RPQL3t- z-ae2_Qb{IB6!KQia*p(UXhL%e+);B51M0_AnNG))oKD6xPC7NZLPXndoyA)I}mQsg+7P?0Ra4NiC59K;GS@yza zsf1e^PjahNl80sHI{j+tEW0M313Y)`33RNmYcFKft{6QPbSn$uIZ1p`9!A+-lF`fZ z@N;=6%R@yTJbA$TFqN;$Lk+vR`B7=HuSz>@m2v)uk0)6Q|GLw~pdajSF zdBGmx^yB<~JSi^SfAtH>aUtn-mHtvpoDna>2*2Fh`|Ee&1pD$8+F|oDm?yczmU#53 zUwh!OZ`v*MoV3JA&g)h&Tg+P6rgNUXhSj38(x1s@EEGcfTz|&S@Dx@;ie98MRMfe6 z;u_6uZ~Ic_d3ya1+trRTVvhF@T5`PbO0jWhy*XU|>-^Vws|XEv?WS$)uk*avyO$RM zEua^i-UlmQhzl?o(9zjgEscoIiK&{TcjXOk9v_FeEhVi)j|tT z07iY90A+T8i^U6%7M4V@0^*LwhWs(f$AVd;hXFqwujpoJ)l50HjNCrXbxI}dZ_;Lb zZ~M7U>17$09=(N>k&kYOIJxHuP4z%&BBGZE`z!EfX{;CG7`4jqhD_4ce18 t<2P^iH*QITKp)+?Vz=}g_Ah3omx}OF?C3UYm~5VQIbN5pvfUg@{U2y$;A#K> literal 0 HcmV?d00001 diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c index 0a80ddf..e681ced 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,9 @@ 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 +748,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 +761,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 +773,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 +786,49 @@ 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 +845,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);