* [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities
@ 2021-03-09 4:45 hongzha1
2021-03-10 16:15 ` Jan Kiszka
2021-03-10 16:51 ` Philippe Gerum
0 siblings, 2 replies; 5+ messages in thread
From: hongzha1 @ 2021-03-09 4:45 UTC (permalink / raw)
To: xenomai
Ask for switching back to oob mode once ptrace core tell that
current is resuming from a stopped state, leaving space for
other runnable RT threads of the process to take over.
Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
diff --git a/kernel/cobalt/dovetail/kevents.c b/kernel/cobalt/dovetail/kevents.c
index 966a63ce0..a640c4d9e 100644
--- a/kernel/cobalt/dovetail/kevents.c
+++ b/kernel/cobalt/dovetail/kevents.c
@@ -492,6 +492,8 @@ static void handle_ptrace_cont(void)
unregister_debugged_thread(curr);
xnthread_set_localinfo(curr, XNHICCUP);
+
+ dovetail_request_ucall(current);
}
xnlock_put_irqrestore(&nklock, s);
diff --git a/kernel/cobalt/dovetail/sched.c b/kernel/cobalt/dovetail/sched.c
index de7c43b70..2bdddfeef 100644
--- a/kernel/cobalt/dovetail/sched.c
+++ b/kernel/cobalt/dovetail/sched.c
@@ -56,9 +56,21 @@ int pipeline_leave_inband(void)
int pipeline_leave_oob_prepare(void)
{
- dovetail_leave_oob();
+ int suspmask = XNRELAX;
+ struct xnthread *curr = xnthread_current();
- return XNRELAX;
+ dovetail_leave_oob();
+ /*
+ * If current is being debugged, record that it should migrate
+ * back in case it resumes in userspace. If it resumes in
+ * kernel space, i.e. over a restarting syscall, the
+ * associated hardening will clear XNCONTHI.
+ */
+ if (xnthread_test_state(curr, XNSSTEP)) {
+ xnthread_set_info(curr, XNCONTHI);
+ suspmask |= XNDBGSTOP;
+ }
+ return suspmask;
}
void pipeline_leave_oob_finish(void)
--
2.17.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities
2021-03-09 4:45 [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities hongzha1
@ 2021-03-10 16:15 ` Jan Kiszka
2021-03-10 16:49 ` Philippe Gerum
2021-03-10 16:51 ` Philippe Gerum
1 sibling, 1 reply; 5+ messages in thread
From: Jan Kiszka @ 2021-03-10 16:15 UTC (permalink / raw)
To: hongzha1, xenomai, Philippe Gerum
On 09.03.21 05:45, hongzha1 via Xenomai wrote:
> Ask for switching back to oob mode once ptrace core tell that
> current is resuming from a stopped state, leaving space for
> other runnable RT threads of the process to take over.
>
> Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
>
> diff --git a/kernel/cobalt/dovetail/kevents.c b/kernel/cobalt/dovetail/kevents.c
> index 966a63ce0..a640c4d9e 100644
> --- a/kernel/cobalt/dovetail/kevents.c
> +++ b/kernel/cobalt/dovetail/kevents.c
> @@ -492,6 +492,8 @@ static void handle_ptrace_cont(void)
> unregister_debugged_thread(curr);
>
> xnthread_set_localinfo(curr, XNHICCUP);
> +
> + dovetail_request_ucall(current);
> }
>
> xnlock_put_irqrestore(&nklock, s);
> diff --git a/kernel/cobalt/dovetail/sched.c b/kernel/cobalt/dovetail/sched.c
> index de7c43b70..2bdddfeef 100644
> --- a/kernel/cobalt/dovetail/sched.c
> +++ b/kernel/cobalt/dovetail/sched.c
> @@ -56,9 +56,21 @@ int pipeline_leave_inband(void)
>
> int pipeline_leave_oob_prepare(void)
> {
> - dovetail_leave_oob();
> + int suspmask = XNRELAX;
> + struct xnthread *curr = xnthread_current();
>
> - return XNRELAX;
> + dovetail_leave_oob();
> + /*
> + * If current is being debugged, record that it should migrate
> + * back in case it resumes in userspace. If it resumes in
> + * kernel space, i.e. over a restarting syscall, the
> + * associated hardening will clear XNCONTHI.
> + */
> + if (xnthread_test_state(curr, XNSSTEP)) {
> + xnthread_set_info(curr, XNCONTHI);
> + suspmask |= XNDBGSTOP;
> + }
> + return suspmask;
> }
>
> void pipeline_leave_oob_finish(void)
>
I've applied this to wip/dovetail, but that alone does not fix
ptrace/gdb use cases yet:
(gdb latency -> run)
[ 52.097078] ------------[ cut here ]------------
[ 52.097079] WARNING: CPU: 2 PID: 1318 at ../kernel/irq/pipeline.c:316 inband_irq_enable+0x10/0x20
[ 52.097079] Modules linked in: 9p
[ 52.097080] CPU: 2 PID: 1318 Comm: latency Not tainted 5.10.19+ #41
[ 52.097080] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
[ 52.097080] IRQ stage: Linux
[ 52.097081] RIP: 0010:inband_irq_enable+0x10/0x20
[ 52.097081] Code: 00 00 00 01 75 ee e8 cf fa ff ff 53 9d 5b c3 66 66 2e 0f 1f 84 00 00 00 00 00 80 3d 9a 38 b3 02 00 75 09 9c 58 f6 c4 02 75 02 <0f> 0b eb 8c 66 66 2e 0f 1f 84 00 00 00 00 00 90 0f 1f 44 00 00 48
[ 52.097081] RSP: 0000:ffffc90000783f20 EFLAGS: 00010046
[ 52.097082] RAX: 0000000000000046 RBX: ffffc90000783f58 RCX: 0000000000000000
[ 52.097082] RDX: ffffc90000783ef0 RSI: ffffffff8109e600 RDI: ffffffff81d4eee2
[ 52.097082] RBP: ffff888006e70000 R08: 0000000000000000 R09: 0000000000000000
[ 52.097083] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000004000
[ 52.097083] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[ 52.097083] FS: 00007ffff7fe6640(0000) GS:ffff88803ed00000(0000) knlGS:0000000000000000
[ 52.097084] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 52.097084] CR2: 00007ffff7243610 CR3: 00000000070c6001 CR4: 0000000000370ee0
[ 52.097084] Call Trace:
[ 52.097084] noist_exc_debug+0xf7/0x180
[ 52.097085] ? asm_exc_debug+0x23/0x30
[ 52.097085] asm_exc_debug+0x2b/0x30
[ 52.097085] RIP: 0033:0x401df3
[ 52.097086] Code: 00 00 e9 b0 fb ff ff ff 25 62 44 20 00 68 44 00 00 00 e9 a0 fb ff ff ff 25 5a 44 20 00 68 45 00 00 00 e9 90 fb ff ff 31 ed 90 <e8> f9 30 01 00 48 8d 65 d8 5b 41 5c 41 5d 41 70 44 40 00 48 c7 c1
[ 52.097086] RSP: 002b:00007fffffffe1c0 EFLAGS: 00000346
[ 52.097086] RAX: 00007ffff7ffe0e0 RBX: 00007ffff7ffe0e0 RCX: 00007ffff7df23c7
[ 52.097087] RDX: 0000103e00000000 RSI: 0000000000000000 RDI: 0000000000000000
[ 52.097087] RBP: 00007fffffffe3a0 R08: 00007ffff6e8f008 R09: 0000000000000009
[ 52.097087] R10: 00007ffff7ffd990 R11: 0000000000000206 R12: 0000000000000000
[ 52.097087] R13: 00007ffff7ffe110 R14: 00007ffff7ffe110 R15: 00007ffff7fe6640
[ 52.097088] irq event stamp: 0
[ 52.097088] hardirqs last enabled at (0): [<0000000000000000>] 0x0
[ 52.097088] hardirqs last disabled at (0): [<ffffffff8106c648>] copy_process+0x718/0x1cd0
[ 52.097089] softirqs last enabled at (0): [<ffffffff8106c648>] copy_process+0x718/0x1cd0
[ 52.097089] softirqs last disabled at (0): [<0000000000000000>] 0x0
[ 52.097089] ---[ end trace b07496576d3779dc ]---
Do I miss some other patch?
Jan
--
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities
2021-03-10 16:15 ` Jan Kiszka
@ 2021-03-10 16:49 ` Philippe Gerum
2021-03-10 17:53 ` Jan Kiszka
0 siblings, 1 reply; 5+ messages in thread
From: Philippe Gerum @ 2021-03-10 16:49 UTC (permalink / raw)
To: Jan Kiszka; +Cc: hongzha1, xenomai
Jan Kiszka <jan.kiszka@siemens.com> writes:
> On 09.03.21 05:45, hongzha1 via Xenomai wrote:
>> Ask for switching back to oob mode once ptrace core tell that
>> current is resuming from a stopped state, leaving space for
>> other runnable RT threads of the process to take over.
>>
>> Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
>>
>> diff --git a/kernel/cobalt/dovetail/kevents.c b/kernel/cobalt/dovetail/kevents.c
>> index 966a63ce0..a640c4d9e 100644
>> --- a/kernel/cobalt/dovetail/kevents.c
>> +++ b/kernel/cobalt/dovetail/kevents.c
>> @@ -492,6 +492,8 @@ static void handle_ptrace_cont(void)
>> unregister_debugged_thread(curr);
>>
>> xnthread_set_localinfo(curr, XNHICCUP);
>> +
>> + dovetail_request_ucall(current);
>> }
>>
>> xnlock_put_irqrestore(&nklock, s);
>> diff --git a/kernel/cobalt/dovetail/sched.c b/kernel/cobalt/dovetail/sched.c
>> index de7c43b70..2bdddfeef 100644
>> --- a/kernel/cobalt/dovetail/sched.c
>> +++ b/kernel/cobalt/dovetail/sched.c
>> @@ -56,9 +56,21 @@ int pipeline_leave_inband(void)
>>
>> int pipeline_leave_oob_prepare(void)
>> {
>> - dovetail_leave_oob();
>> + int suspmask = XNRELAX;
>> + struct xnthread *curr = xnthread_current();
>>
>> - return XNRELAX;
>> + dovetail_leave_oob();
>> + /*
>> + * If current is being debugged, record that it should migrate
>> + * back in case it resumes in userspace. If it resumes in
>> + * kernel space, i.e. over a restarting syscall, the
>> + * associated hardening will clear XNCONTHI.
>> + */
>> + if (xnthread_test_state(curr, XNSSTEP)) {
>> + xnthread_set_info(curr, XNCONTHI);
>> + suspmask |= XNDBGSTOP;
>> + }
>> + return suspmask;
>> }
>>
>> void pipeline_leave_oob_finish(void)
>>
>
> I've applied this to wip/dovetail, but that alone does not fix
> ptrace/gdb use cases yet:
>
> (gdb latency -> run)
> [ 52.097078] ------------[ cut here ]------------
> [ 52.097079] WARNING: CPU: 2 PID: 1318 at ../kernel/irq/pipeline.c:316 inband_irq_enable+0x10/0x20
> [ 52.097079] Modules linked in: 9p
> [ 52.097080] CPU: 2 PID: 1318 Comm: latency Not tainted 5.10.19+ #41
> [ 52.097080] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
> [ 52.097080] IRQ stage: Linux
> [ 52.097081] RIP: 0010:inband_irq_enable+0x10/0x20
> [ 52.097081] Code: 00 00 00 01 75 ee e8 cf fa ff ff 53 9d 5b c3 66 66 2e 0f 1f 84 00 00 00 00 00 80 3d 9a 38 b3 02 00 75 09 9c 58 f6 c4 02 75 02 <0f> 0b eb 8c 66 66 2e 0f 1f 84 00 00 00 00 00 90 0f 1f 44 00 00 48
> [ 52.097081] RSP: 0000:ffffc90000783f20 EFLAGS: 00010046
> [ 52.097082] RAX: 0000000000000046 RBX: ffffc90000783f58 RCX: 0000000000000000
> [ 52.097082] RDX: ffffc90000783ef0 RSI: ffffffff8109e600 RDI: ffffffff81d4eee2
> [ 52.097082] RBP: ffff888006e70000 R08: 0000000000000000 R09: 0000000000000000
> [ 52.097083] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000004000
> [ 52.097083] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
> [ 52.097083] FS: 00007ffff7fe6640(0000) GS:ffff88803ed00000(0000) knlGS:0000000000000000
> [ 52.097084] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 52.097084] CR2: 00007ffff7243610 CR3: 00000000070c6001 CR4: 0000000000370ee0
> [ 52.097084] Call Trace:
> [ 52.097084] noist_exc_debug+0xf7/0x180
> [ 52.097085] ? asm_exc_debug+0x23/0x30
> [ 52.097085] asm_exc_debug+0x2b/0x30
> [ 52.097085] RIP: 0033:0x401df3
> [ 52.097086] Code: 00 00 e9 b0 fb ff ff ff 25 62 44 20 00 68 44 00 00 00 e9 a0 fb ff ff ff 25 5a 44 20 00 68 45 00 00 00 e9 90 fb ff ff 31 ed 90 <e8> f9 30 01 00 48 8d 65 d8 5b 41 5c 41 5d 41 70 44 40 00 48 c7 c1
> [ 52.097086] RSP: 002b:00007fffffffe1c0 EFLAGS: 00000346
> [ 52.097086] RAX: 00007ffff7ffe0e0 RBX: 00007ffff7ffe0e0 RCX: 00007ffff7df23c7
> [ 52.097087] RDX: 0000103e00000000 RSI: 0000000000000000 RDI: 0000000000000000
> [ 52.097087] RBP: 00007fffffffe3a0 R08: 00007ffff6e8f008 R09: 0000000000000009
> [ 52.097087] R10: 00007ffff7ffd990 R11: 0000000000000206 R12: 0000000000000000
> [ 52.097087] R13: 00007ffff7ffe110 R14: 00007ffff7ffe110 R15: 00007ffff7fe6640
> [ 52.097088] irq event stamp: 0
> [ 52.097088] hardirqs last enabled at (0): [<0000000000000000>] 0x0
> [ 52.097088] hardirqs last disabled at (0): [<ffffffff8106c648>] copy_process+0x718/0x1cd0
> [ 52.097089] softirqs last enabled at (0): [<ffffffff8106c648>] copy_process+0x718/0x1cd0
> [ 52.097089] softirqs last disabled at (0): [<0000000000000000>] 0x0
> [ 52.097089] ---[ end trace b07496576d3779dc ]---
>
> Do I miss some other patch?
>
> Jan
This may help:
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 719ef25e43d0cd1..f15a07967070264 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -1025,7 +1025,7 @@ static __always_inline void exc_debug_user(struct pt_regs *regs,
goto out;
/* It's safe to allow irq's after DR6 has been saved */
- local_irq_enable();
+ local_irq_enable_full();
if (v8086_mode(regs)) {
handle_vm86_trap((struct kernel_vm86_regs *)regs, 0, X86_TRAP_DB);
@@ -1038,7 +1038,7 @@ static __always_inline void exc_debug_user(struct pt_regs *regs,
send_sigtrap(regs, 0, get_si_code(dr6));
out_irq:
- local_irq_disable();
+ local_irq_disable_full();
out:
instrumentation_end();
irqentry_exit_to_user_mode(regs);
--
Philippe.
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities
2021-03-09 4:45 [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities hongzha1
2021-03-10 16:15 ` Jan Kiszka
@ 2021-03-10 16:51 ` Philippe Gerum
1 sibling, 0 replies; 5+ messages in thread
From: Philippe Gerum @ 2021-03-10 16:51 UTC (permalink / raw)
To: hongzha1; +Cc: xenomai
hongzha1 via Xenomai <xenomai@xenomai.org> writes:
> Ask for switching back to oob mode once ptrace core tell that
> current is resuming from a stopped state, leaving space for
> other runnable RT threads of the process to take over.
>
> Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
>
> diff --git a/kernel/cobalt/dovetail/kevents.c b/kernel/cobalt/dovetail/kevents.c
> index 966a63ce0..a640c4d9e 100644
> --- a/kernel/cobalt/dovetail/kevents.c
> +++ b/kernel/cobalt/dovetail/kevents.c
> @@ -492,6 +492,8 @@ static void handle_ptrace_cont(void)
> unregister_debugged_thread(curr);
>
> xnthread_set_localinfo(curr, XNHICCUP);
> +
> + dovetail_request_ucall(current);
> }
>
> xnlock_put_irqrestore(&nklock, s);
> diff --git a/kernel/cobalt/dovetail/sched.c b/kernel/cobalt/dovetail/sched.c
> index de7c43b70..2bdddfeef 100644
> --- a/kernel/cobalt/dovetail/sched.c
> +++ b/kernel/cobalt/dovetail/sched.c
> @@ -56,9 +56,21 @@ int pipeline_leave_inband(void)
>
> int pipeline_leave_oob_prepare(void)
> {
> - dovetail_leave_oob();
> + int suspmask = XNRELAX;
> + struct xnthread *curr = xnthread_current();
>
> - return XNRELAX;
> + dovetail_leave_oob();
> + /*
> + * If current is being debugged, record that it should migrate
> + * back in case it resumes in userspace. If it resumes in
> + * kernel space, i.e. over a restarting syscall, the
> + * associated hardening will clear XNCONTHI.
> + */
> + if (xnthread_test_state(curr, XNSSTEP)) {
> + xnthread_set_info(curr, XNCONTHI);
> + suspmask |= XNDBGSTOP;
> + }
> + return suspmask;
> }
>
> void pipeline_leave_oob_finish(void)
Merged, thanks.
--
Philippe.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities
2021-03-10 16:49 ` Philippe Gerum
@ 2021-03-10 17:53 ` Jan Kiszka
0 siblings, 0 replies; 5+ messages in thread
From: Jan Kiszka @ 2021-03-10 17:53 UTC (permalink / raw)
To: Philippe Gerum; +Cc: hongzha1, xenomai
On 10.03.21 17:49, Philippe Gerum wrote:
>
> Jan Kiszka <jan.kiszka@siemens.com> writes:
>
>> On 09.03.21 05:45, hongzha1 via Xenomai wrote:
>>> Ask for switching back to oob mode once ptrace core tell that
>>> current is resuming from a stopped state, leaving space for
>>> other runnable RT threads of the process to take over.
>>>
>>> Signed-off-by: hongzha1 <hongzhan.chen@intel.com>
>>>
>>> diff --git a/kernel/cobalt/dovetail/kevents.c b/kernel/cobalt/dovetail/kevents.c
>>> index 966a63ce0..a640c4d9e 100644
>>> --- a/kernel/cobalt/dovetail/kevents.c
>>> +++ b/kernel/cobalt/dovetail/kevents.c
>>> @@ -492,6 +492,8 @@ static void handle_ptrace_cont(void)
>>> unregister_debugged_thread(curr);
>>>
>>> xnthread_set_localinfo(curr, XNHICCUP);
>>> +
>>> + dovetail_request_ucall(current);
>>> }
>>>
>>> xnlock_put_irqrestore(&nklock, s);
>>> diff --git a/kernel/cobalt/dovetail/sched.c b/kernel/cobalt/dovetail/sched.c
>>> index de7c43b70..2bdddfeef 100644
>>> --- a/kernel/cobalt/dovetail/sched.c
>>> +++ b/kernel/cobalt/dovetail/sched.c
>>> @@ -56,9 +56,21 @@ int pipeline_leave_inband(void)
>>>
>>> int pipeline_leave_oob_prepare(void)
>>> {
>>> - dovetail_leave_oob();
>>> + int suspmask = XNRELAX;
>>> + struct xnthread *curr = xnthread_current();
>>>
>>> - return XNRELAX;
>>> + dovetail_leave_oob();
>>> + /*
>>> + * If current is being debugged, record that it should migrate
>>> + * back in case it resumes in userspace. If it resumes in
>>> + * kernel space, i.e. over a restarting syscall, the
>>> + * associated hardening will clear XNCONTHI.
>>> + */
>>> + if (xnthread_test_state(curr, XNSSTEP)) {
>>> + xnthread_set_info(curr, XNCONTHI);
>>> + suspmask |= XNDBGSTOP;
>>> + }
>>> + return suspmask;
>>> }
>>>
>>> void pipeline_leave_oob_finish(void)
>>>
>>
>> I've applied this to wip/dovetail, but that alone does not fix
>> ptrace/gdb use cases yet:
>>
>> (gdb latency -> run)
>> [ 52.097078] ------------[ cut here ]------------
>> [ 52.097079] WARNING: CPU: 2 PID: 1318 at ../kernel/irq/pipeline.c:316 inband_irq_enable+0x10/0x20
>> [ 52.097079] Modules linked in: 9p
>> [ 52.097080] CPU: 2 PID: 1318 Comm: latency Not tainted 5.10.19+ #41
>> [ 52.097080] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org 04/01/2014
>> [ 52.097080] IRQ stage: Linux
>> [ 52.097081] RIP: 0010:inband_irq_enable+0x10/0x20
>> [ 52.097081] Code: 00 00 00 01 75 ee e8 cf fa ff ff 53 9d 5b c3 66 66 2e 0f 1f 84 00 00 00 00 00 80 3d 9a 38 b3 02 00 75 09 9c 58 f6 c4 02 75 02 <0f> 0b eb 8c 66 66 2e 0f 1f 84 00 00 00 00 00 90 0f 1f 44 00 00 48
>> [ 52.097081] RSP: 0000:ffffc90000783f20 EFLAGS: 00010046
>> [ 52.097082] RAX: 0000000000000046 RBX: ffffc90000783f58 RCX: 0000000000000000
>> [ 52.097082] RDX: ffffc90000783ef0 RSI: ffffffff8109e600 RDI: ffffffff81d4eee2
>> [ 52.097082] RBP: ffff888006e70000 R08: 0000000000000000 R09: 0000000000000000
>> [ 52.097083] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000004000
>> [ 52.097083] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
>> [ 52.097083] FS: 00007ffff7fe6640(0000) GS:ffff88803ed00000(0000) knlGS:0000000000000000
>> [ 52.097084] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [ 52.097084] CR2: 00007ffff7243610 CR3: 00000000070c6001 CR4: 0000000000370ee0
>> [ 52.097084] Call Trace:
>> [ 52.097084] noist_exc_debug+0xf7/0x180
>> [ 52.097085] ? asm_exc_debug+0x23/0x30
>> [ 52.097085] asm_exc_debug+0x2b/0x30
>> [ 52.097085] RIP: 0033:0x401df3
>> [ 52.097086] Code: 00 00 e9 b0 fb ff ff ff 25 62 44 20 00 68 44 00 00 00 e9 a0 fb ff ff ff 25 5a 44 20 00 68 45 00 00 00 e9 90 fb ff ff 31 ed 90 <e8> f9 30 01 00 48 8d 65 d8 5b 41 5c 41 5d 41 70 44 40 00 48 c7 c1
>> [ 52.097086] RSP: 002b:00007fffffffe1c0 EFLAGS: 00000346
>> [ 52.097086] RAX: 00007ffff7ffe0e0 RBX: 00007ffff7ffe0e0 RCX: 00007ffff7df23c7
>> [ 52.097087] RDX: 0000103e00000000 RSI: 0000000000000000 RDI: 0000000000000000
>> [ 52.097087] RBP: 00007fffffffe3a0 R08: 00007ffff6e8f008 R09: 0000000000000009
>> [ 52.097087] R10: 00007ffff7ffd990 R11: 0000000000000206 R12: 0000000000000000
>> [ 52.097087] R13: 00007ffff7ffe110 R14: 00007ffff7ffe110 R15: 00007ffff7fe6640
>> [ 52.097088] irq event stamp: 0
>> [ 52.097088] hardirqs last enabled at (0): [<0000000000000000>] 0x0
>> [ 52.097088] hardirqs last disabled at (0): [<ffffffff8106c648>] copy_process+0x718/0x1cd0
>> [ 52.097089] softirqs last enabled at (0): [<ffffffff8106c648>] copy_process+0x718/0x1cd0
>> [ 52.097089] softirqs last disabled at (0): [<0000000000000000>] 0x0
>> [ 52.097089] ---[ end trace b07496576d3779dc ]---
>>
>> Do I miss some other patch?
>>
>> Jan
>
> This may help:
>
> diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
> index 719ef25e43d0cd1..f15a07967070264 100644
> --- a/arch/x86/kernel/traps.c
> +++ b/arch/x86/kernel/traps.c
> @@ -1025,7 +1025,7 @@ static __always_inline void exc_debug_user(struct pt_regs *regs,
> goto out;
>
> /* It's safe to allow irq's after DR6 has been saved */
> - local_irq_enable();
> + local_irq_enable_full();
>
> if (v8086_mode(regs)) {
> handle_vm86_trap((struct kernel_vm86_regs *)regs, 0, X86_TRAP_DB);
> @@ -1038,7 +1038,7 @@ static __always_inline void exc_debug_user(struct pt_regs *regs,
> send_sigtrap(regs, 0, get_si_code(dr6));
>
> out_irq:
> - local_irq_disable();
> + local_irq_disable_full();
> out:
> instrumentation_end();
> irqentry_exit_to_user_mode(regs);
>
Yep, better. Please queue up.
Thanks,
Jan
--
Siemens AG, T RDA IOT
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-03-10 17:53 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-09 4:45 [PATCH] cobalt/sched: dovetail: fix missed switching to OOB opportunities hongzha1
2021-03-10 16:15 ` Jan Kiszka
2021-03-10 16:49 ` Philippe Gerum
2021-03-10 17:53 ` Jan Kiszka
2021-03-10 16:51 ` Philippe Gerum
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.