| /* SPDX-License-Identifier: GPL-2.0 */ | 
 | /* | 
 |  * intel-pasid.h - PASID idr, table and entry header | 
 |  * | 
 |  * Copyright (C) 2018 Intel Corporation | 
 |  * | 
 |  * Author: Lu Baolu <baolu.lu@linux.intel.com> | 
 |  */ | 
 |  | 
 | #ifndef __INTEL_PASID_H | 
 | #define __INTEL_PASID_H | 
 |  | 
 | #define PASID_MIN			0x1 | 
 | #define PASID_MAX			0x20000 | 
 |  | 
 | struct pasid_entry { | 
 | 	u64 val; | 
 | }; | 
 |  | 
 | /* The representative of a PASID table */ | 
 | struct pasid_table { | 
 | 	void			*table;		/* pasid table pointer */ | 
 | 	int			order;		/* page order of pasid table */ | 
 | 	int			max_pasid;	/* max pasid */ | 
 | 	struct list_head	dev;		/* device list */ | 
 | }; | 
 |  | 
 | extern u32 intel_pasid_max_id; | 
 | int intel_pasid_alloc_id(void *ptr, int start, int end, gfp_t gfp); | 
 | void intel_pasid_free_id(int pasid); | 
 | void *intel_pasid_lookup_id(int pasid); | 
 | int intel_pasid_alloc_table(struct device *dev); | 
 | void intel_pasid_free_table(struct device *dev); | 
 | struct pasid_table *intel_pasid_get_table(struct device *dev); | 
 | int intel_pasid_get_dev_max_id(struct device *dev); | 
 | struct pasid_entry *intel_pasid_get_entry(struct device *dev, int pasid); | 
 | void intel_pasid_clear_entry(struct device *dev, int pasid); | 
 |  | 
 | #endif /* __INTEL_PASID_H */ |