2020-09-28 04:41:57

by Mario Limonciello

[permalink] [raw]
Subject: [PATCH 0/3] Improve s0ix flows for systems i219LM

commit e086ba2fccda ("e1000e: disable s0ix entry and exit flows for ME systems")
disabled s0ix flows for systems that have various incarnations of the
i219-LM ethernet controller. This was done because of some regressions
caused by an earlier
commit 632fbd5eb5b0e ("e1000e: fix S0ix flows for cable connected case")
with i219-LM controller.

Performing suspend to idle with these ethernet controllers requires a properly
configured system. To make enabling such systems easier, this patch
series offers configuration options to enable/disable the flows.

The flows have also been confirmed to be configured correctly on Dell's Latitude
and Precision CML systems containing the i219-LM controller, when the kernel also
contains the fix for s0i3.2 entry here:
https://lists.osuosl.org/pipermail/intel-wired-lan/Week-of-Mon-20200914/021361.html

Patches 2 and 3 will turn the behavior on by default for Dell's CML systems.
These patches should only be carried if that patch linked above is also applied.

Mario Limonciello (3):
e1000e: allow turning s0ix flows on for systems with ME
e1000e: Add Dell's Comet Lake systems into s0ix heuristics
e1000e: Add more Dell CML systems into s0ix heuristics

.../device_drivers/ethernet/intel/e1000e.rst | 23 ++
drivers/net/ethernet/intel/Kconfig | 1 +
drivers/net/ethernet/intel/e1000e/e1000.h | 7 +
drivers/net/ethernet/intel/e1000e/netdev.c | 64 +++---
drivers/net/ethernet/intel/e1000e/param.c | 209 ++++++++++++++++++
5 files changed, 266 insertions(+), 38 deletions(-)

--
2.25.1


2020-09-28 04:42:03

by Mario Limonciello

[permalink] [raw]
Subject: [PATCH 1/3] e1000e: allow turning s0ix flows on for systems with ME

S0ix for GBE flows are needed for allowing the system to get into deepest
power state, but these require coordination of components outside of
control of Linux kernel. For systems that have confirmed to coordinate
this properly, allow turning on the s0ix flows at load time or runtime.

Fixes: e086ba2fccda ("e1000e: disable s0ix entry and exit flows for ME systems")
Signed-off-by: Mario Limonciello <[email protected]>
---
.../device_drivers/ethernet/intel/e1000e.rst | 23 ++++
drivers/net/ethernet/intel/e1000e/e1000.h | 7 ++
drivers/net/ethernet/intel/e1000e/netdev.c | 64 +++++-----
drivers/net/ethernet/intel/e1000e/param.c | 110 ++++++++++++++++++
4 files changed, 166 insertions(+), 38 deletions(-)

diff --git a/Documentation/networking/device_drivers/ethernet/intel/e1000e.rst b/Documentation/networking/device_drivers/ethernet/intel/e1000e.rst
index f49cd370e7bf..da029b703573 100644
--- a/Documentation/networking/device_drivers/ethernet/intel/e1000e.rst
+++ b/Documentation/networking/device_drivers/ethernet/intel/e1000e.rst
@@ -249,6 +249,29 @@ Debug

This parameter adjusts the level of debug messages displayed in the system logs.

+EnableS0ix
+----------
+:Valid Range: 0, 1, 2
+:Default Value: 1 (Use Heuristics)
+
+ +-------+----------------+
+ | Value | EnableS0ix |
+ +=======+================+
+ | 0 | Disabled |
+ +-------+----------------+
+ | 1 | Use Heuristics |
+ +-------+----------------+
+ | 2 | Enabled |
+ +-------+----------------+
+
+Controls whether the e1000e driver will attempt s0ix flows. S0ix flows require
+correct platform configuration. By default the e1000e driver will use some heuristics
+to decide whether to enable s0ix. This parameter can be used to override heuristics.
+
+Additionally a sysfs file "enable_s0ix" will be present that can change the value at
+runtime.
+
+Note: This option is only effective on Cannon Point or later hardware.

Additional Features and Configurations
======================================
diff --git a/drivers/net/ethernet/intel/e1000e/e1000.h b/drivers/net/ethernet/intel/e1000e/e1000.h
index ba7a0f8f6937..32262fa7e085 100644
--- a/drivers/net/ethernet/intel/e1000e/e1000.h
+++ b/drivers/net/ethernet/intel/e1000e/e1000.h
@@ -436,6 +436,7 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca);
#define FLAG2_DFLT_CRC_STRIPPING BIT(12)
#define FLAG2_CHECK_RX_HWTSTAMP BIT(13)
#define FLAG2_CHECK_SYSTIM_OVERFLOW BIT(14)
+#define FLAG2_ENABLE_S0IX_FLOWS BIT(15)

#define E1000_RX_DESC_PS(R, i) \
(&(((union e1000_rx_desc_packet_split *)((R).desc))[i]))
@@ -462,6 +463,12 @@ enum latency_range {
extern char e1000e_driver_name[];

void e1000e_check_options(struct e1000_adapter *adapter);
+ssize_t enable_s0ix_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count);
+ssize_t enable_s0ix_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf);
void e1000e_set_ethtool_ops(struct net_device *netdev);

int e1000e_open(struct net_device *netdev);
diff --git a/drivers/net/ethernet/intel/e1000e/netdev.c b/drivers/net/ethernet/intel/e1000e/netdev.c
index 664e8ccc88d2..4359e809d684 100644
--- a/drivers/net/ethernet/intel/e1000e/netdev.c
+++ b/drivers/net/ethernet/intel/e1000e/netdev.c
@@ -103,44 +103,16 @@ static const struct e1000_reg_info e1000_reg_info_tbl[] = {
{0, NULL}
};

-struct e1000e_me_supported {
- u16 device_id; /* supported device ID */
-};
+static DEVICE_ATTR_RW(enable_s0ix);

-static const struct e1000e_me_supported me_supported[] = {
- {E1000_DEV_ID_PCH_LPT_I217_LM},
- {E1000_DEV_ID_PCH_LPTLP_I218_LM},
- {E1000_DEV_ID_PCH_I218_LM2},
- {E1000_DEV_ID_PCH_I218_LM3},
- {E1000_DEV_ID_PCH_SPT_I219_LM},
- {E1000_DEV_ID_PCH_SPT_I219_LM2},
- {E1000_DEV_ID_PCH_LBG_I219_LM3},
- {E1000_DEV_ID_PCH_SPT_I219_LM4},
- {E1000_DEV_ID_PCH_SPT_I219_LM5},
- {E1000_DEV_ID_PCH_CNP_I219_LM6},
- {E1000_DEV_ID_PCH_CNP_I219_LM7},
- {E1000_DEV_ID_PCH_ICP_I219_LM8},
- {E1000_DEV_ID_PCH_ICP_I219_LM9},
- {E1000_DEV_ID_PCH_CMP_I219_LM10},
- {E1000_DEV_ID_PCH_CMP_I219_LM11},
- {E1000_DEV_ID_PCH_CMP_I219_LM12},
- {E1000_DEV_ID_PCH_TGP_I219_LM13},
- {E1000_DEV_ID_PCH_TGP_I219_LM14},
- {E1000_DEV_ID_PCH_TGP_I219_LM15},
- {0}
+static struct attribute *e1000e_attrs[] = {
+ &dev_attr_enable_s0ix.attr,
+ NULL,
};

-static bool e1000e_check_me(u16 device_id)
-{
- struct e1000e_me_supported *id;
-
- for (id = (struct e1000e_me_supported *)me_supported;
- id->device_id; id++)
- if (device_id == id->device_id)
- return true;
-
- return false;
-}
+static struct attribute_group e1000e_group = {
+ .attrs = e1000e_attrs,
+};

/**
* __ew32_prepare - prepare to write to MAC CSR register on certain parts
@@ -4218,7 +4190,7 @@ void e1000e_reset(struct e1000_adapter *adapter)

/**
* e1000e_trigger_lsc - trigger an LSC interrupt
- * @adapter:
+ * @adapter:
*
* Fire a link status change interrupt to start the watchdog.
**/
@@ -6949,7 +6921,7 @@ static __maybe_unused int e1000e_pm_suspend(struct device *dev)

/* Introduce S0ix implementation */
if (hw->mac.type >= e1000_pch_cnp &&
- !e1000e_check_me(hw->adapter->pdev->device))
+ adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS)
e1000e_s0ix_entry_flow(adapter);

return rc;
@@ -6965,7 +6937,7 @@ static __maybe_unused int e1000e_pm_resume(struct device *dev)

/* Introduce S0ix implementation */
if (hw->mac.type >= e1000_pch_cnp &&
- !e1000e_check_me(hw->adapter->pdev->device))
+ adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS)
e1000e_s0ix_exit_flow(adapter);

rc = __e1000_resume(pdev);
@@ -7629,6 +7601,13 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (!(adapter->flags & FLAG_HAS_AMT))
e1000e_get_hw_control(adapter);

+ /* offer to turn on/off s0ix flows */
+ if (hw->mac.type >= e1000_pch_cnp) {
+ ret_val = sysfs_create_group(&pdev->dev.kobj, &e1000e_group);
+ if (ret_val)
+ goto err_sysfs;
+ }
+
strlcpy(netdev->name, "eth%d", sizeof(netdev->name));
err = register_netdev(netdev);
if (err)
@@ -7647,6 +7626,10 @@ static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
return 0;

err_register:
+ if (hw->mac.type >= e1000_pch_cnp)
+ sysfs_remove_group(&pdev->dev.kobj, &e1000e_group);
+
+err_sysfs:
if (!(adapter->flags & FLAG_HAS_AMT))
e1000e_release_hw_control(adapter);
err_eeprom:
@@ -7684,6 +7667,7 @@ static void e1000_remove(struct pci_dev *pdev)
{
struct net_device *netdev = pci_get_drvdata(pdev);
struct e1000_adapter *adapter = netdev_priv(netdev);
+ struct e1000_hw *hw = &adapter->hw;

e1000e_ptp_remove(adapter);

@@ -7708,6 +7692,10 @@ static void e1000_remove(struct pci_dev *pdev)
}
}

+ /* only allow turning on/off s0ix for cannon point and later */
+ if (hw->mac.type >= e1000_pch_cnp)
+ sysfs_remove_group(&pdev->dev.kobj, &e1000e_group);
+
unregister_netdev(netdev);

if (pci_dev_run_wake(pdev))
diff --git a/drivers/net/ethernet/intel/e1000e/param.c b/drivers/net/ethernet/intel/e1000e/param.c
index ebe121db4307..e66b222c824b 100644
--- a/drivers/net/ethernet/intel/e1000e/param.c
+++ b/drivers/net/ethernet/intel/e1000e/param.c
@@ -138,6 +138,20 @@ E1000_PARAM(WriteProtectNVM,
E1000_PARAM(CrcStripping,
"Enable CRC Stripping, disable if your BMC needs the CRC");

+/* Enable s0ix flows
+ *
+ * Valid Range: varies depending on hardware support
+ *
+ * disabled=0, heuristics=1, enabled=2
+ *
+ * Default Value: 1 (heuristics)
+ */
+E1000_PARAM(EnableS0ix,
+ "Enable S0ix flows for the system");
+#define S0IX_FORCE_ON 2
+#define S0IX_HEURISTICS 1
+#define S0IX_FORCE_OFF 0
+
struct e1000_option {
enum { enable_option, range_option, list_option } type;
const char *name;
@@ -160,6 +174,45 @@ struct e1000_option {
} arg;
};

+struct e1000e_me_supported {
+ u16 device_id; /* supported device ID */
+};
+
+static const struct e1000e_me_supported me_supported[] = {
+ {E1000_DEV_ID_PCH_LPT_I217_LM},
+ {E1000_DEV_ID_PCH_LPTLP_I218_LM},
+ {E1000_DEV_ID_PCH_I218_LM2},
+ {E1000_DEV_ID_PCH_I218_LM3},
+ {E1000_DEV_ID_PCH_SPT_I219_LM},
+ {E1000_DEV_ID_PCH_SPT_I219_LM2},
+ {E1000_DEV_ID_PCH_LBG_I219_LM3},
+ {E1000_DEV_ID_PCH_SPT_I219_LM4},
+ {E1000_DEV_ID_PCH_SPT_I219_LM5},
+ {E1000_DEV_ID_PCH_CNP_I219_LM6},
+ {E1000_DEV_ID_PCH_CNP_I219_LM7},
+ {E1000_DEV_ID_PCH_ICP_I219_LM8},
+ {E1000_DEV_ID_PCH_ICP_I219_LM9},
+ {E1000_DEV_ID_PCH_CMP_I219_LM10},
+ {E1000_DEV_ID_PCH_CMP_I219_LM11},
+ {E1000_DEV_ID_PCH_CMP_I219_LM12},
+ {E1000_DEV_ID_PCH_TGP_I219_LM13},
+ {E1000_DEV_ID_PCH_TGP_I219_LM14},
+ {E1000_DEV_ID_PCH_TGP_I219_LM15},
+ {0}
+};
+
+static bool e1000e_check_me(u16 device_id)
+{
+ struct e1000e_me_supported *id;
+
+ for (id = (struct e1000e_me_supported *)me_supported;
+ id->device_id; id++)
+ if (device_id == id->device_id)
+ return true;
+
+ return false;
+}
+
static int e1000_validate_option(unsigned int *value,
const struct e1000_option *opt,
struct e1000_adapter *adapter)
@@ -526,4 +579,61 @@ void e1000e_check_options(struct e1000_adapter *adapter)
}
}
}
+ /* Enable S0ix flows */
+ {
+ static const struct e1000_option opt = {
+ .type = range_option,
+ .name = "S0ix flows (Cannon point or later)",
+ .err = "defaulting to heuristics",
+ .def = S0IX_HEURISTICS,
+ .arg = { .r = { .min = S0IX_FORCE_OFF,
+ .max = S0IX_FORCE_ON } }
+ };
+ unsigned int enabled = opt.def;
+
+ if (num_EnableS0ix > bd) {
+ unsigned int s0ix = EnableS0ix[bd];
+
+ e1000_validate_option(&s0ix, &opt, adapter);
+ enabled = s0ix;
+ }
+
+ if (enabled == S0IX_HEURISTICS) {
+ /* default to off for ME configurations */
+ if (e1000e_check_me(hw->adapter->pdev->device))
+ enabled = S0IX_FORCE_OFF;
+ }
+
+ if (enabled > S0IX_FORCE_OFF)
+ adapter->flags2 |= FLAG2_ENABLE_S0IX_FLOWS;
+ }
+}
+
+ssize_t enable_s0ix_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));
+ struct e1000_adapter *adapter = netdev_priv(netdev);
+ ssize_t ret;
+ bool enable_s0ix;
+
+ ret = kstrtobool(buf, &enable_s0ix);
+ e_info("s0ix flow set to %d\n", enable_s0ix);
+ if (enable_s0ix)
+ adapter->flags2 |= FLAG2_ENABLE_S0IX_FLOWS;
+ else
+ adapter->flags2 &= ~FLAG2_ENABLE_S0IX_FLOWS;
+
+ return ret ? ret : count;
+}
+
+ssize_t enable_s0ix_show(struct device *dev,
+ struct device_attribute *attr,
+ char *buf)
+{
+ struct net_device *netdev = pci_get_drvdata(to_pci_dev(dev));
+ struct e1000_adapter *adapter = netdev_priv(netdev);
+
+ return sprintf(buf, "%d\n", (adapter->flags2 & FLAG2_ENABLE_S0IX_FLOWS) > 0);
}
--
2.25.1

2020-09-28 04:43:09

by Mario Limonciello

[permalink] [raw]
Subject: [PATCH 3/3] e1000e: Add more Dell CML systems into s0ix heuristics

These comet lake systems are not yet released, but have been validated
on pre-release hardware.

This is being submitted separately from released hardware in case of
a regression between pre-release and release hardware so this commit
can be reverted alone.

Signed-off-by: Mario Limonciello <[email protected]>
---
drivers/net/ethernet/intel/e1000e/param.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

diff --git a/drivers/net/ethernet/intel/e1000e/param.c b/drivers/net/ethernet/intel/e1000e/param.c
index 58e6718c4f75..fe3157c8aa4a 100644
--- a/drivers/net/ethernet/intel/e1000e/param.c
+++ b/drivers/net/ethernet/intel/e1000e/param.c
@@ -273,6 +273,27 @@ static const struct dmi_system_id s0ix_supported_systems[] = {
DMI_MATCH(DMI_PRODUCT_SKU, "09C4"),
},
},
+ {
+ /* Dell Notebook 0x0A40 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "0A40"),
+ },
+ },
+ {
+ /* Dell Notebook 0x0A41 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "0A41"),
+ },
+ },
+ {
+ /* Dell Notebook 0x0A42 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "0A42"),
+ },
+ },
{ }
};

--
2.25.1

2020-09-28 04:43:15

by Mario Limonciello

[permalink] [raw]
Subject: [PATCH 2/3] e1000e: Add Dell's Comet Lake systems into s0ix heuristics

Dell's Comet Lake Latitude and Precision systems containing i219LM are
properly configured and should use the s0ix flows.

Signed-off-by: Mario Limonciello <[email protected]>
---
drivers/net/ethernet/intel/Kconfig | 1 +
drivers/net/ethernet/intel/e1000e/param.c | 80 ++++++++++++++++++++++-
2 files changed, 80 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig
index 5aa86318ed3e..280af47d74d2 100644
--- a/drivers/net/ethernet/intel/Kconfig
+++ b/drivers/net/ethernet/intel/Kconfig
@@ -58,6 +58,7 @@ config E1000
config E1000E
tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
depends on PCI && (!SPARC32 || BROKEN)
+ depends on DMI
select CRC32
imply PTP_1588_CLOCK
help
diff --git a/drivers/net/ethernet/intel/e1000e/param.c b/drivers/net/ethernet/intel/e1000e/param.c
index e66b222c824b..58e6718c4f75 100644
--- a/drivers/net/ethernet/intel/e1000e/param.c
+++ b/drivers/net/ethernet/intel/e1000e/param.c
@@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0
/* Copyright(c) 1999 - 2018 Intel Corporation. */

+#include <linux/dmi.h>
#include <linux/netdevice.h>
#include <linux/module.h>
#include <linux/pci.h>
@@ -201,6 +202,80 @@ static const struct e1000e_me_supported me_supported[] = {
{0}
};

+static const struct dmi_system_id s0ix_supported_systems[] = {
+ {
+ /* Dell Latitude 5310 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "099F"),
+ },
+ },
+ {
+ /* Dell Latitude 5410 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09A0"),
+ },
+ },
+ {
+ /* Dell Latitude 5410 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09C9"),
+ },
+ },
+ {
+ /* Dell Latitude 5510 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09A1"),
+ },
+ },
+ {
+ /* Dell Precision 3550 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09A2"),
+ },
+ },
+ {
+ /* Dell Latitude 5411 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09C0"),
+ },
+ },
+ {
+ /* Dell Latitude 5511 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09C1"),
+ },
+ },
+ {
+ /* Dell Precision 3551 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09C2"),
+ },
+ },
+ {
+ /* Dell Precision 7550 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09C3"),
+ },
+ },
+ {
+ /* Dell Precision 7750 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+ DMI_MATCH(DMI_PRODUCT_SKU, "09C4"),
+ },
+ },
+ { }
+};
+
static bool e1000e_check_me(u16 device_id)
{
struct e1000e_me_supported *id;
@@ -599,8 +674,11 @@ void e1000e_check_options(struct e1000_adapter *adapter)
}

if (enabled == S0IX_HEURISTICS) {
+ /* check for allowlist of systems */
+ if (dmi_check_system(s0ix_supported_systems))
+ enabled = S0IX_FORCE_ON;
/* default to off for ME configurations */
- if (e1000e_check_me(hw->adapter->pdev->device))
+ else if (e1000e_check_me(hw->adapter->pdev->device))
enabled = S0IX_FORCE_OFF;
}

--
2.25.1

2020-10-07 00:23:58

by Brown, Aaron F

[permalink] [raw]
Subject: RE: [Intel-wired-lan] [PATCH 2/3] e1000e: Add Dell's Comet Lake systems into s0ix heuristics

> From: Intel-wired-lan <[email protected]> On Behalf Of
> Mario Limonciello
> Sent: Sunday, September 27, 2020 9:40 PM
> To: Kirsher, Jeffrey T <[email protected]>; intel-wired-
> [email protected]
> Cc: [email protected]; [email protected]; [email protected];
> Mario Limonciello <[email protected]>
> Subject: [Intel-wired-lan] [PATCH 2/3] e1000e: Add Dell's Comet Lake systems
> into s0ix heuristics
>
> Dell's Comet Lake Latitude and Precision systems containing i219LM are
> properly configured and should use the s0ix flows.
>
> Signed-off-by: Mario Limonciello <[email protected]>
> ---
> drivers/net/ethernet/intel/Kconfig | 1 +
> drivers/net/ethernet/intel/e1000e/param.c | 80 ++++++++++++++++++++++-
> 2 files changed, 80 insertions(+), 1 deletion(-)

Is there anyone who touched this hardware with this patch willing to provide a Tested-by:?
I am happy to do regression / sanity checks against other e1000e based systems, but do not have access to these devices.

>
> diff --git a/drivers/net/ethernet/intel/Kconfig
> b/drivers/net/ethernet/intel/Kconfig
> index 5aa86318ed3e..280af47d74d2 100644
> --- a/drivers/net/ethernet/intel/Kconfig
> +++ b/drivers/net/ethernet/intel/Kconfig
> @@ -58,6 +58,7 @@ config E1000
> config E1000E
> tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
> depends on PCI && (!SPARC32 || BROKEN)
> + depends on DMI
> select CRC32
> imply PTP_1588_CLOCK
> help
> diff --git a/drivers/net/ethernet/intel/e1000e/param.c
> b/drivers/net/ethernet/intel/e1000e/param.c
> index e66b222c824b..58e6718c4f75 100644
> --- a/drivers/net/ethernet/intel/e1000e/param.c
> +++ b/drivers/net/ethernet/intel/e1000e/param.c
> @@ -1,6 +1,7 @@
> // SPDX-License-Identifier: GPL-2.0
> /* Copyright(c) 1999 - 2018 Intel Corporation. */
>
> +#include <linux/dmi.h>
> #include <linux/netdevice.h>
> #include <linux/module.h>
> #include <linux/pci.h>
> @@ -201,6 +202,80 @@ static const struct e1000e_me_supported
> me_supported[] = {
> {0}
> };
>
> +static const struct dmi_system_id s0ix_supported_systems[] = {
> + {
> + /* Dell Latitude 5310 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "099F"),
> + },
> + },
> + {
> + /* Dell Latitude 5410 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09A0"),
> + },
> + },
> + {
> + /* Dell Latitude 5410 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09C9"),
> + },
> + },
> + {
> + /* Dell Latitude 5510 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09A1"),
> + },
> + },
> + {
> + /* Dell Precision 3550 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09A2"),
> + },
> + },
> + {
> + /* Dell Latitude 5411 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09C0"),
> + },
> + },
> + {
> + /* Dell Latitude 5511 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09C1"),
> + },
> + },
> + {
> + /* Dell Precision 3551 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09C2"),
> + },
> + },
> + {
> + /* Dell Precision 7550 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09C3"),
> + },
> + },
> + {
> + /* Dell Precision 7750 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "09C4"),
> + },
> + },
> + { }
> +};
> +
> static bool e1000e_check_me(u16 device_id)
> {
> struct e1000e_me_supported *id;
> @@ -599,8 +674,11 @@ void e1000e_check_options(struct e1000_adapter
> *adapter)
> }
>
> if (enabled == S0IX_HEURISTICS) {
> + /* check for allowlist of systems */
> + if (dmi_check_system(s0ix_supported_systems))
> + enabled = S0IX_FORCE_ON;
> /* default to off for ME configurations */
> - if (e1000e_check_me(hw->adapter->pdev->device))
> + else if (e1000e_check_me(hw->adapter->pdev-
> >device))
> enabled = S0IX_FORCE_OFF;
> }
>
> --
> 2.25.1
>
> _______________________________________________
> Intel-wired-lan mailing list
> [email protected]
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

2020-10-07 00:24:44

by Brown, Aaron F

[permalink] [raw]
Subject: RE: [Intel-wired-lan] [PATCH 3/3] e1000e: Add more Dell CML systems into s0ix heuristics

> From: Intel-wired-lan <[email protected]> On Behalf Of
> Mario Limonciello
> Sent: Sunday, September 27, 2020 9:40 PM
> To: Kirsher, Jeffrey T <[email protected]>; intel-wired-
> [email protected]
> Cc: [email protected]; [email protected]; linux-
> [email protected]; Mario Limonciello <[email protected]>
> Subject: [Intel-wired-lan] [PATCH 3/3] e1000e: Add more Dell CML systems
> into s0ix heuristics
>
> These comet lake systems are not yet released, but have been validated
> on pre-release hardware.

Same basic question as with 2/3 of the series, would it be possible to get someone who touched / validated the code on the pre-release hardware to provide a Tested-by: to this patch?

>
> This is being submitted separately from released hardware in case of
> a regression between pre-release and release hardware so this commit
> can be reverted alone.
>
> Signed-off-by: Mario Limonciello <[email protected]>
> ---
> drivers/net/ethernet/intel/e1000e/param.c | 21 +++++++++++++++++++++
> 1 file changed, 21 insertions(+)
>
> diff --git a/drivers/net/ethernet/intel/e1000e/param.c
> b/drivers/net/ethernet/intel/e1000e/param.c
> index 58e6718c4f75..fe3157c8aa4a 100644
> --- a/drivers/net/ethernet/intel/e1000e/param.c
> +++ b/drivers/net/ethernet/intel/e1000e/param.c
> @@ -273,6 +273,27 @@ static const struct dmi_system_id
> s0ix_supported_systems[] = {
> DMI_MATCH(DMI_PRODUCT_SKU, "09C4"),
> },
> },
> + {
> + /* Dell Notebook 0x0A40 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "0A40"),
> + },
> + },
> + {
> + /* Dell Notebook 0x0A41 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "0A41"),
> + },
> + },
> + {
> + /* Dell Notebook 0x0A42 */
> + .matches = {
> + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> + DMI_MATCH(DMI_PRODUCT_SKU, "0A42"),
> + },
> + },
> { }
> };
>
> --
> 2.25.1
>
> _______________________________________________
> Intel-wired-lan mailing list
> [email protected]
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

2020-10-07 01:09:10

by Mario Limonciello

[permalink] [raw]
Subject: RE: [Intel-wired-lan] [PATCH 2/3] e1000e: Add Dell's Comet Lake systems into s0ix heuristics


> > From: Intel-wired-lan <[email protected]> On Behalf Of
> > Mario Limonciello
> > Sent: Sunday, September 27, 2020 9:40 PM
> > To: Kirsher, Jeffrey T <[email protected]>; intel-wired-
> > [email protected]
> > Cc: [email protected]; [email protected]; [email protected];
> > Mario Limonciello <[email protected]>
> > Subject: [Intel-wired-lan] [PATCH 2/3] e1000e: Add Dell's Comet Lake systems
> > into s0ix heuristics
> >
> > Dell's Comet Lake Latitude and Precision systems containing i219LM are
> > properly configured and should use the s0ix flows.
> >
> > Signed-off-by: Mario Limonciello <[email protected]>
> > ---
> > drivers/net/ethernet/intel/Kconfig | 1 +
> > drivers/net/ethernet/intel/e1000e/param.c | 80 ++++++++++++++++++++++-
> > 2 files changed, 80 insertions(+), 1 deletion(-)
>
> Is there anyone who touched this hardware with this patch willing to provide a
> Tested-by:?
> I am happy to do regression / sanity checks against other e1000e based
> systems, but do not have access to these devices.

Alex (Yijun) who is CC'ed did test them and I expect can add a Tested-By after the
China holidays are over.

>
> >
> > diff --git a/drivers/net/ethernet/intel/Kconfig
> > b/drivers/net/ethernet/intel/Kconfig
> > index 5aa86318ed3e..280af47d74d2 100644
> > --- a/drivers/net/ethernet/intel/Kconfig
> > +++ b/drivers/net/ethernet/intel/Kconfig
> > @@ -58,6 +58,7 @@ config E1000
> > config E1000E
> > tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
> > depends on PCI && (!SPARC32 || BROKEN)
> > + depends on DMI
> > select CRC32
> > imply PTP_1588_CLOCK
> > help
> > diff --git a/drivers/net/ethernet/intel/e1000e/param.c
> > b/drivers/net/ethernet/intel/e1000e/param.c
> > index e66b222c824b..58e6718c4f75 100644
> > --- a/drivers/net/ethernet/intel/e1000e/param.c
> > +++ b/drivers/net/ethernet/intel/e1000e/param.c
> > @@ -1,6 +1,7 @@
> > // SPDX-License-Identifier: GPL-2.0
> > /* Copyright(c) 1999 - 2018 Intel Corporation. */
> >
> > +#include <linux/dmi.h>
> > #include <linux/netdevice.h>
> > #include <linux/module.h>
> > #include <linux/pci.h>
> > @@ -201,6 +202,80 @@ static const struct e1000e_me_supported
> > me_supported[] = {
> > {0}
> > };
> >
> > +static const struct dmi_system_id s0ix_supported_systems[] = {
> > + {
> > + /* Dell Latitude 5310 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "099F"),
> > + },
> > + },
> > + {
> > + /* Dell Latitude 5410 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09A0"),
> > + },
> > + },
> > + {
> > + /* Dell Latitude 5410 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09C9"),
> > + },
> > + },
> > + {
> > + /* Dell Latitude 5510 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09A1"),
> > + },
> > + },
> > + {
> > + /* Dell Precision 3550 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09A2"),
> > + },
> > + },
> > + {
> > + /* Dell Latitude 5411 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09C0"),
> > + },
> > + },
> > + {
> > + /* Dell Latitude 5511 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09C1"),
> > + },
> > + },
> > + {
> > + /* Dell Precision 3551 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09C2"),
> > + },
> > + },
> > + {
> > + /* Dell Precision 7550 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09C3"),
> > + },
> > + },
> > + {
> > + /* Dell Precision 7750 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "09C4"),
> > + },
> > + },
> > + { }
> > +};
> > +
> > static bool e1000e_check_me(u16 device_id)
> > {
> > struct e1000e_me_supported *id;
> > @@ -599,8 +674,11 @@ void e1000e_check_options(struct e1000_adapter
> > *adapter)
> > }
> >
> > if (enabled == S0IX_HEURISTICS) {
> > + /* check for allowlist of systems */
> > + if (dmi_check_system(s0ix_supported_systems))
> > + enabled = S0IX_FORCE_ON;
> > /* default to off for ME configurations */
> > - if (e1000e_check_me(hw->adapter->pdev->device))
> > + else if (e1000e_check_me(hw->adapter->pdev-
> > >device))
> > enabled = S0IX_FORCE_OFF;
> > }
> >
> > --
> > 2.25.1
> >
> > _______________________________________________
> > Intel-wired-lan mailing list
> > [email protected]
> > https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

2020-10-13 18:29:43

by Shen, Yijun

[permalink] [raw]
Subject: RE: [Intel-wired-lan] [PATCH 2/3] e1000e: Add Dell's Comet Lake systems into s0ix heuristics

> -----Original Message-----
> From: Limonciello, Mario <[email protected]>
> Sent: Wednesday, October 7, 2020 8:30 AM
> To: Brown, Aaron F; Kirsher, Jeffrey T; [email protected]
> Cc: Yuan, Perry; Shen, Yijun; [email protected]
> Subject: RE: [Intel-wired-lan] [PATCH 2/3] e1000e: Add Dell's Comet Lake
> systems into s0ix heuristics
>
>
> > > From: Intel-wired-lan <[email protected]> On Behalf
> > > Of Mario Limonciello
> > > Sent: Sunday, September 27, 2020 9:40 PM
> > > To: Kirsher, Jeffrey T <[email protected]>; intel-wired-
> > > [email protected]
> > > Cc: [email protected]; [email protected];
> > > [email protected]; Mario Limonciello
> > > <[email protected]>
> > > Subject: [Intel-wired-lan] [PATCH 2/3] e1000e: Add Dell's Comet Lake
> > > systems into s0ix heuristics
> > >
> > > Dell's Comet Lake Latitude and Precision systems containing i219LM
> > > are properly configured and should use the s0ix flows.
> > >
> > > Signed-off-by: Mario Limonciello <[email protected]>
> > > ---
> > > drivers/net/ethernet/intel/Kconfig | 1 +
> > > drivers/net/ethernet/intel/e1000e/param.c | 80
> > > ++++++++++++++++++++++-
> > > 2 files changed, 80 insertions(+), 1 deletion(-)
> >
> > Is there anyone who touched this hardware with this patch willing to
> > provide a Tested-by:?
> > I am happy to do regression / sanity checks against other e1000e based
> > systems, but do not have access to these devices.
>
> Alex (Yijun) who is CC'ed did test them and I expect can add a Tested-By after
> the China holidays are over.
>

Tested-by: Yijun Shen <[email protected]>

> >
> > >
> > > diff --git a/drivers/net/ethernet/intel/Kconfig
> > > b/drivers/net/ethernet/intel/Kconfig
> > > index 5aa86318ed3e..280af47d74d2 100644
> > > --- a/drivers/net/ethernet/intel/Kconfig
> > > +++ b/drivers/net/ethernet/intel/Kconfig
> > > @@ -58,6 +58,7 @@ config E1000
> > > config E1000E
> > > tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
> > > depends on PCI && (!SPARC32 || BROKEN)
> > > + depends on DMI
> > > select CRC32
> > > imply PTP_1588_CLOCK
> > > help
> > > diff --git a/drivers/net/ethernet/intel/e1000e/param.c
> > > b/drivers/net/ethernet/intel/e1000e/param.c
> > > index e66b222c824b..58e6718c4f75 100644
> > > --- a/drivers/net/ethernet/intel/e1000e/param.c
> > > +++ b/drivers/net/ethernet/intel/e1000e/param.c
> > > @@ -1,6 +1,7 @@
> > > // SPDX-License-Identifier: GPL-2.0
> > > /* Copyright(c) 1999 - 2018 Intel Corporation. */
> > >
> > > +#include <linux/dmi.h>
> > > #include <linux/netdevice.h>
> > > #include <linux/module.h>
> > > #include <linux/pci.h>
> > > @@ -201,6 +202,80 @@ static const struct e1000e_me_supported
> > > me_supported[] = {
> > > {0}
> > > };
> > >
> > > +static const struct dmi_system_id s0ix_supported_systems[] = {
> > > + {
> > > + /* Dell Latitude 5310 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "099F"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Latitude 5410 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09A0"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Latitude 5410 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09C9"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Latitude 5510 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09A1"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Precision 3550 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09A2"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Latitude 5411 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09C0"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Latitude 5511 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09C1"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Precision 3551 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09C2"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Precision 7550 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09C3"),
> > > + },
> > > + },
> > > + {
> > > + /* Dell Precision 7750 */
> > > + .matches = {
> > > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > > + DMI_MATCH(DMI_PRODUCT_SKU, "09C4"),
> > > + },
> > > + },
> > > + { }
> > > +};
> > > +
> > > static bool e1000e_check_me(u16 device_id) {
> > > struct e1000e_me_supported *id;
> > > @@ -599,8 +674,11 @@ void e1000e_check_options(struct
> e1000_adapter
> > > *adapter)
> > > }
> > >
> > > if (enabled == S0IX_HEURISTICS) {
> > > + /* check for allowlist of systems */
> > > + if (dmi_check_system(s0ix_supported_systems))
> > > + enabled = S0IX_FORCE_ON;
> > > /* default to off for ME configurations */
> > > - if (e1000e_check_me(hw->adapter->pdev->device))
> > > + else if (e1000e_check_me(hw->adapter->pdev-
> > > >device))
> > > enabled = S0IX_FORCE_OFF;
> > > }
> > >
> > > --
> > > 2.25.1
> > >
> > > _______________________________________________
> > > Intel-wired-lan mailing list
> > > [email protected]
> > > https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

2020-10-21 15:02:43

by Shen, Yijun

[permalink] [raw]
Subject: RE: [Intel-wired-lan] [PATCH 3/3] e1000e: Add more Dell CML systems into s0ix heuristics

> -----Original Message-----
> From: Brown, Aaron F <[email protected]>
> Sent: Wednesday, October 7, 2020 8:22 AM
> To: Limonciello, Mario; Kirsher, Jeffrey T; [email protected]
> Cc: Yuan, Perry; Shen, Yijun; [email protected]
> Subject: RE: [Intel-wired-lan] [PATCH 3/3] e1000e: Add more Dell CML
> systems into s0ix heuristics
>
>
> [EXTERNAL EMAIL]
>
> > From: Intel-wired-lan <[email protected]> On Behalf
> > Of Mario Limonciello
> > Sent: Sunday, September 27, 2020 9:40 PM
> > To: Kirsher, Jeffrey T <[email protected]>; intel-wired-
> > [email protected]
> > Cc: [email protected]; [email protected]; linux-
> > [email protected]; Mario Limonciello <[email protected]>
> > Subject: [Intel-wired-lan] [PATCH 3/3] e1000e: Add more Dell CML
> > systems into s0ix heuristics
> >
> > These comet lake systems are not yet released, but have been validated
> > on pre-release hardware.
>
> Same basic question as with 2/3 of the series, would it be possible to get
> someone who touched / validated the code on the pre-release hardware to
> provide a Tested-by: to this patch?

Verified this series patches with Dell Systems.

Tested-by: Yijun Shen <[email protected]>

>
> >
> > This is being submitted separately from released hardware in case of a
> > regression between pre-release and release hardware so this commit can
> > be reverted alone.
> >
> > Signed-off-by: Mario Limonciello <[email protected]>
> > ---
> > drivers/net/ethernet/intel/e1000e/param.c | 21 +++++++++++++++++++++
> > 1 file changed, 21 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/intel/e1000e/param.c
> > b/drivers/net/ethernet/intel/e1000e/param.c
> > index 58e6718c4f75..fe3157c8aa4a 100644
> > --- a/drivers/net/ethernet/intel/e1000e/param.c
> > +++ b/drivers/net/ethernet/intel/e1000e/param.c
> > @@ -273,6 +273,27 @@ static const struct dmi_system_id
> > s0ix_supported_systems[] = {
> > DMI_MATCH(DMI_PRODUCT_SKU, "09C4"),
> > },
> > },
> > + {
> > + /* Dell Notebook 0x0A40 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "0A40"),
> > + },
> > + },
> > + {
> > + /* Dell Notebook 0x0A41 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "0A41"),
> > + },
> > + },
> > + {
> > + /* Dell Notebook 0x0A42 */
> > + .matches = {
> > + DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
> > + DMI_MATCH(DMI_PRODUCT_SKU, "0A42"),
> > + },
> > + },
> > { }
> > };
> >
> > --
> > 2.25.1
> >
> > _______________________________________________
> > Intel-wired-lan mailing list
> > [email protected]
> > https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

2020-10-23 03:58:44

by Brown, Aaron F

[permalink] [raw]
Subject: RE: [Intel-wired-lan] [PATCH 1/3] e1000e: allow turning s0ix flows on for systems with ME

> From: Intel-wired-lan <[email protected]> On Behalf Of
> Mario Limonciello
> Sent: Sunday, September 27, 2020 9:40 PM
> To: Kirsher, Jeffrey T <[email protected]>; intel-wired-
> [email protected]
> Cc: [email protected]; [email protected]; [email protected];
> Mario Limonciello <[email protected]>
> Subject: [Intel-wired-lan] [PATCH 1/3] e1000e: allow turning s0ix flows on for
> systems with ME
>
> S0ix for GBE flows are needed for allowing the system to get into deepest
> power state, but these require coordination of components outside of
> control of Linux kernel. For systems that have confirmed to coordinate
> this properly, allow turning on the s0ix flows at load time or runtime.
>
> Fixes: e086ba2fccda ("e1000e: disable s0ix entry and exit flows for ME systems")
> Signed-off-by: Mario Limonciello <[email protected]>
> ---
> .../device_drivers/ethernet/intel/e1000e.rst | 23 ++++
> drivers/net/ethernet/intel/e1000e/e1000.h | 7 ++
> drivers/net/ethernet/intel/e1000e/netdev.c | 64 +++++-----
> drivers/net/ethernet/intel/e1000e/param.c | 110 ++++++++++++++++++
> 4 files changed, 166 insertions(+), 38 deletions(-)
>

Tested-by: Aaron Brown <[email protected]>