Get ACPI error mesages below, [Wed May 31 14:34:07 2023] ACPI Error: No handler for Region [RTCM] (000000007ecf70cd) [SystemCMOS] (20220331/evregion-130) [Wed May 31 14:34:07 2023] ACPI Error: Region SystemCMOS (ID=5) has no handler (20220331/exfldio-261) [Wed May 31 14:34:07 2023] Initialized Local Variables for Method [_GRT]: [Wed May 31 14:34:07 2023] Local1: 00000000d3a30199 <Obj> Integer 0000000000000000 [Wed May 31 14:34:07 2023] No Arguments are initialized for method [_GRT] [Wed May 31 14:34:07 2023] ACPI Error: Aborting method \_SB.AWAC._GRT due to previous error (AE_NOT_EXIST) (20220331/psparse-529) The issue comes from the Bios implement ACPI AWAC(time and alarm device, "ACPI000E") by using the SystemCMOS, and the kernel acpi-tad driver has no handler for dealing with it. When it call _GRT: Get Real Time or _SRT: Set Real Time, so it will get the "No handler for Region SystemCMOS" and AE_NOT_EXIST issue. Device (AWAC) { Name (_HID, "ACPI000E" /* Time and Alarm Device */) Name (WAST, Zero) Name (WTTR, Zero) .... Method (_GCP, 0, NotSerialized) // _GCP: Get Capabilities { Return (0xB7) } OperationRegion (RTCM, SystemCMOS, Zero, 0x3F) Field (RTCM, ByteAcc, Lock, Preserve) { SEC, 8, Offset (0x02), MIN, 8, Offset (0x04), HOR, 8, Offset (0x07), DAY, 8, MON, 8, YEAR, 8, REGA, 8, Offset (0x32), CNTY, 8 } Method (_GRT, 0, Serialized) // _GRT: Get Real Time { Name (BUFF, Buffer (0x10) {}) CreateWordField (BUFF, Zero, Y) CreateByteField (BUFF, 0x02, M) CreateByteField (BUFF, 0x03, D) CreateByteField (BUFF, 0x04, H) CreateByteField (BUFF, 0x05, MIN1) CreateByteField (BUFF, 0x06, S) CreateByteField (BUFF, 0x07, V) CreateWordField (BUFF, 0x0A, TZ) CreateByteField (BUFF, 0x0C, DL) Acquire (RTCL, 0xFFFF) Local1 = Zero Name (TOUT, 0x000186A0) TOUT /= 0x0A While (((REGA & 0x80) && (Local1 < TOUT))) { Stall (0x0A) Local1 += 0x0A } If ((Local1 >= TOUT)) { ADBG ("_GRT timeout fail") } FromBCD (YEAR, Local5) FromBCD (CNTY, Local6) Y = ((Local6 * 0x64) + Local5) FromBCD (MON, M) /* \_SB_.AWAC._GRT.M___ */ FromBCD (DAY, D) /* \_SB_.AWAC._GRT.D___ */ FromBCD (HOR, H) /* \_SB_.AWAC._GRT.H___ */ FromBCD (MIN, MIN1) /* \_SB_.AWAC._GRT.MIN1 */ FromBCD (SEC, S) /* \_SB_.AWAC._GRT.S___ */ Release (RTCL) TZ = 0x07FF DL = Zero V = One Return (BUFF) /* \_SB_.AWAC._GRT.BUFF */ } Method (_SRT, 1, NotSerialized) // _SRT: Set Real Time { CreateWordField (Arg0, Zero, Y) CreateByteField (Arg0, 0x02, M) CreateByteField (Arg0, 0x03, D) CreateByteField (Arg0, 0x04, H) CreateByteField (Arg0, 0x05, MIN1) CreateByteField (Arg0, 0x06, S) Acquire (RTCL, 0xFFFF) Local1 = Zero Name (TOUT, 0x000186A0) TOUT /= 0x0A While (((REGA & 0x80) && (Local1 < TOUT))) { Stall (0x0A) Local1 += 0x0A } If ((Local1 >= TOUT)) { ADBG ("_SRT timeout fail") Release (RTCL) Return (0xFFFFFFFF) } Divide (Y, 0x64, Local5, Local4) ToBCD (Local4, CNTY) /* \_SB_.AWAC.CNTY */ ToBCD (Local5, YEAR) /* \_SB_.AWAC.YEAR */ ToBCD (M, MON) /* \_SB_.AWAC.MON_ */ ToBCD (D, DAY) /* \_SB_.AWAC.DAY_ */ ToBCD (H, HOR) /* \_SB_.AWAC.HOR_ */ ToBCD (MIN1, MIN) /* \_SB_.AWAC.MIN_ */ ToBCD (S, SEC) /* \_SB_.AWAC.SEC_ */ Release (RTCL) Return (Zero) } ...
(In reply to Ivan Hu from comment #0) > Get ACPI error mesages below, > > [Wed May 31 14:34:07 2023] ACPI Error: No handler for Region [RTCM] > (000000007ecf70cd) [SystemCMOS] (20220331/evregion-130) > [Wed May 31 14:34:07 2023] ACPI Error: Region SystemCMOS (ID=5) has no > handler (20220331/exfldio-261) > > [Wed May 31 14:34:07 2023] Initialized Local Variables for Method [_GRT]: > [Wed May 31 14:34:07 2023] Local1: 00000000d3a30199 <Obj> Integer > 0000000000000000 > [Wed May 31 14:34:07 2023] No Arguments are initialized for method [_GRT] > [Wed May 31 14:34:07 2023] ACPI Error: Aborting method \_SB.AWAC._GRT due to > previous error (AE_NOT_EXIST) (20220331/psparse-529) > > The issue comes from the Bios implement ACPI AWAC(time and alarm device, > "ACPI000E") by using the SystemCMOS, and the kernel acpi-tad driver has no > handler for dealing with it. When it call _GRT: Get Real Time or _SRT: Set > Real Time, so it will get the "No handler for Region SystemCMOS" and > AE_NOT_EXIST issue. > > Device (AWAC) > { > Name (_HID, "ACPI000E" /* Time and Alarm Device */) > Name (WAST, Zero) > Name (WTTR, Zero) > .... > Method (_GCP, 0, NotSerialized) // _GCP: Get Capabilities > { > Return (0xB7) > } > > OperationRegion (RTCM, SystemCMOS, Zero, 0x3F) > Field (RTCM, ByteAcc, Lock, Preserve) > { > SEC, 8, > Offset (0x02), > MIN, 8, > Offset (0x04), > HOR, 8, > Offset (0x07), > DAY, 8, > MON, 8, > YEAR, 8, > REGA, 8, > Offset (0x32), > CNTY, 8 > } > > Method (_GRT, 0, Serialized) // _GRT: Get Real Time > { > Name (BUFF, Buffer (0x10) {}) > CreateWordField (BUFF, Zero, Y) > CreateByteField (BUFF, 0x02, M) > CreateByteField (BUFF, 0x03, D) > CreateByteField (BUFF, 0x04, H) > CreateByteField (BUFF, 0x05, MIN1) > CreateByteField (BUFF, 0x06, S) > CreateByteField (BUFF, 0x07, V) > CreateWordField (BUFF, 0x0A, TZ) > CreateByteField (BUFF, 0x0C, DL) > Acquire (RTCL, 0xFFFF) > Local1 = Zero > Name (TOUT, 0x000186A0) > TOUT /= 0x0A > While (((REGA & 0x80) && (Local1 < TOUT))) > { > Stall (0x0A) > Local1 += 0x0A > } > > If ((Local1 >= TOUT)) > { > ADBG ("_GRT timeout fail") > } > > FromBCD (YEAR, Local5) > FromBCD (CNTY, Local6) > Y = ((Local6 * 0x64) + Local5) > FromBCD (MON, M) /* \_SB_.AWAC._GRT.M___ */ > FromBCD (DAY, D) /* \_SB_.AWAC._GRT.D___ */ > FromBCD (HOR, H) /* \_SB_.AWAC._GRT.H___ */ > FromBCD (MIN, MIN1) /* \_SB_.AWAC._GRT.MIN1 */ > FromBCD (SEC, S) /* \_SB_.AWAC._GRT.S___ */ > Release (RTCL) > TZ = 0x07FF > DL = Zero > V = One > Return (BUFF) /* \_SB_.AWAC._GRT.BUFF */ > } > > Method (_SRT, 1, NotSerialized) // _SRT: Set Real Time > { > CreateWordField (Arg0, Zero, Y) > CreateByteField (Arg0, 0x02, M) > CreateByteField (Arg0, 0x03, D) > CreateByteField (Arg0, 0x04, H) > CreateByteField (Arg0, 0x05, MIN1) > CreateByteField (Arg0, 0x06, S) > Acquire (RTCL, 0xFFFF) > Local1 = Zero > Name (TOUT, 0x000186A0) > TOUT /= 0x0A > While (((REGA & 0x80) && (Local1 < TOUT))) > { > Stall (0x0A) > Local1 += 0x0A > } > > If ((Local1 >= TOUT)) > { > ADBG ("_SRT timeout fail") > Release (RTCL) > Return (0xFFFFFFFF) > } > > Divide (Y, 0x64, Local5, Local4) > ToBCD (Local4, CNTY) /* \_SB_.AWAC.CNTY */ > ToBCD (Local5, YEAR) /* \_SB_.AWAC.YEAR */ > ToBCD (M, MON) /* \_SB_.AWAC.MON_ */ > ToBCD (D, DAY) /* \_SB_.AWAC.DAY_ */ > ToBCD (H, HOR) /* \_SB_.AWAC.HOR_ */ > ToBCD (MIN1, MIN) /* \_SB_.AWAC.MIN_ */ > ToBCD (S, SEC) /* \_SB_.AWAC.SEC_ */ > Release (RTCL) > Return (Zero) > } > ... What kernel version do you have this issue with?
The kernel base on v6.1.
Created attachment 304720 [details] PatchL Install SystemCMOS space handler for ACPI000E please check if this patch helps.
I can confirm the patch on comment 3 , it helps on the issue. $ cat /sys/devices/platform/ACPI000E\:00/time 2023:7:28:15:32:5:2047:0 It can get the real time now. and the dmesg won't exist the CMOS error.
Created attachment 304725 [details] patch v2 I have made a few cleanups in the previous patch, and will submit this version for upstream.
Thanks, please add my tag: Tested-by: Kai-Heng Feng <kai.heng.feng@canonical.com>