qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v4 2/2] ACPI/unit-test: Add a new testcase for RAM a


From: Dou Liyang
Subject: [Qemu-devel] [PATCH v4 2/2] ACPI/unit-test: Add a new testcase for RAM allocation in numa node
Date: Tue, 22 Aug 2017 11:24:10 +0800

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 <address@hidden>
Signed-off-by: Dou Liyang <address@hidden>
---
 tests/acpi-test-data/pc/DSDT.numamem  | Bin 0 -> 6463 bytes
 tests/acpi-test-data/pc/SLIT.numamem  | Bin 0 -> 48 bytes
 tests/acpi-test-data/pc/SRAT.numamem  | Bin 0 -> 264 bytes
 tests/acpi-test-data/q35/DSDT.numamem | Bin 0 -> 9147 bytes
 tests/acpi-test-data/q35/SLIT.numamem | Bin 0 -> 48 bytes
 tests/acpi-test-data/q35/SRAT.numamem | Bin 0 -> 264 bytes
 tests/bios-tables-test.c              |  30 ++++++++++++++++++++++++++++++
 7 files changed, 30 insertions(+)
 create mode 100644 tests/acpi-test-data/pc/DSDT.numamem
 create mode 100644 tests/acpi-test-data/pc/SLIT.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/SLIT.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..53f6d5824359ff0ca20179b19b3b5cb79f017f82
GIT binary patch
literal 6463
zcmcgw-EJGl6`tiTrR9*4meR(St)wR8{4{A|^T&}Bv}jH4QX(xbwdPW;i#5unETdGA
z)(a&rq6h(G22h;b1+0tqjy8C0KSKKmd4%*8QZ(^Z)bH$aD2CDk$wf;*t2uMN{mwZv
address@hidden>6p#moMTMdFKrkVCsVp*8z%ZB#u&BfzgAUlGxxwOt+k|NOp)9N$)Jr#N!8yp
address@hidden>address@hidden
address@hidden)rwti3XlX4)NrF>H!YT8?5ppSOmQD*Brn`7*UgOGFk2aY
zrR6k>%%>jDr>address@hidden>dT(TdS3GAXu$fjU-sJUFYOfj*MH&zHsEt=%V;address@hidden
zAYza+g|R)Ry>f}XA$Q&GIr~<w5crysnFLqtT)~JjexzNCkHHM3>J(cc4g*WLD_JAP
zJq~wY{rx3kp*I<;TxQcXyIhypJ4`l;)R2u5{%OXA%d#*`Y;O0hM$-UkIAlo-7Wuo#
zUs#iT<})p}%%nAGm+i9H)E;xYSJzAC2rkQdA{doXpuvkC^O%IUw%IoRFUJtC+kMU2
z*c`n$w=nsl%HzvSBVbWoHI30EP7gg=;)`q2H}W?!Q`V&K<nJ(0%h%W&O2D04t=UB}
address@hidden<~7U%}rzU*bpnef}+<<Eq+PHOuL<T&FY~|HUA<-Cx)2=Ezrt
z>5Jji(address@hidden(address@hidden@M^WY*;xlsBtOGKtV$j5=HY|el9b0
address@hidden($^J%xEM}?0F14DtNStdYnWDw&66TBzwwLq&Nu%a&R+)hnaB?obq)n
zMfE9VRFVXvlr3L}qExpUQc?>QBp9Xorj>D}Qq5Rr`YX0kz8-Tgl5}+BcSz~)Njr>Q
zcVDCK0n_SOLZz0r&MED6leg?fllk+p1J7seC#A%rHb3w`Zu1!1^7nV!Ta3%>PG9TY
z0VsiGQ>(address@hidden<;address@hidden;jvLqY1ku=dJMMhf3mm5HHL-D
z9&R(address@hidden&#^;kLy5?T22Q-ER*(_rc4TW%8ER3avKDZrsSKc;x7jr$<567pgZfs{O=1
zKj>i5Ck8yJuT*asjRXLVY<iX_Kc8ZWAldfV7u3h&cvkz#M;*l6q4t2f-EM6fVIrBs
z1(`wtq4K0+teo^2zVP`hOUQ9#DaT(De|t=y3)dhyLGJ14mRWV!C)DN#LC+kmYBnI3
z0{LvqX*kjsozM$ZvqqKrht^9I){(zI+InuxdM>address@hidden
z=f}+F1M~R_^Z5w#`Js7p(mXbZA02&R%zPm*Uzjjoh%jGpyBi9kcP7m%p?Q%)w2NTM
zMcGa2Q^92G$#9IxRdmtpY8zL>4bR}WkBh$DD346=sUW##40|(Ex%Z*}{{25>cJF?0
address@hidden>8(&z9z9}?3t88jYd)address@hidden;`>-IP!e
zvJz7a!!l87<_RPlPPvu=(kwPJda6~eS5==;address@hidden&MrA55oOC
zuBVOW>hEHG-s`YKBb&|c=#?qduwuf!c>A&<address@hidden|lM3?Q=X0L>
z+6hf<ec<U<oFe*ZhNMX<Fr3P-S7r^zsH;(address@hidden&J;loJ63GlAin
zgk$g}|Ac2i`;zx~UFla&QU&vQIu(~sasdvm(*v~<#)i{OMFo25e4TI>5&Ju*#O3qY
zWG_MAo9x68oa&wX>address@hidden
zGS=C74=eVT#q=d)^qO66m9u%wS#a#4?52rEt%;8<N~>arWoO2&+u34v1?EuoXRNz_
zytliT>6}=b;address@hidden
z>^`_OHc;dfG0Ik>RLkH|!J|g48d~<PR>pns<|+6hyT+}u(~>MoK#NkxqEiL7(address@hidden
zMJ2)7DBr}xF*5o>address@hidden&WCe$e;*^D<W5+tI2KOTAj*g!E>XAop_#P4V
z7kZ&}<SZ6V;address@hidden<*^XsYEi6^tUXkYh$$j-#aWIO!k79!U7SXJ-xVS
zVP8W<2wf0Z)oQF<Nf&tbi(fE?1O3GB`=jtDx`*Ns&IR-$pM~eOusM%rC2YQ0D~sMY
z&>Z%jv5L2b*z;&se3~YDi5fK`LZeop7pPGql3nVi2E9u{pr*I``XlNi{VvH;(3uW8
zr4L6v)T)uL);Fhn)Qtpc6!Pf{{Ke1Cj)zR4QkWEC5MCkAIp|x63C&r&J8YhTLoJ^y
zliDY8Qu^d4sfIH|address@hidden;Whn6%s0X}7?m{d>yITEX>oB-`m()sUE)`gV%GV(Nw
zL+lTy6KR6<4I$X0rz|^*%L%Q{>address@hidden&LHX$mc+wr=lSb
z$UTx#ICL$jDFbpO=o%WtRbpr`_x~}7OUKY){(o!`(}U$W+|address@hidden)4$;i*^pm{~
zk5N0nGgeLuqMTB7qne;address@hidden(address@hidden(8}qs
zeA3ZBthJ?S{-=jCEQSvRl+pCS4flEKc}h~zFNF*JJE)(hM)FLM|NkCe6&$O9j_ve|
zu|Om4pz6`lKfVt&|NNG2!iIvN!kh3!`KJD{qZ+<!G>berwkv%7?CWQeLL}D}yJ9!O
zq50wNg5XX$_MPNnPuWvR$3^n>+eikd(3+o8Bsh)smDaqf;Bt*?Go-gkLjh>NJRUx`
zdujEz#%k!mjk2|g{gskx(qk>I#p!UVmHpenHPN~kjD89A9APA#Y!+8?`kv!<-*9q6
address@hidden&dXbFl_H%tMF
z+kXU9u*L;69tAB3R-Cs()~QISV4W7w=_u$G!HTaLA*&h*6|4yXO+-Q87OY%Ac_dV@
zBJn~8l2OnV!I~1#R3uce&IssC6!fZKofXj8NT^`NeLD1YE(-dNVATXvi-Zc+w1B3g
zpzjLSc>$e|gbLOL0bPiK76mIZKMYHcgbLOd1oVX{Xi2c15zsS{P{DduK+i@&4Z*r7
address@hidden<W&qYB^!Fpam&qqQ9>ym&address@hidden|RUlP!lqM)mS^=AV5vq-35
zy&#|$PJ`-|CG%#z8SAI^JGh!0Qmxww1PubJStw*k5SnWcP?18-0STm;+3zHAuQ_y3
zR)$iHq>)a6gyJyNk*&8!Ix>bOKGc!5m649jVWAFnWbZ2J=Jq?NuGmEm9V|address@hidden;_Nh
ztjBJ0=wRsxJ?>tRkM$bKSOh|!3FKq_HIk9eLVpm*$NC^*B&N_~GdXmOF+D|%6dUO&
uZgWgekt10~`V7fq`fHFe?IZmG$<XT;=-`15?DVCSrVxAGrZjArT>dYwdQV#b

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/pc/SLIT.numamem 
b/tests/acpi-test-data/pc/SLIT.numamem
new file mode 100644
index 
0000000000000000000000000000000000000000..74ec3b4b461ffecca36d8537975c202a5f011185
GIT binary patch
literal 48
address@hidden|?X>address@hidden

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/pc/SRAT.numamem 
b/tests/acpi-test-data/pc/SRAT.numamem
new file mode 100644
index 
0000000000000000000000000000000000000000..f8ec8fa242adc6132ba033bfc13cf7e858ad22cc
GIT binary patch
literal 264
zcmWFzatz^MWME*N>*Vk35v<@85#SsQ6axw|fY=}!gyBE{mCvYwA`4W;1y_nJgHQ)F
m01Q5`!xW;bgNZV5z*$fR4t40tQ1}RY;address@hidden

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/q35/DSDT.numamem 
b/tests/acpi-test-data/q35/DSDT.numamem
new file mode 100644
index 
0000000000000000000000000000000000000000..1b7c484a5e31ec456685bc246197252cb48a3adf
GIT binary patch
literal 9147
zcmcgyO>Y~=8J;C6YBi*!rL>address@hidden;Nv>N^+f|AA!kTie$u<D3VSb&;ZwN+)7E?
zEEK0m8U&COARj&yNSFlejSl!PdT4$^ZVk{=ue}yUe2V(KGduFkk^<sGs{=Lf?DM?u
zJhQX&EO+U5{O(^bGiJR~+4kz4V&z85^U-H9#;8sIokr#+>mB%&THng0GFI;}C))U^
z*zVJQ<$BHf^KSS>address@hidden
z?$;ZBzWg<}?Y<{lX}e$c+sy7?Z}^tmobGRTyv)7VndiT}I^3EX>=qWe(+mEw{_V=e
zYhS#4xBS&F|NiTHuk#E5Yxr;D|9V6p;kzMU35U+7gFWj#qKjjz!^KYr;;`&<=tvY&
z&;7jYqExG+*PXzYW3AftR<*0fYGH&J8|I_l>IN*&*w^3XSf+RAP`vn3b;~cd+J3+2
zUhQ|fWfoCS7*W@)KZe{1hxtziAsd9b<Kqz<&address@hidden)QFAvJZ7TZDHQnJ
address@hidden>1Sy;G;Nr^Y@<`|i>address@hidden@WqrH>jA<y>?nmB_ge!x?`!*kST
z-gZz<address@hidden;=EqplF&OVn`6{%Y9=$UrcLs5Co
zayUmc(q(?8W<@MwPU;e~YSup6XQ}KvtatSMX2m~&r_=6?n2!^Qf*7)pSzx`&Ud8`Q
zDJbn7JsE6YKOxR9CW$tmy2Km;z5p#JzzlPj<&4w#!(kS)JYx4VCj}ioTeIFyzn!-2
zO9!G*HG?@>Rf?vpc-6&eXhKd)^C0~o&Fo8#NV7p{))HxWN)3nR^wd152Px#Sk;iT|
zybb2&`}l7~yA(Npdc~qs;CTNMmrJYNZ7poRd9aYnVD+%()@GH-wuSZvTgX#CPa&wO
zAdR5T7G^W~<6~UR5*J6r0&q?q6FfjwNKE7x*py%b8%M-c&=eC)Km`*aF)<o}O$(+P
z0j)ogRY22{38)H*sj6VzORUI~5ljWmNTwP*LS5&Sp>s+w6?956)!-58I<tn(tY9i=
z*3^km*EwzIoHle$n>rEdI&DLzZRoU3od|WE*der;o-uUJm^u;aI=P{f8#=kE6QQm%
zXXwlsI&address@hidden|`bRNDE>8#?o*PK3J7SwrWnp>x*MiBQ)$XXu<Wbk3PN5$ZbU4W09b
z&UsTOLS3h0=yVL7j;Rx&uCrk1EEqZqrcQ*q&ILo~f}wN4)QM2nxoGHIG;}VSIuYtR
zT|=j9=yXk;2z8xj44r2Too7s)2z8xHhR!8J=aQ)tp|address@hidden;(79~r
zTsCzg)ODT{%yPUFo)gSUyxE<TOz&YxOh3k+H<;address@hidden(S(TXI?az
z7Y*h`lZjAgK4vf<GnkK=OoTe~aluqB^SEHDJ^pdYR2w%!Vk#$DF>0<DHCN1<2xUzh
z23pn(wAN{y7%18(92+PCl$Ajmfhr0El{jHZ7VdWhP&address@hidden>f}P
z3MLsSLX1WksKmw*)l^<f1}dQ^28s|v7g!jm#KsXZ)#Q?aN~mCxfg)address@hidden
zN(L&Sf=LF7Q0at$N~~bQKs6{CsDuh887M-f69y`=f(ZlFpk$yDDwt%T2$fD4sKg2;
address@hidden)address@hidden;Uicsl<fl91k!ay}B8K{H`CK)I~r4t4!
zv4RN$)u3dc5-ONvpa_*t7^uVwCJa=Al7UL7V3L6%R61dx5-XT6Pz_23Dxrc&28vMW
zgn>$|V8TE(C>f}P3MLsSLZuT1DzSnI1J$5ppb{#WWS|address@hidden(ts9=(T
zB2+qIpb{&XFi;Ij1}dR~Nd}5g>address@hidden<$Z1}d?F2?N!jWS|l%
zm}H;`l};F_#0n-1RD+U%N~mCxfg)address@hidden(L&Sf=LF7Q0at$N~~bQKs6{C
zsDuh887M-f69y`=f(ZlFpk$yDDwt%T2$fD4sKg2;address@hidden
address@hidden<!fgn?>IGEj|42C6Y(pc)efsxiqxH6|IT#)address@hidden
zOc<!fBm>o$WS|-o28u|XT^J}LoG~$(WS|If8dOM3HMcNOL~3qfporAml7S*rb4vz_
z&}Z)address@hidden>>xp(-p=hE~om7W#Q(+I28-YLUzcPjMZ(T8s{JR8}m
zQhS3wYV=XJ-NnXEr)v#o-sK0ocnC5x;yL$9W5;XH0MITK=6LSoESsT+QTV2OkNWr&
address@hidden|AG+DfF<$#;`kuCBFFa9GgkQ-5B<7hMgGM+<Ez2
zf`)+6l-)w#Z*<su)aD1GXP%yPun`SN#Ao}RcE`H68;^m?Q-55&lBkZy3g5eWMXO#B
z)address@hidden|address@hidden)WO+O;``+q(address@hidden
zDdqjRd^K4<^9bduTKTFdUrm&+o>IOVm)}U1pL&Gy8(R4dQGO#)e&dw#8*%wsvV8Ut
z%Gb2=HBr8nC|address@hidden|tPnMs4gz|N*d|i~UC(address@hidden@oZ&|^07
z)address@hidden|HD;Y~C
z`zEFvyKY=F9d1>|(#gJw>Bg>uGiEy6zl^1meG}7-t?MN-9d2sI(#gJw>BiRSSu-8(
zbjH%jJ~N%O{k(ib;address@hidden)s9+;92X$`XVz<7FV^3<address@hidden
zChJ*VtGOAk$XU*7);IZY@>U*?w&6Q4#N0P|JkUS9OhK6yJ$f$hHMTmI*A8B?yy}Z3
zi)address@hidden)f(Ar`jw6>6g1jJW6hCHSCB{XYZ);%uVqI0b`Nln=N~-Mya$~q7lfq
zFH>&8>u$V~8uGy|address@hidden>address@hidden(GU|address@hidden
zd_L?wId-JEISSoiiWEIsAuE{*87Ag;>vLYm+p<address@hidden
zaV9WbNjN6oipE9;bYzA1H#5Wfcq(x|address@hidden&address@hidden)?2
z3A!SlO7;@;wPYuzVB+X{?{8*kS>X!9A66)qmOY{chD8{ZyM-LL8NSccot~TP(+a0W
z!Q45#2<+xa8Qa}^4cF_9fVmg2qHC>czgk+uITLTIXm!(x#wI?cU6et+C3no()>f-j
address@hidden<o#O7;wJB{vT$H$1<address@hidden)U`;8zd
zzIx{mdvvASfxp$}>E7Y9+C<TqC}TQkSDHn9)bY`zRuiq(jefCr`1AyPnO);SwbQo(
zT7Us9ouK++AFpMfn1D_Pv?T=F)tB(address@hidden|po)t8`P3D%f0j7>U
zJcg^GcbSeIAAk9a&qHEFAtf9x4rFz#SzI(?DEF6!?m!NQdTHHKv>(z+r6eQEeI}rN
zO-md7WtWMBxq;9mHwb|address@hidden@address@hidden)?x`|eo&sopp|
z#uo=7@;QvWDVqyu)@Abt&8q5s3eC88DJb8FvFFjOM|7HqM2#jTLZewH0yUbHWS_dJ
zL0k&NVPX&6&#8}&?^A4v&VuN)?w<5et4YV2Lw|Ze-B>{F^|itZzxW}H=%HkiN-{~J
zkhi|ZInwu`3C%fh<K_|u)address@hidden;nrR3|lb
ze~5+E&5VKeXwgNl(W;Xv-Ah=frPLTuEME!f9c^cWRtdihpsTa=Hg*c-rTGJOKS+y$
zjw7axV?=8zj%iyM(U?WNK$}K-M8l&P8;address@hidden;&pLcaP5Cw
z5T^&1V{GX(w|nI7)(2>=?hSK;U7n)$+Mc$ZuB+{ob~oA+9G5m)aVp~525g~DBQN(r
z`CAU0l|p5j|Nf&{mcpY-T9)address@hidden>IA(&kvw^!1$n
zQcN5XU;Yt(address@hidden)eH11055}~$={MB_F(GQ?zixJj&7Ofw5`3EEoLqJl)(AX
address@hidden&4j&?h*Zjj!;qO=MN?Kj-K6k*^~FWvpdz`I*g6ZX0nPi
z<xJ6CowJp>DPHGqWaQ5{a-C8Mzh9sqy!4Kq>Xd#e1I&)aa0A|1^|3!wV@);IMI+nt
Hwz}-UIV`hz

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/q35/SLIT.numamem 
b/tests/acpi-test-data/q35/SLIT.numamem
new file mode 100644
index 
0000000000000000000000000000000000000000..74ec3b4b461ffecca36d8537975c202a5f011185
GIT binary patch
literal 48
address@hidden|?X>address@hidden

literal 0
HcmV?d00001

diff --git a/tests/acpi-test-data/q35/SRAT.numamem 
b/tests/acpi-test-data/q35/SRAT.numamem
new file mode 100644
index 
0000000000000000000000000000000000000000..f8ec8fa242adc6132ba033bfc13cf7e858ad22cc
GIT binary patch
literal 264
zcmWFzatz^MWME*N>*Vk35v<@85#SsQ6axw|fY=}!gyBE{mCvYwA`4W;1y_nJgHQ)F
m01Q5`!xW;bgNZV5z*$fR4t40tQ1}RY;address@hidden

literal 0
HcmV?d00001

diff --git a/tests/bios-tables-test.c b/tests/bios-tables-test.c
index 564da45..79728c6 100644
--- a/tests/bios-tables-test.c
+++ b/tests/bios-tables-test.c
@@ -808,6 +808,34 @@ 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(" -m 128,slots=3,maxmem=1G"
+                  " -numa node -numa node,mem=128"
+                  " -numa dist,src=0,dst=1,val=21",
+                  &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(" -m 128,slots=3,maxmem=1G"
+                  " -numa node -numa node,mem=128"
+                  " -numa dist,src=0,dst=1,val=21",
+                  &data);
+    free_test_data(&data);
+}
+
 int main(int argc, char *argv[])
 {
     const char *arch = qtest_get_arch();
@@ -830,6 +858,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.5.5






reply via email to

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