Skip to content

Commit 786dfe4

Browse files
committed
iommu/amd: Merge private header files
Merge amd_iommu_proto.h into amd_iommu.h. Signed-off-by: Joerg Roedel <[email protected]> Reviewed-by: Suravee Suthikulpanit <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent e1980df commit 786dfe4

File tree

6 files changed

+100
-110
lines changed

6 files changed

+100
-110
lines changed

drivers/iommu/amd_iommu.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
#include <linux/dma-direct.h>
2323
#include <linux/dma-iommu.h>
2424
#include <linux/iommu-helper.h>
25-
#include <linux/iommu.h>
2625
#include <linux/delay.h>
2726
#include <linux/amd-iommu.h>
2827
#include <linux/notifier.h>
@@ -43,8 +42,7 @@
4342
#include <asm/gart.h>
4443
#include <asm/dma.h>
4544

46-
#include "amd_iommu_proto.h"
47-
#include "amd_iommu_types.h"
45+
#include "amd_iommu.h"
4846
#include "irq_remapping.h"
4947

5048
#define CMD_SET_TYPE(cmd, t) ((cmd)->data[1] |= ((t) << 28))

drivers/iommu/amd_iommu.h

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,103 @@
11
/* SPDX-License-Identifier: GPL-2.0-only */
2+
/*
3+
* Copyright (C) 2009-2010 Advanced Micro Devices, Inc.
4+
* Author: Joerg Roedel <[email protected]>
5+
*/
26

37
#ifndef AMD_IOMMU_H
48
#define AMD_IOMMU_H
59

6-
int __init add_special_device(u8 type, u8 id, u16 *devid, bool cmd_line);
10+
#include <linux/iommu.h>
11+
12+
#include "amd_iommu_types.h"
13+
14+
extern int amd_iommu_get_num_iommus(void);
15+
extern int amd_iommu_init_dma_ops(void);
16+
extern int amd_iommu_init_passthrough(void);
17+
extern irqreturn_t amd_iommu_int_thread(int irq, void *data);
18+
extern irqreturn_t amd_iommu_int_handler(int irq, void *data);
19+
extern void amd_iommu_apply_erratum_63(u16 devid);
20+
extern void amd_iommu_reset_cmd_buffer(struct amd_iommu *iommu);
21+
extern int amd_iommu_init_devices(void);
22+
extern void amd_iommu_uninit_devices(void);
23+
extern void amd_iommu_init_notifier(void);
24+
extern int amd_iommu_init_api(void);
25+
26+
#ifdef CONFIG_AMD_IOMMU_DEBUGFS
27+
void amd_iommu_debugfs_setup(struct amd_iommu *iommu);
28+
#else
29+
static inline void amd_iommu_debugfs_setup(struct amd_iommu *iommu) {}
30+
#endif
31+
32+
/* Needed for interrupt remapping */
33+
extern int amd_iommu_prepare(void);
34+
extern int amd_iommu_enable(void);
35+
extern void amd_iommu_disable(void);
36+
extern int amd_iommu_reenable(int);
37+
extern int amd_iommu_enable_faulting(void);
38+
extern int amd_iommu_guest_ir;
39+
40+
/* IOMMUv2 specific functions */
41+
struct iommu_domain;
42+
43+
extern bool amd_iommu_v2_supported(void);
44+
extern int amd_iommu_register_ppr_notifier(struct notifier_block *nb);
45+
extern int amd_iommu_unregister_ppr_notifier(struct notifier_block *nb);
46+
extern void amd_iommu_domain_direct_map(struct iommu_domain *dom);
47+
extern int amd_iommu_domain_enable_v2(struct iommu_domain *dom, int pasids);
48+
extern int amd_iommu_flush_page(struct iommu_domain *dom, int pasid,
49+
u64 address);
50+
extern int amd_iommu_flush_tlb(struct iommu_domain *dom, int pasid);
51+
extern int amd_iommu_domain_set_gcr3(struct iommu_domain *dom, int pasid,
52+
unsigned long cr3);
53+
extern int amd_iommu_domain_clear_gcr3(struct iommu_domain *dom, int pasid);
54+
extern struct iommu_domain *amd_iommu_get_v2_domain(struct pci_dev *pdev);
55+
56+
#ifdef CONFIG_IRQ_REMAP
57+
extern int amd_iommu_create_irq_domain(struct amd_iommu *iommu);
58+
#else
59+
static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
60+
{
61+
return 0;
62+
}
63+
#endif
64+
65+
#define PPR_SUCCESS 0x0
66+
#define PPR_INVALID 0x1
67+
#define PPR_FAILURE 0xf
68+
69+
extern int amd_iommu_complete_ppr(struct pci_dev *pdev, int pasid,
70+
int status, int tag);
71+
72+
static inline bool is_rd890_iommu(struct pci_dev *pdev)
73+
{
74+
return (pdev->vendor == PCI_VENDOR_ID_ATI) &&
75+
(pdev->device == PCI_DEVICE_ID_RD890_IOMMU);
76+
}
77+
78+
static inline bool iommu_feature(struct amd_iommu *iommu, u64 f)
79+
{
80+
if (!(iommu->cap & (1 << IOMMU_CAP_EFR)))
81+
return false;
82+
83+
return !!(iommu->features & f);
84+
}
85+
86+
static inline u64 iommu_virt_to_phys(void *vaddr)
87+
{
88+
return (u64)__sme_set(virt_to_phys(vaddr));
89+
}
90+
91+
static inline void *iommu_phys_to_virt(unsigned long paddr)
92+
{
93+
return phys_to_virt(__sme_clr(paddr));
94+
}
95+
96+
extern bool translation_pre_enabled(struct amd_iommu *iommu);
97+
extern bool amd_iommu_is_attach_deferred(struct iommu_domain *domain,
98+
struct device *dev);
99+
extern int __init add_special_device(u8 type, u8 id, u16 *devid,
100+
bool cmd_line);
7101

8102
#ifdef CONFIG_DMI
9103
void amd_iommu_apply_ivrs_quirks(void);

drivers/iommu/amd_iommu_debugfs.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
*/
99

1010
#include <linux/debugfs.h>
11-
#include <linux/iommu.h>
1211
#include <linux/pci.h>
13-
#include "amd_iommu_proto.h"
14-
#include "amd_iommu_types.h"
12+
13+
#include "amd_iommu.h"
1514

1615
static struct dentry *amd_iommu_debugfs;
1716
static DEFINE_MUTEX(amd_iommu_debugfs_lock);

drivers/iommu/amd_iommu_init.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
#include <linux/msi.h>
1919
#include <linux/amd-iommu.h>
2020
#include <linux/export.h>
21-
#include <linux/iommu.h>
2221
#include <linux/kmemleak.h>
2322
#include <linux/mem_encrypt.h>
2423
#include <asm/pci-direct.h>
@@ -32,9 +31,8 @@
3231
#include <asm/irq_remapping.h>
3332

3433
#include <linux/crash_dump.h>
34+
3535
#include "amd_iommu.h"
36-
#include "amd_iommu_proto.h"
37-
#include "amd_iommu_types.h"
3836
#include "irq_remapping.h"
3937

4038
/*

drivers/iommu/amd_iommu_proto.h

Lines changed: 0 additions & 97 deletions
This file was deleted.

drivers/iommu/amd_iommu_v2.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,11 @@
1313
#include <linux/module.h>
1414
#include <linux/sched.h>
1515
#include <linux/sched/mm.h>
16-
#include <linux/iommu.h>
1716
#include <linux/wait.h>
1817
#include <linux/pci.h>
1918
#include <linux/gfp.h>
2019

21-
#include "amd_iommu_types.h"
22-
#include "amd_iommu_proto.h"
20+
#include "amd_iommu.h"
2321

2422
MODULE_LICENSE("GPL v2");
2523
MODULE_AUTHOR("Joerg Roedel <[email protected]>");

0 commit comments

Comments
 (0)