On Fri, May 08, 2020 at 08:11:55PM -0700, Bart Van Assche wrote: > On 2020-05-08 19:09, Ming Lei wrote: > > On Fri, May 08, 2020 at 04:26:17PM -0700, Bart Van Assche wrote: > >> On 2020-05-04 19:09, Ming Lei wrote: > >>> @@ -391,6 +393,7 @@ struct blk_mq_ops { > >>> enum { > >>> BLK_MQ_F_SHOULD_MERGE = 1 << 0, > >>> BLK_MQ_F_TAG_SHARED = 1 << 1, > >>> + BLK_MQ_F_NO_MANAGED_IRQ = 1 << 2, > >>> BLK_MQ_F_BLOCKING = 1 << 5, > >>> BLK_MQ_F_NO_SCHED = 1 << 6, > >>> BLK_MQ_F_ALLOC_POLICY_START_BIT = 8, > >>> diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h > >>> index 77d70b633531..24b3a77810b6 100644 > >>> --- a/include/linux/cpuhotplug.h > >>> +++ b/include/linux/cpuhotplug.h > >>> @@ -152,6 +152,7 @@ enum cpuhp_state { > >>> CPUHP_AP_SMPBOOT_THREADS, > >>> CPUHP_AP_X86_VDSO_VMA_ONLINE, > >>> CPUHP_AP_IRQ_AFFINITY_ONLINE, > >>> + CPUHP_AP_BLK_MQ_ONLINE, > >>> CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS, > >>> CPUHP_AP_X86_INTEL_EPB_ONLINE, > >>> CPUHP_AP_PERF_ONLINE, > >> > >> Wouldn't BLK_MQ_F_NO_IRQ be a better name than BLK_MQ_F_NO_MANAGED_IRQ? > > > > No, what this patchset tries to do is to address request timeout or hang > > issue in case that managed irq is applied in blk-mq driver. > > What is a managed IRQ? The following query did not produce a useful answer: > > $ git grep -nHi managed.irq [ming@T590 linux]$ git grep -n MANAGED ./kernel/irq kernel/irq/chip.c:188: IRQ_STARTUP_MANAGED, kernel/irq/chip.c:226: return IRQ_STARTUP_MANAGED; kernel/irq/chip.c:271: case IRQ_STARTUP_MANAGED: kernel/irq/cpuhotplug.c:179: if (!housekeeping_enabled(HK_FLAG_MANAGED_IRQ)) kernel/irq/cpuhotplug.c:182: hk_mask = housekeeping_cpumask(HK_FLAG_MANAGED_IRQ); kernel/irq/debugfs.c:114: BIT_MASK_DESCR(IRQD_AFFINITY_MANAGED), kernel/irq/debugfs.c:115: BIT_MASK_DESCR(IRQD_MANAGED_SHUTDOWN), kernel/irq/internals.h:215: __irqd_to_state(d) |= IRQD_MANAGED_SHUTDOWN; kernel/irq/internals.h:220: __irqd_to_state(d) &= ~IRQD_MANAGED_SHUTDOWN; kernel/irq/irqdesc.c:487: flags = IRQD_AFFINITY_MANAGED | kernel/irq/irqdesc.c:488: IRQD_MANAGED_SHUTDOWN; kernel/irq/manage.c:170: * AFFINITY_MANAGED flag. kernel/irq/manage.c:241: housekeeping_enabled(HK_FLAG_MANAGED_IRQ)) { kernel/irq/manage.c:247: hk_mask = housekeeping_cpumask(HK_FLAG_MANAGED_IRQ); The exact name should be AFFINITY_MANAGED, however the name of managed irq has been used in commit log and isolation cpus code for a bit long. OK, I will add comment on BLK_MQ_F_NO_MANAGED_IRQ a bit in next version. Thanks, Ming