* [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol @ 2017-06-28 13:22 Star Zeng [not found] ` <CGME20170628132257epcas2p179c316d36aced662ceb27feef4d4d48a@epcms5p7> ` (3 more replies) 0 siblings, 4 replies; 10+ messages in thread From: Star Zeng @ 2017-06-28 13:22 UTC (permalink / raw) To: edk2-devel Cc: Amit Kumar, Laszlo Ersek, Michael D Kinney, Liming Gao, Gabriel Somlo, Star Zeng From: Amit Kumar <amit.ak@samsung.com> Change since v4: Revise the patch based on V4 sent by Amit Kumar 1) Only return the corresponding protocol interface in *Interface if the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. 2) Interface is returned unmodified for all error conditions except EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in *Interface when EFI_UNSUPPORTED and Attributes is not EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be returned in *Interface when EFI_ALREADY_STARTED. Change since v3: 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL and Inteface = NULL case. [Reported by:star.zeng at intel.com] Change Since v2: 1) Modified to use EFI_ERROR to get status code Change since v1: 1) Fixed typo protocal to protocol 2) Fixed coding style Cc: Laszlo Ersek <lersek@redhat.com> Cc: Amit Kumar <amit.ak@samsung.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Gabriel Somlo <gsomlo@gmail.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Amit Kumar <amit.ak@samsung.com> Signed-off-by: Star Zeng <star.zeng@intel.com> --- MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c index 59b89148c8f0..3862a3876f4a 100644 --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( // // Check for invalid Interface // - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { - if (Interface == NULL) { - return EFI_INVALID_PARAMETER; - } else { - *Interface = NULL; - } + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { + return EFI_INVALID_PARAMETER; } // @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( goto Done; } - // - // This is the protocol interface entry for this protocol - // - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { - *Interface = Prot->Interface; - } Status = EFI_SUCCESS; ByDriver = FALSE; @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( } Done: + + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { + // + // Keep Interface unmodified in case of any Error + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. + // + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { + // + // EFI_ALREADY_STARTED is not an error for bus driver. + // Return the corresponding protocol interface. + // + *Interface = Prot->Interface; + } else if (Status == EFI_UNSUPPORTED) { + // + // Return NULL Interface if Unsupported Protocol. + // + *Interface = NULL; + } + } + // - // Done. Release the database lock are return + // Done. Release the database lock and return // CoreReleaseProtocolLock (); return Status; -- 2.7.0.windows.1 ^ permalink raw reply related [flat|nested] 10+ messages in thread
[parent not found: <CGME20170628132257epcas2p179c316d36aced662ceb27feef4d4d48a@epcms5p7>]
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol [not found] ` <CGME20170628132257epcas2p179c316d36aced662ceb27feef4d4d48a@epcms5p7> @ 2017-06-28 13:43 ` Amit Kumar 0 siblings, 0 replies; 10+ messages in thread From: Amit Kumar @ 2017-06-28 13:43 UTC (permalink / raw) To: edk2-devel@lists.01.org Cc: Laszlo Ersek, Michael D Kinney, Liming Gao, Gabriel Somlo, Star Zeng Spec + Pach Looks fine to me. --------- Original Message --------- Sender : Star Zeng <star.zeng@intel.com> Date : 2017-06-28 18:52 (GMT+5:30) Title : [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol To : edk2-devel@lists.01.org CC : Amit Kumar<amit.ak@samsung.com>, null<lersek@redhat.com>, null<michael.d.kinney@intel.com>, null<liming.gao@intel.com>, null<gsomlo@gmail.com>, null<star.zeng@intel.com> From: Amit Kumar <amit.ak@samsung.com> Change since v4: Revise the patch based on V4 sent by Amit Kumar 1) Only return the corresponding protocol interface in *Interface if the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. 2) Interface is returned unmodified for all error conditions except EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in *Interface when EFI_UNSUPPORTED and Attributes is not EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be returned in *Interface when EFI_ALREADY_STARTED. Change since v3: 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL and Inteface = NULL case. [Reported by:star.zeng at intel.com] Change Since v2: 1) Modified to use EFI_ERROR to get status code Change since v1: 1) Fixed typo protocal to protocol 2) Fixed coding style Cc: Laszlo Ersek <lersek@redhat.com> Cc: Amit Kumar <amit.ak@samsung.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Gabriel Somlo <gsomlo@gmail.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Amit Kumar <amit.ak@samsung.com> Signed-off-by: Star Zeng <star.zeng@intel.com> --- MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c index 59b89148c8f0..3862a3876f4a 100644 --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( // // Check for invalid Interface // - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { - if (Interface == NULL) { - return EFI_INVALID_PARAMETER; - } else { - *Interface = NULL; - } + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { + return EFI_INVALID_PARAMETER; } // @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( goto Done; } - // - // This is the protocol interface entry for this protocol - // - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { - *Interface = Prot->Interface; - } Status = EFI_SUCCESS; ByDriver = FALSE; @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( } Done: + + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { + // + // Keep Interface unmodified in case of any Error + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. + // + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { + // + // EFI_ALREADY_STARTED is not an error for bus driver. + // Return the corresponding protocol interface. + // + *Interface = Prot->Interface; + } else if (Status == EFI_UNSUPPORTED) { + // + // Return NULL Interface if Unsupported Protocol. + // + *Interface = NULL; + } + } + // - // Done. Release the database lock are return + // Done. Release the database lock and return // CoreReleaseProtocolLock (); return Status; -- 2.7.0.windows.1 ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-06-28 13:22 [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol Star Zeng [not found] ` <CGME20170628132257epcas2p179c316d36aced662ceb27feef4d4d48a@epcms5p7> @ 2017-06-28 14:04 ` Gabriel L. Somlo 2017-06-28 14:13 ` Laszlo Ersek 2017-06-28 18:10 ` Amit kumar 3 siblings, 0 replies; 10+ messages in thread From: Gabriel L. Somlo @ 2017-06-28 14:04 UTC (permalink / raw) To: Star Zeng Cc: edk2-devel, Amit Kumar, Laszlo Ersek, Michael D Kinney, Liming Gao On Wed, Jun 28, 2017 at 09:22:50PM +0800, Star Zeng wrote: > From: Amit Kumar <amit.ak@samsung.com> > > Change since v4: Revise the patch based on V4 sent by Amit Kumar > 1) Only return the corresponding protocol interface in *Interface > if the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. > 2) Interface is returned unmodified for all error conditions except > EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in > *Interface when EFI_UNSUPPORTED and Attributes is not > EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be > returned in *Interface when EFI_ALREADY_STARTED. Tested-by: Gabriel Somlo <gsomlo@gmail.com> With this patch applied, OVMF works fine for me now. Thanks much, --Gabriel > Change since v3: > 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL > and Inteface = NULL case. [Reported by:star.zeng at intel.com] > > Change Since v2: > 1) Modified to use EFI_ERROR to get status code > > Change since v1: > 1) Fixed typo protocal to protocol > 2) Fixed coding style > > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Amit Kumar <amit.ak@samsung.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Gabriel Somlo <gsomlo@gmail.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Amit Kumar <amit.ak@samsung.com> > Signed-off-by: Star Zeng <star.zeng@intel.com> > --- > MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 +++++++++++++++++++++++------------- > 1 file changed, 23 insertions(+), 13 deletions(-) > > diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c > index 59b89148c8f0..3862a3876f4a 100644 > --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c > +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c > @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( > // > // Check for invalid Interface > // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - if (Interface == NULL) { > - return EFI_INVALID_PARAMETER; > - } else { > - *Interface = NULL; > - } > + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { > + return EFI_INVALID_PARAMETER; > } > > // > @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( > goto Done; > } > > - // > - // This is the protocol interface entry for this protocol > - // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - *Interface = Prot->Interface; > - } > Status = EFI_SUCCESS; > > ByDriver = FALSE; > @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( > } > > Done: > + > + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > + // > + // Keep Interface unmodified in case of any Error > + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. > + // > + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { > + // > + // EFI_ALREADY_STARTED is not an error for bus driver. > + // Return the corresponding protocol interface. > + // > + *Interface = Prot->Interface; > + } else if (Status == EFI_UNSUPPORTED) { > + // > + // Return NULL Interface if Unsupported Protocol. > + // > + *Interface = NULL; > + } > + } > + > // > - // Done. Release the database lock are return > + // Done. Release the database lock and return > // > CoreReleaseProtocolLock (); > return Status; > -- > 2.7.0.windows.1 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-06-28 13:22 [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol Star Zeng [not found] ` <CGME20170628132257epcas2p179c316d36aced662ceb27feef4d4d48a@epcms5p7> 2017-06-28 14:04 ` Gabriel L. Somlo @ 2017-06-28 14:13 ` Laszlo Ersek 2017-06-28 18:08 ` Amit kumar 2017-09-19 7:13 ` Zeng, Star 2017-06-28 18:10 ` Amit kumar 3 siblings, 2 replies; 10+ messages in thread From: Laszlo Ersek @ 2017-06-28 14:13 UTC (permalink / raw) To: Star Zeng, edk2-devel Cc: Amit Kumar, Michael D Kinney, Liming Gao, Gabriel Somlo On 06/28/17 15:22, Star Zeng wrote: > From: Amit Kumar <amit.ak@samsung.com> > > Change since v4: Revise the patch based on V4 sent by Amit Kumar > 1) Only return the corresponding protocol interface in *Interface > if the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. > 2) Interface is returned unmodified for all error conditions except > EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in > *Interface when EFI_UNSUPPORTED and Attributes is not > EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be > returned in *Interface when EFI_ALREADY_STARTED. > > Change since v3: > 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL > and Inteface = NULL case. [Reported by:star.zeng at intel.com] > > Change Since v2: > 1) Modified to use EFI_ERROR to get status code > > Change since v1: > 1) Fixed typo protocal to protocol > 2) Fixed coding style > > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Amit Kumar <amit.ak@samsung.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Gabriel Somlo <gsomlo@gmail.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Amit Kumar <amit.ak@samsung.com> > Signed-off-by: Star Zeng <star.zeng@intel.com> > --- > MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 +++++++++++++++++++++++------------- > 1 file changed, 23 insertions(+), 13 deletions(-) Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Thanks! Laszlo > diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c > index 59b89148c8f0..3862a3876f4a 100644 > --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c > +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c > @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( > // > // Check for invalid Interface > // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - if (Interface == NULL) { > - return EFI_INVALID_PARAMETER; > - } else { > - *Interface = NULL; > - } > + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { > + return EFI_INVALID_PARAMETER; > } > > // > @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( > goto Done; > } > > - // > - // This is the protocol interface entry for this protocol > - // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - *Interface = Prot->Interface; > - } > Status = EFI_SUCCESS; > > ByDriver = FALSE; > @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( > } > > Done: > + > + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > + // > + // Keep Interface unmodified in case of any Error > + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. > + // > + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { > + // > + // EFI_ALREADY_STARTED is not an error for bus driver. > + // Return the corresponding protocol interface. > + // > + *Interface = Prot->Interface; > + } else if (Status == EFI_UNSUPPORTED) { > + // > + // Return NULL Interface if Unsupported Protocol. > + // > + *Interface = NULL; > + } > + } > + > // > - // Done. Release the database lock are return > + // Done. Release the database lock and return > // > CoreReleaseProtocolLock (); > return Status; > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-06-28 14:13 ` Laszlo Ersek @ 2017-06-28 18:08 ` Amit kumar 2017-06-28 18:15 ` Laszlo Ersek 2017-09-19 7:13 ` Zeng, Star 1 sibling, 1 reply; 10+ messages in thread From: Amit kumar @ 2017-06-28 18:08 UTC (permalink / raw) To: Laszlo Ersek, Star Zeng, edk2-devel@lists.01.org Cc: Michael D Kinney, Gabriel Somlo, Liming Gao Try this; just a quick thing EFI_STATUS EFIAPI UefiMain ( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { EFI_STATUS Status; ConvertHandleIndexToHandle((UINTN)Intermediate); gBS->DisconnectController ( ConvertHandleIndexToHandle (175), ConvertHandleIndexToHandle (176), NULL); return (Status); } ________________________________ From: edk2-devel <edk2-devel-bounces@lists.01.org> on behalf of Laszlo Ersek <lersek@redhat.com> Sent: Wednesday, June 28, 2017 7:43:45 PM To: Star Zeng; edk2-devel@lists.01.org Cc: Michael D Kinney; Gabriel Somlo; Liming Gao Subject: Re: [edk2] [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol On 06/28/17 15:22, Star Zeng wrote: > From: Amit Kumar <amit.ak@samsung.com> > > Change since v4: Revise the patch based on V4 sent by Amit Kumar > 1) Only return the corresponding protocol interface in *Interface > if the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. > 2) Interface is returned unmodified for all error conditions except > EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in > *Interface when EFI_UNSUPPORTED and Attributes is not > EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be > returned in *Interface when EFI_ALREADY_STARTED. > > Change since v3: > 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL > and Inteface = NULL case. [Reported by:star.zeng at intel.com] > > Change Since v2: > 1) Modified to use EFI_ERROR to get status code > > Change since v1: > 1) Fixed typo protocal to protocol > 2) Fixed coding style > > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Amit Kumar <amit.ak@samsung.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Gabriel Somlo <gsomlo@gmail.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Amit Kumar <amit.ak@samsung.com> > Signed-off-by: Star Zeng <star.zeng@intel.com> > --- > MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 +++++++++++++++++++++++------------- > 1 file changed, 23 insertions(+), 13 deletions(-) Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Thanks! Laszlo > diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c > index 59b89148c8f0..3862a3876f4a 100644 > --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c > +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c > @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( > // > // Check for invalid Interface > // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - if (Interface == NULL) { > - return EFI_INVALID_PARAMETER; > - } else { > - *Interface = NULL; > - } > + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { > + return EFI_INVALID_PARAMETER; > } > > // > @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( > goto Done; > } > > - // > - // This is the protocol interface entry for this protocol > - // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - *Interface = Prot->Interface; > - } > Status = EFI_SUCCESS; > > ByDriver = FALSE; > @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( > } > > Done: > + > + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > + // > + // Keep Interface unmodified in case of any Error > + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. > + // > + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { > + // > + // EFI_ALREADY_STARTED is not an error for bus driver. > + // Return the corresponding protocol interface. > + // > + *Interface = Prot->Interface; > + } else if (Status == EFI_UNSUPPORTED) { > + // > + // Return NULL Interface if Unsupported Protocol. > + // > + *Interface = NULL; > + } > + } > + > // > - // Done. Release the database lock are return > + // Done. Release the database lock and return > // > CoreReleaseProtocolLock (); > return Status; > _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-06-28 18:08 ` Amit kumar @ 2017-06-28 18:15 ` Laszlo Ersek 0 siblings, 0 replies; 10+ messages in thread From: Laszlo Ersek @ 2017-06-28 18:15 UTC (permalink / raw) To: Amit kumar, Star Zeng, edk2-devel@lists.01.org Cc: Michael D Kinney, Gabriel Somlo, Liming Gao On 06/28/17 20:08, Amit kumar wrote: > Try this; just a quick thing > > > > EFI_STATUS > EFIAPI > UefiMain ( > IN EFI_HANDLE ImageHandle, > IN EFI_SYSTEM_TABLE *SystemTable > ) > { > EFI_STATUS Status; > > ConvertHandleIndexToHandle((UINTN)Intermediate); > > > gBS->DisconnectController ( > > ConvertHandleIndexToHandle (175), > > ConvertHandleIndexToHandle (176), > NULL); > > return (Status); } Sorry, what is this program supposed to do, and what are the (likely undesirable) symptoms that you are witnessing (... presumably as a consequence of the v5 patch below)? Thanks Laszlo > > > ________________________________ > From: edk2-devel <edk2-devel-bounces@lists.01.org> on behalf of Laszlo Ersek <lersek@redhat.com> > Sent: Wednesday, June 28, 2017 7:43:45 PM > To: Star Zeng; edk2-devel@lists.01.org > Cc: Michael D Kinney; Gabriel Somlo; Liming Gao > Subject: Re: [edk2] [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol > > On 06/28/17 15:22, Star Zeng wrote: >> From: Amit Kumar <amit.ak@samsung.com> >> >> Change since v4: Revise the patch based on V4 sent by Amit Kumar >> 1) Only return the corresponding protocol interface in *Interface >> if the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. >> 2) Interface is returned unmodified for all error conditions except >> EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in >> *Interface when EFI_UNSUPPORTED and Attributes is not >> EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be >> returned in *Interface when EFI_ALREADY_STARTED. >> >> Change since v3: >> 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL >> and Inteface = NULL case. [Reported by:star.zeng at intel.com] >> >> Change Since v2: >> 1) Modified to use EFI_ERROR to get status code >> >> Change since v1: >> 1) Fixed typo protocal to protocol >> 2) Fixed coding style >> >> Cc: Laszlo Ersek <lersek@redhat.com> >> Cc: Amit Kumar <amit.ak@samsung.com> >> Cc: Michael D Kinney <michael.d.kinney@intel.com> >> Cc: Liming Gao <liming.gao@intel.com> >> Cc: Gabriel Somlo <gsomlo@gmail.com> >> Contributed-under: TianoCore Contribution Agreement 1.0 >> Signed-off-by: Amit Kumar <amit.ak@samsung.com> >> Signed-off-by: Star Zeng <star.zeng@intel.com> >> --- >> MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 +++++++++++++++++++++++------------- >> 1 file changed, 23 insertions(+), 13 deletions(-) > > Reviewed-by: Laszlo Ersek <lersek@redhat.com> > Tested-by: Laszlo Ersek <lersek@redhat.com> > > Thanks! > Laszlo > >> diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c >> index 59b89148c8f0..3862a3876f4a 100644 >> --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c >> +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c >> @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( >> // >> // Check for invalid Interface >> // >> - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { >> - if (Interface == NULL) { >> - return EFI_INVALID_PARAMETER; >> - } else { >> - *Interface = NULL; >> - } >> + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { >> + return EFI_INVALID_PARAMETER; >> } >> >> // >> @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( >> goto Done; >> } >> >> - // >> - // This is the protocol interface entry for this protocol >> - // >> - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { >> - *Interface = Prot->Interface; >> - } >> Status = EFI_SUCCESS; >> >> ByDriver = FALSE; >> @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( >> } >> >> Done: >> + >> + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { >> + // >> + // Keep Interface unmodified in case of any Error >> + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. >> + // >> + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { >> + // >> + // EFI_ALREADY_STARTED is not an error for bus driver. >> + // Return the corresponding protocol interface. >> + // >> + *Interface = Prot->Interface; >> + } else if (Status == EFI_UNSUPPORTED) { >> + // >> + // Return NULL Interface if Unsupported Protocol. >> + // >> + *Interface = NULL; >> + } >> + } >> + >> // >> - // Done. Release the database lock are return >> + // Done. Release the database lock and return >> // >> CoreReleaseProtocolLock (); >> return Status; >> > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-06-28 14:13 ` Laszlo Ersek 2017-06-28 18:08 ` Amit kumar @ 2017-09-19 7:13 ` Zeng, Star 2017-09-22 2:07 ` Zeng, Star 1 sibling, 1 reply; 10+ messages in thread From: Zeng, Star @ 2017-09-19 7:13 UTC (permalink / raw) To: Laszlo Ersek, edk2-devel@lists.01.org Cc: Amit Kumar, Kinney, Michael D, Gao, Liming, Gabriel Somlo, Zeng, Star Thanks all the Tested-by and Reviewed-by. The new UEFI spec 2.7a has been published at http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_7_A%20Sept%206.pdf which includes the spec change "1815 OpenProtocol() / EFI_ALREADY_STARTED should output existent Interface" that is required for this patch. If no more comments, I will go to push this patch. :) Thanks, Star -----Original Message----- From: Laszlo Ersek [mailto:lersek@redhat.com] Sent: Wednesday, June 28, 2017 10:14 PM To: Zeng, Star <star.zeng@intel.com>; edk2-devel@lists.01.org Cc: Amit Kumar <amit.ak@samsung.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>; Gabriel Somlo <gsomlo@gmail.com> Subject: Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol On 06/28/17 15:22, Star Zeng wrote: > From: Amit Kumar <amit.ak@samsung.com> > > Change since v4: Revise the patch based on V4 sent by Amit Kumar > 1) Only return the corresponding protocol interface in *Interface if > the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. > 2) Interface is returned unmodified for all error conditions except > EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in > *Interface when EFI_UNSUPPORTED and Attributes is not > EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be > returned in *Interface when EFI_ALREADY_STARTED. > > Change since v3: > 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL and > Inteface = NULL case. [Reported by:star.zeng at intel.com] > > Change Since v2: > 1) Modified to use EFI_ERROR to get status code > > Change since v1: > 1) Fixed typo protocal to protocol > 2) Fixed coding style > > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Amit Kumar <amit.ak@samsung.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Gabriel Somlo <gsomlo@gmail.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Amit Kumar <amit.ak@samsung.com> > Signed-off-by: Star Zeng <star.zeng@intel.com> > --- > MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 > +++++++++++++++++++++++------------- > 1 file changed, 23 insertions(+), 13 deletions(-) Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Thanks! Laszlo > diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c > b/MdeModulePkg/Core/Dxe/Hand/Handle.c > index 59b89148c8f0..3862a3876f4a 100644 > --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c > +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c > @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( > // > // Check for invalid Interface > // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - if (Interface == NULL) { > - return EFI_INVALID_PARAMETER; > - } else { > - *Interface = NULL; > - } > + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { > + return EFI_INVALID_PARAMETER; > } > > // > @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( > goto Done; > } > > - // > - // This is the protocol interface entry for this protocol > - // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - *Interface = Prot->Interface; > - } > Status = EFI_SUCCESS; > > ByDriver = FALSE; > @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( > } > > Done: > + > + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > + // > + // Keep Interface unmodified in case of any Error > + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. > + // > + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { > + // > + // EFI_ALREADY_STARTED is not an error for bus driver. > + // Return the corresponding protocol interface. > + // > + *Interface = Prot->Interface; > + } else if (Status == EFI_UNSUPPORTED) { > + // > + // Return NULL Interface if Unsupported Protocol. > + // > + *Interface = NULL; > + } > + } > + > // > - // Done. Release the database lock are return > + // Done. Release the database lock and return > // > CoreReleaseProtocolLock (); > return Status; > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-09-19 7:13 ` Zeng, Star @ 2017-09-22 2:07 ` Zeng, Star 0 siblings, 0 replies; 10+ messages in thread From: Zeng, Star @ 2017-09-22 2:07 UTC (permalink / raw) To: Laszlo Ersek, edk2-devel@lists.01.org Cc: Amit Kumar, Kinney, Michael D, Gao, Liming, Gabriel Somlo, Zeng, Star Thanks all. The patch has been pushed at 89f7f2cdf0266619976cb53b45b5de1aba2f8fac. Star -----Original Message----- From: Zeng, Star Sent: Tuesday, September 19, 2017 3:14 PM To: Laszlo Ersek <lersek@redhat.com>; edk2-devel@lists.01.org Cc: Amit Kumar <amit.ak@samsung.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>; Gabriel Somlo <gsomlo@gmail.com>; Zeng, Star <star.zeng@intel.com> Subject: RE: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol Thanks all the Tested-by and Reviewed-by. The new UEFI spec 2.7a has been published at http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_7_A%20Sept%206.pdf which includes the spec change "1815 OpenProtocol() / EFI_ALREADY_STARTED should output existent Interface" that is required for this patch. If no more comments, I will go to push this patch. :) Thanks, Star -----Original Message----- From: Laszlo Ersek [mailto:lersek@redhat.com] Sent: Wednesday, June 28, 2017 10:14 PM To: Zeng, Star <star.zeng@intel.com>; edk2-devel@lists.01.org Cc: Amit Kumar <amit.ak@samsung.com>; Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <liming.gao@intel.com>; Gabriel Somlo <gsomlo@gmail.com> Subject: Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol On 06/28/17 15:22, Star Zeng wrote: > From: Amit Kumar <amit.ak@samsung.com> > > Change since v4: Revise the patch based on V4 sent by Amit Kumar > 1) Only return the corresponding protocol interface in *Interface if > the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. > 2) Interface is returned unmodified for all error conditions except > EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in > *Interface when EFI_UNSUPPORTED and Attributes is not > EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be > returned in *Interface when EFI_ALREADY_STARTED. > > Change since v3: > 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL and > Inteface = NULL case. [Reported by:star.zeng at intel.com] > > Change Since v2: > 1) Modified to use EFI_ERROR to get status code > > Change since v1: > 1) Fixed typo protocal to protocol > 2) Fixed coding style > > Cc: Laszlo Ersek <lersek@redhat.com> > Cc: Amit Kumar <amit.ak@samsung.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <liming.gao@intel.com> > Cc: Gabriel Somlo <gsomlo@gmail.com> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Amit Kumar <amit.ak@samsung.com> > Signed-off-by: Star Zeng <star.zeng@intel.com> > --- > MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 > +++++++++++++++++++++++------------- > 1 file changed, 23 insertions(+), 13 deletions(-) Reviewed-by: Laszlo Ersek <lersek@redhat.com> Tested-by: Laszlo Ersek <lersek@redhat.com> Thanks! Laszlo > diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c > b/MdeModulePkg/Core/Dxe/Hand/Handle.c > index 59b89148c8f0..3862a3876f4a 100644 > --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c > +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c > @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( > // > // Check for invalid Interface > // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - if (Interface == NULL) { > - return EFI_INVALID_PARAMETER; > - } else { > - *Interface = NULL; > - } > + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { > + return EFI_INVALID_PARAMETER; > } > > // > @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( > goto Done; > } > > - // > - // This is the protocol interface entry for this protocol > - // > - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > - *Interface = Prot->Interface; > - } > Status = EFI_SUCCESS; > > ByDriver = FALSE; > @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( > } > > Done: > + > + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { > + // > + // Keep Interface unmodified in case of any Error > + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. > + // > + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { > + // > + // EFI_ALREADY_STARTED is not an error for bus driver. > + // Return the corresponding protocol interface. > + // > + *Interface = Prot->Interface; > + } else if (Status == EFI_UNSUPPORTED) { > + // > + // Return NULL Interface if Unsupported Protocol. > + // > + *Interface = NULL; > + } > + } > + > // > - // Done. Release the database lock are return > + // Done. Release the database lock and return > // > CoreReleaseProtocolLock (); > return Status; > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-06-28 13:22 [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol Star Zeng ` (2 preceding siblings ...) 2017-06-28 14:13 ` Laszlo Ersek @ 2017-06-28 18:10 ` Amit kumar 2017-06-28 18:15 ` Laszlo Ersek 3 siblings, 1 reply; 10+ messages in thread From: Amit kumar @ 2017-06-28 18:10 UTC (permalink / raw) To: Star Zeng, edk2-devel@lists.01.org Cc: Liming Gao, Gabriel Somlo, Michael D Kinney, Laszlo Ersek sorry, wrong thread ________________________________ From: edk2-devel <edk2-devel-bounces@lists.01.org> on behalf of Star Zeng <star.zeng@intel.com> Sent: Wednesday, June 28, 2017 6:52:50 PM To: edk2-devel@lists.01.org Cc: Liming Gao; Gabriel Somlo; Michael D Kinney; Laszlo Ersek; Star Zeng Subject: [edk2] [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol From: Amit Kumar <amit.ak@samsung.com> Change since v4: Revise the patch based on V4 sent by Amit Kumar 1) Only return the corresponding protocol interface in *Interface if the return status is EFI_SUCCESS or EFI_ALREADY_STARTED. 2) Interface is returned unmodified for all error conditions except EFI_UNSUPPORTED and EFI_ALREADY_STARTED, NULL will be returned in *Interface when EFI_UNSUPPORTED and Attributes is not EFI_OPEN_PROTOCOL_TEST_PROTOCOL, the protocol interface will be returned in *Interface when EFI_ALREADY_STARTED. Change since v3: 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL and Inteface = NULL case. [Reported by:star.zeng at intel.com] Change Since v2: 1) Modified to use EFI_ERROR to get status code Change since v1: 1) Fixed typo protocal to protocol 2) Fixed coding style Cc: Laszlo Ersek <lersek@redhat.com> Cc: Amit Kumar <amit.ak@samsung.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Gabriel Somlo <gsomlo@gmail.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Amit Kumar <amit.ak@samsung.com> Signed-off-by: Star Zeng <star.zeng@intel.com> --- MdeModulePkg/Core/Dxe/Hand/Handle.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/MdeModulePkg/Core/Dxe/Hand/Handle.c b/MdeModulePkg/Core/Dxe/Hand/Handle.c index 59b89148c8f0..3862a3876f4a 100644 --- a/MdeModulePkg/Core/Dxe/Hand/Handle.c +++ b/MdeModulePkg/Core/Dxe/Hand/Handle.c @@ -1006,12 +1006,8 @@ CoreOpenProtocol ( // // Check for invalid Interface // - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { - if (Interface == NULL) { - return EFI_INVALID_PARAMETER; - } else { - *Interface = NULL; - } + if ((Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) && (Interface == NULL)) { + return EFI_INVALID_PARAMETER; } // @@ -1078,12 +1074,6 @@ CoreOpenProtocol ( goto Done; } - // - // This is the protocol interface entry for this protocol - // - if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { - *Interface = Prot->Interface; - } Status = EFI_SUCCESS; ByDriver = FALSE; @@ -1177,8 +1167,28 @@ CoreOpenProtocol ( } Done: + + if (Attributes != EFI_OPEN_PROTOCOL_TEST_PROTOCOL) { + // + // Keep Interface unmodified in case of any Error + // except EFI_ALREADY_STARTED and EFI_UNSUPPORTED. + // + if (!EFI_ERROR (Status) || Status == EFI_ALREADY_STARTED) { + // + // EFI_ALREADY_STARTED is not an error for bus driver. + // Return the corresponding protocol interface. + // + *Interface = Prot->Interface; + } else if (Status == EFI_UNSUPPORTED) { + // + // Return NULL Interface if Unsupported Protocol. + // + *Interface = NULL; + } + } + // - // Done. Release the database lock are return + // Done. Release the database lock and return // CoreReleaseProtocolLock (); return Status; -- 2.7.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol 2017-06-28 18:10 ` Amit kumar @ 2017-06-28 18:15 ` Laszlo Ersek 0 siblings, 0 replies; 10+ messages in thread From: Laszlo Ersek @ 2017-06-28 18:15 UTC (permalink / raw) To: Amit kumar, Star Zeng, edk2-devel@lists.01.org Cc: Liming Gao, Gabriel Somlo, Michael D Kinney On 06/28/17 20:10, Amit kumar wrote: > sorry, wrong thread Ah, OK. Ignore my questions then. Thanks Laszlo ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-09-22 2:03 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-06-28 13:22 [PATCH V5] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol Star Zeng [not found] ` <CGME20170628132257epcas2p179c316d36aced662ceb27feef4d4d48a@epcms5p7> 2017-06-28 13:43 ` Amit Kumar 2017-06-28 14:04 ` Gabriel L. Somlo 2017-06-28 14:13 ` Laszlo Ersek 2017-06-28 18:08 ` Amit kumar 2017-06-28 18:15 ` Laszlo Ersek 2017-09-19 7:13 ` Zeng, Star 2017-09-22 2:07 ` Zeng, Star 2017-06-28 18:10 ` Amit kumar 2017-06-28 18:15 ` Laszlo Ersek
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox