Hi On Mon, Aug 6, 2018 at 5:26 PM, Zhang, Chao B <chao.b.zh...@intel.com> wrote: > Hi Ricardo > I double checked OVMF Debug Build. All the 2 PCDs are already built as > Dynamic PCD. There should be no problem > Setting & Getting these PCD as Dynamic. We also verified this feature on > several real hardware platforms with same configuration. > No issue reported. > Can you share me the boot log? > > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Laszlo > Ersek > Sent: Friday, August 3, 2018 10:46 PM > To: Ricardo Araújo <rica...@lsd.ufcg.edu.br>; Zhang, Chao B > <chao.b.zh...@intel.com> > Cc: edk2-devel@lists.01.org; Zeng, Star <star.z...@intel.com>; Gao, Liming > <liming....@intel.com> > Subject: Re: [edk2] Missing boot related measurements at TPM 2.0 PCRs 0-7 > with OVMF > > On 08/03/18 15:39, Ricardo Araújo wrote: >> Hi folks, sorry for the delay! >> >> I've just applied the patch and got the same error message and empty PCRs. > > Thanks for the feedback -- although it's not the kind I had hoped for :) > > I have now filed "[regression] SecurityPkg commit f15cb995bb38 breaks > TPM2_ENABLE in OvmfPkg": > > https://bugzilla.tianocore.org/show_bug.cgi?id=1075 > > Ricardo, please consider registering in the TianoCore Bugzilla, and > adding yourself to the CC list of BZ#1075. > > For now, I have assigned the BZ to Marc-André, for triaging / analysis. > swtpm is not set up on my end, and the TPM2 enablement for OvmfPkg was > contributed by Marc-André. Marc-André, are you OK with this? The BZ > assignment is about root-causing the issue, at the moment.
That fixes the problem for me: - Constructor = Tpm2DeviceLibConstructor + CONSTRUCTOR = Tpm2DeviceLibConstructor It looks to me like the patch "SecurityPkg: Cache TPM interface type info" could use more reviews. Fwiw, I also question why that change (just the line above) was necessary: - LIBRARY_CLASS = Tpm2DeviceLib + LIBRARY_CLASS = Tpm2DeviceLib|PEIM DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER > > Once we know more closely what the problem is, we can decide what to do. > If it's hard to fix, my argument will be that we should roll back > SecurityPkg commit f15cb995bb38 first (it's a regression after all), and > re-apply it only when it no longer breaks OVMF. If the issue is not hard > to fix and we can commit the solution quickly, then I'll be fine with > leaving f15cb995bb38 applied. > > Thanks, > Laszlo > >> >> De: "Zhang, Chao B" <chao.b.zh...@intel.com<mailto:chao.b.zh...@intel.com>> >> Para: "Laszlo Ersek" <ler...@redhat.com<mailto:ler...@redhat.com>>, "Ricardo >> Araújo" <rica...@lsd.ufcg.edu.br<mailto:rica...@lsd.ufcg.edu.br>>, >> "Marc-André Lureau" >> <marcandre.lur...@redhat.com<mailto:marcandre.lur...@redhat.com>> >> Cc: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>, "Gao, Liming" >> <liming....@intel.com<mailto:liming....@intel.com>>, "Zeng, Star" >> <star.z...@intel.com<mailto:star.z...@intel.com>> >> Enviadas: Quinta-feira, 2 de agosto de 2018 21:22:18 >> Assunto: RE: [edk2] Missing boot related measurements at TPM 2.0 PCRs 0-7 >> with OVMF >> >> >> >> Tks Lazslo. And please make sure PcdLib is correctly lined in OVMF >> >> >> >> >> From: Laszlo Ersek [mailto:ler...@redhat.com] >> Sent: Thursday, August 2, 2018 9:14 PM >> To: Zhang, Chao B <chao.b.zh...@intel.com<mailto:chao.b.zh...@intel.com>>; >> Ricardo Araújo <rica...@lsd.ufcg.edu.br<mailto:rica...@lsd.ufcg.edu.br>>; >> Marc-André Lureau >> <marcandre.lur...@redhat.com<mailto:marcandre.lur...@redhat.com>> >> Cc: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org>; Gao, Liming >> <liming....@intel.com<mailto:liming....@intel.com>>; Zeng, Star >> <star.z...@intel.com<mailto:star.z...@intel.com>> >> Subject: Re: [edk2] Missing boot related measurements at TPM 2.0 PCRs 0-7 >> with OVMF >> >> >> >> >> On 08/02/18 04:04, Zhang, Chao B wrote: >>> Hi Laszlo & Ricardo >>> The patch was intended to reduce the time to read TPM interface ID >>> register. The interface type should not change within boot cycle according >>> to PTP spec. >>> I agree to add some ASSERT after PCDSetxxsS. >>> But It is a core solution without platform change as PCD has been >>> configured as DYN, DYNEx in DEC. I don’t know why you meet Set Failure >>> In OVMF. Here, I include PCD expert to explain this. >> >> As far as I recall, dynamic PCDs have never behaved as actually settable >> for me unless I added dynamic defaults for them in the OVMF DSC files. >> >> I never really researched why this was the case, I just accepted that >> the dynamic defaults were apparently necessary. >> >> Let's wait for Ricardo's response. Perhaps my analysis / suspicion were >> incorrect and it's not actually the "dynamism" of the PCD that's missing >> for OVMF. Ricardo's answer will tell us if there's another issue. >> >> Thanks >> Laszlo >> >>> From: Laszlo Ersek [ mailto:ler...@redhat.com ] >>> Sent: Thursday, August 2, 2018 5:49 AM >>> To: Ricardo Araújo < >>> rica...@lsd.ufcg.edu.br<mailto:rica...@lsd.ufcg.edu.br> >; Zhang, Chao B < >>> chao.b.zh...@intel.com<mailto:chao.b.zh...@intel.com> >; Marc-André Lureau >>> < marcandre.lur...@redhat.com<mailto:marcandre.lur...@redhat.com> > >>> Cc: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> >>> Subject: Re: [edk2] Missing boot related measurements at TPM 2.0 PCRs 0-7 >>> with OVMF >>> >>> On 08/01/18 19:50, Ricardo Araújo wrote: >>>> The commit I was referring to is: >>>> https://github.com/tianocore/edk2/commit/f15cb995bb3880b77e15afe6facd3da05e599a17 >>>> >>>> Regards, >>>> >>>> Ricardo Araujo - >>>> www.lsd.ufcg.edu.br/~ricardo<http://www.lsd.ufcg.edu.br/~ricardo<http://www.lsd.ufcg.edu.br/~ricardo%3chttp:/www.lsd.ufcg.edu.br/~ricardo> >>>> > >>>> >>>> ----- Mensagem original ----- >>>> De: "Ricardo Araújo" < >>>> rica...@lsd.ufcg.edu.br<mailto:rica...@lsd.ufcg.edu.br<mailto:rica...@lsd.ufcg.edu.br%3cmailto:rica...@lsd.ufcg.edu.br> >>>> >> >>>> Para: >>>> edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org%3cmailto:edk2-devel@lists.01.org> >>>> > >>>> Enviadas: Quarta-feira, 1 de agosto de 2018 14:33:45 >>>> Assunto: [edk2] Missing boot related measurements at TPM 2.0 PCRs 0-7 >>>> with OVMF >>>> >>>> Hi everyone, >>>> >>>> I'm using OVMF with a simulated TPM 2.0 (from >>>> https://github.com/stefanberger/swtpm ) and I noticed lately that PCRs >>>> 0-7 are zeroed after booting the vm (ubuntu 18.04) and the only >>>> message related to this in dmesg is: >>>> >>>> [ 2.286690] tpm_tis 00:06: 2.0 TPM (device-id 0x1, rev-id 1) >>>> [ 2.303753] tpm tpm0: A TPM error (256) occurred continue selftest >>>> [ 2.314199] tpm tpm0: starting up the TPM manually >>>> >>>> I found this started to happen after this commit , previous commits to >>>> that are showing boot time measurements on PCR 0-7 normally and the >>>> error message is gone. Has anyone experienced the same behavior? I >>>> followed the instructions here for building OVMF but I added the >>>> parameters -D TPM2_ENABLE=TRUE -D SECURE_BOOT_ENABLE=TRUE -D >>>> HTTP_BOOT_ENABLE=TRUE. Is there anything else I need to add to enable >>>> these measurements? >>>> >>>> Regards, >>>> >>>> Ricardo Araujo >>>> www.lsd.ufcg.edu.br/~ricardo<http://www.lsd.ufcg.edu.br/~ricardo<http://www.lsd.ufcg.edu.br/~ricardo%3chttp:/www.lsd.ufcg.edu.br/~ricardo> >>>> > >>> >>> Thank you for the bug report. It looks like a regression to me, but the >>> details aren't immediately clear. >>> >>> Adding Marc-André who contributed the TPM enablement for OVMF, and Chao >>> Zhang who authored the commit in question. >>> >>> If I recall correctly, in OVMF we decided to never cache the TPM type >>> but always detect it. I could be remembering wrong though. See commit >>> 6cf1880fb5b6 ("OvmfPkg: add customized Tcg2ConfigPei clone", >>> 2018-03-09). >>> >>> Chao Zhang: can you please explain what additional requirements are >>> presented for a platform by commit f15cb995bb38? In OVMF we use a >>> customized Tcg2ConfigPei module (see the commit above). >>> >>> >>> Oh wait, I suspect what's wrong. I believe there are two bugs in commit >>> f15cb995bb38 ("SecurityPkg: Cache TPM interface type info", 2018-06-25): >>> >>> * Bug#1: >>> >>> Commit f15cb995bb38 introduces a new PCD, called >>> "PcdActiveTpmInterfaceType", in section [PcdsDynamic, PcdsDynamicEx] of >>> "SecurityPkg.dec", and makes core modules from SecurityPkg dependent on >>> it. >>> >>> Obviously this means that platforms are required to provide a Dynamic >>> Default for the new PCD in their DSC files, if they include those core >>> modules from SecurityPkg, otherwise the PCD won't actually behave >>> dynamically -- "set" operations will fail, and "get" operations will >>> just return the central default from the SecurityPkg.dec file. As a >>> result, the cached TPM type will always be wrong (it will look like >>> "undetected", 0xFF). >>> >>> This could have been avoided by grepping all "*dsc*" files in the edk2 >>> tree for references to the SecurityPkg module INF files that were about >>> to receive a dependency on the PCD. Such as: >>> >>> git grep -l -F \ >>> -e SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2DeviceLibDTpm.inf \ >>> --or -e SecurityPkg/Library/Tpm2DeviceLibDTpm/Tpm2InstanceLibDTpm.inf \ >>> --or -e SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigDxe.inf \ >>> --or -e SecurityPkg/Tcg/Tcg2Smm/Tcg2Smm.inf \ >>> '*dsc*' >>> >>> This would have listed all platforms in-tree that were going to depend >>> on the new dynamic PCD via inclusion of the affected SecurityPkg >>> modules. >>> >>> Running this command now, I get the following output: >>> >>> OvmfPkg/OvmfPkgIa32.dsc >>> OvmfPkg/OvmfPkgIa32X64.dsc >>> OvmfPkg/OvmfPkgX64.dsc >>> SecurityPkg/SecurityPkg.dsc >>> >>> Open source hygiene dictates that modifications to infrastructure code >>> or otherwise central code be accompanied by necessary updates to *ALL* >>> in-tree subsystems that depend on said core code. (Out-of-tree >>> subsystems are a different matter.) It's OK if a single contributor >>> cannot test every single platform -- but we can still use the mailing >>> list and the bug tracker for raising the issue and expose the new >>> dependency for platforms that we can't test, but see as affected. >>> >>> Ricardo, Marc-André: does the following patch work for you guys >>> (build-tested only): >>> >>>> diff --git a/OvmfPkg/OvmfPkgIa32.dsc b/OvmfPkg/OvmfPkgIa32.dsc >>>> index a28b511d5c2f..b0153f66b710 100644 >>>> --- a/OvmfPkg/OvmfPkgIa32.dsc >>>> +++ b/OvmfPkg/OvmfPkgIa32.dsc >>>> @@ -579,6 +579,7 @@ [PcdsDynamicDefault] >>>> >>>> !if $(TPM2_ENABLE) == TRUE >>>> gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x00, 0x00, 0x00, 0x00, >>>> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} >>>> + gEfiSecurityPkgTokenSpaceGuid.PcdActiveTpmInterfaceType|0xFF >>>> !endif >>>> >>>> ################################################################################ >>>> diff --git a/OvmfPkg/OvmfPkgIa32X64.dsc b/OvmfPkg/OvmfPkgIa32X64.dsc >>>> index 115d0c01ff5c..fcce846ab9a5 100644 >>>> --- a/OvmfPkg/OvmfPkgIa32X64.dsc >>>> +++ b/OvmfPkg/OvmfPkgIa32X64.dsc >>>> @@ -587,6 +587,7 @@ [PcdsDynamicDefault] >>>> >>>> !if $(TPM2_ENABLE) == TRUE >>>> gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x00, 0x00, 0x00, 0x00, >>>> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} >>>> + gEfiSecurityPkgTokenSpaceGuid.PcdActiveTpmInterfaceType|0xFF >>>> !endif >>>> >>>> ################################################################################ >>>> diff --git a/OvmfPkg/OvmfPkgX64.dsc b/OvmfPkg/OvmfPkgX64.dsc >>>> index 362eb789c712..3eda1b3013f7 100644 >>>> --- a/OvmfPkg/OvmfPkgX64.dsc >>>> +++ b/OvmfPkg/OvmfPkgX64.dsc >>>> @@ -586,6 +586,7 @@ [PcdsDynamicDefault] >>>> >>>> !if $(TPM2_ENABLE) == TRUE >>>> gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid|{0x00, 0x00, 0x00, 0x00, >>>> 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} >>>> + gEfiSecurityPkgTokenSpaceGuid.PcdActiveTpmInterfaceType|0xFF >>>> !endif >>>> >>>> ################################################################################ >>> >>> If it works, I'll submit it later as a standalone patch. >>> >>> >>> * Bug#2: >>> >>> The PcdSet8S() calls added by commit f15cb995bb38 are not error-checked; >>> their return values are ignored. >>> >>> Honestly, if we ignore the return values of PcdSetXxxS() calls, then it >>> has been a wasted effort to introduce those "safe" APIs in the first >>> place, in commit 9a3558419509. At the bare minimum, an >>> ASSERT_RETURN_ERROR() should be added after every invocation. >>> >>> I've filed the following TianoCore BZ about Bug#2 now: >>> >>> https://bugzilla.tianocore.org/show_bug.cgi?id=1070 >>> >>> Thanks >>> Laszlo >>> >> >> > > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> > https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel -- Marc-André Lureau _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel