cloud-hypervisor / rust-hypervisor-firmware

Apache License 2.0
590 stars 53 forks source link

aarch64: efi get time fail in guest kernel #289

Closed jongwu closed 11 months ago

jongwu commented 11 months ago

If efi_rtc is enabled in guest kernel, a warning occurs:

[    0.795685] [Firmware Bug]: Unable to handle paging request in EFI runtime service
[    0.858764] ------------[ cut here ]------------
[    0.860111] WARNING: CPU: 0 PID: 1 at drivers/firmware/efi/runtime-wrappers.c:346 __efi_queue_work+0xe8/0x11c
[    0.862929] Modules linked in:
[    0.863850] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W I        6.5.0-next-20230905+ #228
[    0.866502] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[    0.868580] pc : __efi_queue_work+0xe8/0x11c
[    0.869863] lr : __efi_queue_work+0xd4/0x11c
[    0.871143] sp : ffff80008002bad0
[    0.872135] x29: ffff80008002bad0 x28: 0000000000000000 x27: ffff800081945868
[    0.874287] x26: ffff8000818500b0 x25: ffff8000817c48b0 x24: 0000000000000000
[    0.876425] x23: ffff800082425c18 x22: 0000000000000000 x21: ffff80008002bb98
[    0.878544] x20: ffff800082434a40 x19: ffff8000824349e0 x18: 3d464f6d78cd8426
[    0.880673] x17: ffff800034fc4000 x16: ffff800080000000 x15: 00003a1efce9c232
[    0.882805] x14: 0000000000000228 x13: 0000000000000001 x12: 0000000000000001
[    0.884950] x11: 0000000000000000 x10: 0000000000000980 x9 : ffff80008002b920
[    0.887077] x8 : ffff0000018e09e0 x7 : ffff0000b69f5780 x6 : 0000000000000000
[    0.889205] x5 : 00000000430f0af0 x4 : 0000000000f0000f x3 : 0000000000000000
[    0.891337] x2 : 0000000000000000 x1 : 8000000000000015 x0 : 8000000000000015
[    0.893475] Call trace:
[    0.894210]  __efi_queue_work+0xe8/0x11c
[    0.895384]  virt_efi_get_time+0x64/0xb4
[    0.896568]  efi_rtc_probe+0x40/0x170
[    0.897663]  platform_probe+0x68/0xdc
[    0.898756]  really_probe+0x148/0x2ac
[    0.899852]  __driver_probe_device+0x78/0x12c
[    0.901165]  driver_probe_device+0x3c/0x15c
[    0.902416]  __driver_attach+0x94/0x19c
[    0.903560]  bus_for_each_dev+0x74/0xd4
[    0.904714]  driver_attach+0x24/0x30
[    0.905789]  bus_add_driver+0xe4/0x1e8
[    0.906913]  driver_register+0x60/0x128
[    0.908064]  __platform_driver_probe+0x58/0xd0
[    0.909410]  efi_rtc_driver_init+0x24/0x30
[    0.910637]  do_one_initcall+0x6c/0x1b0
[    0.911785]  kernel_init_freeable+0x1b8/0x280
[    0.913096]  kernel_init+0x24/0x1e0
[    0.914140]  ret_from_fork+0x10/0x20
[    0.915211] ---[ end trace 0000000000000000 ]---

And the time is wrong in guest.