cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

iommu.h (1406B)


      1#ifndef _IOMMU_H
      2#define _IOMMU_H 1
      3
      4#include <linux/pci.h>
      5
      6struct parisc_device;
      7struct ioc;
      8
      9static inline struct pci_hba_data *parisc_walk_tree(struct device *dev)
     10{
     11	struct device *otherdev;
     12
     13	if (likely(dev->platform_data))
     14		return dev->platform_data;
     15
     16	/* OK, just traverse the bus to find it */
     17	for (otherdev = dev->parent;
     18	     otherdev;
     19	     otherdev = otherdev->parent) {
     20		if (otherdev->platform_data) {
     21			dev->platform_data = otherdev->platform_data;
     22			break;
     23		}
     24	}
     25
     26	return dev->platform_data;
     27}
     28
     29static inline struct ioc *GET_IOC(struct device *dev)
     30{
     31	struct pci_hba_data *pdata = parisc_walk_tree(dev);
     32
     33	if (!pdata)
     34		return NULL;
     35	return pdata->iommu;
     36}
     37
     38#ifdef CONFIG_IOMMU_CCIO
     39void *ccio_get_iommu(const struct parisc_device *dev);
     40int ccio_request_resource(const struct parisc_device *dev,
     41		struct resource *res);
     42int ccio_allocate_resource(const struct parisc_device *dev,
     43		struct resource *res, unsigned long size,
     44		unsigned long min, unsigned long max, unsigned long align);
     45#else /* !CONFIG_IOMMU_CCIO */
     46#define ccio_get_iommu(dev) NULL
     47#define ccio_request_resource(dev, res) insert_resource(&iomem_resource, res)
     48#define ccio_allocate_resource(dev, res, size, min, max, align) \
     49		allocate_resource(&iomem_resource, res, size, min, max, \
     50				align, NULL, NULL)
     51#endif /* !CONFIG_IOMMU_CCIO */
     52
     53void *sba_get_iommu(struct parisc_device *dev);
     54
     55#endif /* _IOMMU_H */