[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [win-pv-devel] [PATCH 1/2] Add foreign page mapping functions to the GNTTAB interface



> -----Original Message-----
> From: RafaÅ WojdyÅa [mailto:omeg@xxxxxxxxxxxxxxxxxxxxxx]
> Sent: 07 September 2015 15:06
> To: Paul Durrant; win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [win-pv-devel] [PATCH 1/2] Add foreign page mapping functions
> to the GNTTAB interface
> 
> On 2015-09-04 14:39, RafaÅ WojdyÅa wrote:
> > On 2015-09-04 10:58, Paul Durrant wrote:
> >>> -----Original Message-----
> >>> From: win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx [mailto:win-pv-
> devel-
> >>> bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Rafal Wojdyla
> >>> Sent: 25 August 2015 17:16
> >>> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> >>> Subject: [win-pv-devel] [PATCH 1/2] Add foreign page mapping
> functions to
> >>> the GNTTAB interface
> >>>
> >>> +__checkReturn
> >>> +XEN_API
> >>> +NTSTATUS
> >>> +GrantTableMapForeignPage(
> >>> +    IN  USHORT                  Domain,
> >>> +    IN  ULONG                   GrantRef,
> >>> +    IN  PHYSICAL_ADDRESS        Address,
> >>> +    IN  BOOLEAN                 ReadOnly,
> >>> +    OUT ULONG                   *Handle
> >>> +    )
> >>> +{
> >>> +    struct gnttab_map_grant_ref op;
> >>> +    LONG_PTR rc;
> >>> +    NTSTATUS status;
> >>> +
> >>> +    RtlZeroMemory(&op, sizeof(op));
> >>> +    op.dom = Domain;
> >>> +    op.ref = GrantRef;
> >>> +    op.flags = GNTMAP_host_map;
> >>> +    if (ReadOnly)
> >>> +        op.flags |= GNTMAP_readonly;
> >>> +    op.host_addr = Address.QuadPart;
> >>> +
> >>> +    rc = GrantTableOp(GNTTABOP_map_grant_ref, &op, 1);
> >>> +
> >>> +    if (rc < 0) {
> >>> +        ERRNO_TO_STATUS(-rc, status);
> >>> +        goto fail1;
> >>> +    }
> >>> +
> >>> +    if (op.status != GNTST_okay) {
> >>> +        status = STATUS_UNSUCCESSFUL;
> >>> +        goto fail2;
> >>> +    }
> >>> +
> >>> +    *Handle = op.handle;
> >>> +
> >>> +    return STATUS_SUCCESS;
> >>> +
> >>> +fail2:
> >>> +    Error("fail2: op.status = %d\n", op.status);
> >>
> >> In general I've tried to keep 'Error' messages other than 'fail1:'
> plain. Rather than just setting status to unsuccessful and logging the
> raw grant status here it would be nicer to have a GNTST_TO_STATUS()
> macro to set status to something meaningful and then just log that in
> the 'fail1:' below.
> > Noted.
> Unfortunately most of the GNTST_* values don't really have any
> meaningful NTSTATUS equivalents. Any ideas on how to approach this? I
> guess we could define custom values but that doesn't sound ideal...

Ok, probably just separately log it then if you think the value will be useful 
for debugging.

  Paul

> 
> --
> RafaÅ WojdyÅa
> Qubes Tools for Windows developer
> https://www.qubes-os.org/
_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.