Comment 0 for bug 1703663

Revision history for this message
bugproxy (bugproxy) wrote :

We have an issue with the i40e driver, present in kernels pre-4.8, like Xenial v4.4 (from Ubuntu 16.04.1).

i40e driver has an issue in interrupt vector assignment in case of sparse CPU masks, like when some CPUs are disabled. The driver does a linear mapping not taking gaps on cpumask into account. This is a problem in systems with multiple logical CPUs per core (like in SMT scenarios).

If we disable some logical CPUs, by turning SMT off for example, we will end up with a sparse cpu_online_mask, i.e., only the first CPU in a core is online, and the incremental/linear filling in the interrupt cpumask might lead to multiple offline CPUs being assigned to the struct q_vector in the driver, leading to issues when interrupts are requested, like the following message in PowerPC systems:

[141.97] ics_opal_set_affinity: No online cpus in the mask 00200000,00000000,00000000,00000000 for irq 302

This message is output of interrupt controller in Power systems, a complain that the cpumask does not make sense to that particular system.