struct ntb_transport_mw {
        phys_addr_t phys_addr;
        resource_size_t phys_size;
-       resource_size_t xlat_align;
-       resource_size_t xlat_align_size;
        void __iomem *vbase;
        size_t xlat_size;
        size_t buff_size;
        struct ntb_transport_mw *mw = &nt->mw_vec[num_mw];
        struct pci_dev *pdev = nt->ndev->pdev;
        size_t xlat_size, buff_size;
+       resource_size_t xlat_align;
+       resource_size_t xlat_align_size;
        int rc;
 
        if (!size)
                return -EINVAL;
 
-       xlat_size = round_up(size, mw->xlat_align_size);
-       buff_size = round_up(size, mw->xlat_align);
+       rc = ntb_mw_get_align(nt->ndev, PIDX, num_mw, &xlat_align,
+                             &xlat_align_size, NULL);
+       if (rc)
+               return rc;
+
+       xlat_size = round_up(size, xlat_align_size);
+       buff_size = round_up(size, xlat_align);
 
        /* No need to re-setup */
        if (mw->xlat_size == xlat_size)
         * is a requirement of the hardware. It is recommended to setup CMA
         * for BAR sizes equal or greater than 4MB.
         */
-       if (!IS_ALIGNED(mw->dma_addr, mw->xlat_align)) {
+       if (!IS_ALIGNED(mw->dma_addr, xlat_align)) {
                dev_err(&pdev->dev, "DMA memory %pad is not aligned\n",
                        &mw->dma_addr);
                ntb_free_mw(nt, num_mw);
        for (i = 0; i < mw_count; i++) {
                mw = &nt->mw_vec[i];
 
-               rc = ntb_mw_get_align(ndev, PIDX, i, &mw->xlat_align,
-                                     &mw->xlat_align_size, NULL);
-               if (rc)
-                       goto err1;
-
                rc = ntb_peer_mw_get_addr(ndev, i, &mw->phys_addr,
                                          &mw->phys_size);
                if (rc)
 
 struct perf_mw {
        phys_addr_t     phys_addr;
        resource_size_t phys_size;
-       resource_size_t xlat_align;
-       resource_size_t xlat_align_size;
        void __iomem    *vbase;
        size_t          xlat_size;
        size_t          buf_size;
 {
        struct perf_mw *mw = &perf->mw;
        size_t xlat_size, buf_size;
+       resource_size_t xlat_align;
+       resource_size_t xlat_align_size;
        int rc;
 
        if (!size)
                return -EINVAL;
 
-       xlat_size = round_up(size, mw->xlat_align_size);
-       buf_size = round_up(size, mw->xlat_align);
+       rc = ntb_mw_get_align(perf->ntb, PIDX, 0, &xlat_align,
+                             &xlat_align_size, NULL);
+       if (rc)
+               return rc;
+
+       xlat_size = round_up(size, xlat_align_size);
+       buf_size = round_up(size, xlat_align);
 
        if (mw->xlat_size == xlat_size)
                return 0;
 
        mw = &perf->mw;
 
-       rc = ntb_mw_get_align(ntb, PIDX, 0, &mw->xlat_align,
-                             &mw->xlat_align_size, NULL);
-       if (rc)
-               return rc;
-
        rc = ntb_peer_mw_get_addr(ntb, 0, &mw->phys_addr, &mw->phys_size);
        if (rc)
                return rc;
 
 
        phys_addr_t base;
        resource_size_t mw_size;
-       resource_size_t align_addr;
-       resource_size_t align_size;
-       resource_size_t max_size;
+       resource_size_t align_addr = 0;
+       resource_size_t align_size = 0;
+       resource_size_t max_size = 0;
 
        buf_size = min_t(size_t, size, 512);