CcProbeLib not working for runtime calls


 

Hi,

https://bugzilla.redhat.com/show_bug.cgi?id=2114858

I think the call chain is:

-> linux does efi runtime call
-> some debug message printed
-> OvmfPkg/Library/PlatformDebugLibIoPort/DebugLib.c
-> MdePkg/Library/BaseIoLibIntrinsic (IoWriteFifo8)
-> OvmfPkg/Library/CcProbeLib (CcProbe)
-> page fault when trying to access WorkArea

Hmm.

We could probably reserve the workarea page and register it for a
runtime mapping etc. I suspect that'll only crash the in simliar ways a
little later because the tdx/sev code is not prepared to work on runtime
calls. I'm also not sure this is possible to make work at all given
that #vc/#ve faults are handled by the linux kernel not ovmf at this
point.

So have CcProbe just return CcGuestTypeNonEncrypted when called at
runtime, hoping that the linux kernel handles #vc / #ve faults properly
should they occur?

take care,
Gerd


 

On August 17, 2022 7:05 PM, Gerd Hoffmann wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=2114858

I think the call chain is:

-> linux does efi runtime call
-> some debug message printed
-> OvmfPkg/Library/PlatformDebugLibIoPort/DebugLib.c
-> MdePkg/Library/BaseIoLibIntrinsic (IoWriteFifo8)
-> OvmfPkg/Library/CcProbeLib (CcProbe)
-> page fault when trying to access WorkArea
I think this bug shares the same root cause. https://bugzilla.tianocore.org/show_bug.cgi?id=3974
And there is a fix awaiting for review. https://edk2.groups.io/g/devel/message/91132

Gerd, what's your thought?

Thanks
Min


 

On Thu, Aug 18, 2022 at 01:47:37AM +0000, Xu, Min M wrote:
On August 17, 2022 7:05 PM, Gerd Hoffmann wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=2114858

I think the call chain is:

-> linux does efi runtime call
-> some debug message printed
-> OvmfPkg/Library/PlatformDebugLibIoPort/DebugLib.c
-> MdePkg/Library/BaseIoLibIntrinsic (IoWriteFifo8)
-> OvmfPkg/Library/CcProbeLib (CcProbe)
-> page fault when trying to access WorkArea
I think this bug shares the same root cause. https://bugzilla.tianocore.org/show_bug.cgi?id=3974
Yes, highly likely this is the same.

And there is a fix awaiting for review. https://edk2.groups.io/g/devel/message/91132
Hmm. When the tdx/sev code actually works properly in runtime mode we
should be able to reserve the workarea, mark it as runtime memory
(SetMemorySpaceAttributes) and access it from runtime code, so we don't
need two different ways to figure what CC mode we are running in.

take care,
Gerd


 

On August 18, 2022 12:58 PM, Gerd Hoffmann wrote:
On Thu, Aug 18, 2022 at 01:47:37AM +0000, Xu, Min M wrote:
On August 17, 2022 7:05 PM, Gerd Hoffmann wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=2114858

I think the call chain is:

-> linux does efi runtime call
-> some debug message printed
-> OvmfPkg/Library/PlatformDebugLibIoPort/DebugLib.c
-> MdePkg/Library/BaseIoLibIntrinsic (IoWriteFifo8)
-> OvmfPkg/Library/CcProbeLib (CcProbe)
-> page fault when trying to access WorkArea
I think this bug shares the same root cause.
https://bugzilla.tianocore.org/show_bug.cgi?id=3974
Yes, highly likely this is the same.

And there is a fix awaiting for review.
https://edk2.groups.io/g/devel/message/91132
Hmm. When the tdx/sev code actually works properly in runtime mode we
should be able to reserve the workarea, mark it as runtime memory
(SetMemorySpaceAttributes) and access it from runtime code, so we don't
need two different ways to figure what CC mode we are running in.
Yes. I will submit a patch to fix it.

Thanks
Min