Hi James, On Sun, Jan 03, 2021 at 09:11:22AM -0800, James Smart wrote: > +void > +efct_hw_map_wq_cpu(struct efct_hw *hw) > +{ > + struct efct *efct = hw->os; > + u32 cpu = 0, i; > + > + /* Init cpu_map array */ > + for_each_possible_cpu(cpu) { > + hw->wq_cpu_array[cpu] = NULL; This is asking for troubles: struct hw_wq *wq_cpu_array[128]; > + for (i = 0; i < hw->config.n_eq; i++) { > + const struct cpumask *maskp; > + > + /* Get a CPU mask for all CPUs affinitized to this vector */ > + maskp = pci_irq_get_affinity(efct->pci, i); Would it not make more sense to ask from the block layer which queue is mapped to with CPU? blk_mq_map_queues or blk_mq_pci_map_queues? I am still a bit confused a lot about all these queue/cpu mappings :) I assuming the code for onlining/offlining CPUs is coming later. Are you planing to use managed IRQs? Thanks, Daniel