diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/pgtable.h | 5 | ||||
| -rw-r--r-- | include/linux/huge_mm.h | 6 | ||||
| -rw-r--r-- | include/linux/pstore.h | 12 | ||||
| -rw-r--r-- | include/uapi/linux/vfio.h | 34 | 
4 files changed, 48 insertions, 9 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index a7126d28f4cf..2f47ade1b567 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h @@ -173,11 +173,12 @@ extern void pmdp_splitting_flush(struct vm_area_struct *vma,  #endif  #ifndef __HAVE_ARCH_PGTABLE_DEPOSIT -extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pgtable_t pgtable); +extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp, +				       pgtable_t pgtable);  #endif  #ifndef __HAVE_ARCH_PGTABLE_WITHDRAW -extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm); +extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);  #endif  #ifndef __HAVE_ARCH_PMDP_INVALIDATE diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 26ee56c80dc7..b60de92e2edc 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -60,9 +60,9 @@ extern pmd_t *page_check_address_pmd(struct page *page,  #define HPAGE_PMD_NR (1<<HPAGE_PMD_ORDER)  #ifdef CONFIG_TRANSPARENT_HUGEPAGE -#define HPAGE_PMD_SHIFT HPAGE_SHIFT -#define HPAGE_PMD_MASK HPAGE_MASK -#define HPAGE_PMD_SIZE HPAGE_SIZE +#define HPAGE_PMD_SHIFT PMD_SHIFT +#define HPAGE_PMD_SIZE	((1UL) << HPAGE_PMD_SHIFT) +#define HPAGE_PMD_MASK	(~(HPAGE_PMD_SIZE - 1))  extern bool is_vma_temporary_stack(struct vm_area_struct *vma); diff --git a/include/linux/pstore.h b/include/linux/pstore.h index 75d01760c911..4aa80ba830a2 100644 --- a/include/linux/pstore.h +++ b/include/linux/pstore.h @@ -35,6 +35,10 @@ enum pstore_type_id {  	PSTORE_TYPE_MCE		= 1,  	PSTORE_TYPE_CONSOLE	= 2,  	PSTORE_TYPE_FTRACE	= 3, +	/* PPC64 partition types */ +	PSTORE_TYPE_PPC_RTAS	= 4, +	PSTORE_TYPE_PPC_OF	= 5, +	PSTORE_TYPE_PPC_COMMON	= 6,  	PSTORE_TYPE_UNKNOWN	= 255  }; @@ -54,12 +58,12 @@ struct pstore_info {  			struct pstore_info *psi);  	int		(*write)(enum pstore_type_id type,  			enum kmsg_dump_reason reason, u64 *id, -			unsigned int part, int count, size_t size, -			struct pstore_info *psi); +			unsigned int part, int count, size_t hsize, +			size_t size, struct pstore_info *psi);  	int		(*write_buf)(enum pstore_type_id type,  			enum kmsg_dump_reason reason, u64 *id, -			unsigned int part, const char *buf, size_t size, -			struct pstore_info *psi); +			unsigned int part, const char *buf, size_t hsize, +			size_t size, struct pstore_info *psi);  	int		(*erase)(enum pstore_type_id type, u64 id,  			int count, struct timespec time,  			struct pstore_info *psi); diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h index 284ff2436829..87ee4f4cff25 100644 --- a/include/uapi/linux/vfio.h +++ b/include/uapi/linux/vfio.h @@ -22,6 +22,7 @@  /* Extensions */  #define VFIO_TYPE1_IOMMU		1 +#define VFIO_SPAPR_TCE_IOMMU		2  /*   * The IOCTL interface is designed for extensibility by embedding the @@ -375,4 +376,37 @@ struct vfio_iommu_type1_dma_unmap {  #define VFIO_IOMMU_UNMAP_DMA _IO(VFIO_TYPE, VFIO_BASE + 14) +/* + * IOCTLs to enable/disable IOMMU container usage. + * No parameters are supported. + */ +#define VFIO_IOMMU_ENABLE	_IO(VFIO_TYPE, VFIO_BASE + 15) +#define VFIO_IOMMU_DISABLE	_IO(VFIO_TYPE, VFIO_BASE + 16) + +/* -------- Additional API for SPAPR TCE (Server POWERPC) IOMMU -------- */ + +/* + * The SPAPR TCE info struct provides the information about the PCI bus + * address ranges available for DMA, these values are programmed into + * the hardware so the guest has to know that information. + * + * The DMA 32 bit window start is an absolute PCI bus address. + * The IOVA address passed via map/unmap ioctls are absolute PCI bus + * addresses too so the window works as a filter rather than an offset + * for IOVA addresses. + * + * A flag will need to be added if other page sizes are supported, + * so as defined here, it is always 4k. + */ +struct vfio_iommu_spapr_tce_info { +	__u32 argsz; +	__u32 flags;			/* reserved for future use */ +	__u32 dma32_window_start;	/* 32 bit window start (bytes) */ +	__u32 dma32_window_size;	/* 32 bit window size (bytes) */ +}; + +#define VFIO_IOMMU_SPAPR_TCE_GET_INFO	_IO(VFIO_TYPE, VFIO_BASE + 12) + +/* ***************************************************************** */ +  #endif /* _UAPIVFIO_H */  | 

