From: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
To: Christophe Leroy <christophe.leroy@c-s.fr>
Cc: apopple@linux.ibm.com, mikey@neuling.org,
Ravi Bangoria <ravi.bangoria@linux.ibm.com>,
peterz@infradead.org, oleg@redhat.com, npiggin@gmail.com,
linux-kernel@vger.kernel.org, paulus@samba.org, jolsa@kernel.org,
fweisbec@gmail.com, naveen.n.rao@linux.vnet.ibm.com,
linuxppc-dev@lists.ozlabs.org, mingo@kernel.org
Subject: Re: [PATCH v2 09/16] powerpc/watchpoint: Convert thread_struct->hw_brk to an array
Date: Wed, 1 Apr 2020 14:36:21 +0530 [thread overview]
Message-ID: <a1bd4536-9313-120e-b747-1a4a31b8da73@linux.ibm.com> (raw)
In-Reply-To: <e5af5ed7-b9df-e334-1bdb-e7f82ae32697@c-s.fr>
>> static void set_debug_reg_defaults(struct thread_struct *thread)
>> {
>> - thread->hw_brk.address = 0;
>> - thread->hw_brk.type = 0;
>> - thread->hw_brk.len = 0;
>> - thread->hw_brk.hw_len = 0;
>> - if (ppc_breakpoint_available())
>> - set_breakpoint(&thread->hw_brk);
>> + int i;
>> +
>> + for (i = 0; i < nr_wp_slots(); i++) {
>
> Maybe you could add the following that you added other places:
>
> struct arch_hw_breakpoint null_brk = {0};
>
> Then do
>
> thread->hw_brk[i] = null_brk;
Yes that's better.
[...]
>> +static void switch_hw_breakpoint(struct task_struct *new)
>> +{
>> + int i;
>> +
>> + for (i = 0; i < nr_wp_slots(); i++) {
>> + if (unlikely(!hw_brk_match(this_cpu_ptr(¤t_brk[i]),
>> + &new->thread.hw_brk[i]))) {
>> + __set_breakpoint(&new->thread.hw_brk[i], i);
>> + }
>
> Or could be:
>
> if (likely(hw_brk_match(this_cpu_ptr(¤t_brk[i]),
> &new->thread.hw_brk[i])))
> continue;
> __set_breakpoint(&new->thread.hw_brk[i], i);
>
Sure.
[...]
>> @@ -128,8 +131,10 @@ static void do_signal(struct task_struct *tsk)
>> * user space. The DABR will have been cleared if it
>> * triggered inside the kernel.
>> */
>> - if (tsk->thread.hw_brk.address && tsk->thread.hw_brk.type)
>> - __set_breakpoint(&tsk->thread.hw_brk, 0);
>> + for (i = 0; i < nr_wp_slots(); i++) {
>> + if (tsk->thread.hw_brk[i].address && tsk->thread.hw_brk[i].type)
>> + __set_breakpoint(&tsk->thread.hw_brk[i], i);
>> + }
>
> thread.hwbrk also exists when CONFIG_PPC_ADV_DEBUG_REGS is selected.
>
> You could replace the #ifndef CONFIG_PPC_ADV_DEBUG_REGS by an if (!IS_ENABLED(CONFIG_PPC_ADV_DEBUG_REGS)) and then no need of an ifdef when declaring the int i;
Makes sense. Will change it.
Ravi
next prev parent reply other threads:[~2020-04-01 9:36 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-01 6:12 [PATCH v2 00/16] powerpc/watchpoint: Preparation for more than one watchpoint Ravi Bangoria
2020-04-01 6:12 ` [PATCH v2 01/16] powerpc/watchpoint: Rename current DAWR macros Ravi Bangoria
2020-04-01 6:12 ` [PATCH v2 02/16] powerpc/watchpoint: Add SPRN macros for second DAWR Ravi Bangoria
2020-04-01 6:12 ` [PATCH v2 03/16] powerpc/watchpoint: Introduce function to get nr watchpoints dynamically Ravi Bangoria
2020-04-01 6:29 ` Christophe Leroy
2020-04-01 6:50 ` Ravi Bangoria
2020-04-01 7:05 ` Christophe Leroy
2020-04-01 6:12 ` [PATCH v2 04/16] powerpc/watchpoint/ptrace: Return actual num of available watchpoints Ravi Bangoria
2020-04-01 6:12 ` [PATCH v2 05/16] powerpc/watchpoint: Provide DAWR number to set_dawr Ravi Bangoria
2020-04-01 7:03 ` Christophe Leroy
2020-04-01 6:12 ` [PATCH v2 06/16] powerpc/watchpoint: Provide DAWR number to __set_breakpoint Ravi Bangoria
2020-04-01 7:03 ` Christophe Leroy
2020-04-01 8:57 ` Ravi Bangoria
2020-04-01 9:11 ` Christophe Leroy
2020-04-01 9:44 ` Christophe Leroy
2020-04-01 6:13 ` [PATCH v2 07/16] powerpc/watchpoint: Get watchpoint count dynamically while disabling them Ravi Bangoria
2020-04-01 6:32 ` Christophe Leroy
2020-04-01 9:19 ` Ravi Bangoria
2020-04-01 6:13 ` [PATCH v2 08/16] powerpc/watchpoint: Disable all available watchpoints when !dawr_force_enable Ravi Bangoria
2020-04-01 6:33 ` Christophe Leroy
2020-04-01 9:00 ` Ravi Bangoria
2020-04-01 6:13 ` [PATCH v2 09/16] powerpc/watchpoint: Convert thread_struct->hw_brk to an array Ravi Bangoria
2020-04-01 6:43 ` Christophe Leroy
2020-04-01 9:06 ` Ravi Bangoria [this message]
2020-04-01 6:13 ` [PATCH v2 10/16] powerpc/watchpoint: Use loop for thread_struct->ptrace_bps Ravi Bangoria
2020-04-01 6:13 ` [PATCH v2 11/16] powerpc/watchpoint: Introduce is_ptrace_bp() function Ravi Bangoria
2020-04-01 6:13 ` [PATCH v2 12/16] powerpc/watchpoint: Use builtin ALIGN*() macros Ravi Bangoria
2020-04-01 6:13 ` [PATCH v2 13/16] powerpc/watchpoint: Prepare handler to handle more than one watcnhpoint Ravi Bangoria
2020-04-01 6:50 ` Christophe Leroy
2020-04-01 9:13 ` Ravi Bangoria
2020-04-01 9:20 ` Christophe Leroy
2020-04-01 9:23 ` Ravi Bangoria
2020-04-01 6:13 ` [PATCH v2 14/16] powerpc/watchpoint: Don't allow concurrent perf and ptrace events Ravi Bangoria
2020-04-01 6:52 ` Christophe Leroy
2020-04-01 6:13 ` [PATCH v2 15/16] powerpc/watchpoint/xmon: Don't allow breakpoint overwriting Ravi Bangoria
2020-04-01 6:13 ` [PATCH v2 16/16] powerpc/watchpoint/xmon: Support 2nd dawr Ravi Bangoria
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a1bd4536-9313-120e-b747-1a4a31b8da73@linux.ibm.com \
--to=ravi.bangoria@linux.ibm.com \
--cc=apopple@linux.ibm.com \
--cc=christophe.leroy@c-s.fr \
--cc=fweisbec@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mikey@neuling.org \
--cc=mingo@kernel.org \
--cc=naveen.n.rao@linux.vnet.ibm.com \
--cc=npiggin@gmail.com \
--cc=oleg@redhat.com \
--cc=paulus@samba.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).