Hi Star,

On 06/27/17 03:37, Zeng, Star wrote:
> I have reverted this patch at fd220166c435479a81dfe8519c92abec9acf7d82 first.

Thanks for that. More comments below:

> 
> 
> Thanks,
> Star
> -----Original Message-----
> From: Zeng, Star 
> Sent: Tuesday, June 27, 2017 8:53 AM
> To: Laszlo Ersek <ler...@redhat.com>; Amit Kumar <amit...@samsung.com>; 
> edk2-devel@lists.01.org
> Cc: Tian, Feng <feng.t...@intel.com>; Gao, Liming <liming....@intel.com>; 
> Kinney, Michael D <michael.d.kin...@intel.com>; Gabriel L. Somlo (GMail) 
> <gso...@gmail.com>; Fan, Jeff <jeff....@intel.com>; Zeng, Star 
> <star.z...@intel.com>
> Subject: RE: [edk2] [PATCH V4] MdeModulePkg/DxeCore: Fixed Interface returned 
> by CoreOpenProtocol
> 
> Laszlo,
> 
> I agree to revert this patch first since it breaks something.
> Could you help do that with detailed revert log?
> 
> Anyway, have you found any bug in this patch itself?

No, as I said, I think the patch has the right goal (it improves
compliance with the UEFI specification).

And, while I didn't personally review the patch, I trust your and
Liming's review on it.

The problem is not with the patch per se. The problem is that the patch
triggers an existing bug in many other drivers.

So the actual bugs are in those drivers that incorrectly expect
OpenProtocol() to set Interface even when OpenProtocol() returns
EFI_ALREADY_STARTED.

The end result is that all these drivers should be fixed first (with
separate patches), before fixing OpenProtocol() itself.

I'll try to work a bit more on those drivers and discover how many there
are of them. Obviously I can't audit *all* drivers in the edk2 tree,
just those that break the OVMF boot process.

In fact, the newest idea I have is the following: I think I'll introduce
an OpenProtocol() wrapper function to UefiLib. This function should work
identically to OpenProtocol(), except when OpenProtocol() returns
EFI_ALREADY_STARTED. In that case, the wrapper function will repeat the
exact same OpenProtocol() call just with GET_PROTOCOL attribute, and set
Interface on output. This will restore and legitimize the OpenProtocol()
behavior expected by all those problematic drivers, without having to do
intrusive error handling in them.

Thanks,
Laszlo
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to