 d6b9a81b2a
			
		
	
	
	d6b9a81b2a
	
	
	
		
			
			Add the ability to inject IOMMU faults. We enable this per device via a fail_iommu sysfs property, similar to fault injection on other subsystems. An example: ... 0003:01:00.1 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (be3) (rev 02) To inject one error to this device: echo 1 > /sys/bus/pci/devices/0003:01:00.1/fail_iommu echo 1 > /sys/kernel/debug/fail_iommu/probability echo 1 > /sys/kernel/debug/fail_iommu/times As feared, the first failure injected on the be3 results in an unrecoverable error, taking down both functions of the card permanently: be2net 0003:01:00.1: Unrecoverable error in the card Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			927 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			927 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Arch specific extensions to struct device
 | |
|  *
 | |
|  * This file is released under the GPLv2
 | |
|  */
 | |
| #ifndef _ASM_POWERPC_DEVICE_H
 | |
| #define _ASM_POWERPC_DEVICE_H
 | |
| 
 | |
| struct dma_map_ops;
 | |
| struct device_node;
 | |
| 
 | |
| /*
 | |
|  * Arch extensions to struct device.
 | |
|  *
 | |
|  * When adding fields, consider macio_add_one_device in
 | |
|  * drivers/macintosh/macio_asic.c
 | |
|  */
 | |
| struct dev_archdata {
 | |
| 	/* DMA operations on that device */
 | |
| 	struct dma_map_ops	*dma_ops;
 | |
| 
 | |
| 	/*
 | |
| 	 * When an iommu is in use, dma_data is used as a ptr to the base of the
 | |
| 	 * iommu_table.  Otherwise, it is a simple numerical offset.
 | |
| 	 */
 | |
| 	union {
 | |
| 		dma_addr_t	dma_offset;
 | |
| 		void		*iommu_table_base;
 | |
| 	} dma_data;
 | |
| 
 | |
| #ifdef CONFIG_SWIOTLB
 | |
| 	dma_addr_t		max_direct_dma_addr;
 | |
| #endif
 | |
| #ifdef CONFIG_EEH
 | |
| 	struct eeh_dev		*edev;
 | |
| #endif
 | |
| #ifdef CONFIG_FAIL_IOMMU
 | |
| 	int fail_iommu;
 | |
| #endif
 | |
| };
 | |
| 
 | |
| struct pdev_archdata {
 | |
| 	u64 dma_mask;
 | |
| };
 | |
| 
 | |
| #define ARCH_HAS_DMA_GET_REQUIRED_MASK
 | |
| 
 | |
| #endif /* _ASM_POWERPC_DEVICE_H */
 |