s390/irq: Set CIF_NOHZ_DELAY in do_io_irq()
authorSven Schnelle <svens@linux.ibm.com>
Wed, 8 May 2024 09:17:16 +0000 (11:17 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Tue, 14 May 2024 18:19:46 +0000 (20:19 +0200)
Both do_airq_interrupt() and do_io_interrupt() set
CIF_NOHZ_DELAY. Move it to do_io_irq() to simplify
the code.

Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
arch/s390/kernel/irq.c
drivers/s390/cio/airq.c
drivers/s390/cio/cio.c

index 6f71b0ce1068c4c4168d4e94892603b9ee3cf3a1..89bcd4205e67ba985e0462d8465c0a380448172d 100644 (file)
@@ -150,6 +150,7 @@ void noinstr do_io_irq(struct pt_regs *regs)
        if (from_idle)
                account_idle_time_irq();
 
+       set_cpu_flag(CIF_NOHZ_DELAY);
        do {
                regs->tpi_info = S390_lowcore.tpi_info;
                if (S390_lowcore.tpi_info.adapter_IO)
index a108f2bf5b3331b7a6aa5b5e2e7bc8c06d9dbc3e..51f1cb31e4aa05234313394dda3d3889eb735a59 100644 (file)
@@ -90,7 +90,6 @@ static irqreturn_t do_airq_interrupt(int irq, void *dummy)
        struct airq_struct *airq;
        struct hlist_head *head;
 
-       set_cpu_flag(CIF_NOHZ_DELAY);
        tpi_info = &get_irq_regs()->tpi_info;
        trace_s390_cio_adapter_int(tpi_info);
        head = &airq_lists[tpi_info->isc];
index 7e759c21480e73031f468635f404d002ec463305..c32e818f06dbadbf103a3c487769a7b152f4713f 100644 (file)
@@ -535,7 +535,6 @@ static irqreturn_t do_cio_interrupt(int irq, void *dummy)
        struct subchannel *sch;
        struct irb *irb;
 
-       set_cpu_flag(CIF_NOHZ_DELAY);
        tpi_info = &get_irq_regs()->tpi_info;
        trace_s390_cio_interrupt(tpi_info);
        irb = this_cpu_ptr(&cio_irb);