RTC based wakeup is not supported natively by the hardware for s0i3.
[Fix]
A firmware and driver updates were implemented. The driver passes wakeup time to SMU to to enable RTC from S0i3.
Note this s0i3 RTC wake up also requires new firmware.
The first patch is the prerequisite actual fix (patch 2 and 3).
[Test]
This is requested by AMD and tested by an AMD developer as below:
Testing a suspend run with RTC for 15 seconds and then 30 seconds:
```
$ sudo rtcwake --seconds 15 -m mem
rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Fri Nov 5 02:31:45 2021
$ sudo rtcwake --seconds 30 -m mem
rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Fri Nov 5 02:33:13 2021
$ sudo cat /sys/kernel/debug/amd_pmc/s0ix_stats
=== S0ix statistics ===
S0ix Entry Time: 4793618285
S0ix Exit Time: 6209036738
Residency Time: 29487884
```
Residency divided by 1000000 is 29.4 seconds.
Reading idle mask works fine too.
[Where problems could occur]
Low risk.
First patch only exports Idlemask value.
The actual fix only affects a specific AMD CPU (CZN).
[Impact]
RTC based wakeup is not supported natively by the hardware for s0i3.
[Fix]
A firmware and driver updates were implemented. The driver passes wakeup time to SMU to to enable RTC from S0i3.
Note this s0i3 RTC wake up also requires new firmware.
The first patch is the prerequisite actual fix (patch 2 and 3).
[Test]
This is requested by AMD and tested by an AMD developer as below:
Testing a suspend run with RTC for 15 seconds and then 30 seconds: debug/amd_ pmc/s0ix_ stats
```
$ sudo rtcwake --seconds 15 -m mem
rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Fri Nov 5 02:31:45 2021
$ sudo rtcwake --seconds 30 -m mem
rtcwake: assuming RTC uses UTC ...
rtcwake: wakeup from "mem" using /dev/rtc0 at Fri Nov 5 02:33:13 2021
$ sudo cat /sys/kernel/
=== S0ix statistics ===
S0ix Entry Time: 4793618285
S0ix Exit Time: 6209036738
Residency Time: 29487884
```
Residency divided by 1000000 is 29.4 seconds.
Reading idle mask works fine too.
[Where problems could occur]
Low risk.
First patch only exports Idlemask value.
The actual fix only affects a specific AMD CPU (CZN).