extern s64 uv_bios_get_sn_info(int, int *, long *, long *, long *);
 extern s64 uv_bios_freq_base(u64, u64 *);
-extern int uv_bios_mq_watchlist_alloc(int, void *, unsigned int,
+extern int uv_bios_mq_watchlist_alloc(int, unsigned long, unsigned int,
                                        unsigned long *);
 extern int uv_bios_mq_watchlist_free(int, int);
 extern s64 uv_bios_change_memprotect(u64, u64, enum uv_memprotect);
 
 }
 
 int
-uv_bios_mq_watchlist_alloc(int blade, void *mq, unsigned int mq_size,
+uv_bios_mq_watchlist_alloc(int blade, unsigned long addr, unsigned int mq_size,
                           unsigned long *intr_mmr_offset)
 {
        union uv_watchlist_u size_blade;
-       unsigned long addr;
        u64 watchlist;
        s64 ret;
 
-       addr = (unsigned long)mq;
        size_blade.size = mq_size;
        size_blade.blade = blade;
 
 
        int ret;
 
 #if defined CONFIG_X86_64
-       ret = uv_bios_mq_watchlist_alloc(mq->mmr_blade, mq->address, mq->order,
-                                        &mq->mmr_offset);
+       ret = uv_bios_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
+                                        mq->order, &mq->mmr_offset);
        if (ret < 0) {
                dev_err(xpc_part, "uv_bios_mq_watchlist_alloc() failed, "
                        "ret=%d\n", ret);
                return ret;
        }
 #elif defined CONFIG_IA64_GENERIC || defined CONFIG_IA64_SGI_UV
-       ret = sn_mq_watchlist_alloc(mq->mmr_blade, mq->address, mq->order,
-                                   &mq->mmr_offset);
+       ret = sn_mq_watchlist_alloc(mq->mmr_blade, uv_gpa(mq->address),
+                                   mq->order, &mq->mmr_offset);
        if (ret < 0) {
                dev_err(xpc_part, "sn_mq_watchlist_alloc() failed, ret=%d\n",
                        ret);