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: Dave Jiang <dave.jiang@intel.com> Link: https://lore.kernel.org/r/162681373005.1968485.3761065664382799202.stgit@djiang5-desk3.ch.intel.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
258cb692b8
commit
ade8a86b51
5 changed files with 26 additions and 2 deletions
|
@ -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 @@
|
||||||
#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;
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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 @@
|
||||||
#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,
|
||||||
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,
|
||||||
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;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue