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