aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllen Hubbe <Allen.Hubbe@emc.com>2016-07-22 09:38:22 -0400
committerJon Mason <jdmason@kudzu.us>2016-08-05 10:33:47 -0400
commit4089527388808ca380af908fdbdd3d723cc9e751 (patch)
treea9f6b02e96ba95bb91000ca6f72450189e087949
parenta9c59ef77458b27221e71506cdf1bd31a06afb19 (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.c39
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));