From d82c4f82e0233da642c36c40ef8da781fee689bc Mon Sep 17 00:00:00 2001 From: Dou Liyang Date: Thu, 14 Dec 2017 12:08:54 +0800 Subject: [PATCH] ACPI/unit-test: Add a testcase for RAM allocation in numa node As QEMU supports the memory-less node, it is possible that there is no RAM in the first numa node(also be called as node0). eg: ... \ -m 128,slots=3,maxmem=1G \ -numa node -numa node,mem=128M \ But, this makes it hard for QEMU to build a known-to-work ACPI SRAT table. Only fixing it is not enough. Add a testcase for this situation to make sure the ACPI table is correct for guest. Suggested-by: Eduardo Habkost Signed-off-by: Dou Liyang Reviewed-by: Igor Mammedov Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin --- tests/acpi-test-data/pc/DSDT.numamem | Bin 0 -> 5150 bytes tests/acpi-test-data/pc/SRAT.numamem | Bin 0 -> 224 bytes tests/acpi-test-data/q35/DSDT.numamem | Bin 0 -> 7834 bytes tests/acpi-test-data/q35/SRAT.numamem | Bin 0 -> 224 bytes tests/bios-tables-test.c | 24 ++++++++++++++++++++++++ 5 files changed, 24 insertions(+) create mode 100644 tests/acpi-test-data/pc/DSDT.numamem create mode 100644 tests/acpi-test-data/pc/SRAT.numamem create mode 100644 tests/acpi-test-data/q35/DSDT.numamem create mode 100644 tests/acpi-test-data/q35/SRAT.numamem diff --git a/tests/acpi-test-data/pc/DSDT.numamem b/tests/acpi-test-data/pc/DSDT.numamem new file mode 100644 index 0000000000000000000000000000000000000000..224cfdd9e983e02dac5f4bf7e210eaa64cb0dc78 GIT binary patch literal 5150 zc-p0y-)|eo5yxlmj?!_Dl#bH*rxKfx;~GgDn-p!?MuEcQ9wpKesWVBrE>0*(SwX2F zfDcX#L=l403g9??3se_<=mTx&+4>XGKOuiY`Y*U>tf#OuciJOM^9mRhz~jx%=e{$$ zJG-}{UAG(OECBYpuqI0Nbm5*OY;0oyK=<@*mbDFVyLMr@$qYqf?qkEh$4f!Ceq$Hb zm)YMst-rQfUwqqQZ4WkIn$I`e-ZxKMn?TT`O^ZDv;VfGO%Fr`V7XQ++q4QF0m;NC5o!ivgPZ*d%-QZn0{ootoWDTZ_$l zBM%<6v^;8Rf7Rk;MkYyLZO9m(BUPCRAXUij&O=1$f`Q6&u2YR<7rp0S5thH6s+>;+XEQ z{&<;G=t+Rm6_{Lgid6Oa_m7BGBj3%2lkUIBXWQe|yDd~kYp^g*4+ z=D{Q|uP@mmoW#lFjOO_1W%gQqt%A19-l%VIpyqGEN1CslU0QYWaK5yH%$V=Bj~pI+%JI(pGN*r~3e2 zXkqFmPcE}B)h|_DpYQtl6g9C{$x4A33o1~`(1b+E9H~bt=<}v8vqUlrBQjhGbqfDO zM>$eZN2gLN>4PHbI-=fS2E5`rmN*##+t<^0vD0q1Uc8McZf7adW&t+*G+>i4}4IlUdW4fMEsiJA|<_f1&ESoo- zS_8ZprQ7nL{jv~$-sWBJt2S3))7yR6-UP0~{hqmhAE7udo7L)y4O_hr_V2S^YQN33 zu(=LfFOs2^M<}&_pDSTY;kZQ&TLf%*U+-*k6L8_e(=7mRw~g_hZZYt-p0?WXsD03K zAAfK~m1~7o8*^%RGCE$ebXlNFPPb;ucW_jD@m=2SU`fXhxM3}p?}%C)fm$Xt#f|SK zAnq624m_ha9>Z(7XFTsLm3*PI_WG*q(G8t9t4rpZ#tM;%W?aIDQOY z&zcUF5+yqUPJDn)Oc{18du ztfxy4zVJSK^r!U0Pd3<5n|6kSglM)ijcJzLB;P&2qJ@dq9ouUg6^nf0x2s zg8Y(s;gmC(Y=$xj(v4Xu(OCL}(&PIbcp@^H%(hjUz&$Judh~9A*k~gvjMcYFQ=%@adXzeAz04c?Eqo>8Rym5` z2=|t?w>sp{1P<3|I}Sd3J2Rv)%8M1PS9)8@pU?49xTUf&IBJdWXeBPz>W#$zH;mY0 zZ+lEK9#_VppN>JtX6JshqET4|X928GEG_+j3Ji;|l5eC8u7gfzFQ64i6;4wM)>IQa zWl+zcv;8Tq*n1VQ=CGodono_?S%BjeNYzafZLVqL8ZPwAB3L((%>s>0xL$)d>hJ;< zRX_RvB1~azgfIDE#oprl?@yDUB>cYg>4HbHqr_2y>DbQjsEL1X(0!B$?PQ<8e|>uj zAn?;(*Y6wQ>B#rULzCX`|L{w2`;VWW{d(|B@JCp`-~aQ-8LJz-1?fDCLl7MFl1|mh z;J zsPe#{s{$4{cEhM=GQrUvjgRWtOnA;$z(TdGjfXtCS&%n5x^eeDtY>c^TVJmp|GR^a zs9??b#Yv|!3P5f`7c$4FCQ&UCm8vm`#-h-iRGpCML?kLzCnY)=g5=}&+QZ*^jWE6T`s!mCCDiW2d(-NJILT^Y_Q=(=h zDpgYwO+}$MrRt1CXChIlIxErHC^RosEs0u@s8l^6(GyWUoKtABS3{Is0z4q4W~F9endXp}lU~H%v5eHw%n38PanLjhys!$skX1w`1T7=?QHs z$Cg4?=+n@;7WydGwa`bw7DFFJTMT^^?t18>c-P4{z1#7Bqe1&dCbSjb9{4q~Zw~yr zZx8$?+4+G#?b`$YEwT#(f7iDMe!s_J;P?A1hWylPd&p1ywuk)G^Wu=7`d%FJQ}36C e{M3J(+imMS9aF#q`XPX(kbY!f$2a&d)qemTkj*^+ literal 0 Hc-jL100001 diff --git a/tests/acpi-test-data/pc/SRAT.numamem b/tests/acpi-test-data/pc/SRAT.numamem new file mode 100644 index 0000000000000000000000000000000000000000..dbc595d9cb85d3fcb5a4243153f42bb431c9de8f GIT binary patch literal 224 zc-jjNatwLEz`(%x#mV2jB1F=Cg2*ZH@DxXn<0VhCJ$A~7&ML?YZ Nl>WeuT^$2a002#=3IPBB literal 0 Hc-jL100001 diff --git a/tests/acpi-test-data/q35/DSDT.numamem b/tests/acpi-test-data/q35/DSDT.numamem new file mode 100644 index 0000000000000000000000000000000000000000..8c9fa445b0119b6f67533cb968855b41fb9925d9 GIT binary patch literal 7834 zc-p0zTW{mW8HQ&_N}`68L`jt7^-03!BIqGmc{fdp77bP+b*e2}mbBRfG9d0YX}#G3 z5%vINy9i)AKn{CRAaNTMMK830{zub)kh?C>tKRmuDB`QQGeb${t3v^!z946Y-}}Au zd?Gm}>2}=ipEn7ie=F}f^-iJucFS@37$t;=w%A(@?SS--+;Xi?4Mn59V?(z2rmWjP zcFVVF^iPN0SDyFiQ;*&mkh@=7f4qBV@bPEfT_S=W-yJX}8rC-Jcgp?ViNjh>qp0`m z4c9Dv%XGc(_$^iMm)thd`?ne{wRa-@y^fo>o; z{iyWKFaG}PXZM-L1FrME&i6M4V&gsaSl%02U!LBh9|^fUwlz$Dc`6V4W0u$sJTdaz z^oK;MtaA{*n1p=$y+O3zu_gNHw<^1Cq1AT#1^e}W zr&}TeG2#ux(4F6T%<_ij7pERM^^EiL5gEq6IK4yuaK|M7{7+~^Ml8WA(e5OZEdEK9 zm!2ml8X-@Jbu;p+n2snLFJHLPDfMNk_yqENGOb2?Utu0Idq+F`7gX30Q+mf&M4LE! z&5}we-b-8dMB^6yH0;n2ZQ)C zU16CT9gqRBl&gf+=mYYADB&lhck;$|*`0=~svVW}m?BD{M?6Bg>Rs|K-(OXT5Wd{p zyEPRi(z8OHg{~4y1ir~xrhyuAxmh&%pxwP8dR%-j#{Hhu)i1iLpI^o*Qdyh!XdqPam6eOG8gNmivOew6K&a{~s~250;Gz){ zn1M!UAXFn0%1JlK83N7_aE6dGgq&gE3#mI4cCt<#t;puBytfb!180?Ipq1=Nq5ETDeibOH54 zrwgc`f3kr3v6BTf5UTjf-~t+OQKd4lfCfTUUm09L11=gNff;Co20}G5p`0$D0hbVP zhJZ7KoFU{417{dG!^jy%&IoWufHQ)e5#-c?QwL5RId$ZW0%sIBqsSRWP6nI|I2m#> z!{oSP`QE1O{ncA)OHhVyNR{UgJ&K*^XQqM zc-pIdzJ!vYc`6@PN8*9>d06a9z2l!L?$CH9rEeRbA8bP4-vz`iQ&t26f1CHB>^eQnl0dCHA$keSOwG zatZr-z`ic+>ofNCCH8f0uZdgPti9#iPi`KTwDn)U;g}tk)_f=OkJHUw#w>~Hk_*x$ zm#3S%E>oB;wIE$;dAhmlERE^X3(}>Rr<=QOY)oe_NM|okH+LOmFkNOry3F!)bLVvy z(`6T=%Pvnhcb?`jU2Z|T+=6u0-W!vz83z~d%3JM9XZm3yEDd5#>sF!u!K1-%AOEKC z;Jt?*Jbv)2_a2fSby_>yW1|>jHTuGQVN&ync%R?q3!?GDWM=R9CDAF7f+OC`JB{5A zb=u9hs8ji6krK^uny%hEPKhAZ=~Q+KJkl+73%1#B>^AfP5re&x@+$}O3j&{uKfhSX zX*G()tsy_XKIX+cIY_w)0?;p{Ls8xU`} zdO8=+XFp&GulMqTOe4>3h6K^&jOgqj&#*ARU5`5*XIEdAoqAuFj8l*DsSn6(2(R$4 zrp*D#UxJrwcAOWV&d-cTbC>7a+OR&KO8%aUQ!#Zu7Z2yT7K1jU&R(Z${(oiU#DjYa zCNp5lqR{sjgf5(2@8fMvoK{5s@iUa4TKY(wVEiO(mbyuU>4ZPei~sa&qc6^I@skoe z-sez;AR~wO-sjir+f8Dx@iV&Cs`M+x>tuWdinCk%(3UNZ1kdy0>%^)h4yIqx{LAhp zV}JQ9Mif&{=v-`Qjh>ljCe`^kHB~Y69Y1_#PW!QQ5%}*<`Axw;F4i^qWH0{|B9G8< z_nY(czkWY%zWMA&7aIRhgq@$uw;1rJ%R3Igxo8~3|5O@l?Y4>~4&vWc#CYI#qKjfO zBXBz@gbQJ6Jt5W)4#d$L{Zv?^+>f_k>!);$DNK>QpNJ#E)cW~B;4|Z^)!UALE0670 znzwijuP<=1LRLuJw5(n2Kz^;NYQEg)6pQ{xN{;cvPVuMHFP4<>^`*1rl96m&pEPdB LM!4ndcFBJMI>Rw) literal 0 Hc-jL100001 diff --git a/tests/acpi-test-data/q35/SRAT.numamem b/tests/acpi-test-data/q35/SRAT.numamem new file mode 100644 index 0000000000000000000000000000000000000000..dbc595d9cb85d3fcb5a4243153f42bb431c9de8f GIT binary patch literal 224 zc-jjNatwLEz`(%x#mV2jB1F=Cg2*ZH@DxXn<0VhCJ$A~7&ML?YZ Nl>WeuT^$2a002#=3IPBB literal 0 Hc-jL100001 diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c index e28e0c98cfa..def81fc243b 100644 --- a/tests/bios-tables-test.c +++ b/tests/bios-tables-test.c @@ -810,6 +810,28 @@ static void test_acpi_piix4_tcg_memhp(void) free_test_data(&data); } +static void test_acpi_q35_tcg_numamem(void) +{ + test_data data; + + memset(&data, 0, sizeof(data)); + data.machine = MACHINE_Q35; + data.variant = ".numamem"; + test_acpi_one(" -numa node -numa node,mem=128", &data); + free_test_data(&data); +} + +static void test_acpi_piix4_tcg_numamem(void) +{ + test_data data; + + memset(&data, 0, sizeof(data)); + data.machine = MACHINE_PC; + data.variant = ".numamem"; + test_acpi_one(" -numa node -numa node,mem=128", &data); + free_test_data(&data); +} + int main(int argc, char *argv[]) { const char *arch = qtest_get_arch(); @@ -832,6 +854,8 @@ int main(int argc, char *argv[]) qtest_add_func("acpi/q35/cpuhp", test_acpi_q35_tcg_cphp); qtest_add_func("acpi/piix4/memhp", test_acpi_piix4_tcg_memhp); qtest_add_func("acpi/q35/memhp", test_acpi_q35_tcg_memhp); + qtest_add_func("acpi/piix4/numamem", test_acpi_piix4_tcg_numamem); + qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem); } ret = g_test_run(); boot_sector_cleanup(disk); -- 2.39.5