On Thu, 22 Sep 2022 20:29:12 +0800 Robert Hoo <robert...@linux.intel.com> wrote:
> On Thu, 2022-09-22 at 20:21 +0800, Robert Hoo wrote: > > And empty bios-tables-test-allowed-diff.h. > > > > Diff of ASL form, from qtest testlog.txt: > > > > --- /tmp/asl-RFWZS1.dsl 2022-09-22 18:25:06.191519589 +0800 > > +++ /tmp/asl-B1ZZS1.dsl 2022-09-22 18:25:06.187519182 +0800 > > @@ -1,30 +1,30 @@ > > /* > > * Intel ACPI Component Architecture > > * AML/ASL+ Disassembler version 20180629 (64-bit version) > > * Copyright (c) 2000 - 2018 Intel Corporation > > * > > * Disassembling to symbolic ASL+ operators > > * > > - * Disassembly of tests/data/acpi/pc/SSDT.dimmpxm, Thu Sep 22 > > 18:25:06 2022 > > + * Disassembly of /tmp/aml-YYZZS1, Thu Sep 22 18:25:06 2022 > > * > > * Original Table Header: > > * Signature "SSDT" > > - * Length 0x000002DE (734) > > + * Length 0x00000717 (1815) > > * Revision 0x01 > > - * Checksum 0x56 > > + * Checksum 0xBC > > * OEM ID "BOCHS " > > * OEM Table ID "NVDIMM" > > * OEM Revision 0x00000001 (1) > > * Compiler ID "BXPC" > > * Compiler Version 0x00000001 (1) > > */ > > DefinitionBlock ("", "SSDT", 1, "BOCHS ", "NVDIMM", 0x00000001) > > { > > Scope (\_SB) > > { > > Device (NVDR) > > { > > Name (_HID, "ACPI0012" /* NVDIMM Root Device */) // > > _HID: Hardware ID > > Method (NCAL, 5, Serialized) > > { > > Local6 = MEMA /* \MEMA */ > > @@ -49,52 +49,52 @@ > > ODAT, 32736 > > } > > > > If ((Arg4 == Zero)) > > { > > Local0 = ToUUID ("2f10e7a4-9e91-11e4-89d3- > > 123b93f75cba") > > } > > ElseIf ((Arg4 == 0x00010000)) > > { > > Local0 = ToUUID ("648b9cf2-cda1-4312-8ad9- > > 49c4af32bd62") > > } > > Else > > { > > Local0 = ToUUID ("4309ac30-0d11-11e4-9191- > > 0800200c9a66") > > } > > > > - If (((Local6 == Zero) | (Arg0 != Local0))) > > + If (((Local6 == Zero) || (Arg0 != Local0))) > > { > > If ((Arg2 == Zero)) > > { > > Return (Buffer (One) > > { > > 0x00 > > // . > > }) > > } > > > > Return (Buffer (One) > > { > > 0x01 > > // . > > }) > > } > > > > HDLE = Arg4 > > REVS = Arg1 > > FUNC = Arg2 > > - If (((ObjectType (Arg3) == 0x04) & (SizeOf (Arg3) == > > One))) > > + If (((ObjectType (Arg3) == 0x04) && (SizeOf (Arg3) > > == One))) > > { > > Local2 = Arg3 [Zero] > > Local3 = DerefOf (Local2) > > FARG = Local3 > > } > > > > NTFI = Local6 > > Local1 = (RLEN - 0x04) > > If ((Local1 < 0x08)) > > { > > Local2 = Zero > > Name (TBUF, Buffer (One) > > { > > 0x00 > > // . > > }) > > Local7 = Buffer (Zero){} > > @@ -161,45 +161,234 @@ > > Else > > { > > If ((Local1 == Zero)) > > { > > Return (Local2) > > } > > > > Local3 += Local1 > > Concatenate (Local2, Local0, Local2) > > } > > } > > } > > > > Device (NV00) > > { > > Name (_ADR, One) // _ADR: Address > > + Method (_LSI, 0, Serialized) // _LSI: Label Storage > > Information > > + { > > + Local0 = NCAL (ToUUID ("4309ac30-0d11-11e4-9191- > > 0800200c9a66"), One, 0x04, Zero, One) > > + CreateDWordField (Local0, Zero, STTS) > > + CreateDWordField (Local0, 0x04, SLSA) > > + CreateDWordField (Local0, 0x08, MAXT) > > + Local1 = Package (0x03) > > + { > > + STTS, > > + SLSA, > > + MAXT > > + } > > + Return (Local1) > > + } > > + > > + Method (_LSR, 2, Serialized) // _LSR: Label Storage > > Read > > + { > > + Name (INPT, Buffer (0x08) > > + { > > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > > 0x00 // ........ > > + }) > > + CreateDWordField (INPT, Zero, OFST) > > + CreateDWordField (INPT, 0x04, LEN) > > + OFST = Arg0 > > + LEN = Arg1 > > + Local0 = Package (0x01) > > + { > > + INPT > > + } > > + Local3 = NCAL (ToUUID ("4309ac30-0d11-11e4-9191- > > 0800200c9a66"), One, 0x05, Local0, One) > > + CreateDWordField (Local3, Zero, STTS) > > + CreateField (Local3, 0x20, (LEN << 0x03), LDAT) > > + Name (LSA, Buffer (Zero){}) > > + ToBuffer (LDAT, LSA) /* > > \_SB_.NVDR.NV00._LSR.LSA_ */ > > + Local1 = Package (0x02) > > + { > > + STTS, > > + LSA > > + } > Hi Igor, > > Here is a little different from original proposal > https://lore.kernel.org/qemu-devel/80b09055416c790922c7c3db60d2ba865792d1b0.ca...@linux.intel.com/ > > Local1 = Package (0x2) {STTS, toBuffer(LDAT)} > > Because in my test, Linux guest complains: > > [ 3.884656] ACPI Error: AE_SUPPORT, Expressions within package > elements are not supported (20220331/dspkginit-172) > [ 3.887104] ACPI Error: Aborting method \_SB.NVDR.NV00._LSR due to > previous error (AE_SUPPORT) (20220331/psparse-531) > > > So I have to move toBuffer() out of Package{} and name LSA to hold the > buffer. If you have better idea, pls. let me know. Would something like following work? LocalX = Buffer (Zero){} LocalY = Package (0x01) { LocalX } > > > + Return (Local1) > > + } > > + > > + Method (_LSW, 3, Serialized) // _LSW: Label Storage > > Write > > + { > > + Local2 = Arg2 > > + Name (INPT, Buffer (0x08) > > + { > > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, > > 0x00 // ........ > > + }) > > + CreateDWordField (INPT, Zero, OFST) > > + CreateDWordField (INPT, 0x04, TLEN) > > + OFST = Arg0 > > + TLEN = Arg1 > > + Concatenate (INPT, Local2, INPT) /* > > \_SB_.NVDR.NV00._LSW.INPT */ > > + Local0 = Package (0x01) > > + { > > + INPT > > + } > > + Local3 = NCAL (ToUUID ("4309ac30-0d11-11e4-9191- > > 0800200c9a66"), One, 0x06, Local0, One) > > + CreateDWordField (Local3, Zero, STTS) > > + Return (STTS) /* \_SB_.NVDR.NV00._LSW.STTS */ > > + } > > + > > (iterates in each NV) > > > > Signed-off-by: Robert Hoo <robert...@linux.intel.com> > > --- > > tests/data/acpi/pc/SSDT.dimmpxm | Bin 734 -> 1815 bytes > > tests/data/acpi/q35/SSDT.dimmpxm | Bin 734 -> 1815 bytes > > tests/qtest/bios-tables-test-allowed-diff.h | 2 -- > > 3 files changed, 2 deletions(-) > > > > diff --git a/tests/data/acpi/pc/SSDT.dimmpxm > > b/tests/data/acpi/pc/SSDT.dimmpxm > > index > > ac55387d57e48adb99eb738a102308688a262fb8..70f133412f5e0aa128ab210245a > > 8de7304eeb843 100644 > > GIT binary patch > > literal 1815 > > zcmdUwyKmD_6vnUPv~g}y6emHgc**|(X$OSF0FILox3Lr1ZmHx-examI3c8|YVC!RO > > z2@)c;%774ZDvwC)2sTzGCN_pj>?}wOz&%bMqC!xRK#<|wbI(0K`Q7hx6kRVFqX~qV > > z7sa|%)dh8?Br6KtBZP{x4GGpv_2!(V7cFzGeuJKCoK=-eBcjxh3x)9sl%G1ON@8t< > > zC}l-#nk#BUt~04IjN>%dL<KcdC}Xaspw6mBMHbA}GjPCGOSQ6~m1lIJGObENMbxgY > > zd`g(B+2~ZOl~ti$5{;G5iQtsKhzOs<nect)eDBFFfA>xHlK*k;x!u1QobwmcfE+b^ > > zczo}A|8-XCzLj4+n|SHk{n4mic$$>>kzKym<B*Vk)U<=Kp5H`U{=6L|{Wc1DmWcvG > > z76FVb02yfmT5$S-f4_s{{ziu(n;nE)vhI4s17gyIJ1qk(jyu7HZ3lA%xtvj)uE0pb > > z$53nM?6&KW^-Z{ri#Fj5p`{kAt=n$cB6l3jBFD@@19IxL9zw`xtdg$8LlAg=q1{28 > > zrW+#4D+#S48%eHS(G5iAVIj~13LO=IVY0&vbVM52T^rF6(*yzx3({MDR0%04*|42u > > z2kyc74pk$D%$$vdh>qe^LJ0ZG7X5M#F6I*C?GzXSG@cDl2fPncQ;69=?`MKx80Oyc > > z9B;|BU2{zuQ)dbV&Js%+lfN=#)pVIV;6G{<gX4%9U>kbZ#&Nx-i*)4_an>N&6Rd6+ > > zI@DnAgic;g(t#T0WVK=NDa_GVIQn#<fIx{T!*ObvwI|*}lvAOg$NmA!kj;2qj|yh! > > zX3nG1z=PDg8a0li5EfPCA#5NgSsa5-$boD!LCLPANZb86oIwZg!$H0TWG)1949wv} > > z%n%5UzDSI@Rs|ErBNK2eFCN1M9Qzd;CjYDrIQIKKO#MY44mk%#@ZbKTacs|tiGdUB > > c@tk1)B`4Vb#EApW?>oVA@DG+o@4h6y0>WY85C8xG > > > > delta 135 > > zcmbQvcaN1TIM^lR9uortW7tG4X>Nb5nD}6)_~<4#t%(LAjJ^|Hw{uC>PEKQ(G&v)I > > zVKOVD5|2#v<i2b!mdWkej0~HN7+n~(Wc<Pm3^?K)U4j@z1mazSeOZ?HIXn7fWM*YE > > dMmNa;WevfyTuhS-Sw(n20!9!4=E=X=WB}s5Bn$um > > > > diff --git a/tests/data/acpi/q35/SSDT.dimmpxm > > b/tests/data/acpi/q35/SSDT.dimmpxm > > index > > 98e6f0e3f3bb02dd419e36bdd1db9b94c728c406..9ea4e0d0ceaa8a5cbd706afb6d4 > > 9de853fafe654 100644 > > GIT binary patch > > literal 1815 > > zcmdUw%WD%+6vppl(q?j#N+yZ4_+tJ8(=J4Cp_55srp-*k%rq9JFfU2kq{_wCg}Xi$ > > ztr5g@s0$I9lvx(s3+~*ya^=3@R@?|K)O)5cETUCVG>dc3J@?GX?|$Ee=z7T*O(4YV > > z6zft|7u04+RusBN2o+}<60Di(?O97NTIOo~7CqNEt16d9M5!Sc3gZ(fKXqD_#M%f^ > > z%8J-Bm(_+`XHsJr$7!yK3TmZL##~83omGvBESM|j;DD``YGpwyH+7*htx7^g)UGdo > > zN|-Cz=v1qfRiR!IjpfgY;Ecb32%p25@LlF&|Jg2o|4sIa|8e$(J-8fP@E6j695sA+ > > z`rzi^byn)Vm0vxdc<I`M(WqY7NlN_4F5mBSNJu|v*}+)fZ=p?p&JL1(2ZcP#M1dg- > > z07mA4jC24kIQz(d*u`;wy~~h|E<!F@b3Nh#F=@e_mVg$=o#4`zgE@j+&L~b-U?kyV > > zsJ(rD%XP@w23*HQ8*qluVjI@>T{mo#dk$uiW9Fa%IdxhOA>=bwNmt?_2s}66=^{?k > > z4H4y)gjSJ_Bv-HK1|oB?5a<Dgjtjsr*<l7cB8}{xjp&GJ0s)2v=}kYXgcOvl+s={$ > > z_uzbosu4qG&c;GSM{z14g#1;DemMsha|!ac3k(4o&xWT1-iN6v#2lOtGQltmbMJVL > > zx9HlgxhjpR%|d~*#FED3uMJr>UFHt?j~m6{IAZp&4ZUaMxL(smx^jv*W034ARyPbC > > zYOr@gCod=IKn-)U+A#PO=IARNeR@zpphT46IJL~$7jHhwsZh{k|A1x4X1tz91v7Lr > > z=TT|kLF!$N8plxxi>mS%HjtAnjzK5nKsK46WH(Zz<Nh4Zpo0(KAYTMB7Xmo}=I{|_ > > z2n5GpB*t8=f(hf12{@J)Pv8QM{fZ5ff7S*Z`+Xm#{-O^@oO?#_-~OU;Y~P8AJtx?c > > bIl=x*PO$%p6NjANcY@{MA1saDe@T1=QL*6= > > > > delta 135 > > zcmbQvcaN1TIM^lR9uortquWF-X>Nb5nD}6)_~<4#t%(LAjJ^|Hw{uC>PEKQ(G&v)I > > zVKOVD5|2#v<i2b!mdWkej0~HN7+n~(Wc<Pm3^?K)U4j@z1mazSeOZ?HIXn7fWM*YE > > dMmNa;WevfyTuhS-Sw(n20!9!4=E=X=WB}VOBm4jW > > > > diff --git a/tests/qtest/bios-tables-test-allowed-diff.h > > b/tests/qtest/bios-tables-test-allowed-diff.h > > index eb8bae1407..dfb8523c8b 100644 > > --- a/tests/qtest/bios-tables-test-allowed-diff.h > > +++ b/tests/qtest/bios-tables-test-allowed-diff.h > > @@ -1,3 +1 @@ > > /* List of comma-separated changed AML files to ignore */ > > -"tests/data/acpi/pc/SSDT.dimmpxm", > > -"tests/data/acpi/q35/SSDT.dimmpxm", >