LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [PATCH] x86: Remove ifdef from step.c
@ 2008-01-10 7:18 Harvey Harrison
2008-01-10 12:40 ` Ingo Molnar
0 siblings, 1 reply; 6+ messages in thread
From: Harvey Harrison @ 2008-01-10 7:18 UTC (permalink / raw)
To: Ingo Molnar; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
Similar cleanup was done when unifying kprobes_32|64.c and
wrmsr() was chosen there over wrmsrl().
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
Ingo, only chose this direction based on the kprobes.c unification.
arch/x86/kernel/step.c | 4 ----
1 files changed, 0 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
index 21ea22f..d73c537 100644
--- a/arch/x86/kernel/step.c
+++ b/arch/x86/kernel/step.c
@@ -148,11 +148,7 @@ static void write_debugctlmsr(struct task_struct *child, unsigned long val)
if (child != current)
return;
-#ifdef CONFIG_X86_64
- wrmsrl(MSR_IA32_DEBUGCTLMSR, val);
-#else
wrmsr(MSR_IA32_DEBUGCTLMSR, val, 0);
-#endif
}
/*
--
1.5.4.rc2.1164.g6451
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] x86: Remove ifdef from step.c
2008-01-10 7:18 [PATCH] x86: Remove ifdef from step.c Harvey Harrison
@ 2008-01-10 12:40 ` Ingo Molnar
2008-01-10 19:29 ` Harvey Harrison
2008-01-10 19:40 ` [PATCH] x86: Use wrmsrl in kprobes.c, step.c Harvey Harrison
0 siblings, 2 replies; 6+ messages in thread
From: Ingo Molnar @ 2008-01-10 12:40 UTC (permalink / raw)
To: Harvey Harrison; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
* Harvey Harrison <harvey.harrison@gmail.com> wrote:
> @@ -148,11 +148,7 @@ static void write_debugctlmsr(struct task_struct *child, unsigned long val)
> if (child != current)
> return;
>
> -#ifdef CONFIG_X86_64
> - wrmsrl(MSR_IA32_DEBUGCTLMSR, val);
> -#else
> wrmsr(MSR_IA32_DEBUGCTLMSR, val, 0);
> -#endif
doesnt this break 64-bit? 'val' is 64-bit, but wrmsr truncates it to
32-bit? [while wrmsrl() kept the full 64 bits]
Ingo
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] x86: Remove ifdef from step.c
2008-01-10 12:40 ` Ingo Molnar
@ 2008-01-10 19:29 ` Harvey Harrison
2008-01-10 19:40 ` [PATCH] x86: Use wrmsrl in kprobes.c, step.c Harvey Harrison
1 sibling, 0 replies; 6+ messages in thread
From: Harvey Harrison @ 2008-01-10 19:29 UTC (permalink / raw)
To: Ingo Molnar; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
On Thu, 2008-01-10 at 13:40 +0100, Ingo Molnar wrote:
> * Harvey Harrison <harvey.harrison@gmail.com> wrote:
>
> > @@ -148,11 +148,7 @@ static void write_debugctlmsr(struct task_struct *child, unsigned long val)
> > if (child != current)
> > return;
> >
> > -#ifdef CONFIG_X86_64
> > - wrmsrl(MSR_IA32_DEBUGCTLMSR, val);
> > -#else
> > wrmsr(MSR_IA32_DEBUGCTLMSR, val, 0);
> > -#endif
>
> doesnt this break 64-bit? 'val' is 64-bit, but wrmsr truncates it to
> 32-bit? [while wrmsrl() kept the full 64 bits]
>
I wasn't totally sure about this, but believe in this case that it is
OK. If not, we'll have to add this #ifdef back to restore_btf() in
kprobes.c which was lost Masami's unification.
But looking at how this is called, there shouldn't ever be anything in
the high 32 bits being written to (32 bit always wrote zero anyway).
In any event, it's going to be safer to use wrsmrl instead as you'll
get the zero extension on 32 bit and won't effect 64 bit.
Patch to follow.
Harvey
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] x86: Use wrmsrl in kprobes.c, step.c
2008-01-10 12:40 ` Ingo Molnar
2008-01-10 19:29 ` Harvey Harrison
@ 2008-01-10 19:40 ` Harvey Harrison
2008-01-10 19:49 ` H. Peter Anvin
1 sibling, 1 reply; 6+ messages in thread
From: Harvey Harrison @ 2008-01-10 19:40 UTC (permalink / raw)
To: Ingo Molnar; +Cc: H. Peter Anvin, Thomas Gleixner, LKML
Where x86_32 passed zero in the high 32 bits, use wrmsrl which
will zero extend for us. This allows ifdefs for 32/64 bit to
be eliminated.
Eliminate ifdef in step.c. Similar cleanup was done when unifying
kprobes_32|64.c and wrmsr() was chosen there over wrmsrl(). This
patch changes these to wrmsrl.
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
arch/x86/kernel/kprobes.c | 4 ++--
arch/x86/kernel/step.c | 4 ----
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
index 53ba6a5..34becd1 100644
--- a/arch/x86/kernel/kprobes.c
+++ b/arch/x86/kernel/kprobes.c
@@ -410,13 +410,13 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
static void __kprobes clear_btf(void)
{
if (test_thread_flag(TIF_DEBUGCTLMSR))
- wrmsr(MSR_IA32_DEBUGCTLMSR, 0, 0);
+ wrmsrl(MSR_IA32_DEBUGCTLMSR, 0L);
}
static void __kprobes restore_btf(void)
{
if (test_thread_flag(TIF_DEBUGCTLMSR))
- wrmsr(MSR_IA32_DEBUGCTLMSR, current->thread.debugctlmsr, 0);
+ wrmsrl(MSR_IA32_DEBUGCTLMSR, current->thread.debugctlmsr);
}
static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
index 21ea22f..bf7047d 100644
--- a/arch/x86/kernel/step.c
+++ b/arch/x86/kernel/step.c
@@ -148,11 +148,7 @@ static void write_debugctlmsr(struct task_struct *child, unsigned long val)
if (child != current)
return;
-#ifdef CONFIG_X86_64
wrmsrl(MSR_IA32_DEBUGCTLMSR, val);
-#else
- wrmsr(MSR_IA32_DEBUGCTLMSR, val, 0);
-#endif
}
/*
--
1.5.4.rc2.1164.g6451
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] x86: Use wrmsrl in kprobes.c, step.c
2008-01-10 19:40 ` [PATCH] x86: Use wrmsrl in kprobes.c, step.c Harvey Harrison
@ 2008-01-10 19:49 ` H. Peter Anvin
2008-01-10 20:15 ` [PATCHv2] " Harvey Harrison
0 siblings, 1 reply; 6+ messages in thread
From: H. Peter Anvin @ 2008-01-10 19:49 UTC (permalink / raw)
To: Harvey Harrison; +Cc: Ingo Molnar, Thomas Gleixner, LKML
Harvey Harrison wrote:
> Where x86_32 passed zero in the high 32 bits, use wrmsrl which
> will zero extend for us. This allows ifdefs for 32/64 bit to
> be eliminated.
>
> Eliminate ifdef in step.c. Similar cleanup was done when unifying
> kprobes_32|64.c and wrmsr() was chosen there over wrmsrl(). This
> patch changes these to wrmsrl.
>
> Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
> ---
> arch/x86/kernel/kprobes.c | 4 ++--
> arch/x86/kernel/step.c | 4 ----
> 2 files changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
> index 53ba6a5..34becd1 100644
> --- a/arch/x86/kernel/kprobes.c
> +++ b/arch/x86/kernel/kprobes.c
> @@ -410,13 +410,13 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
> static void __kprobes clear_btf(void)
> {
> if (test_thread_flag(TIF_DEBUGCTLMSR))
> - wrmsr(MSR_IA32_DEBUGCTLMSR, 0, 0);
> + wrmsrl(MSR_IA32_DEBUGCTLMSR, 0L);
> }
Drop the L. It doesn't buy you anything, and gcc will sign-extend for
you anyway. It's just visual clutter.
-hpa
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCHv2] x86: Use wrmsrl in kprobes.c, step.c
2008-01-10 19:49 ` H. Peter Anvin
@ 2008-01-10 20:15 ` Harvey Harrison
0 siblings, 0 replies; 6+ messages in thread
From: Harvey Harrison @ 2008-01-10 20:15 UTC (permalink / raw)
To: H. Peter Anvin; +Cc: Ingo Molnar, Thomas Gleixner, LKML
Where x86_32 passed zero in the high 32 bits, use wrmsrl which
will zero extend for us. This allows ifdefs for 32/64 bit to
be eliminated.
Eliminate ifdef in step.c. Similar cleanup was done when unifying
kprobes_32|64.c and wrmsr() was chosen there over wrmsrl(). This
patch changes these to wrmsrl.
Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
---
Incorporating HPA's comment removing 0L.
arch/x86/kernel/kprobes.c | 4 ++--
arch/x86/kernel/step.c | 4 ----
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
index 53ba6a5..34becd1 100644
--- a/arch/x86/kernel/kprobes.c
+++ b/arch/x86/kernel/kprobes.c
@@ -410,13 +410,13 @@ static void __kprobes set_current_kprobe(struct kprobe *p, struct pt_regs *regs,
static void __kprobes clear_btf(void)
{
if (test_thread_flag(TIF_DEBUGCTLMSR))
- wrmsr(MSR_IA32_DEBUGCTLMSR, 0, 0);
+ wrmsrl(MSR_IA32_DEBUGCTLMSR, 0);
}
static void __kprobes restore_btf(void)
{
if (test_thread_flag(TIF_DEBUGCTLMSR))
- wrmsr(MSR_IA32_DEBUGCTLMSR, current->thread.debugctlmsr, 0);
+ wrmsrl(MSR_IA32_DEBUGCTLMSR, current->thread.debugctlmsr);
}
static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs)
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
index 21ea22f..bf7047d 100644
--- a/arch/x86/kernel/step.c
+++ b/arch/x86/kernel/step.c
@@ -148,11 +148,7 @@ static void write_debugctlmsr(struct task_struct *child, unsigned long val)
if (child != current)
return;
-#ifdef CONFIG_X86_64
wrmsrl(MSR_IA32_DEBUGCTLMSR, val);
-#else
- wrmsr(MSR_IA32_DEBUGCTLMSR, val, 0);
-#endif
}
/*
--
1.5.4.rc2.1164.g6451
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-01-10 20:15 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-01-10 7:18 [PATCH] x86: Remove ifdef from step.c Harvey Harrison
2008-01-10 12:40 ` Ingo Molnar
2008-01-10 19:29 ` Harvey Harrison
2008-01-10 19:40 ` [PATCH] x86: Use wrmsrl in kprobes.c, step.c Harvey Harrison
2008-01-10 19:49 ` H. Peter Anvin
2008-01-10 20:15 ` [PATCHv2] " Harvey Harrison
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).