treewide: make "nr_cpu_ids" unsigned
First, number of CPUs can't be negative number. Second, different signnnedness leads to suboptimal code in the following cases: 1) kmalloc(nr_cpu_ids * sizeof(X)); "int" has to be sign extended to size_t. 2) while (loff_t *pos < nr_cpu_ids) MOVSXD is 1 byte longed than the same MOV. Other cases exist as well. Basically compiler is told that nr_cpu_ids can't be negative which can't be deduced if it is "int". Code savings on allyesconfig kernel: -3KB add/remove: 0/0 grow/shrink: 25/264 up/down: 261/-3631 (-3370) function old new delta coretemp_cpu_online 450 512 +62 rcu_init_one 1234 1272 +38 pci_device_probe 374 399 +25 ... pgdat_reclaimable_pages 628 556 -72 select_fallback_rq 446 369 -77 task_numa_find_cpu 1923 1807 -116 Link: http://lkml.kernel.org/r/20170819114959.GA30580@avx2 Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
此提交包含在:
@@ -224,7 +224,7 @@ void __init allocate_pacas(void)
|
||||
paca = __va(memblock_alloc_base(paca_size, PAGE_SIZE, limit));
|
||||
memset(paca, 0, paca_size);
|
||||
|
||||
printk(KERN_DEBUG "Allocated %u bytes for %d pacas at %p\n",
|
||||
printk(KERN_DEBUG "Allocated %u bytes for %u pacas at %p\n",
|
||||
paca_size, nr_cpu_ids, paca);
|
||||
|
||||
allocate_lppacas(nr_cpu_ids, limit);
|
||||
|
@@ -551,7 +551,7 @@ void __init smp_setup_cpu_maps(void)
|
||||
if (maxcpus > nr_cpu_ids) {
|
||||
printk(KERN_WARNING
|
||||
"Partition configured for %d cpus, "
|
||||
"operating system maximum is %d.\n",
|
||||
"operating system maximum is %u.\n",
|
||||
maxcpus, nr_cpu_ids);
|
||||
maxcpus = nr_cpu_ids;
|
||||
} else
|
||||
|
新增問題並參考
封鎖使用者