From: "Siyuan, Fu" <siyuan.fu@intel.com>
To: "Rabeda, Maciej" <maciej.rabeda@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Wu, Jiaxin" <jiaxin.wu@intel.com>
Subject: Re: [PATCH v1 1/1] NetworkPkg/SnpDxe: Remove ExitBootServices event
Date: Wed, 9 Oct 2019 02:07:54 +0000 [thread overview]
Message-ID: <B1FF2E9001CE9041BD10B825821D5BC58B892B09@SHSMSX103.ccr.corp.intel.com> (raw)
In-Reply-To: <20191008161629.14668-2-maciej.rabeda@intel.com>
Hi, Maciej
Have you tested what will happen if this SNP co-work with those UNDI drivers which don't have an ExitBootService event callback to shut down its DMA activity? And what's the impact to OS if UNDI's DMA is not shut down?
Best Regards
Siyuan
> -----Original Message-----
> From: Rabeda, Maciej <maciej.rabeda@intel.com>
> Sent: 2019年10月9日 0:16
> To: devel@edk2.groups.io
> Cc: Fu, Siyuan <siyuan.fu@intel.com>; Wu, Jiaxin <jiaxin.wu@intel.com>
> Subject: [PATCH v1 1/1] NetworkPkg/SnpDxe: Remove ExitBootServices
> event
>
> Patch addresses Bugzilla #1972.
> During ExitBootServices stage, drivers should not call any
> functions known to use Memory Allocation Services. One of such
> functions (as per UEFI spec) is UNDI->Shutdown().
>
> Since UNDI drivers during ExitBootServices phase are expected
> to put the adapter to such a state that it will not perform any DMA
> operations, there is no need to interface UNDI by SNP driver during
> that phase.
>
> Finally, since ExitBootServices event notification function in SNP
> only calls UNDI->Shutdown() and Stop() functions, there is no need
> to create this event at all.
>
> Signed-off-by: Maciej Rabeda <maciej.rabeda@intel.com>
> Cc: Siyuan Fu <siyuan.fu@intel.com>
> Cc: Jiaxin Wu <jiaxin.wu@intel.com>
> ---
> NetworkPkg/SnpDxe/Snp.c | 45 --------------------
> NetworkPkg/SnpDxe/Snp.h | 2 -
> NetworkPkg/SnpDxe/SnpDxe.inf | 3 --
> 3 files changed, 50 deletions(-)
>
> diff --git a/NetworkPkg/SnpDxe/Snp.c b/NetworkPkg/SnpDxe/Snp.c
> index a23af05078bc..7646a3ce0293 100644
> --- a/NetworkPkg/SnpDxe/Snp.c
> +++ b/NetworkPkg/SnpDxe/Snp.c
> @@ -8,31 +8,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
>
> #include "Snp.h"
>
> -/**
> - One notified function to stop UNDI device when gBS->ExitBootServices()
> called.
> -
> - @param Event Pointer to this event
> - @param Context Event handler private data
> -
> -**/
> -VOID
> -EFIAPI
> -SnpNotifyExitBootServices (
> - EFI_EVENT Event,
> - VOID *Context
> - )
> -{
> - SNP_DRIVER *Snp;
> -
> - Snp = (SNP_DRIVER *)Context;
> -
> - //
> - // Shutdown and stop UNDI driver
> - //
> - PxeShutdown (Snp);
> - PxeStop (Snp);
> -}
> -
> /**
> Send command to UNDI. It does nothing currently.
>
> @@ -647,21 +622,6 @@ SimpleNetworkDriverStart (
> PxeShutdown (Snp);
> PxeStop (Snp);
>
> - //
> - // Create EXIT_BOOT_SERIVES Event
> - //
> - Status = gBS->CreateEventEx (
> - EVT_NOTIFY_SIGNAL,
> - TPL_NOTIFY,
> - SnpNotifyExitBootServices,
> - Snp,
> - &gEfiEventExitBootServicesGuid,
> - &Snp->ExitBootServicesEvent
> - );
> - if (EFI_ERROR (Status)) {
> - goto Error_DeleteSNP;
> - }
> -
> //
> // add SNP to the undi handle
> //
> @@ -778,11 +738,6 @@ SimpleNetworkDriverStop (
> return Status;
> }
>
> - //
> - // Close EXIT_BOOT_SERIVES Event
> - //
> - gBS->CloseEvent (Snp->ExitBootServicesEvent);
> -
> Status = gBS->CloseProtocol (
> Controller,
> &gEfiNetworkInterfaceIdentifierProtocolGuid_31,
> diff --git a/NetworkPkg/SnpDxe/Snp.h b/NetworkPkg/SnpDxe/Snp.h
> index e6b62930397d..f83a4f075adc 100644
> --- a/NetworkPkg/SnpDxe/Snp.h
> +++ b/NetworkPkg/SnpDxe/Snp.h
> @@ -120,8 +120,6 @@ typedef struct {
> VOID *MapCookie;
> } MapList[MAX_MAP_LENGTH];
>
> - EFI_EVENT ExitBootServicesEvent;
> -
> //
> // Whether UNDI support reporting media status from GET_STATUS
> command,
> // i.e. PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED or
> diff --git a/NetworkPkg/SnpDxe/SnpDxe.inf
> b/NetworkPkg/SnpDxe/SnpDxe.inf
> index afeb1526cc10..8d045cfcf4ca 100644
> --- a/NetworkPkg/SnpDxe/SnpDxe.inf
> +++ b/NetworkPkg/SnpDxe/SnpDxe.inf
> @@ -64,9 +64,6 @@
> DebugLib
> NetLib
>
> -[Guids]
> - gEfiEventExitBootServicesGuid ## SOMETIMES_CONSUMES ##
> Event
> -
> [Protocols]
> gEfiSimpleNetworkProtocolGuid ## BY_START
> gEfiDevicePathProtocolGuid ## TO_START
> --
> 2.17.0.windows.1
next prev parent reply other threads:[~2019-10-09 2:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-08 16:16 [PATCH v1 0/1] Remove UNDI calls from SNP during ExitBootServices Rabeda, Maciej
2019-10-08 16:16 ` [PATCH v1 1/1] NetworkPkg/SnpDxe: Remove ExitBootServices event Rabeda, Maciej
2019-10-09 2:07 ` Siyuan, Fu [this message]
2019-10-09 8:50 ` Rabeda, Maciej
2019-10-09 9:38 ` [edk2-devel] " Tomas Pilar (tpilar)
2019-10-09 22:09 ` Laszlo Ersek
2019-10-10 3:32 ` Siyuan, Fu
2019-10-10 8:06 ` Laszlo Ersek
2019-10-10 9:29 ` Siyuan, Fu
2019-10-10 16:06 ` Laszlo Ersek
2019-10-11 0:14 ` Siyuan, Fu
2019-10-11 9:41 ` Laszlo Ersek
2019-10-11 10:08 ` Rabeda, Maciej
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=B1FF2E9001CE9041BD10B825821D5BC58B892B09@SHSMSX103.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox