On Tue, 20 Sep 2022 20:28:31 +0800 Robert Hoo <robert...@linux.intel.com> wrote:
> On Tue, 2022-09-20 at 11:13 +0200, Igor Mammedov wrote: > > On Fri, 16 Sep 2022 21:15:35 +0800 > > Robert Hoo <robert...@linux.intel.com> wrote: > > > > > On Fri, 2022-09-16 at 09:37 +0200, Igor Mammedov wrote: > > > > > > > > Fine, get your point now. > > > > > In ASL it will look like this: > > > > > Local1 = Package (0x3) {STTS, SLSA, MAXT} > > > > > Return (Local1) > > > > > > > > > > > > > > > > > > But as for > > > > > CreateDWordField (Local0, Zero, STTS) // > > > > > Status > > > > > CreateDWordField (Local0, 0x04, SLSA) // > > > > > SizeofLSA > > > > > CreateDWordField (Local0, 0x08, MAXT) // > > > > > Max > > > > > Trans > > > > > > > > > > I cannot figure out how to substitute with LocalX. Can you shed > > > > > more > > > > > light? > > > > > > > > Leave this as is, there is no way to make it anonymous/local with > > > > FooField. > > > > > > > > (well one might try to use Index and copy field's bytes into a > > > > buffer > > > > and > > > > then explicitly convert to Integer, but that's a rather > > > > convoluted > > > > way > > > > around limitation so I'd not go this route) > > > > > > > > > > OK, pls. take a look, how about this? > > > > > > Method (_LSI, 0, Serialized) // _LSI: Label Storage Information > > > { > > > Local0 = NCAL (ToUUID("4309ac30-0d11-11e4-9191-0800200c9a66"), > > > 0x02, 0x04, Zero, One) // Buffer > > > CreateDWordField (Local0, Zero, STTS) // Status > > > CreateDWordField (Local0, 0x04, SLSA) // Size of LSA > > > CreateDWordField (Local0, 0x08, MAXT) // Max Transfer Size > > > Local1 = Package (0x3) {STTS, SLSA, MAXT} > > > Return (Local1) > > > } > > > > > > Method (_LSR, 2, Serialized) // _LSR: Label Storage Read > > > { > > > Name (INPT, Buffer(8) {}) > > > CreateDWordField (INPT, Zero, OFST); > > > CreateDWordField (INPT, 4, LEN); > > > > why do you have to create and use INPT, wouldn't local be enough to > > keep the buffer? > > If substitute INPT with LocalX, then later > Local0 = Package (0x01) {LocalX} isn't accepted. > > PackageElement := > DataObject | NameString ok, then respin series and lets get it some testing. BTW: it looks like Windows Server starting from v2019 has support for NVDIMM-P devices which came with 'Optane DC Persistent Memory Modules' but it fails to recognize NVDIMMs in QEMU (complaining something about wrong target). Perhaps you can reach someone with Optane/ACPI expertise within your org and try to fix QEMU side. > > > > > OFST = Arg0 > > > LEN = Arg1 > > > Local0 = Package (0x01) {INPT} > > > Local3 = NCAL (ToUUID("4309ac30-0d11-11e4-9191-0800200c9a66"), > > > 0x02, 0x05, Local0, One) > > > CreateDWordField (Local3, Zero, STTS) > > > CreateField (Local3, 32, LEN << 3, LDAT) > > > Local1 = Package (0x2) {STTS, toBuffer(LDAT)} > > > Return (Local1) > > > } > > > > > > Method (_LSW, 3, Serialized) // _LSW: Label Storage Write > > > { > > > Local2 = Arg2 > > > Name (INPT, Buffer(8) {}) > > > > ditto > > > > > CreateDWordField (INPT, Zero, OFST); > > > CreateDWordField (INPT, 4, TLEN); > > > OFST = Arg0 > > > TLEN = Arg1 > > > Concatenate(INPT, Local2, INPT) > > > Local0 = Package (0x01) > > > { > > > INPT > > > } > > > Local3 = NCAL (ToUUID ("4309ac30-0d11-11e4-9191-0800200c9a66"), > > > 0x02, 0x06, Local0, One) > > > CreateDWordField (Local3, 0, STTS) > > > Return (STTS) > > > } > >