From: Steven Kinney <steven.kinney-5C7GfCeVMHo@public.gmane.org>
To: tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org,
x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
joerg.roedel-5C7GfCeVMHo@public.gmane.org
Cc: kgene.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org,
swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org,
jkosina-AlSwsSmVLrQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
steven.kinney-5C7GfCeVMHo@public.gmane.org,
sebastian-E0PNVn5OA6ohrxcnuTQ+TQ@public.gmane.org,
bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
myron.stowe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Subject: Re-send the AMD IOMMUv2 performance counter patched and PCI quirk. Sorry for the noise.
Date: Fri, 16 Nov 2012 17:20:18 -0600 [thread overview]
Message-ID: <20121116232018.GA24141@skinney-Trinity> (raw)
[-- Attachment #1: Type: text/plain, Size: 82 bytes --]
Resending previous AMD IOMMUv2 patches due to improper extension on second
patch.
[-- Attachment #2: 0001-iommuv2-amd-add-quirk-for-15h-models-10h-1Fh.patch --]
[-- Type: text/x-diff, Size: 1843 bytes --]
>From 760e18a02c0bb7eb5f5e3ebc192d43931f4c753b Mon Sep 17 00:00:00 2001
From: "Steven L. Kinney" <steven.kinney-5C7GfCeVMHo@public.gmane.org>
Date: Fri, 16 Nov 2012 15:27:47 -0600
Subject: [PATCH] iommuv2/amd: Add quirk for AMD 15H_M10 IOMMUv2 Performance
Counters
Add AMD PCI device definition that will identify devices that relate to the
IOMMUv2 PC PCI quirk added for potential non-enable by BIOS.
On AMD family 15h models 10h-1Fh BIOS may not enable performance counters in
IOMMUv2's EFR. Add a quirk to enable the counters when this happens.
Signed-off-by: Steven L. Kinney <steven.kinney-5C7GfCeVMHo@public.gmane.org>
---
arch/x86/kernel/quirks.c | 17 +++++++++++++++++
include/linux/pci_ids.h | 2 ++
2 files changed, 19 insertions(+)
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index 1b27de5..9ea518b 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -567,3 +567,20 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F5,
quirk_amd_nb_node);
#endif
+
+#if defined(CONFIG_PCI) && defined(CONFIG_AMD_IOMMU_V2_PC)
+
+static void amd_force_iommu_v2_pc(struct pci_dev *dev)
+{
+ u32 val;
+
+ pci_read_config_dword(dev, 0x70, &val);
+ val |= (1<<9);
+ pci_write_config_dword(dev, 0x70, val);
+ dev_printk(KERN_DEBUG, &dev->dev, "Enabled IOMMUv2 PC\n");
+}
+
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M10H_IOMMU,
+ amd_force_iommu_v2_pc);
+
+#endif
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 9d36b82..70e20a3 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -396,6 +396,8 @@
/* AMD RD890 Chipset */
#define PCI_DEVICE_ID_RD890_IOMMU 0x5a23
+#define PCI_DEVICE_ID_AMD_15H_M10H_IOMMU 0x1419
+
#define PCI_VENDOR_ID_ADL 0x1005
#define PCI_DEVICE_ID_ADL_2301 0x2301
--
1.7.9.5
[-- Attachment #3: 0002-iommuv2-amd-enable-performance-counters-on-family-15h-models-10h-1Fh.patch --]
[-- Type: text/x-diff, Size: 6014 bytes --]
>From c51e45b34dd7075e9adc28fc1c00baecd07161db Mon Sep 17 00:00:00 2001
From: "Steven L. Kinney" <steven.kinney-5C7GfCeVMHo@public.gmane.org>
Date: Fri, 16 Nov 2012 15:47:14 -0600
Subject: [PATCH] iommuv2/amd: Enable Performance Counters On Family 15h
Models 10h-1Fh
Add Kernel configuration selection for AMD IOMMUv2 performance counters.
Add a check that will determine the configuration of the AMD IOMMUv2
performance counter(s) and extend the IOMMUv2 MMIO Region to account for the
additional PC register bank.
Add maximum IOMMUv2 bank/counter members to the amd_iommu structure that will
hold the relevant data concerning the available PC bank and counter resources.
Add code to iommu_init_pci that will check for IOMMUv2 PC HW support and
populate the max banks and counters into the amd_iommu structure.
Add exported functionality that will allow external drivers to obtain IOMMUv2
PC bank/counter resource information and manage the IOMMUv2 PC measurment
configuration. Bank and counter assignment is managed outside of this driver;
for example, within a perf IOMMUv2 PMU realization.
Signed-off-by: Steven L. Kinney <steven.kinney-5C7GfCeVMHo@public.gmane.org>
---
drivers/iommu/Kconfig | 10 +++++
drivers/iommu/amd_iommu_init.c | 86 +++++++++++++++++++++++++++++++++++++++
drivers/iommu/amd_iommu_types.h | 13 +++++-
3 files changed, 108 insertions(+), 1 deletion(-)
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index e39f9db..d732e31 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -73,6 +73,16 @@ config AMD_IOMMU_V2
hardware. Select this option if you want to use devices that support
the PCI PRI and PASID interface.
+# AMD IOMMUv2 Performance Counter support
+config AMD_IOMMU_V2_PC
+ bool "AMD IOMMUv2 Performance Counters (EXPERIMENTAL)"
+ depends on AMD_IOMMU_V2
+ ---help---
+ This option enables support for AMD IOMMUv2 Performance Counters.
+ Select this option if you want to enable IOMMUv2 Performance
+ Counters support.
+ If unsure, say N.
+
# Intel IOMMU support
config DMAR_TABLE
bool
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 81837b0..d3243af 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1145,6 +1145,20 @@ static int iommu_init_pci(struct amd_iommu *iommu)
if (iommu->cap & (1UL << IOMMU_CAP_NPCACHE))
amd_iommu_np_cache = true;
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+ if (iommu_feature(iommu, FEATURE_PC)) {
+ u32 val;
+ dev_printk(KERN_DEBUG, &iommu->dev->dev,
+ "AMD-Vi: IOMMUv2 perf counters supported\n");
+ val = readl(iommu->mmio_base + MMIO_CNTR_CONF_OFFSET);
+ iommu->max_banks = (u8) ((val >> 12) & 0x3f);
+ iommu->max_counters = (u8) ((val >> 7) & 0xf);
+ dev_printk(KERN_DEBUG, &iommu->dev->dev,
+ "AMD-Vi: %d counter banks, %d counters each\n",
+ iommu->max_banks, iommu->max_counters);
+ }
+#endif
+
if (is_rd890_iommu(iommu->dev)) {
int i, j;
@@ -2076,3 +2090,75 @@ bool amd_iommu_v2_supported(void)
return amd_iommu_v2_present;
}
EXPORT_SYMBOL(amd_iommu_v2_supported);
+
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+/****************************************************************************
+ *
+ * IOMMUv2 EFR Performance Counter support functionality. This code allows
+ * access to the IOMMUv2 PC functionality.
+ *
+ ****************************************************************************/
+
+u8 amd_iommu_v2_get_max_pc_banks(u16 devid)
+{
+ struct amd_iommu *iommu;
+
+ /* locate the iommu governing the devid */
+ iommu = amd_iommu_rlookup_table[devid];
+
+ if (iommu)
+ return iommu->max_banks;
+
+ return -ENODEV;
+}
+EXPORT_SYMBOL(amd_iommu_v2_get_max_pc_banks);
+
+u8 amd_iommu_v2_get_max_pc_counters(u16 devid)
+{
+ struct amd_iommu *iommu;
+
+ /* locate the iommu governing the devid */
+ iommu = amd_iommu_rlookup_table[devid];
+
+ if (iommu)
+ return iommu->max_counters;
+
+ return -ENODEV;
+}
+EXPORT_SYMBOL(amd_iommu_v2_get_max_pc_counters);
+
+int amd_iommu_v2_get_set_pc_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn,
+ long long *value, is_write)
+{
+ struct amd_iommu *iommu;
+ u32 offset;
+ u32 max_offset_lim;
+
+ /* locate the iommu associated with the device ID */
+ iommu = amd_iommu_rlookup_table[devid];
+ if (iommu == NULL)
+ return -ENODEV;
+
+ /* check for valid iommu pc register indexing */
+ if (fxn < 0 || fxn > 0x28 || (fxn & 7))
+ return -ENODEV;
+
+ offset = (u32)(((0x40|bank) << 12) | (cntr << 8) | fxn);
+
+ /* limit the offset to the hw defined mmio region aperture */
+ max_offset_lim = (u32)(((0x40|iommu->max_banks) << 12) |
+ (iommu->max_counters << 8) | 0x28);
+ if ((offset < IOMMU_V2_PC_REG_OFFSET) ||
+ (offset > max_offset_lim))
+ return -EINVAL;
+
+ if (is_write)
+ *value = readl(iommu->mmio_base + offset);
+ else
+ writel((u32)*value, iommu->mmio_base + offset);
+
+ return 0;
+}
+EXPORT_SYMBOL(amd_iommu_v2_get_set_pc_reg_val);
+#endif
+
diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
index c9aa3d0..6dc1f68 100644
--- a/drivers/iommu/amd_iommu_types.h
+++ b/drivers/iommu/amd_iommu_types.h
@@ -38,7 +38,12 @@
#define RLOOKUP_TABLE_ENTRY_SIZE (sizeof(void *))
/* Length of the MMIO region for the AMD IOMMU */
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+#define MMIO_REGION_LENGTH 0x80000
+#define IOMMU_V2_PC_REG_OFFSET 0x40000
+#else
#define MMIO_REGION_LENGTH 0x4000
+#endif
/* Capability offsets used by the driver */
#define MMIO_CAP_HDR_OFFSET 0x00
@@ -77,7 +82,7 @@
#define MMIO_STATUS_OFFSET 0x2020
#define MMIO_PPR_HEAD_OFFSET 0x2030
#define MMIO_PPR_TAIL_OFFSET 0x2038
-
+#define MMIO_CNTR_CONF_OFFSET 0x4000
/* Extended Feature Bits */
#define FEATURE_PREFETCH (1ULL<<0)
@@ -584,6 +589,12 @@ struct amd_iommu {
/* The l2 indirect registers */
u32 stored_l2[0x83];
+
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+ /* The maximum PC banks and counters/bank (PCSup=1) */
+ u8 max_banks;
+ u8 max_counters;
+#endif
};
struct devid_map {
--
1.7.9.5
[-- Attachment #4: Type: text/plain, Size: 0 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Steven Kinney <steven.kinney@amd.com>
To: <tglx@linutronix.de>, <mingo@redhat.com>, <hpa@zytor.com>,
<x86@kernel.org>, <joerg.roedel@amd.com>
Cc: <bhelgaas@google.com>, <sebastian@breakpoint.cc>,
<myron.stowe@redhat.com>, <hdoyu@nvidia.com>,
<swarren@wwwdotorg.org>, <jkosina@suse.cz>,
<kgene.kim@samsung.com>, <linux-kernel@vger.kernel.org>,
<iommu@lists.linux-foundation.org>, <steven.kinney@amd.com>
Subject: Re-send the AMD IOMMUv2 performance counter patched and PCI quirk. Sorry for the noise.
Date: Fri, 16 Nov 2012 17:20:18 -0600 [thread overview]
Message-ID: <20121116232018.GA24141@skinney-Trinity> (raw)
[-- Attachment #1: Type: text/plain, Size: 82 bytes --]
Resending previous AMD IOMMUv2 patches due to improper extension on second
patch.
[-- Attachment #2: 0001-iommuv2-amd-add-quirk-for-15h-models-10h-1Fh.patch --]
[-- Type: text/x-diff, Size: 1801 bytes --]
>From 760e18a02c0bb7eb5f5e3ebc192d43931f4c753b Mon Sep 17 00:00:00 2001
From: "Steven L. Kinney" <steven.kinney@amd.com>
Date: Fri, 16 Nov 2012 15:27:47 -0600
Subject: [PATCH] iommuv2/amd: Add quirk for AMD 15H_M10 IOMMUv2 Performance
Counters
Add AMD PCI device definition that will identify devices that relate to the
IOMMUv2 PC PCI quirk added for potential non-enable by BIOS.
On AMD family 15h models 10h-1Fh BIOS may not enable performance counters in
IOMMUv2's EFR. Add a quirk to enable the counters when this happens.
Signed-off-by: Steven L. Kinney <steven.kinney@amd.com>
---
arch/x86/kernel/quirks.c | 17 +++++++++++++++++
include/linux/pci_ids.h | 2 ++
2 files changed, 19 insertions(+)
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c
index 1b27de5..9ea518b 100644
--- a/arch/x86/kernel/quirks.c
+++ b/arch/x86/kernel/quirks.c
@@ -567,3 +567,20 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_NB_F5,
quirk_amd_nb_node);
#endif
+
+#if defined(CONFIG_PCI) && defined(CONFIG_AMD_IOMMU_V2_PC)
+
+static void amd_force_iommu_v2_pc(struct pci_dev *dev)
+{
+ u32 val;
+
+ pci_read_config_dword(dev, 0x70, &val);
+ val |= (1<<9);
+ pci_write_config_dword(dev, 0x70, val);
+ dev_printk(KERN_DEBUG, &dev->dev, "Enabled IOMMUv2 PC\n");
+}
+
+DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_15H_M10H_IOMMU,
+ amd_force_iommu_v2_pc);
+
+#endif
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 9d36b82..70e20a3 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -396,6 +396,8 @@
/* AMD RD890 Chipset */
#define PCI_DEVICE_ID_RD890_IOMMU 0x5a23
+#define PCI_DEVICE_ID_AMD_15H_M10H_IOMMU 0x1419
+
#define PCI_VENDOR_ID_ADL 0x1005
#define PCI_DEVICE_ID_ADL_2301 0x2301
--
1.7.9.5
[-- Attachment #3: 0002-iommuv2-amd-enable-performance-counters-on-family-15h-models-10h-1Fh.patch --]
[-- Type: text/x-diff, Size: 5972 bytes --]
>From c51e45b34dd7075e9adc28fc1c00baecd07161db Mon Sep 17 00:00:00 2001
From: "Steven L. Kinney" <steven.kinney@amd.com>
Date: Fri, 16 Nov 2012 15:47:14 -0600
Subject: [PATCH] iommuv2/amd: Enable Performance Counters On Family 15h
Models 10h-1Fh
Add Kernel configuration selection for AMD IOMMUv2 performance counters.
Add a check that will determine the configuration of the AMD IOMMUv2
performance counter(s) and extend the IOMMUv2 MMIO Region to account for the
additional PC register bank.
Add maximum IOMMUv2 bank/counter members to the amd_iommu structure that will
hold the relevant data concerning the available PC bank and counter resources.
Add code to iommu_init_pci that will check for IOMMUv2 PC HW support and
populate the max banks and counters into the amd_iommu structure.
Add exported functionality that will allow external drivers to obtain IOMMUv2
PC bank/counter resource information and manage the IOMMUv2 PC measurment
configuration. Bank and counter assignment is managed outside of this driver;
for example, within a perf IOMMUv2 PMU realization.
Signed-off-by: Steven L. Kinney <steven.kinney@amd.com>
---
drivers/iommu/Kconfig | 10 +++++
drivers/iommu/amd_iommu_init.c | 86 +++++++++++++++++++++++++++++++++++++++
drivers/iommu/amd_iommu_types.h | 13 +++++-
3 files changed, 108 insertions(+), 1 deletion(-)
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
index e39f9db..d732e31 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -73,6 +73,16 @@ config AMD_IOMMU_V2
hardware. Select this option if you want to use devices that support
the PCI PRI and PASID interface.
+# AMD IOMMUv2 Performance Counter support
+config AMD_IOMMU_V2_PC
+ bool "AMD IOMMUv2 Performance Counters (EXPERIMENTAL)"
+ depends on AMD_IOMMU_V2
+ ---help---
+ This option enables support for AMD IOMMUv2 Performance Counters.
+ Select this option if you want to enable IOMMUv2 Performance
+ Counters support.
+ If unsure, say N.
+
# Intel IOMMU support
config DMAR_TABLE
bool
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 81837b0..d3243af 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1145,6 +1145,20 @@ static int iommu_init_pci(struct amd_iommu *iommu)
if (iommu->cap & (1UL << IOMMU_CAP_NPCACHE))
amd_iommu_np_cache = true;
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+ if (iommu_feature(iommu, FEATURE_PC)) {
+ u32 val;
+ dev_printk(KERN_DEBUG, &iommu->dev->dev,
+ "AMD-Vi: IOMMUv2 perf counters supported\n");
+ val = readl(iommu->mmio_base + MMIO_CNTR_CONF_OFFSET);
+ iommu->max_banks = (u8) ((val >> 12) & 0x3f);
+ iommu->max_counters = (u8) ((val >> 7) & 0xf);
+ dev_printk(KERN_DEBUG, &iommu->dev->dev,
+ "AMD-Vi: %d counter banks, %d counters each\n",
+ iommu->max_banks, iommu->max_counters);
+ }
+#endif
+
if (is_rd890_iommu(iommu->dev)) {
int i, j;
@@ -2076,3 +2090,75 @@ bool amd_iommu_v2_supported(void)
return amd_iommu_v2_present;
}
EXPORT_SYMBOL(amd_iommu_v2_supported);
+
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+/****************************************************************************
+ *
+ * IOMMUv2 EFR Performance Counter support functionality. This code allows
+ * access to the IOMMUv2 PC functionality.
+ *
+ ****************************************************************************/
+
+u8 amd_iommu_v2_get_max_pc_banks(u16 devid)
+{
+ struct amd_iommu *iommu;
+
+ /* locate the iommu governing the devid */
+ iommu = amd_iommu_rlookup_table[devid];
+
+ if (iommu)
+ return iommu->max_banks;
+
+ return -ENODEV;
+}
+EXPORT_SYMBOL(amd_iommu_v2_get_max_pc_banks);
+
+u8 amd_iommu_v2_get_max_pc_counters(u16 devid)
+{
+ struct amd_iommu *iommu;
+
+ /* locate the iommu governing the devid */
+ iommu = amd_iommu_rlookup_table[devid];
+
+ if (iommu)
+ return iommu->max_counters;
+
+ return -ENODEV;
+}
+EXPORT_SYMBOL(amd_iommu_v2_get_max_pc_counters);
+
+int amd_iommu_v2_get_set_pc_reg_val(u16 devid, u8 bank, u8 cntr, u8 fxn,
+ long long *value, is_write)
+{
+ struct amd_iommu *iommu;
+ u32 offset;
+ u32 max_offset_lim;
+
+ /* locate the iommu associated with the device ID */
+ iommu = amd_iommu_rlookup_table[devid];
+ if (iommu == NULL)
+ return -ENODEV;
+
+ /* check for valid iommu pc register indexing */
+ if (fxn < 0 || fxn > 0x28 || (fxn & 7))
+ return -ENODEV;
+
+ offset = (u32)(((0x40|bank) << 12) | (cntr << 8) | fxn);
+
+ /* limit the offset to the hw defined mmio region aperture */
+ max_offset_lim = (u32)(((0x40|iommu->max_banks) << 12) |
+ (iommu->max_counters << 8) | 0x28);
+ if ((offset < IOMMU_V2_PC_REG_OFFSET) ||
+ (offset > max_offset_lim))
+ return -EINVAL;
+
+ if (is_write)
+ *value = readl(iommu->mmio_base + offset);
+ else
+ writel((u32)*value, iommu->mmio_base + offset);
+
+ return 0;
+}
+EXPORT_SYMBOL(amd_iommu_v2_get_set_pc_reg_val);
+#endif
+
diff --git a/drivers/iommu/amd_iommu_types.h b/drivers/iommu/amd_iommu_types.h
index c9aa3d0..6dc1f68 100644
--- a/drivers/iommu/amd_iommu_types.h
+++ b/drivers/iommu/amd_iommu_types.h
@@ -38,7 +38,12 @@
#define RLOOKUP_TABLE_ENTRY_SIZE (sizeof(void *))
/* Length of the MMIO region for the AMD IOMMU */
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+#define MMIO_REGION_LENGTH 0x80000
+#define IOMMU_V2_PC_REG_OFFSET 0x40000
+#else
#define MMIO_REGION_LENGTH 0x4000
+#endif
/* Capability offsets used by the driver */
#define MMIO_CAP_HDR_OFFSET 0x00
@@ -77,7 +82,7 @@
#define MMIO_STATUS_OFFSET 0x2020
#define MMIO_PPR_HEAD_OFFSET 0x2030
#define MMIO_PPR_TAIL_OFFSET 0x2038
-
+#define MMIO_CNTR_CONF_OFFSET 0x4000
/* Extended Feature Bits */
#define FEATURE_PREFETCH (1ULL<<0)
@@ -584,6 +589,12 @@ struct amd_iommu {
/* The l2 indirect registers */
u32 stored_l2[0x83];
+
+#ifdef CONFIG_AMD_IOMMU_V2_PC
+ /* The maximum PC banks and counters/bank (PCSup=1) */
+ u8 max_banks;
+ u8 max_counters;
+#endif
};
struct devid_map {
--
1.7.9.5
next reply other threads:[~2012-11-16 23:20 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-16 23:20 Steven Kinney [this message]
2012-11-16 23:20 ` Re-send the AMD IOMMUv2 performance counter patched and PCI quirk. Sorry for the noise Steven Kinney
2012-11-17 21:10 ` Andreas Herrmann
2012-11-26 14:54 ` Kinney, Steven
2012-11-26 14:54 ` Kinney, Steven
[not found] ` <57D41218901B4442B4AFF404D215911636355B-Vo+W8YXarribnmZ2XWmV+UEOCMrvLtNR@public.gmane.org>
2012-11-26 22:42 ` H. Peter Anvin
2012-11-26 22:42 ` H. Peter Anvin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20121116232018.GA24141@skinney-Trinity \
--to=steven.kinney-5c7gfcevmho@public.gmane.org \
--cc=bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
--cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
--cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=jkosina-AlSwsSmVLrQ@public.gmane.org \
--cc=joerg.roedel-5C7GfCeVMHo@public.gmane.org \
--cc=kgene.kim-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=myron.stowe-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=sebastian-E0PNVn5OA6ohrxcnuTQ+TQ@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
--cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
--cc=x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.