aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/pci.c
diff options
context:
space:
mode:
authorAndrew Patterson <andrew.patterson@hp.com>2009-04-22 18:52:09 -0400
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-06-11 15:04:21 -0400
commit43c16408842b0eeb367c23a6fa540ce69f99e347 (patch)
tree25be054b280b430b8bb00ff5f9c1f422bc21a3a0 /drivers/pci/pci.c
parentf62795f1e892ca9269849fa83de97621da7e02c0 (diff)
PCI: Add support for turning PCIe ECRC on or off
Adds support for PCI Express transaction layer end-to-end CRC checking (ECRC). This patch will enable/disable ECRC checking by setting/clearing the ECRC Check Enable and/or ECRC Generation Enable bits for devices that support ECRC. The ECRC setting is controlled by the "pci=ecrc=<policy>" command-line option. If this option is not set or is set to 'bios", the enable and generation bits are left in whatever state that firmware/BIOS set them to. The "off" setting turns them off, and the "on" option turns them on (if the device supports it). Turning ECRC on or off can be a data integrity versus performance tradeoff. In theory, turning it on will catch more data errors, turning it off means possibly better performance since CRC does not need to be calculated by the PCIe hardware and packet sizes are reduced. Signed-off-by: Andrew Patterson <andrew.patterson@hp.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/pci.c')
-rw-r--r--drivers/pci/pci.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 761557688b18..56fb18d2cb52 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -2588,6 +2588,8 @@ static int __init pci_setup(char *str)
2588 } else if (!strncmp(str, "resource_alignment=", 19)) { 2588 } else if (!strncmp(str, "resource_alignment=", 19)) {
2589 pci_set_resource_alignment_param(str + 19, 2589 pci_set_resource_alignment_param(str + 19,
2590 strlen(str + 19)); 2590 strlen(str + 19));
2591 } else if (!strncmp(str, "ecrc=", 5)) {
2592 pcie_ecrc_get_policy(str + 5);
2591 } else { 2593 } else {
2592 printk(KERN_ERR "PCI: Unknown option `%s'\n", 2594 printk(KERN_ERR "PCI: Unknown option `%s'\n",
2593 str); 2595 str);