powerpc/eeh: Remove eeh device from OF node
Originally, the PCI sensitive OF node is tracing the eeh device through struct device_node->edev. However, it was regarded as bad idea. The patch removes struct device_node->edev and uses PCI_DN to trace the corresponding eeh device according to BenH's comments. Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
		
					parent
					
						
							
								e22057c859
							
						
					
				
			
			
				commit
				
					
						2a0352fa4a
					
				
			
		
					 3 changed files with 9 additions and 11 deletions
				
			
		|  | @ -155,6 +155,7 @@ struct pci_dn { | ||||||
| 
 | 
 | ||||||
| 	struct	pci_dev *pcidev;	/* back-pointer to the pci device */ | 	struct	pci_dev *pcidev;	/* back-pointer to the pci device */ | ||||||
| #ifdef CONFIG_EEH | #ifdef CONFIG_EEH | ||||||
|  | 	struct eeh_dev *edev;		/* eeh device */ | ||||||
| 	int	class_code;		/* pci device class */ | 	int	class_code;		/* pci device class */ | ||||||
| 	int	eeh_mode;		/* See eeh.h for possible EEH_MODEs */ | 	int	eeh_mode;		/* See eeh.h for possible EEH_MODEs */ | ||||||
| 	int	eeh_config_addr; | 	int	eeh_config_addr; | ||||||
|  | @ -185,6 +186,13 @@ static inline int pci_device_from_OF_node(struct device_node *np, | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #if defined(CONFIG_EEH) | ||||||
|  | static inline struct eeh_dev *of_node_to_eeh_dev(struct device_node *dn) | ||||||
|  | { | ||||||
|  | 	return PCI_DN(dn)->edev; | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| /** Find the bus corresponding to the indicated device node */ | /** Find the bus corresponding to the indicated device node */ | ||||||
| extern struct pci_bus *pcibios_find_pci_bus(struct device_node *dn); | extern struct pci_bus *pcibios_find_pci_bus(struct device_node *dn); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -62,7 +62,7 @@ void * __devinit eeh_dev_init(struct device_node *dn, void *data) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* Associate EEH device with OF node */ | 	/* Associate EEH device with OF node */ | ||||||
| 	dn->edev  = edev; | 	PCI_DN(dn)->edev = edev; | ||||||
| 	edev->dn  = dn; | 	edev->dn  = dn; | ||||||
| 	edev->phb = phb; | 	edev->phb = phb; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -58,9 +58,6 @@ struct device_node { | ||||||
| 	struct	kref kref; | 	struct	kref kref; | ||||||
| 	unsigned long _flags; | 	unsigned long _flags; | ||||||
| 	void	*data; | 	void	*data; | ||||||
| #if defined(CONFIG_EEH) |  | ||||||
| 	struct eeh_dev *edev; |  | ||||||
| #endif |  | ||||||
| #if defined(CONFIG_SPARC) | #if defined(CONFIG_SPARC) | ||||||
| 	char	*path_component_name; | 	char	*path_component_name; | ||||||
| 	unsigned int unique_id; | 	unsigned int unique_id; | ||||||
|  | @ -75,13 +72,6 @@ struct of_phandle_args { | ||||||
| 	uint32_t args[MAX_PHANDLE_ARGS]; | 	uint32_t args[MAX_PHANDLE_ARGS]; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #if defined(CONFIG_EEH) |  | ||||||
| static inline struct eeh_dev *of_node_to_eeh_dev(struct device_node *dn) |  | ||||||
| { |  | ||||||
| 	return dn->edev; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifdef CONFIG_OF_DYNAMIC | #ifdef CONFIG_OF_DYNAMIC | ||||||
| extern struct device_node *of_node_get(struct device_node *node); | extern struct device_node *of_node_get(struct device_node *node); | ||||||
| extern void of_node_put(struct device_node *node); | extern void of_node_put(struct device_node *node); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Gavin Shan
				Gavin Shan