mirror of https://gitee.com/openkylin/qemu.git
xen: Add xc_domain_add_to_physmap to xen_interface.
This function will be used to support sync dirty bitmap. This come with a check against every Xen release, and special implementation for Xen version that doesn't have this specific call. This function will not be usable with Xen 3.3 because the behavior is different. Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
eb47d7c5d9
commit
b87de24e6c
|
@ -1210,6 +1210,7 @@ int main(void) {
|
|||
xc = xc_interface_open(0, 0, 0);
|
||||
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
||||
xc_gnttab_open(NULL, 0);
|
||||
xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
|
@ -1228,10 +1229,14 @@ EOF
|
|||
# error HVM_MAX_VCPUS not defined
|
||||
#endif
|
||||
int main(void) {
|
||||
struct xen_add_to_physmap xatp = {
|
||||
.domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
|
||||
};
|
||||
xs_daemon_open();
|
||||
xc_interface_open();
|
||||
xc_gnttab_open();
|
||||
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
||||
xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
|
@ -1240,7 +1245,29 @@ EOF
|
|||
xen_ctrl_version=400
|
||||
xen=yes
|
||||
|
||||
# Xen 3.3.0, 3.4.0
|
||||
# Xen 3.4.0
|
||||
elif (
|
||||
cat > $TMPC <<EOF
|
||||
#include <xenctrl.h>
|
||||
#include <xs.h>
|
||||
int main(void) {
|
||||
struct xen_add_to_physmap xatp = {
|
||||
.domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
|
||||
};
|
||||
xs_daemon_open();
|
||||
xc_interface_open();
|
||||
xc_gnttab_open();
|
||||
xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
|
||||
xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
|
||||
return 0;
|
||||
}
|
||||
EOF
|
||||
compile_prog "" "$xen_libs"
|
||||
) ; then
|
||||
xen_ctrl_version=340
|
||||
xen=yes
|
||||
|
||||
# Xen 3.3.0
|
||||
elif (
|
||||
cat > $TMPC <<EOF
|
||||
#include <xenctrl.h>
|
||||
|
|
|
@ -71,6 +71,20 @@ static inline int xc_domain_populate_physmap_exact
|
|||
(xc_handle, domid, nr_extents, extent_order, mem_flags, extent_start);
|
||||
}
|
||||
|
||||
static inline int xc_domain_add_to_physmap(int xc_handle, uint32_t domid,
|
||||
unsigned int space, unsigned long idx,
|
||||
xen_pfn_t gpfn)
|
||||
{
|
||||
struct xen_add_to_physmap xatp = {
|
||||
.domid = domid,
|
||||
.space = space,
|
||||
.idx = idx,
|
||||
.gpfn = gpfn,
|
||||
};
|
||||
|
||||
return xc_memory_op(xc_handle, XENMEM_add_to_physmap, &xatp);
|
||||
}
|
||||
|
||||
|
||||
/* Xen 4.1 */
|
||||
#else
|
||||
|
|
Loading…
Reference in New Issue