On 02/20/18 19:02, Kinney, Michael D wrote:
> I do not agree with this change.
> 
> If the PCDs that describe the UART are for a UART
> that is owned by the FW and hidden from the OS, then
> this lib can work well at runtime.

Does that imply that we should do the runtime disablement in the
SerialPortLib instance that underlies BaseDebugLibSerialPort?

I think it is an integral part of the feature (or, well, fix) that the
runtime incompatibility be caught at edk2 platform build time. In other
words, *some* library instance in edk2 should blacklist
DXE_RUNTIME_DRIVER modules (and the counterpart library instance should
be appropriate for DXE_RUNTIME_DRIVER modules only, and handle EBS, to
dynamically disable use of the serial port).

Are you suggesting that we implement this at the PL011 SerialPortLib
instance level?

Thanks!
Laszlo


>> -----Original Message-----
>> From: Laszlo Ersek [mailto:[email protected]]
>> Sent: Tuesday, February 20, 2018 9:00 AM
>> To: Leif Lindholm <[email protected]>; Ard
>> Biesheuvel <[email protected]>
>> Cc: [email protected]; Ni, Ruiyu
>> <[email protected]>; Kinney, Michael D
>> <[email protected]>; Gao, Liming
>> <[email protected]>; Zeng, Star
>> <[email protected]>; [email protected]
>> Subject: Re: [PATCH 3/3] MdePkg/BaseDebugLibSerialPort:
>> blacklist for use by DXE runtime drivers
>>
>> On 02/20/18 15:22, Leif Lindholm wrote:
>>> On Tue, Feb 20, 2018 at 11:05:24AM +0000, Ard
>> Biesheuvel wrote:
>>>> BaseDebugLibSerialPort is not suitable for use by
>> DXE_RUNTIME_DRIVER
>>>> modules, so blacklist it for use by such modules.
>>>>
>>>> Contributed-under: TianoCore Contribution Agreement
>> 1.1
>>>> Signed-off-by: Ard Biesheuvel
>> <[email protected]>
>>>> ---
>>>>
>> MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSerial
>> Port.inf | 2 +-
>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git
>> a/MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSeri
>> alPort.inf
>> b/MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSeri
>> alPort.inf
>>>> index 823511b22f6b..25da1fb9363a 100644
>>>> ---
>> a/MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSeri
>> alPort.inf
>>>> +++
>> b/MdePkg/Library/BaseDebugLibSerialPort/BaseDebugLibSeri
>> alPort.inf
>>>> @@ -21,7 +21,7 @@ [Defines]
>>>>    FILE_GUID                      = BB83F95F-EDBC-
>> 4884-A520-CD42AF388FAE
>>>>    MODULE_TYPE                    = BASE
>>>>    VERSION_STRING                 = 1.0
>>>> -  LIBRARY_CLASS                  = DebugLib
>>>> +  LIBRARY_CLASS                  = DebugLib|SEC
>> PEI_CORE PEIM DXE_CORE DXE_DRIVER DXE_SMM_DRIVER
>> DXE_SAL_DRIVER UEFI_DRIVER UEFI_APPLICATION SMM_CORE
>> MM_STANDALONE MM_CORE_STANDALONE
>>>
>>> Not a comment on this patch as such (which looks
>> sensible to me), but
>>> what you're doing here isn't blacklisting
>> DXE_RUNTIME_DRIVER, but
>>> rather whitelisting every other module type.
>>>
>>> Could we use a ! operator added to the syntax?
>>
>> No, I don't think so, based on the INF file spec.
>>
>> Reviewed-by: Laszlo Ersek <[email protected]>
>>
>> (
>>
>> A future customization would be to give a similar
>> treatment to SMM (or
>> "MM") drivers. While MM has its own set of (identity
>> mapped) page
>> tables, and therefore I'd expect an MMIO serial port to
>> "just work", we
>> still shouldn't mess with the serial port once the OS
>> owns it,
>> regardless of the fact that we're in MM. So, for that,
>> the lib instance
>> meant for MM drivers would have to catch EBS too.
>>
>> Of course, that doesn't work the same way -- the
>> SMM_CORE catches the
>> normal EBS notification, and "forwards" it into the MM
>> protocol database
>> (see SmmExitBootServicesHandler() in
>> "MdeModulePkg/Core/PiSmmCore/PiSmmCore.c"). So the MM
>> lib instance would
>> have to register an MM protocol notify for
>> "gEdkiiSmmExitBootServicesProtocolGuid".
>>
>> But, that's for the future at best.
>>
>> *This* lib instance should remain correct for the
>> SMM_CORE itself, however.
>>
>> )
>>
>> Thanks,
>> Laszlo
>>
>>
>>
>>> /
>>>     Leif
>>>
>>>>    CONSTRUCTOR                    =
>> BaseDebugLibSerialPortConstructor
>>>>
>>>>  #
>>>> --
>>>> 2.11.0
>>>>
> 

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to