linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] riscv: Enable some feature for RISCV
@ 2021-07-08  1:59 Kefeng Wang
  2021-07-08  1:59 ` [PATCH 1/3] riscv: Allow forced irq threading Kefeng Wang
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Kefeng Wang @ 2021-07-08  1:59 UTC (permalink / raw)
  To: palmerdabbelt, paul.walmsley, palmer, linux-riscv; +Cc: Kefeng Wang

Enable IRQ_FORCED_THREADING, GENERIC_IDLE_POLL_SETUP,
GENERIC_IRQ_SHOW_LEVEL for RISCV.

Kefeng Wang (3):
  riscv: Allow forced irq threading
  riscv: Enable idle generic idle loop
  riscv: Enable GENERIC_IRQ_SHOW_LEVEL

 arch/riscv/Kconfig | 3 +++
 1 file changed, 3 insertions(+)

-- 
2.26.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 1/3] riscv: Allow forced irq threading
  2021-07-08  1:59 [PATCH 0/3] riscv: Enable some feature for RISCV Kefeng Wang
@ 2021-07-08  1:59 ` Kefeng Wang
  2021-07-08  5:28   ` Christoph Hellwig
  2021-07-08  1:59 ` [PATCH 2/3] riscv: Enable idle generic idle loop Kefeng Wang
  2021-07-08  1:59 ` [PATCH 3/3] riscv: Enable GENERIC_IRQ_SHOW_LEVEL Kefeng Wang
  2 siblings, 1 reply; 7+ messages in thread
From: Kefeng Wang @ 2021-07-08  1:59 UTC (permalink / raw)
  To: palmerdabbelt, paul.walmsley, palmer, linux-riscv; +Cc: Kefeng Wang

The timer interrupt and the perf interrupt on riscv are with
IRQF_PERCPU, so it's safe to allow forced interrupt threading.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
 arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 469a70bd8da6..6356c14240c9 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -91,6 +91,7 @@ config RISCV
 	select HAVE_STACKPROTECTOR
 	select HAVE_SYSCALL_TRACEPOINTS
 	select IRQ_DOMAIN
+	select IRQ_FORCED_THREADING
 	select MODULES_USE_ELF_RELA if MODULES
 	select MODULE_SECTIONS if MODULES
 	select OF
-- 
2.26.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/3] riscv: Enable idle generic idle loop
  2021-07-08  1:59 [PATCH 0/3] riscv: Enable some feature for RISCV Kefeng Wang
  2021-07-08  1:59 ` [PATCH 1/3] riscv: Allow forced irq threading Kefeng Wang
@ 2021-07-08  1:59 ` Kefeng Wang
  2021-07-08  1:59 ` [PATCH 3/3] riscv: Enable GENERIC_IRQ_SHOW_LEVEL Kefeng Wang
  2 siblings, 0 replies; 7+ messages in thread
From: Kefeng Wang @ 2021-07-08  1:59 UTC (permalink / raw)
  To: palmerdabbelt, paul.walmsley, palmer, linux-riscv; +Cc: Kefeng Wang

Enable generic idle loop to support for hlt/nohlt command line options
to override default idle loop behavior.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
 arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index 6356c14240c9..c3a6d63841de 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -48,6 +48,7 @@ config RISCV
 	select GENERIC_CLOCKEVENTS_BROADCAST if SMP
 	select GENERIC_EARLY_IOREMAP
 	select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO
+	select GENERIC_IDLE_POLL_SETUP
 	select GENERIC_IOREMAP
 	select GENERIC_IRQ_MULTI_HANDLER
 	select GENERIC_IRQ_SHOW
-- 
2.26.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/3] riscv: Enable GENERIC_IRQ_SHOW_LEVEL
  2021-07-08  1:59 [PATCH 0/3] riscv: Enable some feature for RISCV Kefeng Wang
  2021-07-08  1:59 ` [PATCH 1/3] riscv: Allow forced irq threading Kefeng Wang
  2021-07-08  1:59 ` [PATCH 2/3] riscv: Enable idle generic idle loop Kefeng Wang
@ 2021-07-08  1:59 ` Kefeng Wang
  2 siblings, 0 replies; 7+ messages in thread
From: Kefeng Wang @ 2021-07-08  1:59 UTC (permalink / raw)
  To: palmerdabbelt, paul.walmsley, palmer, linux-riscv; +Cc: Kefeng Wang

The interrupt controllers on riscv support both edge and level triggered
interrupts, it's useful to provide that information in /proc/interrupts.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
---
 arch/riscv/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
index c3a6d63841de..1bd3760d6bce 100644
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -52,6 +52,7 @@ config RISCV
 	select GENERIC_IOREMAP
 	select GENERIC_IRQ_MULTI_HANDLER
 	select GENERIC_IRQ_SHOW
+	select GENERIC_IRQ_SHOW_LEVEL
 	select GENERIC_LIB_DEVMEM_IS_ALLOWED
 	select GENERIC_PCI_IOMAP
 	select GENERIC_PTDUMP if MMU
-- 
2.26.2


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] riscv: Allow forced irq threading
  2021-07-08  1:59 ` [PATCH 1/3] riscv: Allow forced irq threading Kefeng Wang
@ 2021-07-08  5:28   ` Christoph Hellwig
  2021-07-08  6:42     ` Kefeng Wang
  0 siblings, 1 reply; 7+ messages in thread
From: Christoph Hellwig @ 2021-07-08  5:28 UTC (permalink / raw)
  To: Kefeng Wang; +Cc: palmerdabbelt, paul.walmsley, palmer, linux-riscv

On Thu, Jul 08, 2021 at 09:59:47AM +0800, Kefeng Wang wrote:
> The timer interrupt and the perf interrupt on riscv are with
> IRQF_PERCPU, so it's safe to allow forced interrupt threading.

"Architecture code needs to select CONFIG_IRQ_FORCED_THREADING after
 marking the interrupts which cant be threaded IRQF_NO_THREAD.
 All interrupts which have IRQF_TIMER set are implict marked
 IRQF_NO_THREAD. Also all PER_CPU interrupts are excluded."

Did you do that audit?

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] riscv: Allow forced irq threading
  2021-07-08  5:28   ` Christoph Hellwig
@ 2021-07-08  6:42     ` Kefeng Wang
  2021-08-04 20:33       ` Palmer Dabbelt
  0 siblings, 1 reply; 7+ messages in thread
From: Kefeng Wang @ 2021-07-08  6:42 UTC (permalink / raw)
  To: Christoph Hellwig; +Cc: palmerdabbelt, paul.walmsley, palmer, linux-riscv


On 2021/7/8 13:28, Christoph Hellwig wrote:
> On Thu, Jul 08, 2021 at 09:59:47AM +0800, Kefeng Wang wrote:
>> The timer interrupt and the perf interrupt on riscv are with
>> IRQF_PERCPU, so it's safe to allow forced interrupt threading.
> "Architecture code needs to select CONFIG_IRQ_FORCED_THREADING after
>   marking the interrupts which cant be threaded IRQF_NO_THREAD.
>   All interrupts which have IRQF_TIMER set are implict marked
>   IRQF_NO_THREAD. Also all PER_CPU interrupts are excluded."
>
> Did you do that audit?

Yes, I check the perf and timer on RISCV,

arch/riscv/kernel/perf_event.c

static int reserve_pmc_hardware(void)

{

  err = request_irq(riscv_pmu->irq, riscv_pmu->handle_irq,
                                  IRQF_PERCPU, "riscv-base-perf", NULL);

}

drivers/clocksource/timer-riscv.c

static int __init riscv_timer_init_dt(struct device_node *n)

{

     error = request_percpu_irq(riscv_clock_event_irq,
riscv_timer_interrupt,
                                  "riscv-timer", &riscv_clock_event);

}

Is this enough?
> .
>

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 1/3] riscv: Allow forced irq threading
  2021-07-08  6:42     ` Kefeng Wang
@ 2021-08-04 20:33       ` Palmer Dabbelt
  0 siblings, 0 replies; 7+ messages in thread
From: Palmer Dabbelt @ 2021-08-04 20:33 UTC (permalink / raw)
  To: wangkefeng.wang; +Cc: Christoph Hellwig, Paul Walmsley, linux-riscv

On Wed, 07 Jul 2021 23:42:45 PDT (-0700), wangkefeng.wang@huawei.com wrote:
>
> On 2021/7/8 13:28, Christoph Hellwig wrote:
>> On Thu, Jul 08, 2021 at 09:59:47AM +0800, Kefeng Wang wrote:
>>> The timer interrupt and the perf interrupt on riscv are with
>>> IRQF_PERCPU, so it's safe to allow forced interrupt threading.
>> "Architecture code needs to select CONFIG_IRQ_FORCED_THREADING after
>>   marking the interrupts which cant be threaded IRQF_NO_THREAD.
>>   All interrupts which have IRQF_TIMER set are implict marked
>>   IRQF_NO_THREAD. Also all PER_CPU interrupts are excluded."
>>
>> Did you do that audit?
>
> Yes, I check the perf and timer on RISCV,
>
> arch/riscv/kernel/perf_event.c
>
> static int reserve_pmc_hardware(void)
>
> {
>
>   err = request_irq(riscv_pmu->irq, riscv_pmu->handle_irq,
>                                   IRQF_PERCPU, "riscv-base-perf", NULL);
>
> }
>
> drivers/clocksource/timer-riscv.c
>
> static int __init riscv_timer_init_dt(struct device_node *n)
>
> {
>
>      error = request_percpu_irq(riscv_clock_event_irq,
> riscv_timer_interrupt,
>                                   "riscv-timer", &riscv_clock_event);
>
> }
>
> Is this enough?

We also have the direct CLINT driver, but that's percpu as well.  IIUC 
this means we're OK, I've put this (and the rest of the patch set) on 
for-next.

Thanks!

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-08-04 20:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-08  1:59 [PATCH 0/3] riscv: Enable some feature for RISCV Kefeng Wang
2021-07-08  1:59 ` [PATCH 1/3] riscv: Allow forced irq threading Kefeng Wang
2021-07-08  5:28   ` Christoph Hellwig
2021-07-08  6:42     ` Kefeng Wang
2021-08-04 20:33       ` Palmer Dabbelt
2021-07-08  1:59 ` [PATCH 2/3] riscv: Enable idle generic idle loop Kefeng Wang
2021-07-08  1:59 ` [PATCH 3/3] riscv: Enable GENERIC_IRQ_SHOW_LEVEL Kefeng Wang

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).