linux-next/arch/powerpc/sysdev
Costa Shulyupin 6da1cab4f5 powerpc/xive: Use cpumask_intersects()
Replace `cpumask_any_and(a, b) >= nr_cpu_ids`
with the more readable `!cpumask_intersects(a, b)`.

Comparison between cpumask_any_and() and cpumask_intersects()

The cpumask_any_and() function expands using FIND_FIRST_BIT(),
resulting in a loop that iterates through each bit of the bitmask:

for (idx = 0; idx * BITS_PER_LONG < sz; idx++) {
	val = (FETCH);
	if (val) {
		sz = min(idx * BITS_PER_LONG + __ffs(MUNGE(val)), sz);
		break;
	}
}

The cpumask_intersects() function expands using __bitmap_intersects(),
resulting in that the first loop iterates through each long word of the bitmask,
and the second through each bit within a long word:

unsigned int k, lim = bits/BITS_PER_LONG;
for (k = 0; k < lim; ++k)
	if (bitmap1[k] & bitmap2[k])
		return true;

if (bits % BITS_PER_LONG)
	if ((bitmap1[k] & bitmap2[k]) & BITMAP_LAST_WORD_MASK(bits))
		return true;

Conclusion: cpumask_intersects() is at least as efficient as cpumask_any_and(),
if not more so, as it typically performs fewer loops and comparisons.

Signed-off-by: Costa Shulyupin <costa.shul@redhat.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://patch.msgid.link/20240926092623.399577-2-costa.shul@redhat.com
2024-11-14 22:43:52 +11:00
..
ge powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
xics powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu 2023-11-27 22:01:15 +11:00
xive powerpc/xive: Use cpumask_intersects() 2024-11-14 22:43:52 +11:00
6xx-suspend.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
cpm2_pic.c powerpc/cpm2: Remove cpm2_map() and cpm2_unmap() 2023-08-16 23:54:47 +10:00
cpm2_pic.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cpm2.c powerpc/cpm2: Remove cpm2_map() and cpm2_unmap() 2023-08-16 23:54:47 +10:00
cpm_common.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
cpm_gpio.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
dart_iommu.c powerpc/dart: Drop unnecessary call to kmemleak_no_scan() 2024-04-29 23:51:16 +10:00
dart.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
dcr-low.S powerpc: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-16 23:54:48 +10:00
dcr.c powerpc: Use of_property_read_bool() for boolean properties 2023-03-30 23:36:35 +11:00
ehv_pic.c powerpc/85xx: Mark some functions static and add missing includes to fix no previous prototype error 2023-08-23 15:55:21 +10:00
fsl_gtm.c powerpc: Fix kernel-doc comments in fsl_gtm.c 2024-05-07 23:16:13 +10:00
fsl_lbc.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
fsl_mpic_err.c powerpc/sysdev: Add __init attribute to eligible functions 2021-12-23 22:33:12 +11:00
fsl_mpic_timer_wakeup.c powerpc/fsl: fix compiler warning in fsl_wakeup_sys_init() 2023-03-28 08:23:54 +02:00
fsl_msi.c powerpc: Switch back to struct platform_driver::remove() 2024-09-10 11:27:40 +10:00
fsl_msi.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
fsl_pci.c powerpc/fsl-pci: Use PCI_HEADER_TYPE_MASK instead of literal 2023-12-01 15:00:54 -06:00
fsl_pci.h powerpc/fsl_pci: Make fsl_add_bridge() static 2023-08-18 17:03:13 +10:00
fsl_pmc.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
fsl_rcpm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
fsl_rio.c powerpc/85xx: Mark some functions static and add missing includes to fix no previous prototype error 2023-08-23 15:55:21 +10:00
fsl_rio.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
fsl_rmu.c powerpc/85xx: Mark some functions static and add missing includes to fix no previous prototype error 2023-08-23 15:55:21 +10:00
fsl_soc.c TTY/Serial driver changes for 6.6-rc1 2023-09-01 09:38:00 -07:00
fsl_soc.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
grackle.c powerpc/32: Drop unused grackle_set_stg() 2023-11-27 22:01:15 +11:00
i8259.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
indirect_pci.c powerpc: Remove asm/prom.h from all files that don't need it 2022-05-08 22:15:04 +10:00
ipic.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
ipic.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
Kconfig powerpc: Replace CONFIG_4xx with CONFIG_44x 2024-06-28 22:28:48 +10:00
Makefile powerpc/Makefile: Remove bits related to the previous use of -mcmodel=large 2024-05-07 23:48:45 +10:00
mmio_nvram.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
mpc5xxx_clocks.c powerpc/mpc5xxx: Add missing fwnode_handle_put() 2023-08-25 08:39:30 +10:00
mpic_msgr.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
mpic_msi.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
mpic_timer.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
mpic_u3msi.c powerpc/msi: Fix deassociation of MSI descriptors 2022-12-17 10:58:48 +00:00
mpic.c powerpc: mpic: make mpic_subsys const 2024-02-15 00:14:06 +11:00
mpic.h powerpc/pasemi: Add __init attribute to eligible functions 2021-12-23 22:33:14 +11:00
msi_bitmap.c powerpc: Add missing headers 2022-05-08 22:15:40 +10:00
of_rtc.c powerpc: Explicitly include correct DT includes 2023-08-02 22:22:19 +10:00
pmi.c powerpc: Switch back to struct platform_driver::remove() 2024-09-10 11:27:40 +10:00
rtc_cmos_setup.c powerpc: add missing MODULE_DESCRIPTION() macros 2024-07-04 22:39:20 +10:00
tsi108_dev.c powerpc: Use of_address_to_resource() 2023-04-04 22:11:03 +10:00
tsi108_pci.c powerpc/sysdev/tsi108: fix resource printk format warnings 2023-03-30 23:36:34 +11:00
udbg_memcons.c powerpc: udbg_memcons: mark functions static 2024-02-06 21:17:44 +11:00