Messages in this thread | | | Date | Mon, 30 Nov 2015 14:11:03 +0100 (CET) | From | Thomas Gleixner <> | Subject | Re: [PATCH v2 04/19] genirq: Add new struct ipi_mask and helper functions |
| |
On Mon, 30 Nov 2015, Qais Yousef wrote: > On 11/30/2015 11:20 AM, Thomas Gleixner wrote: > > On Wed, 25 Nov 2015, Qais Yousef wrote: > > > cpumask is limited to NR_CPUS. Introduce ipi_mask which allows us to > > > address > > > cpu range that is higher than NR_CPUS which is required for drivers to > > > send > > > IPIs for coprocessor that are outside Linux CPU range. > > I have second thoughts on this. > > > > cpumask is indeed limited to NR_CPUS or in case of CPUMASK_ON_STACK > > limited to nr_cpu_ids. > > > > But, that's not an issue for that coprocessor case. Let's assume you > > have 16 Linux CPUs and 4 coprocessors. So you set the number of > > possible cpus (NR_CPUS) to 20. That makes the cpumask sizeof 20. > > > > The boot-process sets the number of available cpus to 16. So the > > Linux side will never try to access anything beyond cpu15. > > > > But you can spare that extra mask magic and simply use cpumask. Sorry > > that I did not think about that earlier. > > > > > Yes it would be much better to reuse it but wouldn't the runtime checks > against nr_cpu_ids create problems especially when CPUMASK_ON_STACK is > defined?
nr_cpu_ids == find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
Thanks,
tglx
| |