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 | |
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>
-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)); |