> -----Original Message----- > From: Qemu-devel > [mailto:qemu-devel-bounces+shameerali.kolothum.thodi=huawei.com@nongn > u.org] On Behalf Of Igor Mammedov > Sent: 26 November 2019 08:57 > To: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com> > Cc: peter.maydell@linaro.org; drjones@redhat.com; > xiaoguangrong.eric@gmail.com; shannon.zhaosl@gmail.com; > qemu-devel@nongnu.org; Linuxarm <linuxarm@huawei.com>; Auger Eric > <eric.auger@redhat.com>; qemu-arm@nongnu.org; xuwei (O) > <xuwei5@huawei.com>; lersek@redhat.com > Subject: Re: [PATCH 0/5] ARM virt: Add NVDIMM support [..] > > > 0xb8 Dirty No. -->Another read is attempted > > > > [Qemu]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buf size 0x8 > > > func_ret_status 3 --> Error status returned > > > > > > status 3 means that QEMU didn't like content of NRAM, and there is only > > > 1 place like this in nvdimm_dsm_func_read_fit() > > > if (read_fit->offset > fit->len) { > > > func_ret_status = NVDIMM_DSM_RET_STATUS_INVALID; > > > goto exit; > > > } > > > > > > so I'd start looking from here and check that QEMU gets expected data > > > in nvdimm_dsm_write(). In other words I'd try to trace/compare > > > content of DSM buffer (from qemu side). > > > > I had printed the DSM buffer previously and it looked same, I will double check > > that. Tried printing the buffer in both Qemu/AML code. On Amr64, ------------- (1st iteration with offset 0) [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: Read FIT: offset 0 FIT size 0xb8 Dirty Yes. [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buff: [QEMU]NVDIMM BUF[0x0] = 0xC0 [QEMU]NVDIMM BUF[0x1] = 0x0 [QEMU]NVDIMM BUF[0x2] = 0x0 [QEMU]NVDIMM BUF[0x3] = 0x0 [QEMU]NVDIMM BUF[0x4] = 0x0 [QEMU]NVDIMM BUF[0x5] = 0x0 [QEMU]NVDIMM BUF[0x6] = 0x0 [QEMU]NVDIMM BUF[0x7] = 0x0 [QEMU]NVDIMM BUF[0x8] = 0x0 [QEMU]NVDIMM BUF[0x9] = 0x0 [QEMU]NVDIMM BUF[0xA] = 0x38 [QEMU]NVDIMM BUF[0xB] = 0x0 [QEMU]NVDIMM BUF[0xC] = 0x2 [QEMU]NVDIMM BUF[0xD] = 0x0 [QEMU]NVDIMM BUF[0xE] = 0x3 [QEMU]NVDIMM BUF[0xF] = 0x0 ......... [QEMU]NVDIMM BUF[0xBC] = 0x0 [QEMU]NVDIMM BUF[0xBD] = 0x0 [QEMU]NVDIMM BUF[0xBE] = 0x0 [QEMU]NVDIMM BUF[0xBF] = 0x0 [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buf size 0xc0 func_ret_status 0 "AML:NVDIMM-NCAL: Rcvd RLEN 00000000000000C0" "AML:NVDIMM-NCAL TBUF[0000000000000000] = 0x00000000000000C0" "AML:NVDIMM-NCAL TBUF[0000000000000001] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000002] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000003] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000004] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000005] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000006] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000007] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000008] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000009] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[000000000000000A] = 0x0000000000000038" "AML:NVDIMM-NCAL TBUF[000000000000000B] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[000000000000000C] = 0x0000000000000002" "AML:NVDIMM-NCAL TBUF[000000000000000D] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[000000000000000E] = 0x0000000000000003" "AML:NVDIMM-NCAL TBUF[000000000000000F] = 0x0000000000000000" ........... "AML:NVDIMM-NCAL TBUF[00000000000000BC] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[00000000000000BD] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[00000000000000BE] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[00000000000000BF] = 0x0000000000000000" "AML:NVDIMM-NCAL: Creating OBUF with bytes 00000000000000BC" "AML:NVDIMM-NCAL: Created BUF(Local7) size 00000000000000BC" "AML:NVDIMM-RFIT Rcvd buf size 00000000000000BC" "AML:NVDIMM-RFIT Created NVDR.RFIT.BUFF size 00000000000000B8" "AML:NVDIMM-FIT: Rcvd buf size 00000000000000B8" -->All looks fine in first iteration. (2nd iteration with offset 0xb8) [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: Read FIT: offset 0xb8 FIT size 0xb8 Dirty No. [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buff: [QEMU]NVDIMM BUF[0x0] = 0x8 [QEMU]NVDIMM BUF[0x1] = 0x0 [QEMU]NVDIMM BUF[0x2] = 0x0 [QEMU]NVDIMM BUF[0x3] = 0x0 [QEMU]NVDIMM BUF[0x4] = 0x0 [QEMU]NVDIMM BUF[0x5] = 0x0 [QEMU]NVDIMM BUF[0x6] = 0x0 [QEMU]NVDIMM BUF[0x7] = 0x0 [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buf size 0x8 func_ret_status 0 "AML:NVDIMM-NCAL: Rcvd RLEN 0000000000000008" "AML:NVDIMM-NCAL TBUF[0000000000000000] = 0x0000000000000008" "AML:NVDIMM-NCAL TBUF[0000000000000001] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000002] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000003] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000004] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000005] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000006] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000007] = 0x0000000000000000" "AML:NVDIMM-NCAL: Creating OBUF with bytes 0000000000000004" -->Requested size is 4 "AML:NVDIMM-NCAL: Created BUF(Local7) size 0000000000000008" --> Created size is 8 !. "AML:NVDIMM-RFIT Rcvd buf size 0000000000000008" "AML:NVDIMM-RFIT Created NVDR.RFIT.BUFF size 0000000000000004" "AML:NVDIMM-FIT: Rcvd buf size 0000000000000008" -->Again wrong here. (3rd iteration with offset 0xc0 -->0xb8 + 0x8) [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: Read FIT: offset 0xc0 FIT size 0xb8 Dirty No. [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buff: [QEMU]NVDIMM BUF[0x0] = 0x8 [QEMU]NVDIMM BUF[0x1] = 0x0 [QEMU]NVDIMM BUF[0x2] = 0x0 [QEMU]NVDIMM BUF[0x3] = 0x0 [QEMU]NVDIMM BUF[0x4] = 0x3 [QEMU]NVDIMM BUF[0x5] = 0x0 [QEMU]NVDIMM BUF[0x6] = 0x0 [QEMU]NVDIMM BUF[0x7] = 0x0 [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buf size 0x8 func_ret_status 3 "AML:NVDIMM-NCAL: Rcvd RLEN 0000000000000008" "AML:NVDIMM-NCAL TBUF[0000000000000000] = 0x0000000000000008" "AML:NVDIMM-NCAL TBUF[0000000000000001] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000002] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000003] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000004] = 0x0000000000000003" "AML:NVDIMM-NCAL TBUF[0000000000000005] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000006] = 0x0000000000000000" "AML:NVDIMM-NCAL TBUF[0000000000000007] = 0x0000000000000000" "AML:NVDIMM-NCAL: Created BUF(Local7) size 0000000000000008" "AML:NVDIMM-RFIT: Zero Buff return, status 0000000000000003" -->Error status, return "AML:NVDIMM-FIT: Rcvd buf size 0000000000000000" "AML:NVDIMM-FIT: _FIT returned size 00000000000000C0" [KERNEL] acpi_nfit_init: NVDIMM: data 0xffff0000fc57de18 sz 0xc0 On x86 (1st iteration with offset 0) -Same as ARM64 (2nd iteration with offset 0xb8) [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: Read FIT: offset 0xb8 FIT size 0xb8 Dirty No. [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buff: [QEMU]NVDIMM BUF[0x0] = 0x8 [QEMU]NVDIMM BUF[0x1] = 0x0 [QEMU]NVDIMM BUF[0x2] = 0x0 [QEMU]NVDIMM BUF[0x3] = 0x0 [QEMU]NVDIMM BUF[0x4] = 0x0 [QEMU]NVDIMM BUF[0x5] = 0x0 [QEMU]NVDIMM BUF[0x6] = 0x0 [QEMU]NVDIMM BUF[0x7] = 0x0 [QEMU]NVDIMM:nvdimm_dsm_func_read_fit: read_fit_out buf size 0x8 func_ret_status 0 "AML:NVDIMM-NCAL: Rcvd RLEN 00000008" "AML:NVDIMM-NCAL TBUF[00000000] = 0x00000008" "AML:NVDIMM-NCAL TBUF[00000001] = 0x00000000" "AML:NVDIMM-NCAL TBUF[00000002] = 0x00000000" "AML:NVDIMM-NCAL TBUF[00000003] = 0x00000000" "AML:NVDIMM-NCAL TBUF[00000004] = 0x00000000" "AML:NVDIMM-NCAL TBUF[00000005] = 0x00000000" "AML:NVDIMM-NCAL TBUF[00000006] = 0x00000000" "AML:NVDIMM-NCAL TBUF[00000007] = 0x00000000" "AML:NVDIMM-NCAL: Creating OBUF with bytes 00000004" "AML:NVDIMM-NCAL: Created BUF(Local7) size 00000004" -->Correct size "AML:NVDIMM-RFIT Rcvd buf size 00000004" "AML:NVDIMM-FIT: Rcvd buf size 00000000" --> Hence there is no data payload. "AML:NVDIMM-FIT: _FIT returned size 000000B8" --> No 3rd iteration. Return correct size. [KERNEL] acpi_nfit_init: NVDIMM: data 0xffff8c6abd5b5518 sz 0xb8 Attached the SSDT.dsl used for debugging. I am still not clear why on ARM64, 2nd iteration case, the created buffer size in NCAL and RFIT methods have additional 4 bytes!. CreateField (ODAT, Zero, Local1, OBUF) Concatenate (Buffer (Zero){}, OBUF, Local7) Please let me know if you have any clue. Thanks, Shameer . /* * Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20180105 (64-bit version) * Copyright (c) 2000 - 2018 Intel Corporation * * Disassembling to symbolic ASL+ operators * * Disassembly of SSDT, Mon Nov 18 16:09:53 2019 * * Original Table Header: * Signature "SSDT" * Length 0x000002EF (751) * Revision 0x01 * Checksum 0xA4 * OEM ID "BOCHS " * OEM Table ID "NVDIMM" * OEM Revision 0x00000001 (1) * Compiler ID "BXPC" * Compiler Version 0x00000001 (1) */ DefinitionBlock ("", "SSDT", 1, "BOCHS ", "NVDIMM", 0x00000002) { Scope (\_SB) { Device (NVDR) { Name (_HID, "ACPI0012" /* NVDIMM Root Device */) // _HID: Hardware ID Method (NCAL, 5, Serialized) { Local6 = MEMA /* \MEMA */ OperationRegion (NPIO, SystemMemory, 0x09090000, 0x04) OperationRegion (NRAM, SystemMemory, Local6, 0x1000) Field (NPIO, DWordAcc, NoLock, Preserve) { NTFI, 32 } Field (NRAM, DWordAcc, NoLock, Preserve) { HDLE, 32, REVS, 32, FUNC, 32, FARG, 32672 } Field (NRAM, DWordAcc, NoLock, Preserve) { RLEN, 32, ODAT, 32736 } Field (NRAM, DWordAcc, NoLock, Preserve) { TBUF, 32768 } 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 ((Arg2 == Zero)) { Return (Buffer (One) { 0x00 // . }) } Return (Buffer (One) { 0x01 // . }) } HDLE = Arg4 REVS = Arg1 FUNC = Arg2 If (((ObjectType (Arg3) == 0x04) & (SizeOf (Arg3) == One))) { Local2 = Arg3 [Zero] Local3 = DerefOf (Local2) FARG = Local3 } NTFI = Local6 printf("AML:NVDIMM-NCAL: Rcvd RLEN %o", RLEN) Local2 = Zero While (RLEN > Local2) { printf("AML:NVDIMM-NCAL TBUF[%o] = 0x%o", Local2, Derefof(TBUF[local2])) Local2 += 1 } Local1 = (RLEN - 0x04) printf("AML:NVDIMM-NCAL: Creating OBUF with bytes %o", Local1) Local1 = (Local1 << 0x03) CreateField (ODAT, Zero, Local1, OBUF) Concatenate (Buffer (Zero){}, OBUF, Local7) printf("AML:NVDIMM-NCAL: Created BUF(Local7) size %o", SizeOf(Local7)) Return (Local7) } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, Zero)) } Name (RSTA, Zero) Method (RFIT, 1, Serialized) { Name (OFST, Zero) OFST = Arg0 Local0 = Buffer (Zero){} Local0 = NCAL (ToUUID ("648b9cf2-cda1-4312-8ad9-49c4af32bd62"), One, One, Package (0x01) { OFST }, 0x00010000) CreateDWordField (Local0, Zero, STAU) RSTA = STAU /* \_SB_.NVDR.RFIT.STAU */ If ((Zero != STAU)) { printf("AML:NVDIMM-RFIT: Zero Buff return, status %o", RSTA) Return (Buffer (Zero){}) } Local1 = SizeOf (Local0) printf("AML:NVDIMM-RFIT Rcvd buf size %o", Local1) Local1 -= 0x04 If ((Local1 == Zero)) { Return (Buffer (Zero){}) } CreateField (Local0, 0x20, (Local1 << 0x03), BUFF) printf("AML:NVDIMM-RFIT Created NVDR.RFIT.BUFF size %o", Local1) Return (BUFF) /* \_SB_.NVDR.RFIT.BUFF */ } Method (_FIT, 0, Serialized) // _FIT: Firmware Interface Table { Local2 = Buffer (Zero){} Local3 = Zero While (One) { Local0 = Buffer (Zero){} Local0 = RFIT (Local3) Local1 = SizeOf (Local0) printf("AML:NVDIMM-FIT: Rcvd buf size %o", Local1) If ((RSTA == 0x0100)) { Local2 = Buffer (Zero){} Local3 = Zero } Else { If ((Local1 == Zero)) { printf("AML:NVDIMM-FIT: _FIT returned size %o", SizeOf(Local2)) Return (Local2) } Local3 += Local1 Concatenate (Local2, Local0, Local2) } } } Device (NV00) { Name (_ADR, One) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, One)) } } Device (NV01) { Name (_ADR, 0x02) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x02)) } } Device (NV02) { Name (_ADR, 0x03) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x03)) } } Device (NV03) { Name (_ADR, 0x04) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x04)) } } Device (NV04) { Name (_ADR, 0x05) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x05)) } } } } Name (MEMA, 0xFFFF0000) } /* * Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20180105 (64-bit version) * Copyright (c) 2000 - 2018 Intel Corporation * * Disassembling to symbolic ASL+ operators * * Disassembly of SSDT, Mon Nov 18 15:53:14 2019 * * Original Table Header: * Signature "SSDT" * Length 0x000002ED (749) * Revision 0x01 * Checksum 0x3D * OEM ID "BOCHS " * OEM Table ID "NVDIMM" * OEM Revision 0x00000001 (1) * Compiler ID "BXPC" * Compiler Version 0x00000001 (1) */ DefinitionBlock ("", "SSDT", 1, "BOCHS ", "NVDIMM", 0x00000002) { Scope (\_SB) { Device (NVDR) { Name (_HID, "ACPI0012" /* NVDIMM Root Device */) // _HID: Hardware ID Method (NCAL, 5, Serialized) { Local6 = MEMA /* \MEMA */ OperationRegion (NPIO, SystemIO, 0x0A18, 0x04) OperationRegion (NRAM, SystemMemory, Local6, 0x1000) Field (NPIO, DWordAcc, NoLock, Preserve) { NTFI, 32 } Field (NRAM, DWordAcc, NoLock, Preserve) { HDLE, 32, REVS, 32, FUNC, 32, FARG, 32672 } Field (NRAM, DWordAcc, NoLock, Preserve) { RLEN, 32, ODAT, 32736 } Field (NRAM, DWordAcc, NoLock, Preserve) { TBUF, 32768 } 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 ((Arg2 == Zero)) { Return (Buffer (One) { 0x00 // . }) } Return (Buffer (One) { 0x01 // . }) } HDLE = Arg4 REVS = Arg1 FUNC = Arg2 If (((ObjectType (Arg3) == 0x04) & (SizeOf (Arg3) == One))) { Local2 = Arg3 [Zero] Local3 = DerefOf (Local2) FARG = Local3 } NTFI = Local6 printf("AML:NVDIMM-NCAL: Rcvd RLEN %o", RLEN) Local2 = Zero While (RLEN > Local2) { printf("AML:NVDIMM-NCAL TBUF[%o] = 0x%o", Local2, Derefof(TBUF[local2])) Local2 += 1 } Local1 = (RLEN - 0x04) printf("AML:NVDIMM-NCAL: Creating OBUF with bytes %o", Local1) Local1 = (Local1 << 0x03) CreateField (ODAT, Zero, Local1, OBUF) Concatenate (Buffer (Zero){}, OBUF, Local7) printf("AML:NVDIMM-NCAL: Created BUF(Local7) size %o", SizeOf(Local7)) Return (Local7) } Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, Zero)) } Name (RSTA, Zero) Method (RFIT, 1, Serialized) { Name (OFST, Zero) OFST = Arg0 Local0 = Buffer (Zero){} Local0 = NCAL (ToUUID ("648b9cf2-cda1-4312-8ad9-49c4af32bd62"), One, One, Package (0x01) { OFST }, 0x00010000) CreateDWordField (Local0, Zero, STAU) RSTA = STAU /* \_SB_.NVDR.RFIT.STAU */ If ((Zero != STAU)) { printf("AML:NVDIMM-RFIT: Zero Buff return, status %o", RSTA) Return (Buffer (Zero){}) } Local1 = SizeOf (Local0) printf("AML:NVDIMM-RFIT Rcvd buf size %o", Local1) Local1 -= 0x04 If ((Local1 == Zero)) { Return (Buffer (Zero){}) } CreateField (Local0, 0x20, (Local1 << 0x03), BUFF) printf("AML:NVDIMM-RFIT Created NVDR.RFIT.BUFF size %o", Local1) Return (BUFF) /* \_SB_.NVDR.RFIT.BUFF */ } Method (_FIT, 0, Serialized) // _FIT: Firmware Interface Table { Local2 = Buffer (Zero){} Local3 = Zero While (One) { Local0 = Buffer (Zero){} Local0 = RFIT (Local3) Local1 = SizeOf (Local0) printf("AML:NVDIMM-FIT: Rcvd buf size %o", Local1) If ((RSTA == 0x0100)) { Local2 = Buffer (Zero){} Local3 = Zero } Else { If ((Local1 == Zero)) { printf("AML:NVDIMM-FIT: _FIT returned size %o", SizeOf(Local2)) Return (Local2) } Local3 += Local1 Concatenate (Local2, Local0, Local2) } } } Device (NV00) { Name (_ADR, One) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, One)) } } Device (NV01) { Name (_ADR, 0x02) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x02)) } } Device (NV02) { Name (_ADR, 0x03) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x03)) } } Device (NV03) { Name (_ADR, 0x04) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x04)) } } Device (NV04) { Name (_ADR, 0x05) // _ADR: Address Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method { Return (NCAL (Arg0, Arg1, Arg2, Arg3, 0x05)) } } } } Name (MEMA, 0xBFBFD000) }
© 2016 - 2024 Red Hat, Inc.