Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris...
[sfrench/cifs-2.6.git] / drivers / infiniband / hw / ehca / ehca_mrmw.c
index b781b2cb062409a2f97a4a045c2c67b7e6641a71..87844869dcc2f76f8a07d9b6397d02a16bfbeeae 100644 (file)
@@ -1136,7 +1136,7 @@ int ehca_reg_mr_rpages(struct ehca_shca *shca,
                }
 
                if (rnum > 1) {
-                       rpage = virt_to_abs(kpage);
+                       rpage = __pa(kpage);
                        if (!rpage) {
                                ehca_err(&shca->ib_device, "kpage=%p i=%x",
                                         kpage, i);
@@ -1231,7 +1231,7 @@ inline int ehca_rereg_mr_rereg1(struct ehca_shca *shca,
                         pginfo->num_kpages, pginfo->num_hwpages, kpage);
                goto ehca_rereg_mr_rereg1_exit1;
        }
-       rpage = virt_to_abs(kpage);
+       rpage = __pa(kpage);
        if (!rpage) {
                ehca_err(&shca->ib_device, "kpage=%p", kpage);
                ret = -EFAULT;
@@ -1525,7 +1525,7 @@ static inline void *ehca_calc_sectbase(int top, int dir, int idx)
        unsigned long ret = idx;
        ret |= dir << EHCA_DIR_INDEX_SHIFT;
        ret |= top << EHCA_TOP_INDEX_SHIFT;
-       return abs_to_virt(ret << SECTION_SIZE_BITS);
+       return __va(ret << SECTION_SIZE_BITS);
 }
 
 #define ehca_bmap_valid(entry) \
@@ -1537,7 +1537,7 @@ static u64 ehca_reg_mr_section(int top, int dir, int idx, u64 *kpage,
 {
        u64 h_ret = 0;
        unsigned long page = 0;
-       u64 rpage = virt_to_abs(kpage);
+       u64 rpage = __pa(kpage);
        int page_count;
 
        void *sectbase = ehca_calc_sectbase(top, dir, idx);
@@ -1553,7 +1553,7 @@ static u64 ehca_reg_mr_section(int top, int dir, int idx, u64 *kpage,
                for (rnum = 0; (rnum < MAX_RPAGES) && (page < page_count);
                     rnum++) {
                        void *pg = sectbase + ((page++) * pginfo->hwpage_size);
-                       kpage[rnum] = virt_to_abs(pg);
+                       kpage[rnum] = __pa(pg);
                }
 
                h_ret = hipz_h_register_rpage_mr(shca->ipz_hca_handle, mr,
@@ -1870,9 +1870,8 @@ static int ehca_set_pagebuf_user1(struct ehca_mr_pginfo *pginfo,
                for (i = pginfo->u.usr.next_nmap; i < chunk->nmap; ) {
                        pgaddr = page_to_pfn(sg_page(&chunk->page_list[i]))
                                << PAGE_SHIFT ;
-                       *kpage = phys_to_abs(pgaddr +
-                                            (pginfo->next_hwpage *
-                                             pginfo->hwpage_size));
+                       *kpage = pgaddr + (pginfo->next_hwpage *
+                                          pginfo->hwpage_size);
                        if ( !(*kpage) ) {
                                ehca_gen_err("pgaddr=%llx "
                                             "chunk->page_list[i]=%llx "
@@ -1927,7 +1926,7 @@ static int ehca_check_kpages_per_ate(struct scatterlist *page_list,
                u64 pgaddr = page_to_pfn(sg_page(&page_list[t])) << PAGE_SHIFT;
                if (ehca_debug_level >= 3)
                        ehca_gen_dbg("chunk_page=%llx value=%016llx", pgaddr,
-                                    *(u64 *)abs_to_virt(phys_to_abs(pgaddr)));
+                                    *(u64 *)__va(pgaddr));
                if (pgaddr - PAGE_SIZE != *prev_pgaddr) {
                        ehca_gen_err("uncontiguous page found pgaddr=%llx "
                                     "prev_pgaddr=%llx page_list_i=%x",
@@ -1962,7 +1961,7 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
                        if (nr_kpages == kpages_per_hwpage) {
                                pgaddr = ( page_to_pfn(sg_page(&chunk->page_list[i]))
                                           << PAGE_SHIFT );
-                               *kpage = phys_to_abs(pgaddr);
+                               *kpage = pgaddr;
                                if ( !(*kpage) ) {
                                        ehca_gen_err("pgaddr=%llx i=%x",
                                                     pgaddr, i);
@@ -1990,13 +1989,11 @@ static int ehca_set_pagebuf_user2(struct ehca_mr_pginfo *pginfo,
                                                 (pginfo->hwpage_size - 1)) >>
                                                PAGE_SHIFT;
                                        nr_kpages -= pginfo->kpage_cnt;
-                                       *kpage = phys_to_abs(
-                                               pgaddr &
-                                               ~(pginfo->hwpage_size - 1));
+                                       *kpage = pgaddr &
+                                                ~(pginfo->hwpage_size - 1);
                                }
                                if (ehca_debug_level >= 3) {
-                                       u64 val = *(u64 *)abs_to_virt(
-                                               phys_to_abs(pgaddr));
+                                       u64 val = *(u64 *)__va(pgaddr);
                                        ehca_gen_dbg("kpage=%llx chunk_page=%llx "
                                                     "value=%016llx",
                                                     *kpage, pgaddr, val);
@@ -2084,9 +2081,8 @@ static int ehca_set_pagebuf_phys(struct ehca_mr_pginfo *pginfo,
                                             pginfo->num_hwpages, i);
                                return -EFAULT;
                        }
-                       *kpage = phys_to_abs(
-                               (pbuf->addr & ~(pginfo->hwpage_size - 1)) +
-                               (pginfo->next_hwpage * pginfo->hwpage_size));
+                       *kpage = (pbuf->addr & ~(pginfo->hwpage_size - 1)) +
+                                (pginfo->next_hwpage * pginfo->hwpage_size);
                        if ( !(*kpage) && pbuf->addr ) {
                                ehca_gen_err("pbuf->addr=%llx pbuf->size=%llx "
                                             "next_hwpage=%llx", pbuf->addr,
@@ -2124,8 +2120,8 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo,
        /* loop over desired page_list entries */
        fmrlist = pginfo->u.fmr.page_list + pginfo->u.fmr.next_listelem;
        for (i = 0; i < number; i++) {
-               *kpage = phys_to_abs((*fmrlist & ~(pginfo->hwpage_size - 1)) +
-                                    pginfo->next_hwpage * pginfo->hwpage_size);
+               *kpage = (*fmrlist & ~(pginfo->hwpage_size - 1)) +
+                          pginfo->next_hwpage * pginfo->hwpage_size;
                if ( !(*kpage) ) {
                        ehca_gen_err("*fmrlist=%llx fmrlist=%p "
                                     "next_listelem=%llx next_hwpage=%llx",
@@ -2152,8 +2148,7 @@ static int ehca_set_pagebuf_fmr(struct ehca_mr_pginfo *pginfo,
                        u64 prev = *kpage;
                        /* check if adrs are contiguous */
                        for (j = 1; j < cnt_per_hwpage; j++) {
-                               u64 p = phys_to_abs(fmrlist[j] &
-                                                   ~(pginfo->hwpage_size - 1));
+                               u64 p = fmrlist[j] & ~(pginfo->hwpage_size - 1);
                                if (prev + pginfo->u.fmr.fmr_pgsize != p) {
                                        ehca_gen_err("uncontiguous fmr pages "
                                                     "found prev=%llx p=%llx "
@@ -2388,8 +2383,8 @@ static int ehca_update_busmap(unsigned long pfn, unsigned long nr_pages)
                memset(ehca_bmap, 0xFF, EHCA_TOP_MAP_SIZE);
        }
 
-       start_section = phys_to_abs(pfn * PAGE_SIZE) / EHCA_SECTSIZE;
-       end_section = phys_to_abs((pfn + nr_pages) * PAGE_SIZE) / EHCA_SECTSIZE;
+       start_section = (pfn * PAGE_SIZE) / EHCA_SECTSIZE;
+       end_section = ((pfn + nr_pages) * PAGE_SIZE) / EHCA_SECTSIZE;
        for (i = start_section; i < end_section; i++) {
                int ret;
                top = ehca_calc_index(i, EHCA_TOP_INDEX_SHIFT);
@@ -2508,7 +2503,7 @@ static u64 ehca_map_vaddr(void *caddr)
        if (!ehca_bmap)
                return EHCA_INVAL_ADDR;
 
-       abs_addr = virt_to_abs(caddr);
+       abs_addr = __pa(caddr);
        top = ehca_calc_index(abs_addr, EHCA_TOP_INDEX_SHIFT + EHCA_SECTSHIFT);
        if (!ehca_bmap_valid(ehca_bmap->top[top]))
                return EHCA_INVAL_ADDR;