* [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields
@ 2023-06-09 9:06 Vasant Hegde
2023-06-09 9:06 ` [PATCH 2/2] iommu/amd: Remove extern from function prototypes Vasant Hegde
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Vasant Hegde @ 2023-06-09 9:06 UTC (permalink / raw)
To: iommu, joro; +Cc: suravee.suthikulpanit, Vasant Hegde, Yazen Ghannam
Make use of BIT macro when defining bitfields which makes it easy to read.
No functional change intended.
Suggested-by: Yazen Ghannam <yazen.ghannam@amd.com>
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
---
drivers/iommu/amd/amd_iommu_types.h | 76 ++++++++++++++---------------
1 file changed, 38 insertions(+), 38 deletions(-)
diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h
index ae0edeb379d4..a49cc2258a76 100644
--- a/drivers/iommu/amd/amd_iommu_types.h
+++ b/drivers/iommu/amd/amd_iommu_types.h
@@ -84,21 +84,21 @@
/* Extended Feature Bits */
-#define FEATURE_PREFETCH (1ULL<<0)
-#define FEATURE_PPR (1ULL<<1)
-#define FEATURE_X2APIC (1ULL<<2)
-#define FEATURE_NX (1ULL<<3)
-#define FEATURE_GT (1ULL<<4)
-#define FEATURE_IA (1ULL<<6)
-#define FEATURE_GA (1ULL<<7)
-#define FEATURE_HE (1ULL<<8)
-#define FEATURE_PC (1ULL<<9)
+#define FEATURE_PREFETCH BIT_ULL(0)
+#define FEATURE_PPR BIT_ULL(1)
+#define FEATURE_X2APIC BIT_ULL(2)
+#define FEATURE_NX BIT_ULL(3)
+#define FEATURE_GT BIT_ULL(4)
+#define FEATURE_IA BIT_ULL(6)
+#define FEATURE_GA BIT_ULL(7)
+#define FEATURE_HE BIT_ULL(8)
+#define FEATURE_PC BIT_ULL(9)
#define FEATURE_GATS_SHIFT (12)
#define FEATURE_GATS_MASK (3ULL)
-#define FEATURE_GAM_VAPIC (1ULL<<21)
-#define FEATURE_GIOSUP (1ULL<<48)
-#define FEATURE_EPHSUP (1ULL<<50)
-#define FEATURE_SNP (1ULL<<63)
+#define FEATURE_GAM_VAPIC BIT_ULL(21)
+#define FEATURE_GIOSUP BIT_ULL(48)
+#define FEATURE_EPHSUP BIT_ULL(50)
+#define FEATURE_SNP BIT_ULL(63)
#define FEATURE_PASID_SHIFT 32
#define FEATURE_PASID_MASK (0x1fULL << FEATURE_PASID_SHIFT)
@@ -120,13 +120,13 @@
#define PASID_MASK 0x0000ffff
/* MMIO status bits */
-#define MMIO_STATUS_EVT_OVERFLOW_INT_MASK (1 << 0)
-#define MMIO_STATUS_EVT_INT_MASK (1 << 1)
-#define MMIO_STATUS_COM_WAIT_INT_MASK (1 << 2)
-#define MMIO_STATUS_PPR_INT_MASK (1 << 6)
-#define MMIO_STATUS_GALOG_RUN_MASK (1 << 8)
-#define MMIO_STATUS_GALOG_OVERFLOW_MASK (1 << 9)
-#define MMIO_STATUS_GALOG_INT_MASK (1 << 10)
+#define MMIO_STATUS_EVT_OVERFLOW_INT_MASK BIT(0)
+#define MMIO_STATUS_EVT_INT_MASK BIT(1)
+#define MMIO_STATUS_COM_WAIT_INT_MASK BIT(2)
+#define MMIO_STATUS_PPR_INT_MASK BIT(6)
+#define MMIO_STATUS_GALOG_RUN_MASK BIT(8)
+#define MMIO_STATUS_GALOG_OVERFLOW_MASK BIT(9)
+#define MMIO_STATUS_GALOG_INT_MASK BIT(10)
/* event logging constants */
#define EVENT_ENTRY_SIZE 0x10
@@ -369,23 +369,23 @@
/*
* Bit value definition for I/O PTE fields
*/
-#define IOMMU_PTE_PR (1ULL << 0)
-#define IOMMU_PTE_U (1ULL << 59)
-#define IOMMU_PTE_FC (1ULL << 60)
-#define IOMMU_PTE_IR (1ULL << 61)
-#define IOMMU_PTE_IW (1ULL << 62)
+#define IOMMU_PTE_PR BIT_ULL(0)
+#define IOMMU_PTE_U BIT_ULL(59)
+#define IOMMU_PTE_FC BIT_ULL(60)
+#define IOMMU_PTE_IR BIT_ULL(61)
+#define IOMMU_PTE_IW BIT_ULL(62)
/*
* Bit value definition for DTE fields
*/
-#define DTE_FLAG_V (1ULL << 0)
-#define DTE_FLAG_TV (1ULL << 1)
-#define DTE_FLAG_IR (1ULL << 61)
-#define DTE_FLAG_IW (1ULL << 62)
-
-#define DTE_FLAG_IOTLB (1ULL << 32)
-#define DTE_FLAG_GIOV (1ULL << 54)
-#define DTE_FLAG_GV (1ULL << 55)
+#define DTE_FLAG_V BIT_ULL(0)
+#define DTE_FLAG_TV BIT_ULL(1)
+#define DTE_FLAG_IR BIT_ULL(61)
+#define DTE_FLAG_IW BIT_ULL(62)
+
+#define DTE_FLAG_IOTLB BIT_ULL(32)
+#define DTE_FLAG_GIOV BIT_ULL(54)
+#define DTE_FLAG_GV BIT_ULL(55)
#define DTE_FLAG_MASK (0x3ffULL << 32)
#define DTE_GLX_SHIFT (56)
#define DTE_GLX_MASK (3)
@@ -439,13 +439,13 @@
#define MAX_DOMAIN_ID 65536
/* Protection domain flags */
-#define PD_DMA_OPS_MASK (1UL << 0) /* domain used for dma_ops */
-#define PD_DEFAULT_MASK (1UL << 1) /* domain is a default dma_ops
+#define PD_DMA_OPS_MASK BIT(0) /* domain used for dma_ops */
+#define PD_DEFAULT_MASK BIT(1) /* domain is a default dma_ops
domain for an IOMMU */
-#define PD_PASSTHROUGH_MASK (1UL << 2) /* domain has no page
+#define PD_PASSTHROUGH_MASK BIT(2) /* domain has no page
translation */
-#define PD_IOMMUV2_MASK (1UL << 3) /* domain has gcr3 table */
-#define PD_GIOV_MASK (1UL << 4) /* domain enable GIOV support */
+#define PD_IOMMUV2_MASK BIT(3) /* domain has gcr3 table */
+#define PD_GIOV_MASK BIT(4) /* domain enable GIOV support */
extern bool amd_iommu_dump;
#define DUMP_printk(format, arg...) \
--
2.31.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/2] iommu/amd: Remove extern from function prototypes
2023-06-09 9:06 [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Vasant Hegde
@ 2023-06-09 9:06 ` Vasant Hegde
2023-06-12 18:58 ` Jerry Snitselaar
2023-06-12 18:55 ` [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Jerry Snitselaar
2023-06-16 14:34 ` Joerg Roedel
2 siblings, 1 reply; 6+ messages in thread
From: Vasant Hegde @ 2023-06-09 9:06 UTC (permalink / raw)
To: iommu, joro; +Cc: suravee.suthikulpanit, Vasant Hegde, Yazen Ghannam
The kernel coding style does not require 'extern' in function prototypes.
Hence remove them from header file.
No functional change intended.
Suggested-by: Yazen Ghannam <yazen.ghannam@amd.com>
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
---
drivers/iommu/amd/amd_iommu.h | 88 ++++++++++++++---------------
drivers/iommu/amd/amd_iommu_types.h | 2 +-
2 files changed, 44 insertions(+), 46 deletions(-)
diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h
index 9beeceb9d825..317d5c26c614 100644
--- a/drivers/iommu/amd/amd_iommu.h
+++ b/drivers/iommu/amd/amd_iommu.h
@@ -11,12 +11,12 @@
#include "amd_iommu_types.h"
-extern irqreturn_t amd_iommu_int_thread(int irq, void *data);
-extern irqreturn_t amd_iommu_int_handler(int irq, void *data);
-extern void amd_iommu_apply_erratum_63(struct amd_iommu *iommu, u16 devid);
-extern void amd_iommu_restart_event_logging(struct amd_iommu *iommu);
-extern void amd_iommu_restart_ga_log(struct amd_iommu *iommu);
-extern void amd_iommu_set_rlookup_table(struct amd_iommu *iommu, u16 devid);
+irqreturn_t amd_iommu_int_thread(int irq, void *data);
+irqreturn_t amd_iommu_int_handler(int irq, void *data);
+void amd_iommu_apply_erratum_63(struct amd_iommu *iommu, u16 devid);
+void amd_iommu_restart_event_logging(struct amd_iommu *iommu);
+void amd_iommu_restart_ga_log(struct amd_iommu *iommu);
+void amd_iommu_set_rlookup_table(struct amd_iommu *iommu, u16 devid);
#ifdef CONFIG_AMD_IOMMU_DEBUGFS
void amd_iommu_debugfs_setup(struct amd_iommu *iommu);
@@ -25,11 +25,11 @@ static inline void amd_iommu_debugfs_setup(struct amd_iommu *iommu) {}
#endif
/* Needed for interrupt remapping */
-extern int amd_iommu_prepare(void);
-extern int amd_iommu_enable(void);
-extern void amd_iommu_disable(void);
-extern int amd_iommu_reenable(int);
-extern int amd_iommu_enable_faulting(void);
+int amd_iommu_prepare(void);
+int amd_iommu_enable(void);
+void amd_iommu_disable(void);
+int amd_iommu_reenable(int mode);
+int amd_iommu_enable_faulting(void);
extern int amd_iommu_guest_ir;
extern enum io_pgtable_fmt amd_iommu_pgtable;
extern int amd_iommu_gpt_level;
@@ -37,33 +37,32 @@ extern int amd_iommu_gpt_level;
/* IOMMUv2 specific functions */
struct iommu_domain;
-extern bool amd_iommu_v2_supported(void);
-extern struct amd_iommu *get_amd_iommu(unsigned int idx);
-extern u8 amd_iommu_pc_get_max_banks(unsigned int idx);
-extern bool amd_iommu_pc_supported(void);
-extern u8 amd_iommu_pc_get_max_counters(unsigned int idx);
-extern int amd_iommu_pc_get_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
- u8 fxn, u64 *value);
-extern int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
- u8 fxn, u64 *value);
-
-extern int amd_iommu_register_ppr_notifier(struct notifier_block *nb);
-extern int amd_iommu_unregister_ppr_notifier(struct notifier_block *nb);
-extern void amd_iommu_domain_direct_map(struct iommu_domain *dom);
-extern int amd_iommu_domain_enable_v2(struct iommu_domain *dom, int pasids);
-extern int amd_iommu_flush_page(struct iommu_domain *dom, u32 pasid,
- u64 address);
-extern void amd_iommu_update_and_flush_device_table(struct protection_domain *domain);
-extern void amd_iommu_domain_update(struct protection_domain *domain);
-extern void amd_iommu_domain_flush_complete(struct protection_domain *domain);
-extern void amd_iommu_domain_flush_tlb_pde(struct protection_domain *domain);
-extern int amd_iommu_flush_tlb(struct iommu_domain *dom, u32 pasid);
-extern int amd_iommu_domain_set_gcr3(struct iommu_domain *dom, u32 pasid,
- unsigned long cr3);
-extern int amd_iommu_domain_clear_gcr3(struct iommu_domain *dom, u32 pasid);
+bool amd_iommu_v2_supported(void);
+struct amd_iommu *get_amd_iommu(unsigned int idx);
+u8 amd_iommu_pc_get_max_banks(unsigned int idx);
+bool amd_iommu_pc_supported(void);
+u8 amd_iommu_pc_get_max_counters(unsigned int idx);
+int amd_iommu_pc_get_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
+ u8 fxn, u64 *value);
+int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
+ u8 fxn, u64 *value);
+
+int amd_iommu_register_ppr_notifier(struct notifier_block *nb);
+int amd_iommu_unregister_ppr_notifier(struct notifier_block *nb);
+void amd_iommu_domain_direct_map(struct iommu_domain *dom);
+int amd_iommu_domain_enable_v2(struct iommu_domain *dom, int pasids);
+int amd_iommu_flush_page(struct iommu_domain *dom, u32 pasid, u64 address);
+void amd_iommu_update_and_flush_device_table(struct protection_domain *domain);
+void amd_iommu_domain_update(struct protection_domain *domain);
+void amd_iommu_domain_flush_complete(struct protection_domain *domain);
+void amd_iommu_domain_flush_tlb_pde(struct protection_domain *domain);
+int amd_iommu_flush_tlb(struct iommu_domain *dom, u32 pasid);
+int amd_iommu_domain_set_gcr3(struct iommu_domain *dom, u32 pasid,
+ unsigned long cr3);
+int amd_iommu_domain_clear_gcr3(struct iommu_domain *dom, u32 pasid);
#ifdef CONFIG_IRQ_REMAP
-extern int amd_iommu_create_irq_domain(struct amd_iommu *iommu);
+int amd_iommu_create_irq_domain(struct amd_iommu *iommu);
#else
static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
{
@@ -75,8 +74,8 @@ static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
#define PPR_INVALID 0x1
#define PPR_FAILURE 0xf
-extern int amd_iommu_complete_ppr(struct pci_dev *pdev, u32 pasid,
- int status, int tag);
+int amd_iommu_complete_ppr(struct pci_dev *pdev, u32 pasid,
+ int status, int tag);
static inline bool is_rd890_iommu(struct pci_dev *pdev)
{
@@ -129,10 +128,9 @@ static inline void *alloc_pgtable_page(int nid, gfp_t gfp)
return page ? page_address(page) : NULL;
}
-extern bool translation_pre_enabled(struct amd_iommu *iommu);
-extern bool amd_iommu_is_attach_deferred(struct device *dev);
-extern int __init add_special_device(u8 type, u8 id, u32 *devid,
- bool cmd_line);
+bool translation_pre_enabled(struct amd_iommu *iommu);
+bool amd_iommu_is_attach_deferred(struct device *dev);
+int __init add_special_device(u8 type, u8 id, u32 *devid, bool cmd_line);
#ifdef CONFIG_DMI
void amd_iommu_apply_ivrs_quirks(void);
@@ -140,9 +138,9 @@ void amd_iommu_apply_ivrs_quirks(void);
static inline void amd_iommu_apply_ivrs_quirks(void) { }
#endif
-extern void amd_iommu_domain_set_pgtable(struct protection_domain *domain,
- u64 *root, int mode);
-extern struct dev_table_entry *get_dev_table(struct amd_iommu *iommu);
+void amd_iommu_domain_set_pgtable(struct protection_domain *domain,
+ u64 *root, int mode);
+struct dev_table_entry *get_dev_table(struct amd_iommu *iommu);
extern u64 amd_iommu_efr;
extern u64 amd_iommu_efr2;
diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h
index a49cc2258a76..364fdaa52e74 100644
--- a/drivers/iommu/amd/amd_iommu_types.h
+++ b/drivers/iommu/amd/amd_iommu_types.h
@@ -882,7 +882,7 @@ extern int amd_iommu_max_glx_val;
* This function flushes all internal caches of
* the IOMMU used by this driver.
*/
-extern void iommu_flush_all_caches(struct amd_iommu *iommu);
+void iommu_flush_all_caches(struct amd_iommu *iommu);
static inline int get_ioapic_devid(int id)
{
--
2.31.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields
2023-06-09 9:06 [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Vasant Hegde
2023-06-09 9:06 ` [PATCH 2/2] iommu/amd: Remove extern from function prototypes Vasant Hegde
@ 2023-06-12 18:55 ` Jerry Snitselaar
2023-06-14 9:45 ` Vasant Hegde
2023-06-16 14:34 ` Joerg Roedel
2 siblings, 1 reply; 6+ messages in thread
From: Jerry Snitselaar @ 2023-06-12 18:55 UTC (permalink / raw)
To: Vasant Hegde; +Cc: iommu, joro, suravee.suthikulpanit, Yazen Ghannam
On Fri, Jun 09, 2023 at 09:06:30AM +0000, Vasant Hegde wrote:
> Make use of BIT macro when defining bitfields which makes it easy to read.
>
> No functional change intended.
>
> Suggested-by: Yazen Ghannam <yazen.ghannam@amd.com>
> Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
> ---
> drivers/iommu/amd/amd_iommu_types.h | 76 ++++++++++++++---------------
> 1 file changed, 38 insertions(+), 38 deletions(-)
>
> diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h
> index ae0edeb379d4..a49cc2258a76 100644
> --- a/drivers/iommu/amd/amd_iommu_types.h
> +++ b/drivers/iommu/amd/amd_iommu_types.h
> @@ -84,21 +84,21 @@
>
>
> /* Extended Feature Bits */
> -#define FEATURE_PREFETCH (1ULL<<0)
> -#define FEATURE_PPR (1ULL<<1)
> -#define FEATURE_X2APIC (1ULL<<2)
> -#define FEATURE_NX (1ULL<<3)
> -#define FEATURE_GT (1ULL<<4)
> -#define FEATURE_IA (1ULL<<6)
> -#define FEATURE_GA (1ULL<<7)
> -#define FEATURE_HE (1ULL<<8)
> -#define FEATURE_PC (1ULL<<9)
> +#define FEATURE_PREFETCH BIT_ULL(0)
> +#define FEATURE_PPR BIT_ULL(1)
> +#define FEATURE_X2APIC BIT_ULL(2)
> +#define FEATURE_NX BIT_ULL(3)
> +#define FEATURE_GT BIT_ULL(4)
> +#define FEATURE_IA BIT_ULL(6)
> +#define FEATURE_GA BIT_ULL(7)
> +#define FEATURE_HE BIT_ULL(8)
> +#define FEATURE_PC BIT_ULL(9)
> #define FEATURE_GATS_SHIFT (12)
> #define FEATURE_GATS_MASK (3ULL)
> -#define FEATURE_GAM_VAPIC (1ULL<<21)
> -#define FEATURE_GIOSUP (1ULL<<48)
> -#define FEATURE_EPHSUP (1ULL<<50)
> -#define FEATURE_SNP (1ULL<<63)
> +#define FEATURE_GAM_VAPIC BIT_ULL(21)
> +#define FEATURE_GIOSUP BIT_ULL(48)
> +#define FEATURE_EPHSUP BIT_ULL(50)
> +#define FEATURE_SNP BIT_ULL(63)
>
> #define FEATURE_PASID_SHIFT 32
> #define FEATURE_PASID_MASK (0x1fULL << FEATURE_PASID_SHIFT)
> @@ -120,13 +120,13 @@
> #define PASID_MASK 0x0000ffff
>
> /* MMIO status bits */
> -#define MMIO_STATUS_EVT_OVERFLOW_INT_MASK (1 << 0)
> -#define MMIO_STATUS_EVT_INT_MASK (1 << 1)
> -#define MMIO_STATUS_COM_WAIT_INT_MASK (1 << 2)
> -#define MMIO_STATUS_PPR_INT_MASK (1 << 6)
> -#define MMIO_STATUS_GALOG_RUN_MASK (1 << 8)
> -#define MMIO_STATUS_GALOG_OVERFLOW_MASK (1 << 9)
> -#define MMIO_STATUS_GALOG_INT_MASK (1 << 10)
> +#define MMIO_STATUS_EVT_OVERFLOW_INT_MASK BIT(0)
> +#define MMIO_STATUS_EVT_INT_MASK BIT(1)
> +#define MMIO_STATUS_COM_WAIT_INT_MASK BIT(2)
> +#define MMIO_STATUS_PPR_INT_MASK BIT(6)
> +#define MMIO_STATUS_GALOG_RUN_MASK BIT(8)
> +#define MMIO_STATUS_GALOG_OVERFLOW_MASK BIT(9)
> +#define MMIO_STATUS_GALOG_INT_MASK BIT(10)
>
> /* event logging constants */
> #define EVENT_ENTRY_SIZE 0x10
> @@ -369,23 +369,23 @@
> /*
> * Bit value definition for I/O PTE fields
> */
> -#define IOMMU_PTE_PR (1ULL << 0)
> -#define IOMMU_PTE_U (1ULL << 59)
> -#define IOMMU_PTE_FC (1ULL << 60)
> -#define IOMMU_PTE_IR (1ULL << 61)
> -#define IOMMU_PTE_IW (1ULL << 62)
> +#define IOMMU_PTE_PR BIT_ULL(0)
> +#define IOMMU_PTE_U BIT_ULL(59)
> +#define IOMMU_PTE_FC BIT_ULL(60)
> +#define IOMMU_PTE_IR BIT_ULL(61)
> +#define IOMMU_PTE_IW BIT_ULL(62)
>
> /*
> * Bit value definition for DTE fields
> */
> -#define DTE_FLAG_V (1ULL << 0)
> -#define DTE_FLAG_TV (1ULL << 1)
> -#define DTE_FLAG_IR (1ULL << 61)
> -#define DTE_FLAG_IW (1ULL << 62)
> -
> -#define DTE_FLAG_IOTLB (1ULL << 32)
> -#define DTE_FLAG_GIOV (1ULL << 54)
> -#define DTE_FLAG_GV (1ULL << 55)
> +#define DTE_FLAG_V BIT_ULL(0)
> +#define DTE_FLAG_TV BIT_ULL(1)
> +#define DTE_FLAG_IR BIT_ULL(61)
> +#define DTE_FLAG_IW BIT_ULL(62)
> +
> +#define DTE_FLAG_IOTLB BIT_ULL(32)
> +#define DTE_FLAG_GIOV BIT_ULL(54)
> +#define DTE_FLAG_GV BIT_ULL(55)
Minor thing, but would it make sense to group these according
to which 64-bit word they are in? DTE_FLAG_IOTLB is in the
second 64-bit word of the DTE, and the rest are in the first.
Regards,
Jerry
> #define DTE_FLAG_MASK (0x3ffULL << 32)
> #define DTE_GLX_SHIFT (56)
> #define DTE_GLX_MASK (3)
> @@ -439,13 +439,13 @@
> #define MAX_DOMAIN_ID 65536
>
> /* Protection domain flags */
> -#define PD_DMA_OPS_MASK (1UL << 0) /* domain used for dma_ops */
> -#define PD_DEFAULT_MASK (1UL << 1) /* domain is a default dma_ops
> +#define PD_DMA_OPS_MASK BIT(0) /* domain used for dma_ops */
> +#define PD_DEFAULT_MASK BIT(1) /* domain is a default dma_ops
> domain for an IOMMU */
> -#define PD_PASSTHROUGH_MASK (1UL << 2) /* domain has no page
> +#define PD_PASSTHROUGH_MASK BIT(2) /* domain has no page
> translation */
> -#define PD_IOMMUV2_MASK (1UL << 3) /* domain has gcr3 table */
> -#define PD_GIOV_MASK (1UL << 4) /* domain enable GIOV support */
> +#define PD_IOMMUV2_MASK BIT(3) /* domain has gcr3 table */
> +#define PD_GIOV_MASK BIT(4) /* domain enable GIOV support */
>
> extern bool amd_iommu_dump;
> #define DUMP_printk(format, arg...) \
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] iommu/amd: Remove extern from function prototypes
2023-06-09 9:06 ` [PATCH 2/2] iommu/amd: Remove extern from function prototypes Vasant Hegde
@ 2023-06-12 18:58 ` Jerry Snitselaar
0 siblings, 0 replies; 6+ messages in thread
From: Jerry Snitselaar @ 2023-06-12 18:58 UTC (permalink / raw)
To: Vasant Hegde; +Cc: iommu, joro, suravee.suthikulpanit, Yazen Ghannam
On Fri, Jun 09, 2023 at 09:06:31AM +0000, Vasant Hegde wrote:
> The kernel coding style does not require 'extern' in function prototypes.
> Hence remove them from header file.
>
> No functional change intended.
>
> Suggested-by: Yazen Ghannam <yazen.ghannam@amd.com>
> Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
> ---
> drivers/iommu/amd/amd_iommu.h | 88 ++++++++++++++---------------
> drivers/iommu/amd/amd_iommu_types.h | 2 +-
> 2 files changed, 44 insertions(+), 46 deletions(-)
>
> diff --git a/drivers/iommu/amd/amd_iommu.h b/drivers/iommu/amd/amd_iommu.h
> index 9beeceb9d825..317d5c26c614 100644
> --- a/drivers/iommu/amd/amd_iommu.h
> +++ b/drivers/iommu/amd/amd_iommu.h
> @@ -11,12 +11,12 @@
>
> #include "amd_iommu_types.h"
>
> -extern irqreturn_t amd_iommu_int_thread(int irq, void *data);
> -extern irqreturn_t amd_iommu_int_handler(int irq, void *data);
> -extern void amd_iommu_apply_erratum_63(struct amd_iommu *iommu, u16 devid);
> -extern void amd_iommu_restart_event_logging(struct amd_iommu *iommu);
> -extern void amd_iommu_restart_ga_log(struct amd_iommu *iommu);
> -extern void amd_iommu_set_rlookup_table(struct amd_iommu *iommu, u16 devid);
> +irqreturn_t amd_iommu_int_thread(int irq, void *data);
> +irqreturn_t amd_iommu_int_handler(int irq, void *data);
> +void amd_iommu_apply_erratum_63(struct amd_iommu *iommu, u16 devid);
> +void amd_iommu_restart_event_logging(struct amd_iommu *iommu);
> +void amd_iommu_restart_ga_log(struct amd_iommu *iommu);
> +void amd_iommu_set_rlookup_table(struct amd_iommu *iommu, u16 devid);
>
> #ifdef CONFIG_AMD_IOMMU_DEBUGFS
> void amd_iommu_debugfs_setup(struct amd_iommu *iommu);
> @@ -25,11 +25,11 @@ static inline void amd_iommu_debugfs_setup(struct amd_iommu *iommu) {}
> #endif
>
> /* Needed for interrupt remapping */
> -extern int amd_iommu_prepare(void);
> -extern int amd_iommu_enable(void);
> -extern void amd_iommu_disable(void);
> -extern int amd_iommu_reenable(int);
> -extern int amd_iommu_enable_faulting(void);
> +int amd_iommu_prepare(void);
> +int amd_iommu_enable(void);
> +void amd_iommu_disable(void);
> +int amd_iommu_reenable(int mode);
> +int amd_iommu_enable_faulting(void);
> extern int amd_iommu_guest_ir;
> extern enum io_pgtable_fmt amd_iommu_pgtable;
> extern int amd_iommu_gpt_level;
> @@ -37,33 +37,32 @@ extern int amd_iommu_gpt_level;
> /* IOMMUv2 specific functions */
> struct iommu_domain;
>
> -extern bool amd_iommu_v2_supported(void);
> -extern struct amd_iommu *get_amd_iommu(unsigned int idx);
> -extern u8 amd_iommu_pc_get_max_banks(unsigned int idx);
> -extern bool amd_iommu_pc_supported(void);
> -extern u8 amd_iommu_pc_get_max_counters(unsigned int idx);
> -extern int amd_iommu_pc_get_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
> - u8 fxn, u64 *value);
> -extern int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
> - u8 fxn, u64 *value);
> -
> -extern int amd_iommu_register_ppr_notifier(struct notifier_block *nb);
> -extern int amd_iommu_unregister_ppr_notifier(struct notifier_block *nb);
> -extern void amd_iommu_domain_direct_map(struct iommu_domain *dom);
> -extern int amd_iommu_domain_enable_v2(struct iommu_domain *dom, int pasids);
> -extern int amd_iommu_flush_page(struct iommu_domain *dom, u32 pasid,
> - u64 address);
> -extern void amd_iommu_update_and_flush_device_table(struct protection_domain *domain);
> -extern void amd_iommu_domain_update(struct protection_domain *domain);
> -extern void amd_iommu_domain_flush_complete(struct protection_domain *domain);
> -extern void amd_iommu_domain_flush_tlb_pde(struct protection_domain *domain);
> -extern int amd_iommu_flush_tlb(struct iommu_domain *dom, u32 pasid);
> -extern int amd_iommu_domain_set_gcr3(struct iommu_domain *dom, u32 pasid,
> - unsigned long cr3);
> -extern int amd_iommu_domain_clear_gcr3(struct iommu_domain *dom, u32 pasid);
> +bool amd_iommu_v2_supported(void);
> +struct amd_iommu *get_amd_iommu(unsigned int idx);
> +u8 amd_iommu_pc_get_max_banks(unsigned int idx);
> +bool amd_iommu_pc_supported(void);
> +u8 amd_iommu_pc_get_max_counters(unsigned int idx);
> +int amd_iommu_pc_get_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
> + u8 fxn, u64 *value);
> +int amd_iommu_pc_set_reg(struct amd_iommu *iommu, u8 bank, u8 cntr,
> + u8 fxn, u64 *value);
> +
> +int amd_iommu_register_ppr_notifier(struct notifier_block *nb);
> +int amd_iommu_unregister_ppr_notifier(struct notifier_block *nb);
> +void amd_iommu_domain_direct_map(struct iommu_domain *dom);
> +int amd_iommu_domain_enable_v2(struct iommu_domain *dom, int pasids);
> +int amd_iommu_flush_page(struct iommu_domain *dom, u32 pasid, u64 address);
> +void amd_iommu_update_and_flush_device_table(struct protection_domain *domain);
> +void amd_iommu_domain_update(struct protection_domain *domain);
> +void amd_iommu_domain_flush_complete(struct protection_domain *domain);
> +void amd_iommu_domain_flush_tlb_pde(struct protection_domain *domain);
> +int amd_iommu_flush_tlb(struct iommu_domain *dom, u32 pasid);
> +int amd_iommu_domain_set_gcr3(struct iommu_domain *dom, u32 pasid,
> + unsigned long cr3);
> +int amd_iommu_domain_clear_gcr3(struct iommu_domain *dom, u32 pasid);
>
> #ifdef CONFIG_IRQ_REMAP
> -extern int amd_iommu_create_irq_domain(struct amd_iommu *iommu);
> +int amd_iommu_create_irq_domain(struct amd_iommu *iommu);
> #else
> static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
> {
> @@ -75,8 +74,8 @@ static inline int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
> #define PPR_INVALID 0x1
> #define PPR_FAILURE 0xf
>
> -extern int amd_iommu_complete_ppr(struct pci_dev *pdev, u32 pasid,
> - int status, int tag);
> +int amd_iommu_complete_ppr(struct pci_dev *pdev, u32 pasid,
> + int status, int tag);
>
> static inline bool is_rd890_iommu(struct pci_dev *pdev)
> {
> @@ -129,10 +128,9 @@ static inline void *alloc_pgtable_page(int nid, gfp_t gfp)
> return page ? page_address(page) : NULL;
> }
>
> -extern bool translation_pre_enabled(struct amd_iommu *iommu);
> -extern bool amd_iommu_is_attach_deferred(struct device *dev);
> -extern int __init add_special_device(u8 type, u8 id, u32 *devid,
> - bool cmd_line);
> +bool translation_pre_enabled(struct amd_iommu *iommu);
> +bool amd_iommu_is_attach_deferred(struct device *dev);
> +int __init add_special_device(u8 type, u8 id, u32 *devid, bool cmd_line);
>
> #ifdef CONFIG_DMI
> void amd_iommu_apply_ivrs_quirks(void);
> @@ -140,9 +138,9 @@ void amd_iommu_apply_ivrs_quirks(void);
> static inline void amd_iommu_apply_ivrs_quirks(void) { }
> #endif
>
> -extern void amd_iommu_domain_set_pgtable(struct protection_domain *domain,
> - u64 *root, int mode);
> -extern struct dev_table_entry *get_dev_table(struct amd_iommu *iommu);
> +void amd_iommu_domain_set_pgtable(struct protection_domain *domain,
> + u64 *root, int mode);
> +struct dev_table_entry *get_dev_table(struct amd_iommu *iommu);
>
> extern u64 amd_iommu_efr;
> extern u64 amd_iommu_efr2;
> diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h
> index a49cc2258a76..364fdaa52e74 100644
> --- a/drivers/iommu/amd/amd_iommu_types.h
> +++ b/drivers/iommu/amd/amd_iommu_types.h
> @@ -882,7 +882,7 @@ extern int amd_iommu_max_glx_val;
> * This function flushes all internal caches of
> * the IOMMU used by this driver.
> */
> -extern void iommu_flush_all_caches(struct amd_iommu *iommu);
> +void iommu_flush_all_caches(struct amd_iommu *iommu);
>
> static inline int get_ioapic_devid(int id)
> {
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields
2023-06-12 18:55 ` [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Jerry Snitselaar
@ 2023-06-14 9:45 ` Vasant Hegde
0 siblings, 0 replies; 6+ messages in thread
From: Vasant Hegde @ 2023-06-14 9:45 UTC (permalink / raw)
To: Jerry Snitselaar; +Cc: iommu, joro, suravee.suthikulpanit, Yazen Ghannam
Jerry,
On 6/13/2023 12:25 AM, Jerry Snitselaar wrote:
> On Fri, Jun 09, 2023 at 09:06:30AM +0000, Vasant Hegde wrote:
>> Make use of BIT macro when defining bitfields which makes it easy to read.
>>
>> No functional change intended.
>>
>> Suggested-by: Yazen Ghannam <yazen.ghannam@amd.com>
>> Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
>> ---
>> drivers/iommu/amd/amd_iommu_types.h | 76 ++++++++++++++---------------
>> 1 file changed, 38 insertions(+), 38 deletions(-)
>>
>> diff --git a/drivers/iommu/amd/amd_iommu_types.h b/drivers/iommu/amd/amd_iommu_types.h
>> index ae0edeb379d4..a49cc2258a76 100644
>> --- a/drivers/iommu/amd/amd_iommu_types.h
>> +++ b/drivers/iommu/amd/amd_iommu_types.h
>> @@ -84,21 +84,21 @@
>>
.../...
>> /*
>> * Bit value definition for DTE fields
>> */
>> -#define DTE_FLAG_V (1ULL << 0)
>> -#define DTE_FLAG_TV (1ULL << 1)
>> -#define DTE_FLAG_IR (1ULL << 61)
>> -#define DTE_FLAG_IW (1ULL << 62)
>> -
>> -#define DTE_FLAG_IOTLB (1ULL << 32)
>> -#define DTE_FLAG_GIOV (1ULL << 54)
>> -#define DTE_FLAG_GV (1ULL << 55)
>> +#define DTE_FLAG_V BIT_ULL(0)
>> +#define DTE_FLAG_TV BIT_ULL(1)
>> +#define DTE_FLAG_IR BIT_ULL(61)
>> +#define DTE_FLAG_IW BIT_ULL(62)
>> +
>> +#define DTE_FLAG_IOTLB BIT_ULL(32)
>> +#define DTE_FLAG_GIOV BIT_ULL(54)
>> +#define DTE_FLAG_GV BIT_ULL(55)
>
> Minor thing, but would it make sense to group these according
> to which 64-bit word they are in? DTE_FLAG_IOTLB is in the
> second 64-bit word of the DTE, and the rest are in the first.
Sure. I will fix it in next version.
-Vasant
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields
2023-06-09 9:06 [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Vasant Hegde
2023-06-09 9:06 ` [PATCH 2/2] iommu/amd: Remove extern from function prototypes Vasant Hegde
2023-06-12 18:55 ` [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Jerry Snitselaar
@ 2023-06-16 14:34 ` Joerg Roedel
2 siblings, 0 replies; 6+ messages in thread
From: Joerg Roedel @ 2023-06-16 14:34 UTC (permalink / raw)
To: Vasant Hegde; +Cc: iommu, suravee.suthikulpanit, Yazen Ghannam
On Fri, Jun 09, 2023 at 09:06:30AM +0000, Vasant Hegde wrote:
> Make use of BIT macro when defining bitfields which makes it easy to read.
>
> No functional change intended.
>
> Suggested-by: Yazen Ghannam <yazen.ghannam@amd.com>
> Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
> ---
> drivers/iommu/amd/amd_iommu_types.h | 76 ++++++++++++++---------------
> 1 file changed, 38 insertions(+), 38 deletions(-)
Applied both, thanks.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2023-06-16 14:35 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-09 9:06 [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Vasant Hegde
2023-06-09 9:06 ` [PATCH 2/2] iommu/amd: Remove extern from function prototypes Vasant Hegde
2023-06-12 18:58 ` Jerry Snitselaar
2023-06-12 18:55 ` [PATCH 1/2] iommu/amd: Use BIT/BIT_ULL macro to define bit fields Jerry Snitselaar
2023-06-14 9:45 ` Vasant Hegde
2023-06-16 14:34 ` Joerg Roedel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).