NTB: Clear property bits in BAR value
The lower bits read from a BAR register will contain property bits that we do not care about. Clear those so that we can use the BAR values for limit and xlat registers. Reported-by: Conrad Meyer <cem@freebsd.org> Signed-off-by: Dave Jiang <dave.jiang@intel.com> Signed-off-by: Jon Mason <jdmason@kudzu.us>
This commit is contained in:
Родитель
179f912a39
Коммит
703872c2c5
|
@ -875,7 +875,7 @@ static int intel_ntb_mw_set_trans(struct ntb_dev *ntb, int idx,
|
|||
limit_reg = bar2_off(ndev->xlat_reg->bar2_limit, bar);
|
||||
|
||||
if (bar < 4 || !ndev->bar4_split) {
|
||||
base = ioread64(mmio + base_reg);
|
||||
base = ioread64(mmio + base_reg) & NTB_BAR_MASK_64;
|
||||
|
||||
/* Set the limit if supported, if size is not mw_size */
|
||||
if (limit_reg && size != mw_size)
|
||||
|
@ -906,7 +906,7 @@ static int intel_ntb_mw_set_trans(struct ntb_dev *ntb, int idx,
|
|||
if ((addr + size) & (~0ull << 32))
|
||||
return -EINVAL;
|
||||
|
||||
base = ioread32(mmio + base_reg);
|
||||
base = ioread32(mmio + base_reg) & NTB_BAR_MASK_32;
|
||||
|
||||
/* Set the limit if supported, if size is not mw_size */
|
||||
if (limit_reg && size != mw_size)
|
||||
|
|
|
@ -245,6 +245,9 @@
|
|||
#define NTB_UNSAFE_DB BIT_ULL(0)
|
||||
#define NTB_UNSAFE_SPAD BIT_ULL(1)
|
||||
|
||||
#define NTB_BAR_MASK_64 ~(0xfull)
|
||||
#define NTB_BAR_MASK_32 ~(0xfu)
|
||||
|
||||
struct intel_ntb_dev;
|
||||
|
||||
struct intel_ntb_reg {
|
||||
|
|
Загрузка…
Ссылка в новой задаче