x86/platform/uv/BAU: Convert uv_physnodeaddr() use to uv_gpa_to_offset()
[cascardo/linux.git] / arch / x86 / platform / uv / tlb_uv.c
index 8462fd1..34b2a48 100644 (file)
@@ -1790,10 +1790,7 @@ static void pq_init(int node, int pnode)
        size_t plsize;
        char *cp;
        void *vp;
-       unsigned long pn;
-       unsigned long first;
-       unsigned long pn_first;
-       unsigned long last;
+       unsigned long gnode, first, last, tail;
        struct bau_pq_entry *pqp;
        struct bau_control *bcp;
 
@@ -1814,16 +1811,16 @@ static void pq_init(int node, int pnode)
                bcp->bau_msg_head       = pqp;
                bcp->queue_last         = pqp + (DEST_Q_SIZE - 1);
        }
-       /*
-        * need the gnode of where the memory was really allocated
-        */
-       pn = uv_gpa_to_gnode(uv_gpa(pqp));
-       first = uv_physnodeaddr(pqp);
-       pn_first = ((unsigned long)pn << UV_PAYLOADQ_PNODE_SHIFT) | first;
-       last = uv_physnodeaddr(pqp + (DEST_Q_SIZE - 1));
-       write_mmr_payload_first(pnode, pn_first);
-       write_mmr_payload_tail(pnode, first);
+
+       first = uv_gpa_to_offset(uv_gpa(pqp));
+       last = uv_gpa_to_offset(uv_gpa(pqp + (DEST_Q_SIZE - 1)));
+       tail = first;
+       gnode = uv_gpa_to_gnode(uv_gpa(pqp));
+       first = (gnode << UV_PAYLOADQ_GNODE_SHIFT) | tail;
+
+       write_mmr_payload_first(pnode, first);
        write_mmr_payload_last(pnode, last);
+       write_mmr_payload_tail(pnode, tail);
        write_gmmr_sw_ack(pnode, 0xffffUL);
 
        /* in effect, all msg_type's are set to MSG_NOOP */