[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH xenbus 6/7] Add a new helper function to make VCPUOP_register_vcpu_info hypercalls
From: Paul Durrant <pdurrant@xxxxxxxxxx> Signed-off-by: Paul Durrant <pdurrant@xxxxxxxxxx> --- include/xen.h | 9 +++++++++ src/xen/vcpu.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/include/xen.h b/include/xen.h index 89f68867ad5f..8fb55c753c55 100644 --- a/include/xen.h +++ b/include/xen.h @@ -495,4 +495,13 @@ VcpuSetPeriodicTimer( IN PLARGE_INTEGER Period ); +__checkReturn +XEN_API +NTSTATUS +VcpuRegisterVcpuInfo( + IN unsigned int vcpu_id, + IN PFN_NUMBER Pfn, + IN ULONG Offset + ); + #endif // _XEN_H diff --git a/src/xen/vcpu.c b/src/xen/vcpu.c index a1881cf37b0c..552b3b330878 100644 --- a/src/xen/vcpu.c +++ b/src/xen/vcpu.c @@ -80,3 +80,41 @@ fail1: return status; } + +__checkReturn +XEN_API +NTSTATUS +VcpuRegisterVcpuInfo( + IN unsigned int vcpu_id, + IN PFN_NUMBER Pfn, + IN ULONG Offset + ) +{ + struct vcpu_register_vcpu_info op; + LONG_PTR rc; + NTSTATUS status; + + op.mfn = (xen_pfn_t)Pfn; + op.offset = Offset; + op.rsvd = 0; + + // + // NOTE: This has to be called on the CPU with the matching vcpu_id + // otherwise Xen will fail the hypercall with -EINVAL. + // + + rc = VcpuOp(VCPUOP_register_vcpu_info, vcpu_id, &op); + + if (rc < 0) { + ERRNO_TO_STATUS(-rc, status); + goto fail1; + } + + return STATUS_SUCCESS; + +fail1: + Error("fail1 (%08x)\n", status); + + return status; + +} -- 2.17.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |