From: Jordan Niethe <jniethe5@gmail.com>
To: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Cc: Christophe Leroy <christophe.leroy@c-s.fr>,
miltonm@us.ibm.com, mikey@neuling.org, peterz@infradead.org,
oleg@redhat.com, Nicholas Piggin <npiggin@gmail.com>,
linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
jolsa@kernel.org, fweisbec@gmail.com, pedromfc@br.ibm.com,
naveen.n.rao@linux.vnet.ibm.com,
linuxppc-dev <linuxppc-dev@lists.ozlabs.org>,
mingo@kernel.org
Subject: Re: [PATCH v4 09/10] powerpc/watchpoint: Return available watchpoints dynamically
Date: Tue, 21 Jul 2020 14:41:37 +1000 [thread overview]
Message-ID: <CACzsE9q5YtT_bXOpw9cri_UCxziW_FRbCpcViANaZwui0hjDqw@mail.gmail.com> (raw)
In-Reply-To: <ccfcf488-0ec9-1737-8368-a848de1d72d1@linux.ibm.com>
On Tue, Jul 21, 2020 at 1:57 PM Ravi Bangoria
<ravi.bangoria@linux.ibm.com> wrote:
>
>
>
> On 7/20/20 9:12 AM, Jordan Niethe wrote:
> > On Fri, Jul 17, 2020 at 2:11 PM Ravi Bangoria
> > <ravi.bangoria@linux.ibm.com> wrote:
> >>
> >> So far Book3S Powerpc supported only one watchpoint. Power10 is
> >> introducing 2nd DAWR. Enable 2nd DAWR support for Power10.
> >> Availability of 2nd DAWR will depend on CPU_FTR_DAWR1.
> >>
> >> Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
> >> ---
> >> arch/powerpc/include/asm/cputable.h | 4 +++-
> >> arch/powerpc/include/asm/hw_breakpoint.h | 5 +++--
> >> 2 files changed, 6 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/arch/powerpc/include/asm/cputable.h b/arch/powerpc/include/asm/cputable.h
> >> index 3445c86e1f6f..36a0851a7a9b 100644
> >> --- a/arch/powerpc/include/asm/cputable.h
> >> +++ b/arch/powerpc/include/asm/cputable.h
> >> @@ -633,7 +633,9 @@ enum {
> >> * Maximum number of hw breakpoint supported on powerpc. Number of
> >> * breakpoints supported by actual hw might be less than this.
> >> */
> >> -#define HBP_NUM_MAX 1
> >> +#define HBP_NUM_MAX 2
> >> +#define HBP_NUM_ONE 1
> >> +#define HBP_NUM_TWO 2
> > I wonder if these defines are necessary - has it any advantage over
> > just using the literal?
>
> No, not really. Initially I had something like:
>
> #define HBP_NUM_MAX 2
> #define HBP_NUM_P8_P9 1
> #define HBP_NUM_P10 2
>
> But then I thought it's also not right. So I made it _ONE and _TWO.
> Now the function that decides nr watchpoints dynamically (nr_wp_slots)
> is in different file, I thought to keep it like this so it would be
> easier to figure out why _MAX is 2.
>
> >>
> >> #endif /* !__ASSEMBLY__ */
> >>
> >> diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h
> >> index cb424799da0d..d4eab1694bcd 100644
> >> --- a/arch/powerpc/include/asm/hw_breakpoint.h
> >> +++ b/arch/powerpc/include/asm/hw_breakpoint.h
> >> @@ -5,10 +5,11 @@
> >> * Copyright 2010, IBM Corporation.
> >> * Author: K.Prasad <prasad@linux.vnet.ibm.com>
> >> */
> >> -
> > Was removing this line deliberate?
>
> Nah. Will remove that hunk.
>
> >> #ifndef _PPC_BOOK3S_64_HW_BREAKPOINT_H
> >> #define _PPC_BOOK3S_64_HW_BREAKPOINT_H
> >>
> >> +#include <asm/cpu_has_feature.h>
> >> +
> >> #ifdef __KERNEL__
> >> struct arch_hw_breakpoint {
> >> unsigned long address;
> >> @@ -46,7 +47,7 @@ struct arch_hw_breakpoint {
> >>
> >> static inline int nr_wp_slots(void)
> >> {
> >> - return HBP_NUM_MAX;
> >> + return cpu_has_feature(CPU_FTR_DAWR1) ? HBP_NUM_TWO : HBP_NUM_ONE;
> > So it'd be something like:
> > + return cpu_has_feature(CPU_FTR_DAWR1) ? HBP_NUM_MAX : 1;
> > But thinking that there might be more slots added in the future, it
> > may be better to make the number of slots a variable that is set
> > during the init and then have this function return that.
>
> Not sure I follow. What do you mean by setting number of slots a
> variable that is set during the init?
Sorry I was unclear there.
I was just looking and saw arm also has a variable number of hw breakpoints.
If we did something like how they handle it, it might look something like:
static int num_wp_slots __ro_after_init;
int nr_wp_slots(void) {
return num_wp_slots;
}
static int __init arch_hw_breakpoint_init(void) {
num_wp_slots = work out how many wp_slots
}
arch_initcall(arch_hw_breakpoint_init);
Then we wouldn't have to calculate everytime nr_wp_slots() is called.
In the future if more wp's are added nr_wp_slots() will get more complicated.
But just an idea, feel free to ignore.
>
> Thanks,
> Ravi
next prev parent reply other threads:[~2020-07-21 4:43 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-17 4:09 [PATCH v4 00/10] powerpc/watchpoint: Enable 2nd DAWR on baremetal and powervm Ravi Bangoria
2020-07-17 4:09 ` [PATCH v4 01/10] powerpc/watchpoint: Fix 512 byte boundary limit Ravi Bangoria
2020-07-17 4:09 ` [PATCH v4 02/10] powerpc/watchpoint: Fix DAWR exception constraint Ravi Bangoria
2020-07-17 4:09 ` [PATCH v4 03/10] powerpc/watchpoint: Fix DAWR exception for CACHEOP Ravi Bangoria
2020-07-17 4:09 ` [PATCH v4 04/10] powerpc/watchpoint: Enable watchpoint functionality on power10 guest Ravi Bangoria
2020-07-17 4:23 ` Jordan Niethe
2020-07-17 4:09 ` [PATCH v4 05/10] powerpc/dt_cpu_ftrs: Add feature for 2nd DAWR Ravi Bangoria
2020-07-17 5:44 ` Jordan Niethe
2020-07-21 7:51 ` Ravi Bangoria
2020-07-21 11:29 ` Michael Ellerman
2020-07-21 13:42 ` Ravi Bangoria
2020-07-21 14:07 ` Michael Ellerman
2020-07-21 14:16 ` Ravi Bangoria
2020-07-17 4:09 ` [PATCH v4 06/10] powerpc/watchpoint: Set CPU_FTR_DAWR1 based on pa-features bit Ravi Bangoria
2020-07-20 1:39 ` Jordan Niethe
2020-07-17 4:09 ` [PATCH v4 07/10] powerpc/watchpoint: Rename current H_SET_MODE DAWR macro Ravi Bangoria
2020-07-20 1:50 ` Jordan Niethe
2020-07-17 4:09 ` [PATCH v4 08/10] powerpc/watchpoint: Guest support for 2nd DAWR hcall Ravi Bangoria
2020-07-17 4:09 ` [PATCH v4 09/10] powerpc/watchpoint: Return available watchpoints dynamically Ravi Bangoria
2020-07-20 3:42 ` Jordan Niethe
2020-07-21 3:57 ` Ravi Bangoria
2020-07-21 4:41 ` Jordan Niethe [this message]
2020-07-21 8:15 ` Ravi Bangoria
2020-07-21 11:36 ` Michael Ellerman
2020-07-21 13:33 ` Ravi Bangoria
2020-07-17 4:09 ` [PATCH v4 10/10] powerpc/watchpoint: Remove 512 byte boundary Ravi Bangoria
2020-07-20 6:54 ` Jordan Niethe
2020-07-21 3:24 ` 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=CACzsE9q5YtT_bXOpw9cri_UCxziW_FRbCpcViANaZwui0hjDqw@mail.gmail.com \
--to=jniethe5@gmail.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=miltonm@us.ibm.com \
--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=pedromfc@br.ibm.com \
--cc=peterz@infradead.org \
--cc=ravi.bangoria@linux.ibm.com \
/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).