mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	kernel: add platform_has() infrastructure
Add a simple infrastructure for setting, resetting and querying platform feature flags. Flags can be either global or architecture specific. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> Tested-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> # Arm64 only Reviewed-by: Christoph Hellwig <hch@lst.de> Acked-by: Borislav Petkov <bp@suse.de> Signed-off-by: Juergen Gross <jgross@suse.com>
This commit is contained in:
		
							parent
							
								
									f2906aa863
								
							
						
					
					
						commit
						2130a790ca
					
				
					 6 changed files with 60 additions and 1 deletions
				
			
		|  | @ -15824,6 +15824,14 @@ S:	Maintained | |||
| F:	Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml | ||||
| F:	drivers/iio/chemical/pms7003.c | ||||
| 
 | ||||
| PLATFORM FEATURE INFRASTRUCTURE | ||||
| M:	Juergen Gross <jgross@suse.com> | ||||
| S:	Maintained | ||||
| F:	arch/*/include/asm/platform-feature.h | ||||
| F:	include/asm-generic/platform-feature.h | ||||
| F:	include/linux/platform-feature.h | ||||
| F:	kernel/platform-feature.c | ||||
| 
 | ||||
| PLDMFW LIBRARY | ||||
| M:	Jacob Keller <jacob.e.keller@intel.com> | ||||
| S:	Maintained | ||||
|  |  | |||
|  | @ -44,6 +44,7 @@ mandatory-y += msi.h | |||
| mandatory-y += pci.h | ||||
| mandatory-y += percpu.h | ||||
| mandatory-y += pgalloc.h | ||||
| mandatory-y += platform-feature.h | ||||
| mandatory-y += preempt.h | ||||
| mandatory-y += rwonce.h | ||||
| mandatory-y += sections.h | ||||
|  |  | |||
							
								
								
									
										8
									
								
								include/asm-generic/platform-feature.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								include/asm-generic/platform-feature.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| /* SPDX-License-Identifier: GPL-2.0 */ | ||||
| #ifndef _ASM_GENERIC_PLATFORM_FEATURE_H | ||||
| #define _ASM_GENERIC_PLATFORM_FEATURE_H | ||||
| 
 | ||||
| /* Number of arch specific feature flags. */ | ||||
| #define PLATFORM_ARCH_FEAT_N	0 | ||||
| 
 | ||||
| #endif /* _ASM_GENERIC_PLATFORM_FEATURE_H */ | ||||
							
								
								
									
										15
									
								
								include/linux/platform-feature.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								include/linux/platform-feature.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| /* SPDX-License-Identifier: GPL-2.0 */ | ||||
| #ifndef _PLATFORM_FEATURE_H | ||||
| #define _PLATFORM_FEATURE_H | ||||
| 
 | ||||
| #include <linux/bitops.h> | ||||
| #include <asm/platform-feature.h> | ||||
| 
 | ||||
| /* The platform features are starting with the architecture specific ones. */ | ||||
| #define PLATFORM_FEAT_N				(0 + PLATFORM_ARCH_FEAT_N) | ||||
| 
 | ||||
| void platform_set(unsigned int feature); | ||||
| void platform_clear(unsigned int feature); | ||||
| bool platform_has(unsigned int feature); | ||||
| 
 | ||||
| #endif /* _PLATFORM_FEATURE_H */ | ||||
|  | @ -7,7 +7,7 @@ obj-y     = fork.o exec_domain.o panic.o \ | |||
| 	    cpu.o exit.o softirq.o resource.o \
 | ||||
| 	    sysctl.o capability.o ptrace.o user.o \
 | ||||
| 	    signal.o sys.o umh.o workqueue.o pid.o task_work.o \
 | ||||
| 	    extable.o params.o \
 | ||||
| 	    extable.o params.o platform-feature.o \
 | ||||
| 	    kthread.o sys_ni.o nsproxy.o \
 | ||||
| 	    notifier.o ksysfs.o cred.o reboot.o \
 | ||||
| 	    async.o range.o smpboot.o ucount.o regset.o | ||||
|  |  | |||
							
								
								
									
										27
									
								
								kernel/platform-feature.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								kernel/platform-feature.c
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,27 @@ | |||
| // SPDX-License-Identifier: GPL-2.0
 | ||||
| 
 | ||||
| #include <linux/bitops.h> | ||||
| #include <linux/cache.h> | ||||
| #include <linux/export.h> | ||||
| #include <linux/platform-feature.h> | ||||
| 
 | ||||
| #define PLATFORM_FEAT_ARRAY_SZ  BITS_TO_LONGS(PLATFORM_FEAT_N) | ||||
| static unsigned long __read_mostly platform_features[PLATFORM_FEAT_ARRAY_SZ]; | ||||
| 
 | ||||
| void platform_set(unsigned int feature) | ||||
| { | ||||
| 	set_bit(feature, platform_features); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(platform_set); | ||||
| 
 | ||||
| void platform_clear(unsigned int feature) | ||||
| { | ||||
| 	clear_bit(feature, platform_features); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(platform_clear); | ||||
| 
 | ||||
| bool platform_has(unsigned int feature) | ||||
| { | ||||
| 	return test_bit(feature, platform_features); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(platform_has); | ||||
		Loading…
	
		Reference in a new issue
	
	 Juergen Gross
						Juergen Gross