int cmd, uint64_t arg, int count)
{
CPUState *cs = CPU(cpu);
+ XenState *xen = cs->xen_state;
int err = -ENOSYS;
switch (cmd) {
err = 0;
break;
}
+ case GNTTABOP_query_size: {
+ struct gnttab_query_size *gqs;
+
+ gqs = gva_to_hva(cs, arg);
+ if (!gqs) {
+ err = -EFAULT;
+ break;
+ }
+
+ if (gqs->dom != DOMID_SELF) {
+ err = 0;
+ gqs->status = GNTST_permission_denied;
+ break;
+ }
+
+ gqs->nr_frames = xen->gnttab.nr_frames;
+ gqs->max_nr_frames = xen->gnttab.max_nr_frames;
+ gqs->status = GNTST_okay;
+ err = 0;
+ break;
+ }
}
exit->u.hcall.result = err;