From bb81bf62151031df004864eabee0431c8b8e9064 Mon Sep 17 00:00:00 2001
From: Jiasen Lin <linjiasen@hygon.cn>
Date: Thu, 7 Nov 2019 01:35:36 -0800
Subject: [PATCH] NTB: Fix an error in get link status
Git-commit: bb81bf62151031df004864eabee0431c8b8e9064
Patch-mainline: v5.7-rc1
References: git-fixes
The offset of PCIe Capability Header for AMD and HYGON NTB is 0x64,
but the macro which named "AMD_LINK_STATUS_OFFSET" is defined as 0x68.
It is offset of Device Capabilities Reg rather than Link Control Reg.
This code trigger an error in get link statsus:
cat /sys/kernel/debug/ntb_hw_amd/0000:43:00.1/info
LNK STA - 0x8fa1
Link Status - Up
Link Speed - PCI-E Gen 0
Link Width - x0
This patch use pcie_capability_read_dword to get link status.
After fix this issue, we can get link status accurately:
cat /sys/kernel/debug/ntb_hw_amd/0000:43:00.1/info
LNK STA - 0x11030042
Link Status - Up
Link Speed - PCI-E Gen 3
Link Width - x16
Fixes: a1b3695820aa4 ("NTB: Add support for AMD PCI-Express Non-Transparent Bridge")
Signed-off-by: Jiasen Lin <linjiasen@hygon.cn>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
Acked-by: Takashi Iwai <tiwai@suse.de>
---
drivers/ntb/hw/amd/ntb_hw_amd.c | 4 ++--
drivers/ntb/hw/amd/ntb_hw_amd.h | 1 -
2 files changed, 2 insertions(+), 3 deletions(-)
--- a/drivers/ntb/hw/amd/ntb_hw_amd.c
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.c
@@ -819,8 +819,8 @@ static int amd_poll_link(struct amd_ntb_
ndev->cntl_sta = reg;
- rc = pci_read_config_dword(ndev->ntb.pdev,
- AMD_LINK_STATUS_OFFSET, &stat);
+ rc = pcie_capability_read_dword(ndev->ntb.pdev,
+ PCI_EXP_LNKCTL, &stat);
if (rc)
return 0;
ndev->lnk_sta = stat;
--- a/drivers/ntb/hw/amd/ntb_hw_amd.h
+++ b/drivers/ntb/hw/amd/ntb_hw_amd.h
@@ -54,7 +54,6 @@
#define PCI_DEVICE_ID_AMD_NTB 0x145B
#define AMD_LINK_HB_TIMEOUT msecs_to_jiffies(1000)
-#define AMD_LINK_STATUS_OFFSET 0x68
#define NTB_LIN_STA_ACTIVE_BIT 0x00000002
#define NTB_LNK_STA_SPEED_MASK 0x000F0000
#define NTB_LNK_STA_WIDTH_MASK 0x03F00000