// SPDX-License-Identifier: GPL-2.0 | |
#include <linux/bio.h> | |
#include <linux/io.h> | |
#include <linux/export.h> | |
#include <xen/page.h> | |
bool xen_biovec_phys_mergeable(const struct bio_vec *vec1, | |
const struct bio_vec *vec2) | |
{ | |
#if XEN_PAGE_SIZE == PAGE_SIZE | |
unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page)); | |
unsigned long bfn2 = pfn_to_bfn(page_to_pfn(vec2->bv_page)); | |
return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2; | |
#else | |
/* | |
* XXX: Add support for merging bio_vec when using different page | |
* size in Xen and Linux. | |
*/ | |
return 0; | |
#endif | |
} | |
EXPORT_SYMBOL(xen_biovec_phys_mergeable); |