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

acpi_iort.h (2324B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (C) 2016, Semihalf
      4 *	Author: Tomasz Nowicki <tn@semihalf.com>
      5 */
      6
      7#ifndef __ACPI_IORT_H__
      8#define __ACPI_IORT_H__
      9
     10#include <linux/acpi.h>
     11#include <linux/fwnode.h>
     12#include <linux/irqdomain.h>
     13
     14#define IORT_IRQ_MASK(irq)		(irq & 0xffffffffULL)
     15#define IORT_IRQ_TRIGGER_MASK(irq)	((irq >> 32) & 0xffffffffULL)
     16
     17/*
     18 * PMCG model identifiers for use in smmu pmu driver. Please note
     19 * that this is purely for the use of software and has nothing to
     20 * do with hardware or with IORT specification.
     21 */
     22#define IORT_SMMU_V3_PMCG_GENERIC        0x00000000 /* Generic SMMUv3 PMCG */
     23#define IORT_SMMU_V3_PMCG_HISI_HIP08     0x00000001 /* HiSilicon HIP08 PMCG */
     24
     25int iort_register_domain_token(int trans_id, phys_addr_t base,
     26			       struct fwnode_handle *fw_node);
     27void iort_deregister_domain_token(int trans_id);
     28struct fwnode_handle *iort_find_domain_token(int trans_id);
     29#ifdef CONFIG_ACPI_IORT
     30void acpi_iort_init(void);
     31u32 iort_msi_map_id(struct device *dev, u32 id);
     32struct irq_domain *iort_get_device_domain(struct device *dev, u32 id,
     33					  enum irq_domain_bus_token bus_token);
     34void acpi_configure_pmsi_domain(struct device *dev);
     35int iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id);
     36/* IOMMU interface */
     37int iort_dma_get_ranges(struct device *dev, u64 *size);
     38int iort_iommu_configure_id(struct device *dev, const u32 *id_in);
     39int iort_iommu_msi_get_resv_regions(struct device *dev, struct list_head *head);
     40phys_addr_t acpi_iort_dma_get_max_cpu_address(void);
     41#else
     42static inline void acpi_iort_init(void) { }
     43static inline u32 iort_msi_map_id(struct device *dev, u32 id)
     44{ return id; }
     45static inline struct irq_domain *iort_get_device_domain(
     46	struct device *dev, u32 id, enum irq_domain_bus_token bus_token)
     47{ return NULL; }
     48static inline void acpi_configure_pmsi_domain(struct device *dev) { }
     49/* IOMMU interface */
     50static inline int iort_dma_get_ranges(struct device *dev, u64 *size)
     51{ return -ENODEV; }
     52static inline int iort_iommu_configure_id(struct device *dev, const u32 *id_in)
     53{ return -ENODEV; }
     54static inline
     55int iort_iommu_msi_get_resv_regions(struct device *dev, struct list_head *head)
     56{ return 0; }
     57
     58static inline phys_addr_t acpi_iort_dma_get_max_cpu_address(void)
     59{ return PHYS_ADDR_MAX; }
     60#endif
     61
     62#endif /* __ACPI_IORT_H__ */