https://bugzilla.kernel.org/show_bug.cgi?id=217714
Bug ID: 217714
Summary: ACPI Error: No handler for SystemCMOS Operation Region
for acpi-tad driver
Product: ACPI
Version: 2.5
Hardware: All
OS: Linux
Status: NEW
Severity: normal
Priority: P3
Component: Other
Assignee: [email protected]
Reporter: [email protected]
Regression: No
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)
}
...
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
_______________________________________________
acpi-bugzilla mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla