@@ -585,6 +585,25 @@ int xendevicemodel_add_to_physmap(
return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
}
+int xendevicemodel_pin_memory_cacheattr(
+ xendevicemodel_handle *dmod, domid_t domid, uint64_t start, uint64_t end,
+ uint32_t type)
+{
+ struct xen_dm_op op;
+ struct xen_dm_op_pin_memory_cacheattr *data;
+
+ memset(&op, 0, sizeof(op));
+
+ op.op = XEN_DMOP_pin_memory_cacheattr;
+ data = &op.u.pin_memory_cacheattr;
+
+ data->start = start;
+ data->end = end;
+ data->type = type;
+
+ return xendevicemodel_op(dmod, domid, 1, &op, sizeof(op));
+}
+
int xendevicemodel_restrict(xendevicemodel_handle *dmod, domid_t domid)
{
return osdep_xendevicemodel_restrict(dmod, domid);
@@ -341,6 +341,20 @@ int xendevicemodel_add_to_physmap(
uint64_t gpfn);
/**
+ * Pins caching type of RAM space.
+ *
+ * @parm dmod a handle to an open devicemodel interface.
+ * @parm domid the domain id to be serviced
+ * @parm start Start gfn
+ * @parm end End gfn
+ * @parm type XEN_DOMCTL_MEM_CACHEATTR_*
+ * @return 0 on success, -1 on failure.
+ */
+int xendevicemodel_pin_memory_cacheattr(
+ xendevicemodel_handle *dmod, domid_t domid, uint64_t start, uint64_t end,
+ uint32_t type);
+
+/**
* This function restricts the use of this handle to the specified
* domain.
*
@@ -31,4 +31,5 @@ VERS_1.1 {
VERS_1.2 {
global:
xendevicemodel_add_to_physmap;
+ xendevicemodel_pin_memory_cacheattr;
} VERS_1.1;