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

Re: [win-pv-devel] [PATCH 5/6] Fold __FdoD0ToD3/__FdoD3ToD0 into caller Remove redundant functions



> -----Original Message-----
> From: win-pv-devel-bounces@xxxxxxxxxxxxxxxxxxxx [mailto:win-pv-devel-
> bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Owen Smith
> Sent: 29 October 2015 14:50
> To: win-pv-devel@xxxxxxxxxxxxxxxxxxxx
> Cc: Owen Smith
> Subject: [win-pv-devel] [PATCH 5/6] Fold __FdoD0ToD3/__FdoD3ToD0 into
> caller Remove redundant functions
> 
> Signed-off-by: Owen Smith <owen.smith@xxxxxxxxxx>

Acked-by: Paul Durrant <paul.durrant@xxxxxxxxxx>

> ---
>  src/xeniface/fdo.c | 221 
> +++++++++++++----------------------------------------
>  1 file changed, 55 insertions(+), 166 deletions(-)
> 
> diff --git a/src/xeniface/fdo.c b/src/xeniface/fdo.c
> index 2b3e44d..c1a9a8f 100644
> --- a/src/xeniface/fdo.c
> +++ b/src/xeniface/fdo.c
> @@ -522,86 +522,6 @@ FdoReleaseMutex(
>          FdoDestroy(Fdo);
>  }
> 
> -
> -static FORCEINLINE PANSI_STRING
> -__FdoMultiSzToUpcaseAnsi(
> -    IN  PCHAR       Buffer
> -    )
> -{
> -    PANSI_STRING    Ansi;
> -    LONG            Index;
> -    LONG            Count;
> -    NTSTATUS        status;
> -
> -    Index = 0;
> -    Count = 0;
> -    for (;;) {
> -        if (Buffer[Index] == '\0') {
> -            Count++;
> -            Index++;
> -
> -            // Check for double NUL
> -            if (Buffer[Index] == '\0')
> -                break;
> -        } else {
> -            Buffer[Index] = (CHAR)toupper(Buffer[Index]);
> -            Index++;
> -        }
> -    }
> -
> -    Ansi = (PANSI_STRING)__FdoAllocate(sizeof (ANSI_STRING) * (Count +
> 1));
> -
> -    status = STATUS_NO_MEMORY;
> -    if (Ansi == NULL)
> -        goto fail1;
> -
> -    for (Index = 0; Index < Count; Index++) {
> -        ULONG   Length;
> -
> -        Length = (ULONG)strlen(Buffer);
> -        Ansi[Index].MaximumLength = (USHORT)(Length + 1);
> -        Ansi[Index].Buffer =
> (PCHAR)__FdoAllocate(Ansi[Index].MaximumLength);
> -
> -        status = STATUS_NO_MEMORY;
> -        if (Ansi[Index].Buffer == NULL)
> -            goto fail2;
> -
> -        RtlCopyMemory(Ansi[Index].Buffer, Buffer, Length);
> -        Ansi[Index].Length = (USHORT)Length;
> -
> -        Buffer += Length + 1;
> -    }
> -
> -    return Ansi;
> -
> -fail2:
> -    Error("fail2\n");
> -
> -    while (--Index >= 0)
> -        __FdoFree(Ansi[Index].Buffer);
> -
> -    __FdoFree(Ansi);
> -
> -fail1:
> -    Error("fail1 (%08x)\n", status);
> -
> -    return NULL;
> -}
> -
> -static FORCEINLINE VOID
> -__FdoFreeAnsi(
> -    IN  PANSI_STRING    Ansi
> -    )
> -{
> -    ULONG               Index;
> -
> -    for (Index = 0; Ansi[Index].Buffer != NULL; Index++)
> -        __FdoFree(Ansi[Index].Buffer);
> -
> -    __FdoFree(Ansi);
> -}
> -
> -
>  static DECLSPEC_NOINLINE VOID
>  FdoParseResources(
>      IN  PXENIFACE_FDO             Fdo,
> @@ -649,17 +569,19 @@ FdoParseResources(
>      }
>  }
> 
> -static FORCEINLINE NTSTATUS
> -__FdoD3ToD0(
> +static DECLSPEC_NOINLINE NTSTATUS
> +FdoD3ToD0(
>      IN  PXENIFACE_FDO Fdo
>      )
>  {
> -    POWER_STATE     PowerState;
> +    KIRQL           Irql;
>      NTSTATUS        status;
> +    POWER_STATE     PowerState;
> 
> -    Trace("====>\n");
> +    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
> +
> +    KeRaiseIrql(DISPATCH_LEVEL, &Irql);
> 
> -    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
>      ASSERT3U(__FdoGetDevicePowerState(Fdo), ==, PowerDeviceD3);
> 
>      status = XENBUS_STORE(Acquire, &Fdo->StoreInterface);
> @@ -685,85 +607,13 @@ __FdoD3ToD0(
>      if (!NT_SUCCESS(status))
>          goto fail4;
> 
> -    __FdoSetDevicePowerState(Fdo, PowerDeviceD0);
> -
> -    PowerState.DeviceState = PowerDeviceD0;
> -    PoSetPowerState(Fdo->Dx->DeviceObject,
> -                    DevicePowerState,
> -                    PowerState);
> -
> -    Trace("<====\n");
> -
> -    return STATUS_SUCCESS;
> -
> -fail4:
> -    Error("fail4\n");
> -    XENBUS_GNTTAB(Release, &Fdo->GnttabInterface);
> -
> -fail3:
> -    Error("fail3\n");
> -    XENBUS_EVTCHN(Release, &Fdo->EvtchnInterface);
> -
> -fail2:
> -    Error("fail2\n");
> -    XENBUS_STORE(Release, &Fdo->StoreInterface);
> -
> -fail1:
> -    Error("fail1 (%08x)\n", status);
> -
> -    return status;
> -}
> -
> -static FORCEINLINE VOID
> -__FdoD0ToD3(
> -    IN  PXENIFACE_FDO Fdo
> -    )
> -{
> -    POWER_STATE     PowerState;
> -
> -    Trace("====>\n");
> -
> -    ASSERT3U(KeGetCurrentIrql(), ==, DISPATCH_LEVEL);
> -    ASSERT3U(__FdoGetDevicePowerState(Fdo), ==, PowerDeviceD0);
> -
> -    PowerState.DeviceState = PowerDeviceD3;
> -    PoSetPowerState(Fdo->Dx->DeviceObject,
> -                    DevicePowerState,
> -                    PowerState);
> -
> -    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
> -
> -    XENBUS_GNTTAB(DestroyCache, &Fdo->GnttabInterface, Fdo-
> >GnttabCache);
> -    XENBUS_GNTTAB(Release, &Fdo->GnttabInterface);
> -    XENBUS_EVTCHN(Release, &Fdo->EvtchnInterface);
> -    XENBUS_STORE(Release, &Fdo->StoreInterface);
> -
> -    Trace("<====\n");
> -}
> -
> -static DECLSPEC_NOINLINE NTSTATUS
> -FdoD3ToD0(
> -    IN  PXENIFACE_FDO Fdo
> -    )
> -{
> -    KIRQL           Irql;
> -    NTSTATUS        status;
> -
> -    ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
> -
> -    KeRaiseIrql(DISPATCH_LEVEL, &Irql);
> -
> -    status = __FdoD3ToD0(Fdo);
> -    if (!NT_SUCCESS(status))
> -        goto fail1;
> -
>      status = XENBUS_SUSPEND(Acquire, &Fdo->SuspendInterface);
>      if (!NT_SUCCESS(status))
> -        goto fail2;
> +        goto fail5;
> 
>      status = XENBUS_SHARED_INFO(Acquire, &Fdo->SharedInfoInterface);
>      if (!NT_SUCCESS(status))
> -        goto fail3;
> +        goto fail6;
> 
>      status = XENBUS_SUSPEND(Register,
>                              &Fdo->SuspendInterface,
> @@ -772,7 +622,14 @@ FdoD3ToD0(
>                              Fdo,
>                              &Fdo->SuspendCallbackLate);
>      if (!NT_SUCCESS(status))
> -        goto fail4;
> +        goto fail7;
> +
> +    __FdoSetDevicePowerState(Fdo, PowerDeviceD0);
> +
> +    PowerState.DeviceState = PowerDeviceD0;
> +    PoSetPowerState(Fdo->Dx->DeviceObject,
> +                    DevicePowerState,
> +                    PowerState);
> 
>      Fdo->InterfacesAcquired = TRUE;
>      KeLowerIrql(Irql);
> @@ -781,20 +638,38 @@ FdoD3ToD0(
> 
>      return STATUS_SUCCESS;
> 
> +fail7:
> +    Error("fail7\n");
> +
> +    XENBUS_SHARED_INFO(Release, &Fdo->SharedInfoInterface);
> +
> +fail6:
> +    Error("fail6\n");
> +
> +    XENBUS_SUSPEND(Release, &Fdo->SuspendInterface);
> +
> +fail5:
> +    Error("fail5\n");
> +
> +    XENBUS_GNTTAB(DestroyCache,
> +                  &Fdo->GnttabInterface,
> +                  Fdo->GnttabCache);
> +    Fdo->GnttabCache = NULL;
> +
>  fail4:
>      Error("fail4\n");
> 
> -    XENBUS_SHARED_INFO(Release, &Fdo->SharedInfoInterface);
> +    XENBUS_GNTTAB(Release, &Fdo->GnttabInterface);
> 
>  fail3:
>      Error("fail3\n");
> 
> -    XENBUS_SUSPEND(Release, &Fdo->SuspendInterface);
> +    XENBUS_EVTCHN(Release, &Fdo->EvtchnInterface);
> 
>  fail2:
>      Error("fail2\n");
> 
> -    __FdoD0ToD3(Fdo);
> +    XENBUS_STORE(Release, &Fdo->StoreInterface);
> 
>  fail1:
>      Error("fail1 (%08x)\n", status);
> @@ -810,12 +685,14 @@ FdoD0ToD3(
>      )
>  {
>      KIRQL           Irql;
> +    POWER_STATE     PowerState;
> 
>      ASSERT3U(KeGetCurrentIrql(), ==, PASSIVE_LEVEL);
> 
>      WmiSessionsSuspendAll(Fdo);
> 
>      KeRaiseIrql(DISPATCH_LEVEL, &Irql);
> +
>      Fdo->InterfacesAcquired = FALSE;
> 
>      XENBUS_SUSPEND(Deregister,
> @@ -824,10 +701,23 @@ FdoD0ToD3(
>      Fdo->SuspendCallbackLate = NULL;
> 
>      XENBUS_SHARED_INFO(Release, &Fdo->SharedInfoInterface);
> -
>      XENBUS_SUSPEND(Release, &Fdo->SuspendInterface);
> 
> -    __FdoD0ToD3(Fdo);
> +    XENBUS_GNTTAB(DestroyCache,
> +                  &Fdo->GnttabInterface,
> +                  Fdo->GnttabCache);
> +    Fdo->GnttabCache = NULL;
> +
> +    XENBUS_GNTTAB(Release, &Fdo->GnttabInterface);
> +    XENBUS_EVTCHN(Release, &Fdo->EvtchnInterface);
> +    XENBUS_STORE(Release, &Fdo->StoreInterface);
> +
> +    PowerState.DeviceState = PowerDeviceD3;
> +    PoSetPowerState(Fdo->Dx->DeviceObject,
> +                    DevicePowerState,
> +                    PowerState);
> +
> +    __FdoSetDevicePowerState(Fdo, PowerDeviceD3);
> 
>      KeLowerIrql(Irql);
>  }
> @@ -912,7 +802,6 @@ fail3:
>      FdoS3ToS4(Fdo);
>      __FdoSetSystemPowerState(Fdo, PowerSystemShutdown);
> 
> -
>      RtlZeroMemory(&Fdo->Resource, sizeof (FDO_RESOURCE) *
> RESOURCE_COUNT);
> 
>  fail1:
> --
> 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


 


Rackspace

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