NTB: Fix NTB-RP Link Up
The Xeon NTB-RP setup, the transparent side does not get a link up/down interrupt. Since the presence of a NTB device on the transparent side means that we have a NTB link up, we can work around the lack of an interrupt by simply calling the link up function to notify the upper layers. Signed-off-by: Jon Mason <jon.mason@intel.com>
This commit is contained in:
parent
c529aa3033
commit
9fec60c414
@ -1296,6 +1296,32 @@ static void ntb_free_debugfs(struct ntb_device *ndev)
|
||||
}
|
||||
}
|
||||
|
||||
static void ntb_hw_link_up(struct ntb_device *ndev)
|
||||
{
|
||||
if (ndev->conn_type == NTB_CONN_TRANSPARENT)
|
||||
ntb_link_event(ndev, NTB_LINK_UP);
|
||||
else
|
||||
/* Let's bring the NTB link up */
|
||||
writel(NTB_CNTL_BAR23_SNOOP | NTB_CNTL_BAR45_SNOOP,
|
||||
ndev->reg_ofs.lnk_cntl);
|
||||
}
|
||||
|
||||
static void ntb_hw_link_down(struct ntb_device *ndev)
|
||||
{
|
||||
u32 ntb_cntl;
|
||||
|
||||
if (ndev->conn_type == NTB_CONN_TRANSPARENT) {
|
||||
ntb_link_event(ndev, NTB_LINK_DOWN);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Bring NTB link down */
|
||||
ntb_cntl = readl(ndev->reg_ofs.lnk_cntl);
|
||||
ntb_cntl &= ~(NTB_CNTL_BAR23_SNOOP | NTB_CNTL_BAR45_SNOOP);
|
||||
ntb_cntl |= NTB_CNTL_LINK_DISABLE;
|
||||
writel(ntb_cntl, ndev->reg_ofs.lnk_cntl);
|
||||
}
|
||||
|
||||
static int ntb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
{
|
||||
struct ntb_device *ndev;
|
||||
@ -1384,9 +1410,7 @@ static int ntb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
if (rc)
|
||||
goto err6;
|
||||
|
||||
/* Let's bring the NTB link up */
|
||||
writel(NTB_CNTL_BAR23_SNOOP | NTB_CNTL_BAR45_SNOOP,
|
||||
ndev->reg_ofs.lnk_cntl);
|
||||
ntb_hw_link_up(ndev);
|
||||
|
||||
return 0;
|
||||
|
||||
@ -1416,12 +1440,8 @@ static void ntb_pci_remove(struct pci_dev *pdev)
|
||||
{
|
||||
struct ntb_device *ndev = pci_get_drvdata(pdev);
|
||||
int i;
|
||||
u32 ntb_cntl;
|
||||
|
||||
/* Bring NTB link down */
|
||||
ntb_cntl = readl(ndev->reg_ofs.lnk_cntl);
|
||||
ntb_cntl |= NTB_CNTL_LINK_DISABLE;
|
||||
writel(ntb_cntl, ndev->reg_ofs.lnk_cntl);
|
||||
ntb_hw_link_down(ndev);
|
||||
|
||||
ntb_transport_free(ndev->ntb_transport);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user