• Linus Torvalds's avatar
    Merge tag 'bitmap-6.1-rc1' of https://github.com/norov/linux · d4013bc4
    Linus Torvalds authored
    Pull bitmap updates from Yury Norov:
    
     - Fix unsigned comparison to -1 in CPUMAP_FILE_MAX_BYTES (Phil Auld)
    
     - cleanup nr_cpu_ids vs nr_cpumask_bits mess (me)
    
       This series cleans that mess and adds new config FORCE_NR_CPUS that
       allows to optimize cpumask subsystem if the number of CPUs is known
       at compile-time.
    
     - optimize find_bit() functions (me)
    
       Reworks find_bit() functions based on new FIND_{FIRST,NEXT}_BIT()
       macros.
    
     - add find_nth_bit() (me)
    
       Adds find_nth_bit(), which is ~70 times faster than bitcounting with
       for_each() loop:
    
    	for_each_set_bit(bit, mask, size)
    		if (n-- == 0)
    			return bit;
    
       Also adds bitmap_weight_and() to let people replace this pattern:
    
    	tmp = bitmap_alloc(nbits);
    	bitmap_and(tmp, map1, map2, nbits);
    	weight = bitmap_weight(tmp, nbits);
    	bitmap_free(tmp);
    
       with a single bitmap_weight_and() call.
    
     - repair cpumask_check() (me)
    
       After switching cpumask to use nr_cpu_ids, cpumask_check() started
       generating many false-positive warnings. This series fixes it.
    
     - Add for_each_cpu_andnot() and for_each_cpu_andnot() (Valentin
       Schneider)
    
       Extends the API with one more function and applies it in sched/core.
    
    * tag 'bitmap-6.1-rc1' of https://github.com/norov/linux: (28 commits)
      sched/core: Merge cpumask_andnot()+for_each_cpu() into for_each_cpu_andnot()
      lib/test_cpumask: Add for_each_cpu_and(not) tests
      cpumask: Introduce for_each_cpu_andnot()
      lib/find_bit: Introduce find_next_andnot_bit()
      cpumask: fix checking valid cpu range
      lib/bitmap: add tests for for_each() loops
      lib/find: optimize for_each() macros
      lib/bitmap: introduce for_each_set_bit_wrap() macro
      lib/find_bit: add find_next{,_and}_bit_wrap
      cpumask: switch for_each_cpu{,_not} to use for_each_bit()
      net: fix cpu_max_bits_warn() usage in netif_attrmask_next{,_and}
      cpumask: add cpumask_nth_{,and,andnot}
      lib/bitmap: remove bitmap_ord_to_pos
      lib/bitmap: add tests for find_nth_bit()
      lib: add find_nth{,_and,_andnot}_bit()
      lib/bitmap: add bitmap_weight_and()
      lib/bitmap: don't call __bitmap_weight() in kernel code
      tools: sync find_bit() implementation
      lib/find_bit: optimize find_next_bit() functions
      lib/find_bit: create find_first_zero_bit_le()
      ...
    d4013bc4
head_64.S 24.9 KB