From: Ravi Bangoria <ravi.bangoria@linux.ibm.com> To: mpe@ellerman.id.au, mikey@neuling.org Cc: apopple@linux.ibm.com, paulus@samba.org, npiggin@gmail.com, christophe.leroy@c-s.fr, naveen.n.rao@linux.vnet.ibm.com, peterz@infradead.org, jolsa@kernel.org, oleg@redhat.com, fweisbec@gmail.com, mingo@kernel.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, ravi.bangoria@linux.ibm.com Subject: [PATCH v2 12/16] powerpc/watchpoint: Use builtin ALIGN*() macros Date: Wed, 1 Apr 2020 11:43:05 +0530 [thread overview] Message-ID: <20200401061309.92442-13-ravi.bangoria@linux.ibm.com> (raw) In-Reply-To: <20200401061309.92442-1-ravi.bangoria@linux.ibm.com> Currently we calculate hw aligned start and end addresses manually. Replace them with builtin ALIGN_DOWN() and ALIGN() macros. Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> --- arch/powerpc/include/asm/hw_breakpoint.h | 5 +++-- arch/powerpc/kernel/hw_breakpoint.c | 6 +++--- arch/powerpc/kernel/process.c | 4 ++-- arch/powerpc/kernel/ptrace/ptrace-noadv.c | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h index fae33c729ba9..abc4603c0efe 100644 --- a/arch/powerpc/include/asm/hw_breakpoint.h +++ b/arch/powerpc/include/asm/hw_breakpoint.h @@ -34,10 +34,11 @@ struct arch_hw_breakpoint { #define HW_BRK_TYPE_PRIV_ALL (HW_BRK_TYPE_USER | HW_BRK_TYPE_KERNEL | \ HW_BRK_TYPE_HYP) +/* Minimum granularity */ #ifdef CONFIG_PPC_8xx -#define HW_BREAKPOINT_ALIGN 0x3 +#define HW_BREAKPOINT_SIZE 0x4 #else -#define HW_BREAKPOINT_ALIGN 0x7 +#define HW_BREAKPOINT_SIZE 0x8 #endif #define DABR_MAX_LEN 8 diff --git a/arch/powerpc/kernel/hw_breakpoint.c b/arch/powerpc/kernel/hw_breakpoint.c index 8d3f7d87d790..71274fbbac38 100644 --- a/arch/powerpc/kernel/hw_breakpoint.c +++ b/arch/powerpc/kernel/hw_breakpoint.c @@ -145,7 +145,7 @@ int arch_bp_generic_fields(int type, int *gen_bp_type) * <---8 bytes---> * * In this case, we should configure hw as: - * start_addr = address & ~HW_BREAKPOINT_ALIGN + * start_addr = address & ~(HW_BREAKPOINT_SIZE - 1) * len = 16 bytes * * @start_addr and @end_addr are inclusive. @@ -156,8 +156,8 @@ static int hw_breakpoint_validate_len(struct arch_hw_breakpoint *hw) u16 hw_len; unsigned long start_addr, end_addr; - start_addr = hw->address & ~HW_BREAKPOINT_ALIGN; - end_addr = (hw->address + hw->len - 1) | HW_BREAKPOINT_ALIGN; + start_addr = ALIGN_DOWN(hw->address, HW_BREAKPOINT_SIZE); + end_addr = ALIGN(hw->address + hw->len, HW_BREAKPOINT_SIZE) - 1; hw_len = end_addr - start_addr + 1; if (dawr_enabled()) { diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 73c0800f0bcf..cbd6e9b79401 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -794,8 +794,8 @@ static inline int set_breakpoint_8xx(struct arch_hw_breakpoint *brk) unsigned long lctrl1 = LCTRL1_CTE_GT | LCTRL1_CTF_LT | LCTRL1_CRWE_RW | LCTRL1_CRWF_RW; unsigned long lctrl2 = LCTRL2_LW0EN | LCTRL2_LW0LADC | LCTRL2_SLW0EN; - unsigned long start_addr = brk->address & ~HW_BREAKPOINT_ALIGN; - unsigned long end_addr = (brk->address + brk->len - 1) | HW_BREAKPOINT_ALIGN; + unsigned long start_addr = ALIGN_DOWN(brk->address, HW_BREAKPOINT_SIZE); + unsigned long end_addr = ALIGN(brk->address + brk->len, HW_BREAKPOINT_SIZE) - 1; if (start_addr == 0) lctrl2 |= LCTRL2_LW0LA_F; diff --git a/arch/powerpc/kernel/ptrace/ptrace-noadv.c b/arch/powerpc/kernel/ptrace/ptrace-noadv.c index 08cb8c1b504c..697c7e4b5877 100644 --- a/arch/powerpc/kernel/ptrace/ptrace-noadv.c +++ b/arch/powerpc/kernel/ptrace/ptrace-noadv.c @@ -216,7 +216,7 @@ long ppc_set_hwdebug(struct task_struct *child, struct ppc_hw_breakpoint *bp_inf if ((unsigned long)bp_info->addr >= TASK_SIZE) return -EIO; - brk.address = bp_info->addr & ~HW_BREAKPOINT_ALIGN; + brk.address = ALIGN_DOWN(bp_info->addr, HW_BREAKPOINT_SIZE); brk.type = HW_BRK_TYPE_TRANSLATE; brk.len = DABR_MAX_LEN; if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_READ) -- 2.21.1
WARNING: multiple messages have this Message-ID (diff)
From: Ravi Bangoria <ravi.bangoria@linux.ibm.com> To: mpe@ellerman.id.au, mikey@neuling.org Cc: apopple@linux.ibm.com, ravi.bangoria@linux.ibm.com, peterz@infradead.org, fweisbec@gmail.com, oleg@redhat.com, npiggin@gmail.com, linux-kernel@vger.kernel.org, paulus@samba.org, jolsa@kernel.org, naveen.n.rao@linux.vnet.ibm.com, linuxppc-dev@lists.ozlabs.org, mingo@kernel.org Subject: [PATCH v2 12/16] powerpc/watchpoint: Use builtin ALIGN*() macros Date: Wed, 1 Apr 2020 11:43:05 +0530 [thread overview] Message-ID: <20200401061309.92442-13-ravi.bangoria@linux.ibm.com> (raw) In-Reply-To: <20200401061309.92442-1-ravi.bangoria@linux.ibm.com> Currently we calculate hw aligned start and end addresses manually. Replace them with builtin ALIGN_DOWN() and ALIGN() macros. Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> --- arch/powerpc/include/asm/hw_breakpoint.h | 5 +++-- arch/powerpc/kernel/hw_breakpoint.c | 6 +++--- arch/powerpc/kernel/process.c | 4 ++-- arch/powerpc/kernel/ptrace/ptrace-noadv.c | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h index fae33c729ba9..abc4603c0efe 100644 --- a/arch/powerpc/include/asm/hw_breakpoint.h +++ b/arch/powerpc/include/asm/hw_breakpoint.h @@ -34,10 +34,11 @@ struct arch_hw_breakpoint { #define HW_BRK_TYPE_PRIV_ALL (HW_BRK_TYPE_USER | HW_BRK_TYPE_KERNEL | \ HW_BRK_TYPE_HYP) +/* Minimum granularity */ #ifdef CONFIG_PPC_8xx -#define HW_BREAKPOINT_ALIGN 0x3 +#define HW_BREAKPOINT_SIZE 0x4 #else -#define HW_BREAKPOINT_ALIGN 0x7 +#define HW_BREAKPOINT_SIZE 0x8 #endif #define DABR_MAX_LEN 8 diff --git a/arch/powerpc/kernel/hw_breakpoint.c b/arch/powerpc/kernel/hw_breakpoint.c index 8d3f7d87d790..71274fbbac38 100644 --- a/arch/powerpc/kernel/hw_breakpoint.c +++ b/arch/powerpc/kernel/hw_breakpoint.c @@ -145,7 +145,7 @@ int arch_bp_generic_fields(int type, int *gen_bp_type) * <---8 bytes---> * * In this case, we should configure hw as: - * start_addr = address & ~HW_BREAKPOINT_ALIGN + * start_addr = address & ~(HW_BREAKPOINT_SIZE - 1) * len = 16 bytes * * @start_addr and @end_addr are inclusive. @@ -156,8 +156,8 @@ static int hw_breakpoint_validate_len(struct arch_hw_breakpoint *hw) u16 hw_len; unsigned long start_addr, end_addr; - start_addr = hw->address & ~HW_BREAKPOINT_ALIGN; - end_addr = (hw->address + hw->len - 1) | HW_BREAKPOINT_ALIGN; + start_addr = ALIGN_DOWN(hw->address, HW_BREAKPOINT_SIZE); + end_addr = ALIGN(hw->address + hw->len, HW_BREAKPOINT_SIZE) - 1; hw_len = end_addr - start_addr + 1; if (dawr_enabled()) { diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 73c0800f0bcf..cbd6e9b79401 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c @@ -794,8 +794,8 @@ static inline int set_breakpoint_8xx(struct arch_hw_breakpoint *brk) unsigned long lctrl1 = LCTRL1_CTE_GT | LCTRL1_CTF_LT | LCTRL1_CRWE_RW | LCTRL1_CRWF_RW; unsigned long lctrl2 = LCTRL2_LW0EN | LCTRL2_LW0LADC | LCTRL2_SLW0EN; - unsigned long start_addr = brk->address & ~HW_BREAKPOINT_ALIGN; - unsigned long end_addr = (brk->address + brk->len - 1) | HW_BREAKPOINT_ALIGN; + unsigned long start_addr = ALIGN_DOWN(brk->address, HW_BREAKPOINT_SIZE); + unsigned long end_addr = ALIGN(brk->address + brk->len, HW_BREAKPOINT_SIZE) - 1; if (start_addr == 0) lctrl2 |= LCTRL2_LW0LA_F; diff --git a/arch/powerpc/kernel/ptrace/ptrace-noadv.c b/arch/powerpc/kernel/ptrace/ptrace-noadv.c index 08cb8c1b504c..697c7e4b5877 100644 --- a/arch/powerpc/kernel/ptrace/ptrace-noadv.c +++ b/arch/powerpc/kernel/ptrace/ptrace-noadv.c @@ -216,7 +216,7 @@ long ppc_set_hwdebug(struct task_struct *child, struct ppc_hw_breakpoint *bp_inf if ((unsigned long)bp_info->addr >= TASK_SIZE) return -EIO; - brk.address = bp_info->addr & ~HW_BREAKPOINT_ALIGN; + brk.address = ALIGN_DOWN(bp_info->addr, HW_BREAKPOINT_SIZE); brk.type = HW_BRK_TYPE_TRANSLATE; brk.len = DABR_MAX_LEN; if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_READ) -- 2.21.1
next prev parent reply other threads:[~2020-04-01 6:14 UTC|newest] Thread overview: 72+ 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 ` Ravi Bangoria 2020-04-01 6:12 ` [PATCH v2 01/16] powerpc/watchpoint: Rename current DAWR macros Ravi Bangoria 2020-04-01 6:12 ` 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 ` 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:12 ` Ravi Bangoria 2020-04-01 6:29 ` Christophe Leroy 2020-04-01 6:29 ` Christophe Leroy 2020-04-01 6:50 ` Ravi Bangoria 2020-04-01 6:50 ` Ravi Bangoria 2020-04-01 7:05 ` Christophe Leroy 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 ` Ravi Bangoria 2020-04-01 6:12 ` [PATCH v2 05/16] powerpc/watchpoint: Provide DAWR number to set_dawr Ravi Bangoria 2020-04-01 6:12 ` Ravi Bangoria 2020-04-01 7:03 ` Christophe Leroy 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 6:12 ` Ravi Bangoria 2020-04-01 7:03 ` Christophe Leroy 2020-04-01 7:03 ` Christophe Leroy 2020-04-01 8:57 ` Ravi Bangoria 2020-04-01 8:57 ` Ravi Bangoria 2020-04-01 9:11 ` Christophe Leroy 2020-04-01 9:11 ` Christophe Leroy 2020-04-01 9:44 ` 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:13 ` Ravi Bangoria 2020-04-01 6:32 ` Christophe Leroy 2020-04-01 6:32 ` Christophe Leroy 2020-04-01 9:19 ` Ravi Bangoria 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:13 ` Ravi Bangoria 2020-04-01 6:33 ` Christophe Leroy 2020-04-01 6:33 ` Christophe Leroy 2020-04-01 9:00 ` Ravi Bangoria 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:13 ` Ravi Bangoria 2020-04-01 6:43 ` Christophe Leroy 2020-04-01 6:43 ` Christophe Leroy 2020-04-01 9:06 ` Ravi Bangoria 2020-04-01 9:06 ` Ravi Bangoria 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 ` 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 ` Ravi Bangoria 2020-04-01 6:13 ` Ravi Bangoria [this message] 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:13 ` Ravi Bangoria 2020-04-01 6:50 ` Christophe Leroy 2020-04-01 6:50 ` Christophe Leroy 2020-04-01 9:13 ` Ravi Bangoria 2020-04-01 9:13 ` Ravi Bangoria 2020-04-01 9:20 ` Christophe Leroy 2020-04-01 9:20 ` Christophe Leroy 2020-04-01 9:23 ` Ravi Bangoria 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:13 ` Ravi Bangoria 2020-04-01 6:52 ` Christophe Leroy 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 ` Ravi Bangoria 2020-04-01 6:13 ` [PATCH v2 16/16] powerpc/watchpoint/xmon: Support 2nd dawr Ravi Bangoria 2020-04-01 6:13 ` 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=20200401061309.92442-13-ravi.bangoria@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=mpe@ellerman.id.au \ --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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.