Message ID | 20200128103459.19413-8-eric.auger@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm/arm64: Add ITS tests | expand |
On Tue, Jan 28, 2020 at 11:34:52AM +0100, Eric Auger wrote: > This helper function controls the signaling of LPIs at > redistributor level. > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > > --- > > v2 -> v3: > - move the helper in lib/arm/gic-v3.c > - rename the function with gicv3_lpi_ prefix > - s/report_abort/assert > --- > lib/arm/asm/gic-v3.h | 1 + > lib/arm/gic-v3.c | 17 +++++++++++++++++ > 2 files changed, 18 insertions(+) > > diff --git a/lib/arm/asm/gic-v3.h b/lib/arm/asm/gic-v3.h > index ec2a6f0..734c0c0 100644 > --- a/lib/arm/asm/gic-v3.h > +++ b/lib/arm/asm/gic-v3.h > @@ -96,6 +96,7 @@ extern void gicv3_lpi_set_config(int n, u8 val); > extern u8 gicv3_lpi_get_config(int n); > extern void gicv3_lpi_set_pending_table_bit(int rdist, int n, bool set); > extern void gicv3_lpi_alloc_tables(void); > +extern void gicv3_lpi_rdist_ctrl(u32 redist, bool set); > > static inline void gicv3_do_wait_for_rwp(void *base) > { > diff --git a/lib/arm/gic-v3.c b/lib/arm/gic-v3.c > index c33f883..7865d01 100644 > --- a/lib/arm/gic-v3.c > +++ b/lib/arm/gic-v3.c > @@ -210,4 +210,21 @@ void gicv3_lpi_set_pending_table_bit(int rdist, int n, bool set) > byte &= ~mask; > *ptr = byte; > } > + > +void gicv3_lpi_rdist_ctrl(u32 redist, bool set) _set_clr_ ? > +{ > + void *ptr; > + u64 val; > + > + assert(redist < nr_cpus); > + > + ptr = gicv3_data.redist_base[redist]; > + val = readl(ptr + GICR_CTLR); > + if (set) > + val |= GICR_CTLR_ENABLE_LPIS; > + else > + val &= ~GICR_CTLR_ENABLE_LPIS; > + writel(val, ptr + GICR_CTLR); > +} > #endif /* __aarch64__ */ > + stray blank line here > -- > 2.20.1 > I'm not sure why this needs its own patch. I could just be part of the next patch. Thanks, drew
On Fri, Feb 07, 2020 at 01:14:37PM +0100, Andrew Jones wrote: > On Tue, Jan 28, 2020 at 11:34:52AM +0100, Eric Auger wrote: > > This helper function controls the signaling of LPIs at > > redistributor level. > > > > Signed-off-by: Eric Auger <eric.auger@redhat.com> > > > > --- > > > > v2 -> v3: > > - move the helper in lib/arm/gic-v3.c > > - rename the function with gicv3_lpi_ prefix > > - s/report_abort/assert > > --- > > lib/arm/asm/gic-v3.h | 1 + > > lib/arm/gic-v3.c | 17 +++++++++++++++++ > > 2 files changed, 18 insertions(+) > > > > diff --git a/lib/arm/asm/gic-v3.h b/lib/arm/asm/gic-v3.h > > index ec2a6f0..734c0c0 100644 > > --- a/lib/arm/asm/gic-v3.h > > +++ b/lib/arm/asm/gic-v3.h > > @@ -96,6 +96,7 @@ extern void gicv3_lpi_set_config(int n, u8 val); > > extern u8 gicv3_lpi_get_config(int n); > > extern void gicv3_lpi_set_pending_table_bit(int rdist, int n, bool set); > > extern void gicv3_lpi_alloc_tables(void); > > +extern void gicv3_lpi_rdist_ctrl(u32 redist, bool set); > > > > static inline void gicv3_do_wait_for_rwp(void *base) > > { > > diff --git a/lib/arm/gic-v3.c b/lib/arm/gic-v3.c > > index c33f883..7865d01 100644 > > --- a/lib/arm/gic-v3.c > > +++ b/lib/arm/gic-v3.c > > @@ -210,4 +210,21 @@ void gicv3_lpi_set_pending_table_bit(int rdist, int n, bool set) > > byte &= ~mask; > > *ptr = byte; > > } > > + > > +void gicv3_lpi_rdist_ctrl(u32 redist, bool set) > > _set_clr_ ? No, probably not _set_clr_ here. The function could be static though, with other functions to enable/disable void gicv3_lpi_rdist_enable(redist) { gicv3_lpi_rdist_ctrl(redist, true); } void gicv3_lpi_rdist_disable(redist) { gicv3_lpi_rdist_ctrl(redist, false); } But whatever. > > > +{ > > + void *ptr; > > + u64 val; > > + > > + assert(redist < nr_cpus); > > + > > + ptr = gicv3_data.redist_base[redist]; > > + val = readl(ptr + GICR_CTLR); > > + if (set) > > + val |= GICR_CTLR_ENABLE_LPIS; > > + else > > + val &= ~GICR_CTLR_ENABLE_LPIS; > > + writel(val, ptr + GICR_CTLR); > > +} > > #endif /* __aarch64__ */ > > + > > stray blank line here > > > -- > > 2.20.1 > > > > I'm not sure why this needs its own patch. I could just be part of the > next patch. > > Thanks, > drew >
diff --git a/lib/arm/asm/gic-v3.h b/lib/arm/asm/gic-v3.h index ec2a6f0..734c0c0 100644 --- a/lib/arm/asm/gic-v3.h +++ b/lib/arm/asm/gic-v3.h @@ -96,6 +96,7 @@ extern void gicv3_lpi_set_config(int n, u8 val); extern u8 gicv3_lpi_get_config(int n); extern void gicv3_lpi_set_pending_table_bit(int rdist, int n, bool set); extern void gicv3_lpi_alloc_tables(void); +extern void gicv3_lpi_rdist_ctrl(u32 redist, bool set); static inline void gicv3_do_wait_for_rwp(void *base) { diff --git a/lib/arm/gic-v3.c b/lib/arm/gic-v3.c index c33f883..7865d01 100644 --- a/lib/arm/gic-v3.c +++ b/lib/arm/gic-v3.c @@ -210,4 +210,21 @@ void gicv3_lpi_set_pending_table_bit(int rdist, int n, bool set) byte &= ~mask; *ptr = byte; } + +void gicv3_lpi_rdist_ctrl(u32 redist, bool set) +{ + void *ptr; + u64 val; + + assert(redist < nr_cpus); + + ptr = gicv3_data.redist_base[redist]; + val = readl(ptr + GICR_CTLR); + if (set) + val |= GICR_CTLR_ENABLE_LPIS; + else + val &= ~GICR_CTLR_ENABLE_LPIS; + writel(val, ptr + GICR_CTLR); +} #endif /* __aarch64__ */ +
This helper function controls the signaling of LPIs at redistributor level. Signed-off-by: Eric Auger <eric.auger@redhat.com> --- v2 -> v3: - move the helper in lib/arm/gic-v3.c - rename the function with gicv3_lpi_ prefix - s/report_abort/assert --- lib/arm/asm/gic-v3.h | 1 + lib/arm/gic-v3.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+)