[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [win-pv-devel] [PATCH 1/3] Fix HvmGetParameter/HvmSetParameter
> -----Original Message----- > From: win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx [mailto:win-pv-devel- > bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Owen Smith > Sent: 25 February 2015 10:30 > To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx > Subject: [win-pv-devel] FW: [PATCH 1/3] Fix > HvmGetParameter/HvmSetParameter > > Sent to wrong address! This is mangled (probably by outlook or exchange). Best to send again. Paul > > > -----Original Message----- > > From: Owen Smith [mailto:owen.smith@xxxxxxxxxx] > > Sent: 24 February 2015 18:05 > > To: win-pv-devel@xxxxxxxxxxxxxxxxxxx > > Cc: Owen Smith > > Subject: [PATCH 1/3] Fix HvmGetParameter/HvmSetParameter > > > > Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx> > > --- > > src/xencrsh/hvm.c | 64 ++++++++++++++++++++++++++++++++++------ > --- > > ---------- > > src/xencrsh/hvm.h | 4 ++-- > > src/xencrsh/store.c | 8 +++---- > > 3 files changed, 47 insertions(+), 29 deletions(-) > > > > diff --git a/src/xencrsh/hvm.c b/src/xencrsh/hvm.c index dcc72b6..db12256 > > 100644 > > --- a/src/xencrsh/hvm.c > > +++ b/src/xencrsh/hvm.c > > @@ -298,46 +298,64 @@ HvmOp( > > > > NTSTATUS > > HvmGetParameter( > > - IN ULONG Param, > > - OUT PULONG_PTR Value > > + IN ULONG Param, > > + OUT PULONGLONG Value > > ) > > { > > - struct xen_hvm_param a; > > - LONG_PTR rc; > > + struct xen_hvm_param op; > > + LONG_PTR rc; > > + NTSTATUS status; > > > > - a.domid = DOMID_SELF; > > - a.index = Param; > > - a.value = 0xf001dead; > > + op.domid = DOMID_SELF; > > + op.index = Param; > > + op.value = 0xf001dead; > > > > - rc = HvmOp(HVMOP_get_param, &a); > > - if (rc < 0) { > > - return STATUS_UNSUCCESSFUL; > > - } > > + rc = HvmOp(HVMOP_get_param, &op); > > + if (rc < 0) > > + goto fail1; > > > > /* Horrible hack to cope with the transition from > > return parameters through the hypercall return > > value to returning them through an in-memory > > structure. */ > > - if (a.value != 0xf001dead) > > - *Value = (ULONG_PTR)a.value; > > + if (op.value != 0xf001dead) > > + *Value = (ULONG_PTR)op.value; > > else > > *Value = (ULONG_PTR)rc; > > > > return STATUS_SUCCESS; > > + > > +fail1: > > + ERRNO_TO_STATUS(-rc, status); > > + LogError("fail1 (%08x)\n", status); > > + > > + return status; > > } > > > > NTSTATUS > > HvmSetParameter( > > - IN ULONG Param, > > - IN ULONG_PTR Value > > + IN ULONG Param, > > + IN ULONGLONG Value > > ) > > { > > - struct xen_hvm_param a; > > - a.domid = DOMID_SELF; > > - a.index = Param; > > - a.value = Value; > > - if (HvmOp(HVMOP_set_param, &a) == 0) > > - return STATUS_UNSUCCESSFUL; > > - else > > - return STATUS_SUCCESS; > > + struct xen_hvm_param op; > > + LONG_PTR rc; > > + NTSTATUS status; > > + > > + op.domid = DOMID_SELF; > > + op.index = Param; > > + op.value = Value; > > + > > + rc = HvmOp(HVMOP_set_param, &op); > > + > > + if (rc < 0) > > + goto fail1; > > + > > + return STATUS_SUCCESS; > > + > > +fail1: > > + ERRNO_TO_STATUS(-rc, status); > > + LogError("fail1 (%08x)\n", status); > > + > > + return status; > > } > > diff --git a/src/xencrsh/hvm.h b/src/xencrsh/hvm.h index 8784fbc..9b8f1df > > 100644 > > --- a/src/xencrsh/hvm.h > > +++ b/src/xencrsh/hvm.h > > @@ -50,13 +50,13 @@ HvmAddToPhysMap( > > NTSTATUS > > HvmGetParameter( > > IN ULONG Param, > > - OUT PULONG_PTR Value > > + OUT PULONGLONG Value > > ); > > > > NTSTATUS > > HvmSetParameter( > > IN ULONG Param, > > - IN ULONG_PTR Value > > + IN ULONGLONG Value > > ); > > > > #endif // _XENVBD_HVM_H > > diff --git a/src/xencrsh/store.c b/src/xencrsh/store.c index > f182bf2..d474d5e > > 100644 > > --- a/src/xencrsh/store.c > > +++ b/src/xencrsh/store.c > > @@ -1062,8 +1062,8 @@ __Round( > > NTSTATUS > > StoreInitialize() > > { > > - ULONG_PTR Mfn; > > - ULONG_PTR Port; > > + ULONGLONG Mfn; > > + ULONGLONG Port; > > PHYSICAL_ADDRESS PhysAddr; > > NTSTATUS Status; > > struct xenstore_domain_interface* StoreRingPtr; @@ -1082,7 +1082,7 > > @@ StoreInitialize() > > if (!NT_SUCCESS(Status)) > > goto fail2; > > > > - LogVerbose("HVM_PARAM_STORE_PFN = %p\n", (PVOID)Mfn); > > + LogVerbose("HVM_PARAM_STORE_PFN = %p\n", > > (PVOID)(ULONG_PTR)Mfn); > > StoreRingPtr = __Round(&__StoreRingSection[0], PAGE_SIZE); > > PhysAddr = MmGetPhysicalAddress(StoreRingPtr); > > > > @@ -1095,7 +1095,7 @@ StoreInitialize() > > LogWarning("Page Swizzle to map store ring succeeded, but > > didn't > > actually do anything!\n"); > > } else { > > LogVerbose("Page Swizzle failed\n"); > > - PhysAddr.QuadPart = (ULONGLONG)Mfn << PAGE_SHIFT; > > + PhysAddr.QuadPart = Mfn << PAGE_SHIFT; > > StoreRingPtr = MmMapIoSpace(PhysAddr, PAGE_SIZE, MmCached); > > if (StoreRingPtr == NULL) > > goto fail3; > > -- > > 1.9.4.msysgit.1 > > > _______________________________________________ > win-pv-devel mailing list > win-pv-devel@xxxxxxxxxxxxxxxxxxxx > http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |