Skip to content
  • Alexey Dobriyan's avatar
    treewide: make "nr_cpu_ids" unsigned · 9b130ad5
    Alexey Dobriyan authored
    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 ...
    9b130ad5