diff options
| author | Allen Hubbe <Allen.Hubbe@emc.com> | 2016-07-22 09:38:22 -0400 |
|---|---|---|
| committer | Jon Mason <jdmason@kudzu.us> | 2016-08-05 10:33:47 -0400 |
| commit | 4089527388808ca380af908fdbdd3d723cc9e751 (patch) | |
| tree | a9f6b02e96ba95bb91000ca6f72450189e087949 /drivers/ntb | |
| parent | a9c59ef77458b27221e71506cdf1bd31a06afb19 (diff) | |
NTB: ntb_hw_intel: show BAR size in debugfs info
It will be useful to know the hardware configured BAR size to diagnose
issues with NTB memory windows.
Signed-off-by: Allen Hubbe <Allen.Hubbe@emc.com>
Acked-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
Diffstat (limited to 'drivers/ntb')
| -rw-r--r-- | drivers/ntb/hw/intel/ntb_hw_intel.c | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/drivers/ntb/hw/intel/ntb_hw_intel.c b/drivers/ntb/hw/intel/ntb_hw_intel.c index 40d04ef5da9e..5efd03705e5c 100644 --- a/drivers/ntb/hw/intel/ntb_hw_intel.c +++ b/drivers/ntb/hw/intel/ntb_hw_intel.c | |||
| @@ -551,13 +551,15 @@ static ssize_t ndev_debugfs_read(struct file *filp, char __user *ubuf, | |||
| 551 | size_t count, loff_t *offp) | 551 | size_t count, loff_t *offp) |
| 552 | { | 552 | { |
| 553 | struct intel_ntb_dev *ndev; | 553 | struct intel_ntb_dev *ndev; |
| 554 | struct pci_dev *pdev; | ||
| 554 | void __iomem *mmio; | 555 | void __iomem *mmio; |
| 555 | char *buf; | 556 | char *buf; |
| 556 | size_t buf_size; | 557 | size_t buf_size; |
| 557 | ssize_t ret, off; | 558 | ssize_t ret, off; |
| 558 | union { u64 v64; u32 v32; u16 v16; } u; | 559 | union { u64 v64; u32 v32; u16 v16; u8 v8; } u; |
| 559 | 560 | ||
| 560 | ndev = filp->private_data; | 561 | ndev = filp->private_data; |
| 562 | pdev = ndev_pdev(ndev); | ||
| 561 | mmio = ndev->self_mmio; | 563 | mmio = ndev->self_mmio; |
| 562 | 564 | ||
| 563 | buf_size = min(count, 0x800ul); | 565 | buf_size = min(count, 0x800ul); |
| @@ -632,6 +634,41 @@ static ssize_t ndev_debugfs_read(struct file *filp, char __user *ubuf, | |||
| 632 | "Doorbell Bell -\t\t%#llx\n", u.v64); | 634 | "Doorbell Bell -\t\t%#llx\n", u.v64); |
| 633 | 635 | ||
| 634 | off += scnprintf(buf + off, buf_size - off, | 636 | off += scnprintf(buf + off, buf_size - off, |
| 637 | "\nNTB Window Size:\n"); | ||
| 638 | |||
| 639 | pci_read_config_byte(pdev, XEON_PBAR23SZ_OFFSET, &u.v8); | ||
| 640 | off += scnprintf(buf + off, buf_size - off, | ||
| 641 | "PBAR23SZ %hhu\n", u.v8); | ||
| 642 | if (!ndev->bar4_split) { | ||
| 643 | pci_read_config_byte(pdev, XEON_PBAR45SZ_OFFSET, &u.v8); | ||
| 644 | off += scnprintf(buf + off, buf_size - off, | ||
| 645 | "PBAR45SZ %hhu\n", u.v8); | ||
| 646 | } else { | ||
| 647 | pci_read_config_byte(pdev, XEON_PBAR4SZ_OFFSET, &u.v8); | ||
| 648 | off += scnprintf(buf + off, buf_size - off, | ||
| 649 | "PBAR4SZ %hhu\n", u.v8); | ||
| 650 | pci_read_config_byte(pdev, XEON_PBAR5SZ_OFFSET, &u.v8); | ||
| 651 | off += scnprintf(buf + off, buf_size - off, | ||
| 652 | "PBAR5SZ %hhu\n", u.v8); | ||
| 653 | } | ||
| 654 | |||
| 655 | pci_read_config_byte(pdev, XEON_SBAR23SZ_OFFSET, &u.v8); | ||
| 656 | off += scnprintf(buf + off, buf_size - off, | ||
| 657 | "SBAR23SZ %hhu\n", u.v8); | ||
| 658 | if (!ndev->bar4_split) { | ||
| 659 | pci_read_config_byte(pdev, XEON_SBAR45SZ_OFFSET, &u.v8); | ||
| 660 | off += scnprintf(buf + off, buf_size - off, | ||
| 661 | "SBAR45SZ %hhu\n", u.v8); | ||
| 662 | } else { | ||
| 663 | pci_read_config_byte(pdev, XEON_SBAR4SZ_OFFSET, &u.v8); | ||
| 664 | off += scnprintf(buf + off, buf_size - off, | ||
| 665 | "SBAR4SZ %hhu\n", u.v8); | ||
| 666 | pci_read_config_byte(pdev, XEON_SBAR5SZ_OFFSET, &u.v8); | ||
| 667 | off += scnprintf(buf + off, buf_size - off, | ||
| 668 | "SBAR5SZ %hhu\n", u.v8); | ||
| 669 | } | ||
| 670 | |||
| 671 | off += scnprintf(buf + off, buf_size - off, | ||
| 635 | "\nNTB Incoming XLAT:\n"); | 672 | "\nNTB Incoming XLAT:\n"); |
| 636 | 673 | ||
| 637 | u.v64 = ioread64(mmio + bar2_off(ndev->xlat_reg->bar2_xlat, 2)); | 674 | u.v64 = ioread64(mmio + bar2_off(ndev->xlat_reg->bar2_xlat, 2)); |
