* [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support
@ 2022-06-29 22:13 Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 1/4] platform/x86/intel/vsec: Rework early hardware code Gayatri Kammela
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Gayatri Kammela @ 2022-06-29 22:13 UTC (permalink / raw)
To: hdegoede
Cc: markgross, david.e.box, srinivas.pandruvada, platform-driver-x86,
linux-kernel, Gayatri Kammela
Hi,
This patch set adds Raptor Lake support as well as PCI error recovery
support to PMT driver. It also has a rework patch and a fix for fixed
region handling.
Patch 1: Rework early hardware code
Patch 2: Add support for Raptor Lake
Patch 3: Fix fixed region handling
Patch 4: Add PCI error recovery support to Intel PMT
David E. Box (3):
platform/x86/intel/vsec: Rework early hardware code
platform/x86/intel/vsec: Add support for Raptor Lake
platform/x86/intel/pmt: telemetry: Fix fixed region handling
Gayatri Kammela (1):
platform/x86/intel/vsec: Add PCI error recovery support to Intel PMT
drivers/platform/x86/intel/pmt/class.c | 23 ++--
drivers/platform/x86/intel/pmt/telemetry.c | 18 ++-
drivers/platform/x86/intel/vsec.c | 130 ++++++++++++++++-----
drivers/platform/x86/intel/vsec.h | 11 +-
4 files changed, 136 insertions(+), 46 deletions(-)
base-commit: 03c765b0e3b4cb5063276b086c76f7a612856a9a
--
2.32.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 1/4] platform/x86/intel/vsec: Rework early hardware code
2022-06-29 22:13 [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Gayatri Kammela
@ 2022-06-29 22:13 ` Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 2/4] platform/x86/intel/vsec: Add support for Raptor Lake Gayatri Kammela
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Gayatri Kammela @ 2022-06-29 22:13 UTC (permalink / raw)
To: hdegoede
Cc: markgross, david.e.box, srinivas.pandruvada, platform-driver-x86,
linux-kernel, Gayatri Kammela
From: "David E. Box" <david.e.box@linux.intel.com>
In the Intel VSEC PCI driver, use a new VSEC_QUIRK_EARLY_HW flag in
driver_data to indicate the need for early hardware quirks in
auxiliary devices. Remove the separate PCI ID list maintained by the
Intel PMT auxiliary driver.
Cc: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Gayatri Kammela <gayatri.kammela@linux.intel.com>
---
drivers/platform/x86/intel/pmt/class.c | 23 ++++---------
drivers/platform/x86/intel/vsec.c | 46 ++++++++++++--------------
drivers/platform/x86/intel/vsec.h | 11 +++++-
3 files changed, 39 insertions(+), 41 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/class.c b/drivers/platform/x86/intel/pmt/class.c
index 1c9e3f3ea41c..53d7fd2943b4 100644
--- a/drivers/platform/x86/intel/pmt/class.c
+++ b/drivers/platform/x86/intel/pmt/class.c
@@ -20,25 +20,16 @@
#define PMT_XA_MAX INT_MAX
#define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX)
-/*
- * Early implementations of PMT on client platforms have some
- * differences from the server platforms (which use the Out Of Band
- * Management Services Module OOBMSM). This list tracks those
- * platforms as needed to handle those differences. Newer client
- * platforms are expected to be fully compatible with server.
- */
-static const struct pci_device_id pmt_telem_early_client_pci_ids[] = {
- { PCI_VDEVICE(INTEL, 0x467d) }, /* ADL */
- { PCI_VDEVICE(INTEL, 0x490e) }, /* DG1 */
- { PCI_VDEVICE(INTEL, 0x9a0d) }, /* TGL */
- { }
-};
-
bool intel_pmt_is_early_client_hw(struct device *dev)
{
- struct pci_dev *parent = to_pci_dev(dev->parent);
+ struct intel_vsec_device *ivdev = dev_to_ivdev(dev);
- return !!pci_match_id(pmt_telem_early_client_pci_ids, parent);
+ /*
+ * Early implementations of PMT on client platforms have some
+ * differences from the server platforms (which use the Out Of Band
+ * Management Services Module OOBMSM).
+ */
+ return !!(ivdev->info->quirks & VSEC_QUIRK_EARLY_HW);
}
EXPORT_SYMBOL_GPL(intel_pmt_is_early_client_hw);
diff --git a/drivers/platform/x86/intel/vsec.c b/drivers/platform/x86/intel/vsec.c
index bed436bf181f..d48df46e2e27 100644
--- a/drivers/platform/x86/intel/vsec.c
+++ b/drivers/platform/x86/intel/vsec.c
@@ -54,12 +54,6 @@ struct intel_vsec_header {
u32 offset;
};
-/* Platform specific data */
-struct intel_vsec_platform_info {
- struct intel_vsec_header **capabilities;
- unsigned long quirks;
-};
-
enum intel_vsec_id {
VSEC_ID_TELEMETRY = 2,
VSEC_ID_WATCHER = 3,
@@ -169,10 +163,11 @@ static int intel_vsec_add_aux(struct pci_dev *pdev, struct intel_vsec_device *in
}
static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *header,
- unsigned long quirks)
+ struct intel_vsec_platform_info *info)
{
struct intel_vsec_device *intel_vsec_dev;
struct resource *res, *tmp;
+ unsigned long quirks = info->quirks;
int i;
if (!intel_vsec_allowed(header->id) || intel_vsec_disabled(header->id, quirks))
@@ -216,7 +211,7 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *he
intel_vsec_dev->pcidev = pdev;
intel_vsec_dev->resource = res;
intel_vsec_dev->num_resources = header->num_entries;
- intel_vsec_dev->quirks = quirks;
+ intel_vsec_dev->info = info;
if (header->id == VSEC_ID_SDSI)
intel_vsec_dev->ida = &intel_vsec_sdsi_ida;
@@ -226,14 +221,15 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *he
return intel_vsec_add_aux(pdev, intel_vsec_dev, intel_vsec_name(header->id));
}
-static bool intel_vsec_walk_header(struct pci_dev *pdev, unsigned long quirks,
- struct intel_vsec_header **header)
+static bool intel_vsec_walk_header(struct pci_dev *pdev,
+ struct intel_vsec_platform_info *info)
{
+ struct intel_vsec_header **header = info->capabilities;
bool have_devices = false;
int ret;
for ( ; *header; header++) {
- ret = intel_vsec_add_dev(pdev, *header, quirks);
+ ret = intel_vsec_add_dev(pdev, *header, info);
if (ret)
dev_info(&pdev->dev, "Could not add device for DVSEC id %d\n",
(*header)->id);
@@ -244,7 +240,8 @@ static bool intel_vsec_walk_header(struct pci_dev *pdev, unsigned long quirks,
return have_devices;
}
-static bool intel_vsec_walk_dvsec(struct pci_dev *pdev, unsigned long quirks)
+static bool intel_vsec_walk_dvsec(struct pci_dev *pdev,
+ struct intel_vsec_platform_info *info)
{
bool have_devices = false;
int pos = 0;
@@ -283,7 +280,7 @@ static bool intel_vsec_walk_dvsec(struct pci_dev *pdev, unsigned long quirks)
pci_read_config_dword(pdev, pos + PCI_DVSEC_HEADER2, &hdr);
header.id = PCI_DVSEC_HEADER2_ID(hdr);
- ret = intel_vsec_add_dev(pdev, &header, quirks);
+ ret = intel_vsec_add_dev(pdev, &header, info);
if (ret)
continue;
@@ -293,7 +290,8 @@ static bool intel_vsec_walk_dvsec(struct pci_dev *pdev, unsigned long quirks)
return have_devices;
}
-static bool intel_vsec_walk_vsec(struct pci_dev *pdev, unsigned long quirks)
+static bool intel_vsec_walk_vsec(struct pci_dev *pdev,
+ struct intel_vsec_platform_info *info)
{
bool have_devices = false;
int pos = 0;
@@ -327,7 +325,7 @@ static bool intel_vsec_walk_vsec(struct pci_dev *pdev, unsigned long quirks)
header.tbir = INTEL_DVSEC_TABLE_BAR(table);
header.offset = INTEL_DVSEC_TABLE_OFFSET(table);
- ret = intel_vsec_add_dev(pdev, &header, quirks);
+ ret = intel_vsec_add_dev(pdev, &header, info);
if (ret)
continue;
@@ -341,7 +339,6 @@ static int intel_vsec_pci_probe(struct pci_dev *pdev, const struct pci_device_id
{
struct intel_vsec_platform_info *info;
bool have_devices = false;
- unsigned long quirks = 0;
int ret;
ret = pcim_enable_device(pdev);
@@ -349,17 +346,17 @@ static int intel_vsec_pci_probe(struct pci_dev *pdev, const struct pci_device_id
return ret;
info = (struct intel_vsec_platform_info *)id->driver_data;
- if (info)
- quirks = info->quirks;
+ if (!info)
+ return -EINVAL;
- if (intel_vsec_walk_dvsec(pdev, quirks))
+ if (intel_vsec_walk_dvsec(pdev, info))
have_devices = true;
- if (intel_vsec_walk_vsec(pdev, quirks))
+ if (intel_vsec_walk_vsec(pdev, info))
have_devices = true;
if (info && (info->quirks & VSEC_QUIRK_NO_DVSEC) &&
- intel_vsec_walk_header(pdev, quirks, info->capabilities))
+ intel_vsec_walk_header(pdev, info))
have_devices = true;
if (!have_devices)
@@ -370,7 +367,8 @@ static int intel_vsec_pci_probe(struct pci_dev *pdev, const struct pci_device_id
/* TGL info */
static const struct intel_vsec_platform_info tgl_info = {
- .quirks = VSEC_QUIRK_NO_WATCHER | VSEC_QUIRK_NO_CRASHLOG | VSEC_QUIRK_TABLE_SHIFT,
+ .quirks = VSEC_QUIRK_NO_WATCHER | VSEC_QUIRK_NO_CRASHLOG |
+ VSEC_QUIRK_TABLE_SHIFT | VSEC_QUIRK_EARLY_HW,
};
/* DG1 info */
@@ -390,7 +388,7 @@ static struct intel_vsec_header *dg1_capabilities[] = {
static const struct intel_vsec_platform_info dg1_info = {
.capabilities = dg1_capabilities,
- .quirks = VSEC_QUIRK_NO_DVSEC,
+ .quirks = VSEC_QUIRK_NO_DVSEC | VSEC_QUIRK_EARLY_HW,
};
#define PCI_DEVICE_ID_INTEL_VSEC_ADL 0x467d
@@ -400,7 +398,7 @@ static const struct intel_vsec_platform_info dg1_info = {
static const struct pci_device_id intel_vsec_pci_ids[] = {
{ PCI_DEVICE_DATA(INTEL, VSEC_ADL, &tgl_info) },
{ PCI_DEVICE_DATA(INTEL, VSEC_DG1, &dg1_info) },
- { PCI_DEVICE_DATA(INTEL, VSEC_OOBMSM, NULL) },
+ { PCI_DEVICE_DATA(INTEL, VSEC_OOBMSM, &(struct intel_vsec_platform_info) {}) },
{ PCI_DEVICE_DATA(INTEL, VSEC_TGL, &tgl_info) },
{ }
};
diff --git a/drivers/platform/x86/intel/vsec.h b/drivers/platform/x86/intel/vsec.h
index 4cc36678e8c5..3deeb05cf394 100644
--- a/drivers/platform/x86/intel/vsec.h
+++ b/drivers/platform/x86/intel/vsec.h
@@ -20,6 +20,15 @@ enum intel_vsec_quirks {
/* DVSEC not present (provided in driver data) */
VSEC_QUIRK_NO_DVSEC = BIT(3),
+
+ /* Platforms requiring quirk in the auxiliary driver */
+ VSEC_QUIRK_EARLY_HW = BIT(4),
+};
+
+/* Platform specific data */
+struct intel_vsec_platform_info {
+ struct intel_vsec_header **capabilities;
+ unsigned long quirks;
};
struct intel_vsec_device {
@@ -27,7 +36,7 @@ struct intel_vsec_device {
struct pci_dev *pcidev;
struct resource *resource;
struct ida *ida;
- unsigned long quirks;
+ struct intel_vsec_platform_info *info;
int num_resources;
};
--
2.32.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 2/4] platform/x86/intel/vsec: Add support for Raptor Lake
2022-06-29 22:13 [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 1/4] platform/x86/intel/vsec: Rework early hardware code Gayatri Kammela
@ 2022-06-29 22:13 ` Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 3/4] platform/x86/intel/pmt: telemetry: Fix fixed region handling Gayatri Kammela
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Gayatri Kammela @ 2022-06-29 22:13 UTC (permalink / raw)
To: hdegoede
Cc: markgross, david.e.box, srinivas.pandruvada, platform-driver-x86,
linux-kernel, Gayatri Kammela
From: "David E. Box" <david.e.box@linux.intel.com>
Add Raptor Lake support to Intel's PMT driver.
Cc: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Gayatri Kammela <gayatri.kammela@linux.intel.com>
---
drivers/platform/x86/intel/vsec.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/platform/x86/intel/vsec.c b/drivers/platform/x86/intel/vsec.c
index d48df46e2e27..9368a3d587ab 100644
--- a/drivers/platform/x86/intel/vsec.c
+++ b/drivers/platform/x86/intel/vsec.c
@@ -394,11 +394,13 @@ static const struct intel_vsec_platform_info dg1_info = {
#define PCI_DEVICE_ID_INTEL_VSEC_ADL 0x467d
#define PCI_DEVICE_ID_INTEL_VSEC_DG1 0x490e
#define PCI_DEVICE_ID_INTEL_VSEC_OOBMSM 0x09a7
+#define PCI_DEVICE_ID_INTEL_VSEC_RPL 0xa77d
#define PCI_DEVICE_ID_INTEL_VSEC_TGL 0x9a0d
static const struct pci_device_id intel_vsec_pci_ids[] = {
{ PCI_DEVICE_DATA(INTEL, VSEC_ADL, &tgl_info) },
{ PCI_DEVICE_DATA(INTEL, VSEC_DG1, &dg1_info) },
{ PCI_DEVICE_DATA(INTEL, VSEC_OOBMSM, &(struct intel_vsec_platform_info) {}) },
+ { PCI_DEVICE_DATA(INTEL, VSEC_RPL, &tgl_info) },
{ PCI_DEVICE_DATA(INTEL, VSEC_TGL, &tgl_info) },
{ }
};
--
2.32.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 3/4] platform/x86/intel/pmt: telemetry: Fix fixed region handling
2022-06-29 22:13 [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 1/4] platform/x86/intel/vsec: Rework early hardware code Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 2/4] platform/x86/intel/vsec: Add support for Raptor Lake Gayatri Kammela
@ 2022-06-29 22:13 ` Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 4/4] platform/x86/intel/vsec: Add PCI error recovery support to Intel PMT Gayatri Kammela
2022-07-02 9:54 ` [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Hans de Goede
4 siblings, 0 replies; 7+ messages in thread
From: Gayatri Kammela @ 2022-06-29 22:13 UTC (permalink / raw)
To: hdegoede
Cc: markgross, david.e.box, srinivas.pandruvada, platform-driver-x86,
linux-kernel, Gayatri Kammela
From: "David E. Box" <david.e.box@linux.intel.com>
Use the telem_type and the fixed block guid to determine if an entry is a
fixed region. For certain platforms we don't support this.
Cc: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Gayatri Kammela <gayatri.kammela@linux.intel.com>
---
drivers/platform/x86/intel/pmt/telemetry.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/telemetry.c b/drivers/platform/x86/intel/pmt/telemetry.c
index f73ecfd4a309..5e4009c05ecf 100644
--- a/drivers/platform/x86/intel/pmt/telemetry.c
+++ b/drivers/platform/x86/intel/pmt/telemetry.c
@@ -23,12 +23,19 @@
#define TELEM_GUID_OFFSET 0x4
#define TELEM_BASE_OFFSET 0x8
#define TELEM_ACCESS(v) ((v) & GENMASK(3, 0))
+#define TELEM_TYPE(v) (((v) & GENMASK(7, 4)) >> 4)
/* size is in bytes */
#define TELEM_SIZE(v) (((v) & GENMASK(27, 12)) >> 10)
/* Used by client hardware to identify a fixed telemetry entry*/
#define TELEM_CLIENT_FIXED_BLOCK_GUID 0x10000000
+enum telem_type {
+ TELEM_TYPE_PUNIT = 0,
+ TELEM_TYPE_CRASHLOG,
+ TELEM_TYPE_PUNIT_FIXED,
+};
+
struct pmt_telem_priv {
int num_entries;
struct intel_pmt_entry entry[];
@@ -39,10 +46,15 @@ static bool pmt_telem_region_overlaps(struct intel_pmt_entry *entry,
{
u32 guid = readl(entry->disc_table + TELEM_GUID_OFFSET);
- if (guid != TELEM_CLIENT_FIXED_BLOCK_GUID)
- return false;
+ if (intel_pmt_is_early_client_hw(dev)) {
+ u32 type = TELEM_TYPE(readl(entry->disc_table));
+
+ if ((type == TELEM_TYPE_PUNIT_FIXED) ||
+ (guid == TELEM_CLIENT_FIXED_BLOCK_GUID))
+ return true;
+ }
- return intel_pmt_is_early_client_hw(dev);
+ return false;
}
static int pmt_telem_header_decode(struct intel_pmt_entry *entry,
--
2.32.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v1 4/4] platform/x86/intel/vsec: Add PCI error recovery support to Intel PMT
2022-06-29 22:13 [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Gayatri Kammela
` (2 preceding siblings ...)
2022-06-29 22:13 ` [PATCH v1 3/4] platform/x86/intel/pmt: telemetry: Fix fixed region handling Gayatri Kammela
@ 2022-06-29 22:13 ` Gayatri Kammela
2022-07-02 9:54 ` [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Hans de Goede
4 siblings, 0 replies; 7+ messages in thread
From: Gayatri Kammela @ 2022-06-29 22:13 UTC (permalink / raw)
To: hdegoede
Cc: markgross, david.e.box, srinivas.pandruvada, platform-driver-x86,
linux-kernel, Gayatri Kammela, David E Box
Add PCI error recovery support for Intel PMT driver to recover
from PCI fatal errors
Cc: Srinivas Pandruvada <srinivas.pandruvada@intel.com>
Cc: David E Box <david.e.box@intel.com>
Signed-off-by: Gayatri Kammela <gayatri.kammela@linux.intel.com>
---
drivers/platform/x86/intel/vsec.c | 82 ++++++++++++++++++++++++++++++-
1 file changed, 80 insertions(+), 2 deletions(-)
diff --git a/drivers/platform/x86/intel/vsec.c b/drivers/platform/x86/intel/vsec.c
index 9368a3d587ab..544493ae85b7 100644
--- a/drivers/platform/x86/intel/vsec.c
+++ b/drivers/platform/x86/intel/vsec.c
@@ -15,6 +15,7 @@
#include <linux/auxiliary_bus.h>
#include <linux/bits.h>
+#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/idr.h>
#include <linux/module.h>
@@ -30,9 +31,13 @@
#define INTEL_DVSEC_TABLE_BAR(x) ((x) & GENMASK(2, 0))
#define INTEL_DVSEC_TABLE_OFFSET(x) ((x) & GENMASK(31, 3))
#define TABLE_OFFSET_SHIFT 3
+#define PMT_XA_START 0
+#define PMT_XA_MAX INT_MAX
+#define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX)
static DEFINE_IDA(intel_vsec_ida);
static DEFINE_IDA(intel_vsec_sdsi_ida);
+static DEFINE_XARRAY_ALLOC(auxdev_array);
/**
* struct intel_vsec_header - Common fields of Intel VSEC and DVSEC registers.
@@ -132,7 +137,7 @@ static int intel_vsec_add_aux(struct pci_dev *pdev, struct intel_vsec_device *in
const char *name)
{
struct auxiliary_device *auxdev = &intel_vsec_dev->auxdev;
- int ret;
+ int ret, id;
ret = ida_alloc(intel_vsec_dev->ida, GFP_KERNEL);
if (ret < 0) {
@@ -159,7 +164,18 @@ static int intel_vsec_add_aux(struct pci_dev *pdev, struct intel_vsec_device *in
return ret;
}
- return devm_add_action_or_reset(&pdev->dev, intel_vsec_remove_aux, auxdev);
+ ret = devm_add_action_or_reset(&pdev->dev, intel_vsec_remove_aux,
+ auxdev);
+ if (ret < 0)
+ return ret;
+
+ /* Add auxdev to list */
+ ret = xa_alloc(&auxdev_array, &id, intel_vsec_dev, PMT_XA_LIMIT,
+ GFP_KERNEL);
+ if (ret)
+ return ret;
+
+ return 0;
}
static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *header,
@@ -345,6 +361,7 @@ static int intel_vsec_pci_probe(struct pci_dev *pdev, const struct pci_device_id
if (ret)
return ret;
+ pci_save_state(pdev);
info = (struct intel_vsec_platform_info *)id->driver_data;
if (!info)
return -EINVAL;
@@ -406,10 +423,71 @@ static const struct pci_device_id intel_vsec_pci_ids[] = {
};
MODULE_DEVICE_TABLE(pci, intel_vsec_pci_ids);
+static pci_ers_result_t intel_vsec_pci_error_detected(struct pci_dev *pdev,
+ pci_channel_state_t state)
+{
+ pci_channel_state_t status = PCI_ERS_RESULT_NEED_RESET;
+
+ dev_info(&pdev->dev, "PCI error detected, state %d", state);
+
+ if (state == pci_channel_io_perm_failure)
+ status = PCI_ERS_RESULT_DISCONNECT;
+ else
+ pci_disable_device(pdev);
+
+ return status;
+}
+
+static pci_ers_result_t intel_vsec_pci_slot_reset(struct pci_dev *pdev)
+{
+ struct intel_vsec_device *intel_vsec_dev;
+ pci_channel_state_t status = PCI_ERS_RESULT_DISCONNECT;
+ const struct pci_device_id *pci_dev_id;
+ unsigned long index;
+
+ dev_info(&pdev->dev, "Resetting PCI slot\n");
+
+ msleep(2000);
+ if (pci_enable_device(pdev)) {
+ dev_info(&pdev->dev,
+ "Failed to re-enable PCI device after reset.\n");
+ goto out;
+ }
+
+ status = PCI_ERS_RESULT_RECOVERED;
+
+ xa_for_each(&auxdev_array, index, intel_vsec_dev) {
+ /* check if pdev doesn't match */
+ if (pdev != intel_vsec_dev->pcidev)
+ continue;
+ devm_release_action(&pdev->dev, intel_vsec_remove_aux,
+ &intel_vsec_dev->auxdev);
+ }
+ pci_disable_device(pdev);
+ pci_restore_state(pdev);
+ pci_dev_id = pci_match_id(intel_vsec_pci_ids, pdev);
+ intel_vsec_pci_probe(pdev, pci_dev_id);
+
+out:
+ return status;
+}
+
+void intel_vsec_pci_resume(struct pci_dev *pdev)
+{
+ dev_info(&pdev->dev, "Done resuming PCI device\n");
+}
+
+const struct pci_error_handlers intel_vsec_pci_err_handlers = {
+ .error_detected = intel_vsec_pci_error_detected,
+ .slot_reset = intel_vsec_pci_slot_reset,
+ .resume = intel_vsec_pci_resume,
+};
+
static struct pci_driver intel_vsec_pci_driver = {
.name = "intel_vsec",
.id_table = intel_vsec_pci_ids,
.probe = intel_vsec_pci_probe,
+ .err_handler = &intel_vsec_pci_err_handlers,
};
module_pci_driver(intel_vsec_pci_driver);
--
2.32.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support
2022-06-29 22:13 [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Gayatri Kammela
` (3 preceding siblings ...)
2022-06-29 22:13 ` [PATCH v1 4/4] platform/x86/intel/vsec: Add PCI error recovery support to Intel PMT Gayatri Kammela
@ 2022-07-02 9:54 ` Hans de Goede
2022-07-05 19:47 ` Kammela, Gayatri
4 siblings, 1 reply; 7+ messages in thread
From: Hans de Goede @ 2022-07-02 9:54 UTC (permalink / raw)
To: Gayatri Kammela
Cc: markgross, david.e.box, srinivas.pandruvada, platform-driver-x86,
linux-kernel
Hi,
On 6/30/22 00:13, Gayatri Kammela wrote:
> Hi,
>
> This patch set adds Raptor Lake support as well as PCI error recovery
> support to PMT driver. It also has a rework patch and a fix for fixed
> region handling.
>
> Patch 1: Rework early hardware code
> Patch 2: Add support for Raptor Lake
> Patch 3: Fix fixed region handling
> Patch 4: Add PCI error recovery support to Intel PMT
Thank you for your patch-series, I've applied the series to my
review-hans branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans
Note it will show up in my review-hans branch once I've pushed my
local branch there, which might take a while.
Once I've run some tests on this branch the patches there will be
added to the platform-drivers-x86/for-next branch and eventually
will be included in the pdx86 pull-request to Linus for the next
merge-window.
Regards,
Hans
>
> David E. Box (3):
> platform/x86/intel/vsec: Rework early hardware code
> platform/x86/intel/vsec: Add support for Raptor Lake
> platform/x86/intel/pmt: telemetry: Fix fixed region handling
>
> Gayatri Kammela (1):
> platform/x86/intel/vsec: Add PCI error recovery support to Intel PMT
>
> drivers/platform/x86/intel/pmt/class.c | 23 ++--
> drivers/platform/x86/intel/pmt/telemetry.c | 18 ++-
> drivers/platform/x86/intel/vsec.c | 130 ++++++++++++++++-----
> drivers/platform/x86/intel/vsec.h | 11 +-
> 4 files changed, 136 insertions(+), 46 deletions(-)
>
>
> base-commit: 03c765b0e3b4cb5063276b086c76f7a612856a9a
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support
2022-07-02 9:54 ` [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Hans de Goede
@ 2022-07-05 19:47 ` Kammela, Gayatri
0 siblings, 0 replies; 7+ messages in thread
From: Kammela, Gayatri @ 2022-07-05 19:47 UTC (permalink / raw)
To: Hans de Goede
Cc: markgross, david.e.box, srinivas.pandruvada, platform-driver-x86,
linux-kernel
On 7/2/2022 2:54 AM, Hans de Goede wrote:
> Hi,
>
> On 6/30/22 00:13, Gayatri Kammela wrote:
>> Hi,
>>
>> This patch set adds Raptor Lake support as well as PCI error recovery
>> support to PMT driver. It also has a rework patch and a fix for fixed
>> region handling.
>>
>> Patch 1: Rework early hardware code
>> Patch 2: Add support for Raptor Lake
>> Patch 3: Fix fixed region handling
>> Patch 4: Add PCI error recovery support to Intel PMT
> Thank you for your patch-series, I've applied the series to my
> review-hans branch:
> https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans
>
> Note it will show up in my review-hans branch once I've pushed my
> local branch there, which might take a while.
>
> Once I've run some tests on this branch the patches there will be
> added to the platform-drivers-x86/for-next branch and eventually
> will be included in the pdx86 pull-request to Linus for the next
> merge-window.
>
> Regards,
>
> Hans
>
Thank you Hans!
>> David E. Box (3):
>> platform/x86/intel/vsec: Rework early hardware code
>> platform/x86/intel/vsec: Add support for Raptor Lake
>> platform/x86/intel/pmt: telemetry: Fix fixed region handling
>>
>> Gayatri Kammela (1):
>> platform/x86/intel/vsec: Add PCI error recovery support to Intel PMT
>>
>> drivers/platform/x86/intel/pmt/class.c | 23 ++--
>> drivers/platform/x86/intel/pmt/telemetry.c | 18 ++-
>> drivers/platform/x86/intel/vsec.c | 130 ++++++++++++++++-----
>> drivers/platform/x86/intel/vsec.h | 11 +-
>> 4 files changed, 136 insertions(+), 46 deletions(-)
>>
>>
>> base-commit: 03c765b0e3b4cb5063276b086c76f7a612856a9a
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-07-05 19:47 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-29 22:13 [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 1/4] platform/x86/intel/vsec: Rework early hardware code Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 2/4] platform/x86/intel/vsec: Add support for Raptor Lake Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 3/4] platform/x86/intel/pmt: telemetry: Fix fixed region handling Gayatri Kammela
2022-06-29 22:13 ` [PATCH v1 4/4] platform/x86/intel/vsec: Add PCI error recovery support to Intel PMT Gayatri Kammela
2022-07-02 9:54 ` [PATCH v1 0/4] Add Raptor Lake and PCI error recovery support Hans de Goede
2022-07-05 19:47 ` Kammela, Gayatri
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.