Skip to content

Commit

Permalink
NTB: Register and offset values fix for memory window
Browse files Browse the repository at this point in the history
Due to incorrect limit and translation register values, NTB link was
going down when the memory window was setup. Made appropriate changes
as per spec.

Fix limit register values for BAR1, which was overlapping
with the BAR23 address.

Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Acked-by: Allen Hubbe <Allen.Hubbe@dell.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
  • Loading branch information
Shyam Sundar S K authored and Jon Mason committed Dec 23, 2016
1 parent e5b0d2d commit 872deb2
Showing 1 changed file with 4 additions and 10 deletions.
14 changes: 4 additions & 10 deletions drivers/ntb/hw/amd/ntb_hw_amd.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,11 +138,11 @@ static int amd_ntb_mw_set_trans(struct ntb_dev *ntb, int idx,
base_addr = pci_resource_start(ndev->ntb.pdev, bar);

if (bar != 1) {
xlat_reg = AMD_BAR23XLAT_OFFSET + ((bar - 2) << 3);
limit_reg = AMD_BAR23LMT_OFFSET + ((bar - 2) << 3);
xlat_reg = AMD_BAR23XLAT_OFFSET + ((bar - 2) << 2);
limit_reg = AMD_BAR23LMT_OFFSET + ((bar - 2) << 2);

/* Set the limit if supported */
limit = base_addr + size;
limit = size;

/* set and verify setting the translation address */
write64(addr, peer_mmio + xlat_reg);
Expand All @@ -164,14 +164,8 @@ static int amd_ntb_mw_set_trans(struct ntb_dev *ntb, int idx,
xlat_reg = AMD_BAR1XLAT_OFFSET;
limit_reg = AMD_BAR1LMT_OFFSET;

/* split bar addr range must all be 32 bit */
if (addr & (~0ull << 32))
return -EINVAL;
if ((addr + size) & (~0ull << 32))
return -EINVAL;

/* Set the limit if supported */
limit = base_addr + size;
limit = size;

/* set and verify setting the translation address */
write64(addr, peer_mmio + xlat_reg);
Expand Down

0 comments on commit 872deb2

Please sign in to comment.