Re: [PATCH 2/2 v3] x86: make jump_label use int3-based patching

2013-07-11 Thread Masami Hiramatsu
(2013/07/12 5:26), Jiri Kosina wrote:
> Make jump labels use text_poke_bp() for text patching instead of 
> text_poke_smp(), avoiding the need for stop_machine().
> 
> Signed-off-by: Jiri Kosina 
> ---
> Changes:
> 
> - unchanged since v1, patch 1/2 is the one being updated
> 
>  arch/x86/kernel/jump_label.c |   16 ++--
>  1 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
> index 2889b3d..460f5d9 100644
> --- a/arch/x86/kernel/jump_label.c
> +++ b/arch/x86/kernel/jump_label.c
> @@ -37,7 +37,19 @@ static void __jump_label_transform(struct jump_entry 
> *entry,
>   } else
>   memcpy(, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
>  
> - (*poker)((void *)entry->code, , JUMP_LABEL_NOP_SIZE);
> + /*
> +  * Make text_poke_bp() a default fallback poker.
> +  *
> +  * At the time the change is being done, just ignore whether we
> +  * are doing nop -> jump or jump -> nop transition, and assume
> +  * always nop being the 'currently valid' instruction
> +  *
> +  */
> + if (poker)
> + (*poker)((void *)entry->code, , JUMP_LABEL_NOP_SIZE);
> + else
> + text_poke_bp((void *)entry->code, , JUMP_LABEL_NOP_SIZE,
> +  (void *)entry->code + JUMP_LABEL_NOP_SIZE);

BTW, if the poker is NULL or text_poke_early, I think it doesn't need to
pass it to __jump_label_transform, does it?

Thank you,
-- 
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu...@hitachi.com


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2/2 v3] x86: make jump_label use int3-based patching

2013-07-11 Thread Steven Rostedt
On Thu, 2013-07-11 at 22:26 +0200, Jiri Kosina wrote:
> Make jump labels use text_poke_bp() for text patching instead of 
> text_poke_smp(), avoiding the need for stop_machine().
> 
> Signed-off-by: Jiri Kosina 
> ---
> Changes:
> 
> - unchanged since v1, patch 1/2 is the one being updated
> 
>  arch/x86/kernel/jump_label.c |   16 ++--
>  1 files changed, 14 insertions(+), 2 deletions(-)
> 

Reviewed-by: Steven Rostedt 

-- Steve

> diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
> index 2889b3d..460f5d9 100644
> --- a/arch/x86/kernel/jump_label.c
> +++ b/arch/x86/kernel/jump_label.c
> @@ -37,7 +37,19 @@ static void __jump_label_transform(struct jump_entry 
> *entry,
>   } else
>   memcpy(, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
>  
> - (*poker)((void *)entry->code, , JUMP_LABEL_NOP_SIZE);
> + /*
> +  * Make text_poke_bp() a default fallback poker.
> +  *
> +  * At the time the change is being done, just ignore whether we
> +  * are doing nop -> jump or jump -> nop transition, and assume
> +  * always nop being the 'currently valid' instruction
> +  *
> +  */
> + if (poker)
> + (*poker)((void *)entry->code, , JUMP_LABEL_NOP_SIZE);
> + else
> + text_poke_bp((void *)entry->code, , JUMP_LABEL_NOP_SIZE,
> +  (void *)entry->code + JUMP_LABEL_NOP_SIZE);
>  }
>  
>  void arch_jump_label_transform(struct jump_entry *entry,
> @@ -45,7 +57,7 @@ void arch_jump_label_transform(struct jump_entry *entry,
>  {
>   get_online_cpus();
>   mutex_lock(_mutex);
> - __jump_label_transform(entry, type, text_poke_smp);
> + __jump_label_transform(entry, type, NULL);
>   mutex_unlock(_mutex);
>   put_online_cpus();
>  }


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 2/2 v3] x86: make jump_label use int3-based patching

2013-07-11 Thread Jiri Kosina
Make jump labels use text_poke_bp() for text patching instead of 
text_poke_smp(), avoiding the need for stop_machine().

Signed-off-by: Jiri Kosina 
---
Changes:

- unchanged since v1, patch 1/2 is the one being updated

 arch/x86/kernel/jump_label.c |   16 ++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
index 2889b3d..460f5d9 100644
--- a/arch/x86/kernel/jump_label.c
+++ b/arch/x86/kernel/jump_label.c
@@ -37,7 +37,19 @@ static void __jump_label_transform(struct jump_entry *entry,
} else
memcpy(, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
 
-   (*poker)((void *)entry->code, , JUMP_LABEL_NOP_SIZE);
+   /*
+* Make text_poke_bp() a default fallback poker.
+*
+* At the time the change is being done, just ignore whether we
+* are doing nop -> jump or jump -> nop transition, and assume
+* always nop being the 'currently valid' instruction
+*
+*/
+   if (poker)
+   (*poker)((void *)entry->code, , JUMP_LABEL_NOP_SIZE);
+   else
+   text_poke_bp((void *)entry->code, , JUMP_LABEL_NOP_SIZE,
+(void *)entry->code + JUMP_LABEL_NOP_SIZE);
 }
 
 void arch_jump_label_transform(struct jump_entry *entry,
@@ -45,7 +57,7 @@ void arch_jump_label_transform(struct jump_entry *entry,
 {
get_online_cpus();
mutex_lock(_mutex);
-   __jump_label_transform(entry, type, text_poke_smp);
+   __jump_label_transform(entry, type, NULL);
mutex_unlock(_mutex);
put_online_cpus();
 }
-- 
1.7.3.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 2/2 v3] x86: make jump_label use int3-based patching

2013-07-11 Thread Jiri Kosina
Make jump labels use text_poke_bp() for text patching instead of 
text_poke_smp(), avoiding the need for stop_machine().

Signed-off-by: Jiri Kosina jkos...@suse.cz
---
Changes:

- unchanged since v1, patch 1/2 is the one being updated

 arch/x86/kernel/jump_label.c |   16 ++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
index 2889b3d..460f5d9 100644
--- a/arch/x86/kernel/jump_label.c
+++ b/arch/x86/kernel/jump_label.c
@@ -37,7 +37,19 @@ static void __jump_label_transform(struct jump_entry *entry,
} else
memcpy(code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
 
-   (*poker)((void *)entry-code, code, JUMP_LABEL_NOP_SIZE);
+   /*
+* Make text_poke_bp() a default fallback poker.
+*
+* At the time the change is being done, just ignore whether we
+* are doing nop - jump or jump - nop transition, and assume
+* always nop being the 'currently valid' instruction
+*
+*/
+   if (poker)
+   (*poker)((void *)entry-code, code, JUMP_LABEL_NOP_SIZE);
+   else
+   text_poke_bp((void *)entry-code, code, JUMP_LABEL_NOP_SIZE,
+(void *)entry-code + JUMP_LABEL_NOP_SIZE);
 }
 
 void arch_jump_label_transform(struct jump_entry *entry,
@@ -45,7 +57,7 @@ void arch_jump_label_transform(struct jump_entry *entry,
 {
get_online_cpus();
mutex_lock(text_mutex);
-   __jump_label_transform(entry, type, text_poke_smp);
+   __jump_label_transform(entry, type, NULL);
mutex_unlock(text_mutex);
put_online_cpus();
 }
-- 
1.7.3.1

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2/2 v3] x86: make jump_label use int3-based patching

2013-07-11 Thread Steven Rostedt
On Thu, 2013-07-11 at 22:26 +0200, Jiri Kosina wrote:
 Make jump labels use text_poke_bp() for text patching instead of 
 text_poke_smp(), avoiding the need for stop_machine().
 
 Signed-off-by: Jiri Kosina jkos...@suse.cz
 ---
 Changes:
 
 - unchanged since v1, patch 1/2 is the one being updated
 
  arch/x86/kernel/jump_label.c |   16 ++--
  1 files changed, 14 insertions(+), 2 deletions(-)
 

Reviewed-by: Steven Rostedt rost...@goodmis.org

-- Steve

 diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
 index 2889b3d..460f5d9 100644
 --- a/arch/x86/kernel/jump_label.c
 +++ b/arch/x86/kernel/jump_label.c
 @@ -37,7 +37,19 @@ static void __jump_label_transform(struct jump_entry 
 *entry,
   } else
   memcpy(code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
  
 - (*poker)((void *)entry-code, code, JUMP_LABEL_NOP_SIZE);
 + /*
 +  * Make text_poke_bp() a default fallback poker.
 +  *
 +  * At the time the change is being done, just ignore whether we
 +  * are doing nop - jump or jump - nop transition, and assume
 +  * always nop being the 'currently valid' instruction
 +  *
 +  */
 + if (poker)
 + (*poker)((void *)entry-code, code, JUMP_LABEL_NOP_SIZE);
 + else
 + text_poke_bp((void *)entry-code, code, JUMP_LABEL_NOP_SIZE,
 +  (void *)entry-code + JUMP_LABEL_NOP_SIZE);
  }
  
  void arch_jump_label_transform(struct jump_entry *entry,
 @@ -45,7 +57,7 @@ void arch_jump_label_transform(struct jump_entry *entry,
  {
   get_online_cpus();
   mutex_lock(text_mutex);
 - __jump_label_transform(entry, type, text_poke_smp);
 + __jump_label_transform(entry, type, NULL);
   mutex_unlock(text_mutex);
   put_online_cpus();
  }


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 2/2 v3] x86: make jump_label use int3-based patching

2013-07-11 Thread Masami Hiramatsu
(2013/07/12 5:26), Jiri Kosina wrote:
 Make jump labels use text_poke_bp() for text patching instead of 
 text_poke_smp(), avoiding the need for stop_machine().
 
 Signed-off-by: Jiri Kosina jkos...@suse.cz
 ---
 Changes:
 
 - unchanged since v1, patch 1/2 is the one being updated
 
  arch/x86/kernel/jump_label.c |   16 ++--
  1 files changed, 14 insertions(+), 2 deletions(-)
 
 diff --git a/arch/x86/kernel/jump_label.c b/arch/x86/kernel/jump_label.c
 index 2889b3d..460f5d9 100644
 --- a/arch/x86/kernel/jump_label.c
 +++ b/arch/x86/kernel/jump_label.c
 @@ -37,7 +37,19 @@ static void __jump_label_transform(struct jump_entry 
 *entry,
   } else
   memcpy(code, ideal_nops[NOP_ATOMIC5], JUMP_LABEL_NOP_SIZE);
  
 - (*poker)((void *)entry-code, code, JUMP_LABEL_NOP_SIZE);
 + /*
 +  * Make text_poke_bp() a default fallback poker.
 +  *
 +  * At the time the change is being done, just ignore whether we
 +  * are doing nop - jump or jump - nop transition, and assume
 +  * always nop being the 'currently valid' instruction
 +  *
 +  */
 + if (poker)
 + (*poker)((void *)entry-code, code, JUMP_LABEL_NOP_SIZE);
 + else
 + text_poke_bp((void *)entry-code, code, JUMP_LABEL_NOP_SIZE,
 +  (void *)entry-code + JUMP_LABEL_NOP_SIZE);

BTW, if the poker is NULL or text_poke_early, I think it doesn't need to
pass it to __jump_label_transform, does it?

Thank you,
-- 
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu...@hitachi.com


--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/