#include <asm-generic/io.h>
 
-#define ARCH_BIOVEC_PHYS_MERGEABLE(vec1, vec2)                         \
-        (!xen_domain() || xen_biovec_phys_mergeable(vec1, vec2))
-
 #ifdef CONFIG_MMU
 #define ARCH_HAS_VALID_PHYS_ADDR_RANGE
 extern int valid_phys_addr_range(phys_addr_t addr, size_t size);
 
 
 extern int devmem_is_allowed(unsigned long pfn);
 
-#define ARCH_BIOVEC_PHYS_MERGEABLE(vec1, vec2)                         \
-        (!xen_domain() || xen_biovec_phys_mergeable(vec1, vec2))
-
 #endif /* __KERNEL__ */
 #endif /* __ASM_IO_H */
 
 
 #ifdef CONFIG_XEN
 #include <xen/xen.h>
-
-#define ARCH_BIOVEC_PHYS_MERGEABLE(vec1, vec2)                         \
-        (!xen_domain() || xen_biovec_phys_mergeable(vec1, vec2))
 #endif /* CONFIG_XEN */
 
 #define IO_SPACE_LIMIT 0xffff
 
 
 #include <linux/idr.h>
 #include <linux/blk-mq.h>
+#include <xen/xen.h>
 #include "blk-mq.h"
 
 /* Amount of time in which a process may batch requests */
        percpu_ref_get(&q->q_usage_counter);
 }
 
-#ifndef ARCH_BIOVEC_PHYS_MERGEABLE
-#define ARCH_BIOVEC_PHYS_MERGEABLE(vec1, vec2) true
-#endif
-
 static inline bool biovec_phys_mergeable(struct request_queue *q,
                struct bio_vec *vec1, struct bio_vec *vec2)
 {
 
        if (addr1 + vec1->bv_len != addr2)
                return false;
-       if (!ARCH_BIOVEC_PHYS_MERGEABLE(vec1, vec2))
+       if (xen_domain() && !xen_biovec_phys_mergeable(vec1, vec2))
                return false;
        if ((addr1 | mask) != ((addr2 + vec2->bv_len - 1) | mask))
                return false;
 
 // SPDX-License-Identifier: GPL-2.0
 #include <linux/bio.h>
-#include <linux/io.h>
 #include <linux/export.h>
+#include <xen/xen.h>
 #include <xen/page.h>
 
 bool xen_biovec_phys_mergeable(const struct bio_vec *vec1,