Commit ade8a86b authored by Dave Jiang's avatar Dave Jiang Committed by Vinod Koul

dmaengine: idxd: Set defaults for GRPCFG traffic class

Set GRPCFG traffic class to value of 1 for best performance on current
generation of accelerators. Also add override option to allow experimentation.
Sysfs knobs are disabled for DSA/IAX gen1 devices.
Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/162681373005.1968485.3761065664382799202.stgit@djiang5-desk3.ch.intel.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 258cb692
...@@ -1747,6 +1747,11 @@ ...@@ -1747,6 +1747,11 @@
support for the idxd driver. By default it is set to support for the idxd driver. By default it is set to
true (1). true (1).
idxd.tc_override= [HW]
Format: <bool>
Allow override of default traffic class configuration
for the device. By default it is set to false (0).
ieee754= [MIPS] Select IEEE Std 754 conformance mode ieee754= [MIPS] Select IEEE Std 754 conformance mode
Format: { strict | legacy | 2008 | relaxed } Format: { strict | legacy | 2008 | relaxed }
Default: strict Default: strict
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#define IDXD_DRIVER_VERSION "1.00" #define IDXD_DRIVER_VERSION "1.00"
extern struct kmem_cache *idxd_desc_pool; extern struct kmem_cache *idxd_desc_pool;
extern bool tc_override;
struct idxd_wq; struct idxd_wq;
struct idxd_dev; struct idxd_dev;
......
...@@ -32,6 +32,10 @@ static bool sva = true; ...@@ -32,6 +32,10 @@ static bool sva = true;
module_param(sva, bool, 0644); module_param(sva, bool, 0644);
MODULE_PARM_DESC(sva, "Toggle SVA support on/off"); MODULE_PARM_DESC(sva, "Toggle SVA support on/off");
bool tc_override;
module_param(tc_override, bool, 0644);
MODULE_PARM_DESC(tc_override, "Override traffic class defaults");
#define DRV_NAME "idxd" #define DRV_NAME "idxd"
bool support_enqcmd; bool support_enqcmd;
...@@ -336,8 +340,13 @@ static int idxd_setup_groups(struct idxd_device *idxd) ...@@ -336,8 +340,13 @@ static int idxd_setup_groups(struct idxd_device *idxd)
} }
idxd->groups[i] = group; idxd->groups[i] = group;
group->tc_a = -1; if (idxd->hw.version < DEVICE_VERSION_2 && !tc_override) {
group->tc_b = -1; group->tc_a = 1;
group->tc_b = 1;
} else {
group->tc_a = -1;
group->tc_b = -1;
}
} }
return 0; return 0;
......
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
#define PCI_DEVICE_ID_INTEL_DSA_SPR0 0x0b25 #define PCI_DEVICE_ID_INTEL_DSA_SPR0 0x0b25
#define PCI_DEVICE_ID_INTEL_IAX_SPR0 0x0cfe #define PCI_DEVICE_ID_INTEL_IAX_SPR0 0x0cfe
#define DEVICE_VERSION_1 0x100
#define DEVICE_VERSION_2 0x200
#define IDXD_MMIO_BAR 0 #define IDXD_MMIO_BAR 0
#define IDXD_WQ_BAR 2 #define IDXD_WQ_BAR 2
#define IDXD_PORTAL_SIZE PAGE_SIZE #define IDXD_PORTAL_SIZE PAGE_SIZE
......
...@@ -327,6 +327,9 @@ static ssize_t group_traffic_class_a_store(struct device *dev, ...@@ -327,6 +327,9 @@ static ssize_t group_traffic_class_a_store(struct device *dev,
if (idxd->state == IDXD_DEV_ENABLED) if (idxd->state == IDXD_DEV_ENABLED)
return -EPERM; return -EPERM;
if (idxd->hw.version < DEVICE_VERSION_2 && !tc_override)
return -EPERM;
if (val < 0 || val > 7) if (val < 0 || val > 7)
return -EINVAL; return -EINVAL;
...@@ -366,6 +369,9 @@ static ssize_t group_traffic_class_b_store(struct device *dev, ...@@ -366,6 +369,9 @@ static ssize_t group_traffic_class_b_store(struct device *dev,
if (idxd->state == IDXD_DEV_ENABLED) if (idxd->state == IDXD_DEV_ENABLED)
return -EPERM; return -EPERM;
if (idxd->hw.version < DEVICE_VERSION_2 && !tc_override)
return -EPERM;
if (val < 0 || val > 7) if (val < 0 || val > 7)
return -EINVAL; return -EINVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment