mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 16:38:31 +00:00 
			
		
		
		
	 ab519a011c
			
		
	
	
		ab519a011c
		
	
	
	
	
		
			
			The Dynamic Logical Partitioning capabilities of the powerpc pseries platform allows for the addition and removal of resources (i.e. CPU's, memory, and PCI devices) from a partition. The removal of a resource involves removing the resource's node from the device tree and then returning the resource to firmware via the rtas set-indicator call. To add a resource, it is first obtained from firmware via the rtas set-indicator call and then a new device tree node is created using the ibm,configure-coinnector rtas call and added to the device tree. This patch provides the kernel DLPAR infrastructure in a new filed named dlpar.c. The functionality provided is for acquiring and releasing a resource from firmware and the parsing of information returned from the ibm,configure-connector rtas call. Additionally this exports the pSeries reconfiguration notifier chain so that it can be invoked when device tree updates are made. Signed-off-by: Nathan Fontenot <nfont@austin.ibm.com> Acked-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
		
			
				
	
	
		
			31 lines
		
	
	
		
			937 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			937 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _PPC64_PSERIES_RECONFIG_H
 | |
| #define _PPC64_PSERIES_RECONFIG_H
 | |
| #ifdef __KERNEL__
 | |
| 
 | |
| #include <linux/notifier.h>
 | |
| 
 | |
| /*
 | |
|  * Use this API if your code needs to know about OF device nodes being
 | |
|  * added or removed on pSeries systems.
 | |
|  */
 | |
| 
 | |
| #define PSERIES_RECONFIG_ADD		0x0001
 | |
| #define PSERIES_RECONFIG_REMOVE		0x0002
 | |
| #define PSERIES_DRCONF_MEM_ADD		0x0003
 | |
| #define PSERIES_DRCONF_MEM_REMOVE	0x0004
 | |
| 
 | |
| #ifdef CONFIG_PPC_PSERIES
 | |
| extern int pSeries_reconfig_notifier_register(struct notifier_block *);
 | |
| extern void pSeries_reconfig_notifier_unregister(struct notifier_block *);
 | |
| extern struct blocking_notifier_head pSeries_reconfig_chain;
 | |
| #else /* !CONFIG_PPC_PSERIES */
 | |
| static inline int pSeries_reconfig_notifier_register(struct notifier_block *nb)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| static inline void pSeries_reconfig_notifier_unregister(struct notifier_block *nb) { }
 | |
| #endif /* CONFIG_PPC_PSERIES */
 | |
| 
 | |
| #endif /* __KERNEL__ */
 | |
| #endif /* _PPC64_PSERIES_RECONFIG_H */
 |