diff mbox series

[2/2] xen: reset legacy rtc flag for PV domU

Message ID 20210903084937.19392-3-jgross@suse.com
State Accepted
Commit f68aa100d815b5b4467fd1c3abbe3b99d65fd028
Headers show
Series xen: fix illegal rtc device usage of pv guests | expand

Commit Message

Jürgen Groß Sept. 3, 2021, 8:49 a.m. UTC
A Xen PV guest doesn't have a legacy RTC device, so reset the legacy
RTC flag. Otherwise the following WARN splat will occur at boot:

[    1.333404] WARNING: CPU: 1 PID: 1 at /home/gross/linux/head/drivers/rtc/rtc-mc146818-lib.c:25 mc146818_get_time+0x1be/0x210
[    1.333404] Modules linked in:
[    1.333404] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W         5.14.0-rc7-default+ #282
[    1.333404] RIP: e030:mc146818_get_time+0x1be/0x210
[    1.333404] Code: c0 64 01 c5 83 fd 45 89 6b 14 7f 06 83 c5 64 89 6b 14 41 83 ec 01 b8 02 00 00 00 44 89 63 10 5b 5d 41 5c 41 5d 41 5e 41 5f c3 <0f> 0b 48 c7 c7 30 0e ef 82 4c 89 e6 e8 71 2a 24 00 48 c7 c0 ff ff
[    1.333404] RSP: e02b:ffffc90040093df8 EFLAGS: 00010002
[    1.333404] RAX: 00000000000000ff RBX: ffffc90040093e34 RCX: 0000000000000000
[    1.333404] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 000000000000000d
[    1.333404] RBP: ffffffff82ef0e30 R08: ffff888005013e60 R09: 0000000000000000
[    1.333404] R10: ffffffff82373e9b R11: 0000000000033080 R12: 0000000000000200
[    1.333404] R13: 0000000000000000 R14: 0000000000000002 R15: ffffffff82cdc6d4
[    1.333404] FS:  0000000000000000(0000) GS:ffff88807d440000(0000) knlGS:0000000000000000
[    1.333404] CS:  10000e030 DS: 0000 ES: 0000 CR0: 0000000080050033
[    1.333404] CR2: 0000000000000000 CR3: 000000000260a000 CR4: 0000000000050660
[    1.333404] Call Trace:
[    1.333404]  ? wakeup_sources_sysfs_init+0x30/0x30
[    1.333404]  ? rdinit_setup+0x2b/0x2b
[    1.333404]  early_resume_init+0x23/0xa4
[    1.333404]  ? cn_proc_init+0x36/0x36
[    1.333404]  do_one_initcall+0x3e/0x200
[    1.333404]  kernel_init_freeable+0x232/0x28e
[    1.333404]  ? rest_init+0xd0/0xd0
[    1.333404]  kernel_init+0x16/0x120
[    1.333404]  ret_from_fork+0x1f/0x30

Cc: <stable@vger.kernel.org>
Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/xen/enlighten_pv.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Boris Ostrovsky Sept. 8, 2021, 2:54 p.m. UTC | #1
On 9/3/21 4:49 AM, Juergen Gross wrote:
> A Xen PV guest doesn't have a legacy RTC device, so reset the legacy

> RTC flag. Otherwise the following WARN splat will occur at boot:

>

> [    1.333404] WARNING: CPU: 1 PID: 1 at /home/gross/linux/head/drivers/rtc/rtc-mc146818-lib.c:25 mc146818_get_time+0x1be/0x210

> [    1.333404] Modules linked in:

> [    1.333404] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W         5.14.0-rc7-default+ #282

> [    1.333404] RIP: e030:mc146818_get_time+0x1be/0x210

> [    1.333404] Code: c0 64 01 c5 83 fd 45 89 6b 14 7f 06 83 c5 64 89 6b 14 41 83 ec 01 b8 02 00 00 00 44 89 63 10 5b 5d 41 5c 41 5d 41 5e 41 5f c3 <0f> 0b 48 c7 c7 30 0e ef 82 4c 89 e6 e8 71 2a 24 00 48 c7 c0 ff ff

> [    1.333404] RSP: e02b:ffffc90040093df8 EFLAGS: 00010002

> [    1.333404] RAX: 00000000000000ff RBX: ffffc90040093e34 RCX: 0000000000000000

> [    1.333404] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 000000000000000d

> [    1.333404] RBP: ffffffff82ef0e30 R08: ffff888005013e60 R09: 0000000000000000

> [    1.333404] R10: ffffffff82373e9b R11: 0000000000033080 R12: 0000000000000200

> [    1.333404] R13: 0000000000000000 R14: 0000000000000002 R15: ffffffff82cdc6d4

> [    1.333404] FS:  0000000000000000(0000) GS:ffff88807d440000(0000) knlGS:0000000000000000

> [    1.333404] CS:  10000e030 DS: 0000 ES: 0000 CR0: 0000000080050033

> [    1.333404] CR2: 0000000000000000 CR3: 000000000260a000 CR4: 0000000000050660

> [    1.333404] Call Trace:

> [    1.333404]  ? wakeup_sources_sysfs_init+0x30/0x30

> [    1.333404]  ? rdinit_setup+0x2b/0x2b

> [    1.333404]  early_resume_init+0x23/0xa4

> [    1.333404]  ? cn_proc_init+0x36/0x36

> [    1.333404]  do_one_initcall+0x3e/0x200

> [    1.333404]  kernel_init_freeable+0x232/0x28e

> [    1.333404]  ? rest_init+0xd0/0xd0

> [    1.333404]  kernel_init+0x16/0x120

> [    1.333404]  ret_from_fork+0x1f/0x30

>

> Cc: <stable@vger.kernel.org>

> Signed-off-by: Juergen Gross <jgross@suse.com>



Fixes: 211e5db19d15 ("rtc: mc146818: Detect and handle broken RTCs") ?


Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Jürgen Groß Sept. 10, 2021, 7:27 a.m. UTC | #2
On 08.09.21 16:54, Boris Ostrovsky wrote:
> 

> On 9/3/21 4:49 AM, Juergen Gross wrote:

>> A Xen PV guest doesn't have a legacy RTC device, so reset the legacy

>> RTC flag. Otherwise the following WARN splat will occur at boot:

>>

>> [    1.333404] WARNING: CPU: 1 PID: 1 at /home/gross/linux/head/drivers/rtc/rtc-mc146818-lib.c:25 mc146818_get_time+0x1be/0x210

>> [    1.333404] Modules linked in:

>> [    1.333404] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G        W         5.14.0-rc7-default+ #282

>> [    1.333404] RIP: e030:mc146818_get_time+0x1be/0x210

>> [    1.333404] Code: c0 64 01 c5 83 fd 45 89 6b 14 7f 06 83 c5 64 89 6b 14 41 83 ec 01 b8 02 00 00 00 44 89 63 10 5b 5d 41 5c 41 5d 41 5e 41 5f c3 <0f> 0b 48 c7 c7 30 0e ef 82 4c 89 e6 e8 71 2a 24 00 48 c7 c0 ff ff

>> [    1.333404] RSP: e02b:ffffc90040093df8 EFLAGS: 00010002

>> [    1.333404] RAX: 00000000000000ff RBX: ffffc90040093e34 RCX: 0000000000000000

>> [    1.333404] RDX: 0000000000000001 RSI: 0000000000000000 RDI: 000000000000000d

>> [    1.333404] RBP: ffffffff82ef0e30 R08: ffff888005013e60 R09: 0000000000000000

>> [    1.333404] R10: ffffffff82373e9b R11: 0000000000033080 R12: 0000000000000200

>> [    1.333404] R13: 0000000000000000 R14: 0000000000000002 R15: ffffffff82cdc6d4

>> [    1.333404] FS:  0000000000000000(0000) GS:ffff88807d440000(0000) knlGS:0000000000000000

>> [    1.333404] CS:  10000e030 DS: 0000 ES: 0000 CR0: 0000000080050033

>> [    1.333404] CR2: 0000000000000000 CR3: 000000000260a000 CR4: 0000000000050660

>> [    1.333404] Call Trace:

>> [    1.333404]  ? wakeup_sources_sysfs_init+0x30/0x30

>> [    1.333404]  ? rdinit_setup+0x2b/0x2b

>> [    1.333404]  early_resume_init+0x23/0xa4

>> [    1.333404]  ? cn_proc_init+0x36/0x36

>> [    1.333404]  do_one_initcall+0x3e/0x200

>> [    1.333404]  kernel_init_freeable+0x232/0x28e

>> [    1.333404]  ? rest_init+0xd0/0xd0

>> [    1.333404]  kernel_init+0x16/0x120

>> [    1.333404]  ret_from_fork+0x1f/0x30

>>

>> Cc: <stable@vger.kernel.org>

>> Signed-off-by: Juergen Gross <jgross@suse.com>

> 

> 

> Fixes: 211e5db19d15 ("rtc: mc146818: Detect and handle broken RTCs") ?


I don't think so. Its rather:

Fixes: 8d152e7a5c7537 ("x86/rtc: Replace paravirt rtc check with 
platform legacy quirk")

as this was the commit leading to domUs having the rtc capability being
set.

> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>


Thanks,

Juergen
diff mbox series

Patch

diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c
index 753f63734c13..349f780a1567 100644
--- a/arch/x86/xen/enlighten_pv.c
+++ b/arch/x86/xen/enlighten_pv.c
@@ -1214,6 +1214,11 @@  static void __init xen_dom0_set_legacy_features(void)
 	x86_platform.legacy.rtc = 1;
 }
 
+static void __init xen_domu_set_legacy_features(void)
+{
+	x86_platform.legacy.rtc = 0;
+}
+
 /* First C function to be called on Xen boot */
 asmlinkage __visible void __init xen_start_kernel(void)
 {
@@ -1359,6 +1364,8 @@  asmlinkage __visible void __init xen_start_kernel(void)
 		add_preferred_console("xenboot", 0, NULL);
 		if (pci_xen)
 			x86_init.pci.arch_init = pci_xen_init;
+		x86_platform.set_legacy_features =
+				xen_domu_set_legacy_features;
 	} else {
 		const struct dom0_vga_console_info *info =
 			(void *)((char *)xen_start_info +