tpmdd-devel.lists.sourceforge.net archive mirror
 help / color / mirror / Atom feed
* Regression from efi: call get_event_log before ExitBootServices
@ 2018-03-06 16:00 Jeremy Cline
       [not found] ` <01000161fc0b4755-df0621f4-ab5d-479a-b425-adf98427a308-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
       [not found] ` <e7c2be5c-cf21-fc2d-efda-d9222d93ffad@redhat.com>
  0 siblings, 2 replies; 39+ messages in thread
From: Jeremy Cline @ 2018-03-06 16:00 UTC (permalink / raw)
  To: Thiebaud Weksteen, Javier Martinez Canillas, Jarkko Sakkinen
  Cc: Hans de Goede, linux-efi, linux-integrity, tpmdd-devel, linux-kernel

Hi folks,

Commit 33b6d03469b2 ("efi: call get_event_log before ExitBootServices")
causes my GP-electronic T701 tablet to hang when booting. Reverting the
patch series or hiding the TPM in the BIOS fixes the problem.

I've never fiddled with TPMs before so I'm not sure what what debugging
information to provide. It's got an Atom Z3735G and the UEFI firmware is
InsydeH20 version BYT70A.YNCHENG.WIN.007.


Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
       [not found] ` <01000161fc0b4755-df0621f4-ab5d-479a-b425-adf98427a308-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
@ 2018-03-07  8:41   ` Thiebaud Weksteen via tpmdd-devel
  2018-03-07 11:16     ` Hans de Goede
  2018-03-07 17:33     ` Jeremy Cline
  0 siblings, 2 replies; 39+ messages in thread
From: Thiebaud Weksteen via tpmdd-devel @ 2018-03-07  8:41 UTC (permalink / raw)
  To: jeremy-+d1b7ckTlFUdnm+yROfE0A
  Cc: linux-efi-u79uwXL29TY76Z2rM5mHXA, Jarkko Sakkinen,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	hdegoede-H+wXaHxf7aLQT0dZR+AlfA,
	tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f,
	linux-integrity-u79uwXL29TY76Z2rM5mHXA

Hi,

Thanks for testing and sending this report! This patch relies heavily on
the functions exposed by the firmware. My first guess would be that some of
these may not be implemented correctly by the manufacturer.

Could you share more information on this specific device?
Do you have any link to the manufacturer website (I found [1] but it is
based on an ARM CPU)?
Do you have the option to update your firmware? Is a copy of the firmware
available from the manufacturer?

On your side, I assume no error message got displayed on the screen when
booting. Would you be able to try to boot in an UEFI shell [2] and execute
the command "dh -v"?

Thanks,
Thiebaud

[1] https://www.gp-electronic.nl/product/7inchtablet
[2]
https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#UEFI_Shell

On Tue, Mar 6, 2018 at 5:00 PM Jeremy Cline <jeremy-+d1b7ckTlFUdnm+yROfE0A@public.gmane.org> wrote:

> Hi folks,

> Commit 33b6d03469b2 ("efi: call get_event_log before ExitBootServices")
> causes my GP-electronic T701 tablet to hang when booting. Reverting the
> patch series or hiding the TPM in the BIOS fixes the problem.

> I've never fiddled with TPMs before so I'm not sure what what debugging
> information to provide. It's got an Atom Z3735G and the UEFI firmware is
> InsydeH20 version BYT70A.YNCHENG.WIN.007.


> Regards,
> Jeremy

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-07  8:41   ` Thiebaud Weksteen via tpmdd-devel
@ 2018-03-07 11:16     ` Hans de Goede
  2018-03-07 12:00       ` Javier Martinez Canillas
  2018-03-07 17:33     ` Jeremy Cline
  1 sibling, 1 reply; 39+ messages in thread
From: Hans de Goede @ 2018-03-07 11:16 UTC (permalink / raw)
  To: Thiebaud Weksteen, jeremy
  Cc: Javier Martinez Canillas, Jarkko Sakkinen, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

Hi,

On 07-03-18 09:41, Thiebaud Weksteen wrote:
> Hi,
> 
> Thanks for testing and sending this report! This patch relies heavily on
> the functions exposed by the firmware. My first guess would be that some of
> these may not be implemented correctly by the manufacturer.
> 
> Could you share more information on this specific device?

I've the same device as Jeremy, but I just tried a 4.16-rc3 kernel
and I'm not seeing this problem, BIOS settings all default (I loaded
the BIOS defaults to make sure).

> Do you have any link to the manufacturer website (I found [1] but it is
> based on an ARM CPU)?
> Do you have the option to update your firmware? Is a copy of the firmware
> available from the manufacturer?

This is a really cheap Windows tablet which was given away for free in
the Netherlands with some home-schooling language courses, or something
similar.

Both mine and Jeremy tablets come from a website in the Netherlands
where people can buy/sell used goods.

Most relevant for this discussion I guess is that this device is
based on a Bay Trail Z3735G SoC, on which according to the internets:
https://embedded.communities.intel.com/thread/7868

The TPM 2.0 it contains is implemented as part of the TXE firmware.

Since I cannot reproduce I'm thinking that maybe Jeremy actually has
some log messages in the TPM log, where as mine is empty.  Is there a
way to make sure some messages are in there?

Regards,

Hans



> On your side, I assume no error message got displayed on the screen when
> booting. Would you be able to try to boot in an UEFI shell [2] and execute
> the command "dh -v"?
> 
> Thanks,
> Thiebaud
> 
> [1] https://www.gp-electronic.nl/product/7inchtablet
> [2]
> https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface#UEFI_Shell
> 
> On Tue, Mar 6, 2018 at 5:00 PM Jeremy Cline <jeremy@jcline.org> wrote:
> 
>> Hi folks,
> 
>> Commit 33b6d03469b2 ("efi: call get_event_log before ExitBootServices")
>> causes my GP-electronic T701 tablet to hang when booting. Reverting the
>> patch series or hiding the TPM in the BIOS fixes the problem.
> 
>> I've never fiddled with TPMs before so I'm not sure what what debugging
>> information to provide. It's got an Atom Z3735G and the UEFI firmware is
>> InsydeH20 version BYT70A.YNCHENG.WIN.007.
> 
> 
>> Regards,
>> Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-07 11:16     ` Hans de Goede
@ 2018-03-07 12:00       ` Javier Martinez Canillas
  0 siblings, 0 replies; 39+ messages in thread
From: Javier Martinez Canillas @ 2018-03-07 12:00 UTC (permalink / raw)
  To: Hans de Goede, Thiebaud Weksteen, jeremy
  Cc: Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel, linux-kernel

Hi Hans,

On 03/07/2018 12:16 PM, Hans de Goede wrote:
> Hi,
> 
> On 07-03-18 09:41, Thiebaud Weksteen wrote:
>> Hi,
>>
>> Thanks for testing and sending this report! This patch relies heavily on
>> the functions exposed by the firmware. My first guess would be that some of
>> these may not be implemented correctly by the manufacturer.
>>
>> Could you share more information on this specific device?
> 
> I've the same device as Jeremy, but I just tried a 4.16-rc3 kernel
> and I'm not seeing this problem, BIOS settings all default (I loaded
> the BIOS defaults to make sure).
> 
>> Do you have any link to the manufacturer website (I found [1] but it is
>> based on an ARM CPU)?
>> Do you have the option to update your firmware? Is a copy of the firmware
>> available from the manufacturer?
> 
> This is a really cheap Windows tablet which was given away for free in
> the Netherlands with some home-schooling language courses, or something
> similar.
> 
> Both mine and Jeremy tablets come from a website in the Netherlands
> where people can buy/sell used goods.
> 
> Most relevant for this discussion I guess is that this device is
> based on a Bay Trail Z3735G SoC, on which according to the internets:
> https://embedded.communities.intel.com/thread/7868
> 
> The TPM 2.0 it contains is implemented as part of the TXE firmware.
> 
> Since I cannot reproduce I'm thinking that maybe Jeremy actually has
> some log messages in the TPM log, where as mine is empty.  Is there a
> way to make sure some messages are in there?
>

The UEFI firmware does some measurements and so does shim. So you should
have some event logs. What version of shim are you using? And also would
be good to know if it's the same shim version that Jeremy is using.

> Regards,
> 
> Hans
> 

Best regards,
-- 
Javier Martinez Canillas
Software Engineer - Desktop Hardware Enablement
Red Hat

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-07  8:41   ` Thiebaud Weksteen via tpmdd-devel
  2018-03-07 11:16     ` Hans de Goede
@ 2018-03-07 17:33     ` Jeremy Cline
  2018-03-08  8:45       ` Thiebaud Weksteen
  1 sibling, 1 reply; 39+ messages in thread
From: Jeremy Cline @ 2018-03-07 17:33 UTC (permalink / raw)
  To: Thiebaud Weksteen
  Cc: Javier Martinez Canillas, Jarkko Sakkinen, hdegoede, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 881 bytes --]

On 03/07/2018 03:41 AM, Thiebaud Weksteen wrote:
> Hi,
> 
> Thanks for testing and sending this report! This patch relies heavily on
> the functions exposed by the firmware. My first guess would be that some of
> these may not be implemented correctly by the manufacturer.
> 
> Could you share more information on this specific device?
> Do you have any link to the manufacturer website (I found [1] but it is
> based on an ARM CPU)?
> Do you have the option to update your firmware? Is a copy of the firmware
> available from the manufacturer?

I couldn't find a copy of the firmware, unfortunately.

> On your side, I assume no error message got displayed on the screen when
> booting. Would you be able to try to boot in an UEFI shell [2] and execute
> the command "dh -v"?

Yup, no errors on the screen. I've attached the output of dh -v from the
UEFI shell.


Regards,
Jeremy

[-- Attachment #2: dh.txt --]
[-- Type: text/plain, Size: 280950 bytes --]

Handle dump
Handle 01 (3B94EE90)
   Image (3B971D78)   File:DxeCore
     ParentHandle..: 0
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(D6A2CB7F-6A18-4E2F-B43B-9920A733700A)
     ImageBase.....: 3B971000 - 3B980000
     ImageSize.....: F000
     CodeType......: BS_code   
     DataType......: BS_data   
Handle 02 (3B94ED10)
   5CB5C776-60D5-45EE-883C-452708CD743F (3B971D58)
Handle 03 (3B94B990)
   Decompress (3B972058) 
Handle 04 (26FFC810)
   Dpath (26FFC990) 
      Hardware Device Path for Memory Mapped
       Memory Type (11: FFF64000-FFF8DFFF)
      AsStr: 'MemoryMapped(0xB,0xFFF64000,0xFFF8DFFF)'
   F496922D-172F-4BBC-A1EB-0EEB949C3486 (00000000)
   8F644FA9-E850-4DB1-9CE2-0B44698E8DA4 (3B94F31C)
Handle 05 (26FFC510)
   Dpath (26FFC610) 
      Hardware Device Path for Memory Mapped
       Memory Type (11: 28000000-2820FFFF)
      AsStr: 'MemoryMapped(0xB,0x28000000,0x2820FFFF)'
   389F751F-1838-4388-8390-CD8154BD27F8 (26D8F294)
   220E73B6-6BDB-4413-8405-B974B108619A (26FF5E1C)
   8F644FA9-E850-4DB1-9CE2-0B44698E8DA4 (26FFC69C)
Handle 06 (26FFC210)
   Dpath (26FFC310) 
      Media Device Path for PIWG Firmware File
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)'
   389F751F-1838-4388-8390-CD8154BD27F8 (26D8F114)
   220E73B6-6BDB-4413-8405-B974B108619A (26FF5B1C)
   8F644FA9-E850-4DB1-9CE2-0B44698E8DA4 (26FFC39C)
Handle 07 (26FEFA90)
   A31280AD-481E-41B6-95E8-127F4C984779 (3B971794)
   FC1BCDB0-7D31-49AA-936A-A4600D9DD083 (3B971794)
Handle 08 (26DB8D10)
   Image (3B94D628)   File:PcdSmmDxe
     ParentHandle..: 26DD5310
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(80CF7257-87AB-47F9-A3FE-D50B76D89541)
     ImageBase.....: 3B728000 - 3B72ACA0
     ImageSize.....: 2CA0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26DB8C10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(80CF7257-87AB-47F9-A3FE-D50B76D89541)'
Handle 09 (26DB8910)
   13A3F0F6-264A-3EF0-F2E0-DEC512342F34 (3B728398)
   11B34006-D85B-4D0A-A290-D5A571310EF7 (3B728318)
Handle 0A (26DB8690)
   7468D988-D943-46E6-A895-C9AE240B9DBF (3B72A840)
Handle 0B (26DD5290)
   Image (3B94D7A8)   File:IrsiRegistrationRuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(E8DDEB8B-82D7-4B6E-A2B4-D5EAEC2B8976)
     ImageBase.....: 3B726000 - 3B727020
     ImageSize.....: 1020
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26DD5210) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(E8DDEB8B-82D7-4B6E-A2B4-D5EAEC2B8976)'
   1C2E4602-E3BA-4B07-E3B8-3555A51C613A (3B726EE4)
Handle 0C (26DB8490)
   Image (3B94D4A8)   File:ReportStatusCodeRouterRuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(D93CE3D8-A7EB-4730-8C8E-CC466A9ECC3C)
     ImageBase.....: 3B725000 - 3B725D80
     ImageSize.....: D80
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26DB8390) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(D93CE3D8-A7EB-4730-8C8E-CC466A9ECC3C)'
Handle 0D (26DB8090)
   D2B2B828-0826-48A7-B3DF-983C006024F0 (3B7252E8)
   86212936-0E76-41C8-A03A-2AF2FC1C39E2 (3B7252EC)
Handle 0E (26DB3E10)
   Image (3B94D328)   File:RuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B601F8C4-43B7-4784-95B1-F4226CB40CEE)
     ImageBase.....: 3B723000 - 3B724160
     ImageSize.....: 1160
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26DB3D10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(B601F8C4-43B7-4784-95B1-F4226CB40CEE)'
Handle 0F (26DB3A90)
   B7DFB4E1-052F-449F-87BE-9818FC91B733 (3B7232D0)
Handle 10 (26DB3910)
   Image (3B94D1A8)   File:FirmwarePerformanceDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(00160F8D-2B35-4DF2-BBE0-B272A8D631F0)
     ImageBase.....: 27FFE000 - 27FFF440
     ImageSize.....: 1440
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26DB3810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(00160F8D-2B35-4DF2-BBE0-B272A8D631F0)'
Handle 11 (26DB3390)
   Image (3B94D028)   File:DevicePathDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(9B680FCE-AD6B-4F3A-B60B-F59899003443)
     ImageBase.....: 27FF7000 - 27FFD340
     ImageSize.....: 6340
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26DB3290) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(9B680FCE-AD6B-4F3A-B60B-F59899003443)'
Handle 12 (26D99F90)
   DpathUtil (27FF758C) 
   DpathToText (27FF75AC) 
   DpathFromText (27FF75B4) 
Handle 13 (26D99C10)
   Image (26D90DA8)   File:CpuIo2Dxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A19B1FE7-C1BC-49F8-875F-54A5D542443F)
     ImageBase.....: 27FF6000 - 27FF6640
     ImageSize.....: 640
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D99B10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(A19B1FE7-C1BC-49F8-875F-54A5D542443F)'
Handle 14 (26D99810)
   AD61F191-AE5F-4C0E-B9FA-E869D288C64F (27FF6210)
Handle 15 (26D99690)
   Image (26D90C28)   File:Legacy8259
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(79CA4208-BBA1-4A9A-8456-E1E66A81484E)
     ImageBase.....: 27FF5000 - 27FF5720
     ImageSize.....: 720
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D99590) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(79CA4208-BBA1-4A9A-8456-E1E66A81484E)'
Handle 16 (26D99290)
   38321DBA-4FE0-4E17-8AEC-413055EAEDC1 (27FF5220)
Handle 17 (26D99110)
   Image (26D90AA8)   File:CpuIoDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BAE7599F-3C6B-43B7-BDF0-9CE07AA91AA6)
     ImageBase.....: 3B722000 - 3B722900
     ImageSize.....: 900
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D99010) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(BAE7599F-3C6B-43B7-BDF0-9CE07AA91AA6)'
Handle 18 (26D8FD10)
   B0732526-38C8-4B40-8877-61C7B06AAC45 (3B7222A0)
Handle 19 (26D8FB90)
   Image (26D90928)   File:DataHubDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(53BCC14F-C24F-434C-B294-8ED2D4CC1860)
     ImageBase.....: 27FF4000 - 27FF4980
     ImageSize.....: 980
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D8FA90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(53BCC14F-C24F-434C-B294-8ED2D4CC1860)'
Handle 1A (26D8F790)
   AE80D021-618E-11D4-BCD7-0080C73C8881 (27FF48E8)
Handle 1B (26D8F610)
   Image (26D907A8)   File:FvOnFv2Thunk
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(5007A40E-A5E0-44F7-86AE-662F9A91DA26)
     ImageBase.....: 27FF3000 - 27FF3640
     ImageSize.....: 640
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D8F510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(5007A40E-A5E0-44F7-86AE-662F9A91DA26)'
Handle 1C (26D8EF10)
   Image (26D90628)   File:JpegDecoderDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2707E46D-DBD7-41C2-9C04-C9FDB8BAD86C)
     ImageBase.....: 27FF0000 - 27FF2460
     ImageSize.....: 2460
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D8EE10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(2707E46D-DBD7-41C2-9C04-C9FDB8BAD86C)'
Handle 1D (26D8EB10)
   A9396A81-6231-4DD7-BD9B-2E6BF7EC73C2 (27FF2358)
Handle 1E (26D8E990)
   Image (26D904A8)   File:GifDecoderDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(1353DE63-B74A-4BEF-80FD-2C5CFA83040B)
     ImageBase.....: 27FEE000 - 27FEF480
     ImageSize.....: 1480
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D8E890) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(1353DE63-B74A-4BEF-80FD-2C5CFA83040B)'
Handle 1F (26D8E590)
   D3E104CB-D03E-44B3-85CF-13067484CB11 (27FEE248)
Handle 20 (26D8E410)
   Image (26D90328)   File:PngDecoderDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(C1D5258B-F61A-4C02-9293-A005BEB3EAA1)
     ImageBase.....: 27FEA000 - 27FED700
     ImageSize.....: 3700
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D8E310) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(C1D5258B-F61A-4C02-9293-A005BEB3EAA1)'
Handle 21 (26D8E010)
   DB585F02-1DD1-41E2-A7E5-D47B7908CF7C (27FEA65C)
Handle 22 (26D67E90)
   Image (26D901A8)   File:SecurityStubDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(F80697E9-7FD6-4665-8646-88E33EF71DFC)
     ImageBase.....: 27FE4000 - 27FE94C0
     ImageSize.....: 54C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D67D90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(F80697E9-7FD6-4665-8646-88E33EF71DFC)'
Handle 23 (26D67910)
   A46423E3-4617-49F1-B9FF-D1BFA9115839 (27FE4748)
   94AB2F58-1438-4EF1-9152-18941A3A0E68 (27FE474C)
Handle 24 (26D67710)
   Image (26D90028)   File:AcpiSupportDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(506533A6-E626-4500-B14F-17939C0E5B60)
     ImageBase.....: 27FE0000 - 27FE3DA0
     ImageSize.....: 3DA0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D67610) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(506533A6-E626-4500-B14F-17939C0E5B60)'
Handle 25 (26D67310)
   DBFF9D55-89B7-46DA-BDDF-677D3DC0241D (26DB7160)
Handle 26 (26D67190)
   AcpiTable (26DB716C) 
Handle 27 (26D64E90)
   Image (26D66DA8)   File:SmbiosDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(F9D88642-0737-49BC-81B5-6889CD57D9EA)
     ImageBase.....: 27FDE000 - 27FDF4C0
     ImageSize.....: 14C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D64D90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(F9D88642-0737-49BC-81B5-6889CD57D9EA)'
Handle 28 (26D64A90)
   03583FF6-CB36-4940-947E-B9B39F4AFAF7 (27FDF3C8)
Handle 29 (26D64910)
   Image (26D66C28)   File:HiiDatabase
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(348C4D62-BFBD-4882-9ECE-C80BB1C4783B)
     ImageBase.....: 27FD0000 - 27FDDC20
     ImageSize.....: DC20
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D64810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(348C4D62-BFBD-4882-9ECE-C80BB1C4783B)'
Handle 2A (26D64510)
   HiiFont (27FD0384) 
   HiiString (27FD03A8) 
   HiiImage (27FD0394) 
   HiiDatabase (27FD03BC) 
   HiiConfRouting (27FD03E8) 
Handle 2B (26D63F90)
   Image (26D66AA8)   File:TrueTypeDecoderDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(531AED6E-3DEE-45EB-8DF1-B70ADB1F885D)
     ImageBase.....: 27FC4000 - 27FCFCA0
     ImageSize.....: BCA0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D63E90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(531AED6E-3DEE-45EB-8DF1-B70ADB1F885D)'
Handle 2C (26D63810)
   EF6568E2-7557-4AE7-A337-B9F4C5008774 (27FC4260)
Handle 2D (26D63690)
   Image (26D66928)   File:SecurityErrorHandlingDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(0541150C-E33B-4DAF-A263-02E4BB4BF1CF)
     ImageBase.....: 27FC3000 - 27FC3AC0
     ImageSize.....: AC0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D63590) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(0541150C-E33B-4DAF-A263-02E4BB4BF1CF)'
Handle 2E (26D63190)
   Image (26D667A8)   File:SetupDataProviderDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A9ACE824-4486-44E6-915A-8FBAED0799B9)
     ImageBase.....: 3B721000 - 3B721760
     ImageSize.....: 760
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D63090) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(A9ACE824-4486-44E6-915A-8FBAED0799B9)'
Handle 2F (26D4BD10)
   Image (26D66628)   File:LegacySpeakerDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(400B4476-3081-11D6-87ED-00062945C3B9)
     ImageBase.....: 27FC2000 - 27FC2340
     ImageSize.....: 340
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D4BC10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(400B4476-3081-11D6-87ED-00062945C3B9)'
Handle 30 (26D4B910)
   400B4476-3081-11D6-87ED-00062945C3B9 (27FC2300)
Handle 31 (26D4B790)
   Image (26D664A8)   File:I2cPolicy
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(3BC24CD6-ABCD-41BA-8CCB-D8E0EF1CEF85)
     ImageBase.....: 27FC1000 - 27FC13A0
     ImageSize.....: 3A0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D4B690) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(3BC24CD6-ABCD-41BA-8CCB-D8E0EF1CEF85)'
Handle 32 (26D4B310)
   3E4750F6-9FFB-4746-B5B0-718A2400E377 (26D4B490)
Handle 33 (26D4B190)
   Image (26D66328)   File:NullMemoryTestDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(96B5C032-DF4C-4B6E-8232-438DCF448D0E)
     ImageBase.....: 27FC0000 - 27FC0580
     ImageSize.....: 580
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D4B090) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(96B5C032-DF4C-4B6E-8232-438DCF448D0E)'
Handle 34 (26D4AD90)
   309DE7F1-7F5E-4ACE-B49C-531BE5AA95EF (27FC0220)
Handle 35 (26D4AC10)
   Image (26D661A8)   File:ChipsetSvcDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(9B0FF2C0-E245-11E1-8EFF-D0DF9A35C106)
     ImageBase.....: 27FBE000 - 27FBF3A0
     ImageSize.....: 13A0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D4AB10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(9B0FF2C0-E245-11E1-8EFF-D0DF9A35C106)'
   ComponentName (27FBE320) 
   ComponentName2 (27FBE32C) 
   DriverEFIVersion (27FBE318) FirmwareVersion: 0002001E
   14AFC99E-E23E-11E1-A234-D0DF9A35C106 (26D4A510)
Handle 36 (26D4A290)
   Image (26D66028)   File:SmmControl
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(DD787473-07CE-4C63-82CE-930B33F39C09)
     ImageBase.....: 3B720000 - 3B7208E0
     ImageSize.....: 8E0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D4A190) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(DD787473-07CE-4C63-82CE-930B33F39C09)'
   8D12E231-C667-4FD1-98F2-2449A7E7B2E5 (3B72079C)
Handle 37 (26D49D90)
   Image (26D3CDA8)   File:IntelPchLegacyInterrupt
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(F821665C-0137-4F34-A7A1-57A0BD256D62)
     ImageBase.....: 27FBD000 - 27FBD380
     ImageSize.....: 380
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D49C90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(F821665C-0137-4F34-A7A1-57A0BD256D62)'
Handle 38 (26D49990)
   31CE593D-108A-485D-ADB2-78F21F2966BE (27FBD230)
Handle 39 (26D49810)
   Image (26D3CC28)   File:ActiveBios
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BFD59D42-FE0F-4251-B772-4B098A1AEC85)
     ImageBase.....: 27FBC000 - 27FBC4E0
     ImageSize.....: 4E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D49710) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(BFD59D42-FE0F-4251-B772-4B098A1AEC85)'
Handle 3A (26D49410)
   EBBE2D1B-1647-4BDA-AB9A-7863E396D41A (27FBC468)
Handle 3B (26D49290)
   Image (26D3CAA8)   File:PchReset
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(F5883FC5-F8EE-4E44-B386-6021FB320C9B)
     ImageBase.....: 3B71F000 - 3B71FBA0
     ImageSize.....: BA0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D49190) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(F5883FC5-F8EE-4E44-B386-6021FB320C9B)'
Handle 3C (26D3BE90)
   F0BBFCA0-684E-48B3-BAE2-6C84B89E5339 (3B94F798)
Handle 3D (26D3BD90)
   27CFAC88-46CC-11D4-9A38-0090273FC14D (00000000)
Handle 3E (26D3BC10)
   Image (26D3C928)   File:PchSpiRuntime
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(C194C6EA-B68C-4981-B64B-9BD271474B20)
     ImageBase.....: 3B71C000 - 3B71E540
     ImageSize.....: 2540
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D3BB10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(C194C6EA-B68C-4981-B64B-9BD271474B20)'
Handle 3F (26D3B810)
   1156EFC6-EA32-4396-B5D5-26932E83C313 (3B900A18)
Handle 40 (26D3B590)
   Image (26D3C7A8)   File:SeCPolicyInitDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(17D09362-326C-4920-A50C-76F8A116A093)
     ImageBase.....: 27FB9000 - 27FBBC00
     ImageSize.....: 2C00
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D3B490) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(17D09362-326C-4920-A50C-76F8A116A093)'
   F8BFF014-18FB-4EF9-B10C-AE22738DBEED (27FBBA08)
Handle 41 (26D3AE10)
   Image (26D3C628)   File:HciDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2892389C-FBE9-43D7-B9FC-6C5D90D18456)
     ImageBase.....: 27FB8000 - 27FB8AE0
     ImageSize.....: AE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D3AD10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(2892389C-FBE9-43D7-B9FC-6C5D90D18456)'
Handle 42 (26D3AA10)
   18D1324C-7C8F-489E-918D-3B7B78605233 (27FB8250)
Handle 43 (26D3A890)
   Image (26D3C4A8)   File:BootScriptSaveDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(42BB673D-09F3-4E2E-9FEE-D081131DED5B)
     ImageBase.....: 27FB6000 - 27FB79C0
     ImageSize.....: 19C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D3A790) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(42BB673D-09F3-4E2E-9FEE-D081131DED5B)'
Handle 44 (26D3A490)
   470E1529-B79E-4E32-A0FE-6A156D29F9B2 (27FB62E0)
Handle 45 (26D3A310)
   Image (26D3C328)   File:BmpDecoderDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A9F634A5-29F1-4456-A9D5-6E24B88BDB65)
     ImageBase.....: 27FB5000 - 27FB5860
     ImageSize.....: 860
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D3A210) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(A9F634A5-29F1-4456-A9D5-6E24B88BDB65)'
Handle 46 (26D39F10)
   A6396A81-8031-4FD7-BD14-2E6BFBEC83C2 (27FB5218)
Handle 47 (26D39D90)
   Image (26D3C1A8)   File:ButtonArrayControl
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(89ED23CA-D869-45E5-A5EF-62D9438688DE)
     ImageBase.....: 27FB1000 - 27FB47A0
     ImageSize.....: 37A0
     CodeType......: BS_code   
     DataType......: BS_data   
   Dpath (27FB1E00) 
      Hardware Device Path for Vendor-Defined
       Guid C8752FDE-B5C8-4528-897D-6920FE771E38
      AsStr: 'VenHw(C8752FDE-B5C8-4528-897D-6920FE771E38)'
   ImageDpath (26D39C90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(89ED23CA-D869-45E5-A5EF-62D9438688DE)'
   TxtinEx (26D65424) 
   Txtin (26D65418) 
   ConIn (0) 
Handle 48 (26D39710)
   Image (26D3C028)   File:BiosRegionLock
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(77892615-7C7A-4AEF-A320-2A0C15C44B95)
     ImageBase.....: 27FB0000 - 27FB0800
     ImageSize.....: 800
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D39610) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(77892615-7C7A-4AEF-A320-2A0C15C44B95)'
Handle 49 (26D39290)
   E687E50B-C98D-4780-A7B0-E4C7C4AF7F69 (26D39438)
Handle 4A (26D39110)
   Image (26D38DA8)   File:VariableEditDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(3F837872-2A07-4470-B8B7-9AC131360314)
     ImageBase.....: 27FAF000 - 27FAFBE0
     ImageSize.....: BE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D39010) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(3F837872-2A07-4470-B8B7-9AC131360314)'
   08015350-6164-4D64-B1E0-E774E694FA06 (27FAFAFD)
   7A633D68-33F8-428D-A8B9-87F837270621 (00000000)
Handle 4B (26D36610)
   Image (26D38AA8)   File:FvbServicesRuntimeDxe
     ParentHandle..: 26D36B10
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BDFE5FAA-2A35-44BB-B17A-8084D4E2B9E9)
     ImageBase.....: 3B717000 - 3B71B1C0
     ImageSize.....: 41C0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D36510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(BDFE5FAA-2A35-44BB-B17A-8084D4E2B9E9)'
Handle 4C (26D36B90)
   Image (26D38C28)   File:FwBlockServiceSmm
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(74D936FA-D8BD-4633-B64D-6424BDD23D24)
     ImageBase.....: 27FAB000 - 27FAE480
     ImageSize.....: 3480
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D36990) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(74D936FA-D8BD-4633-B64D-6424BDD23D24)'
Handle 4D (26D16F90)
   Image (26D38928)   File:PnpSmm
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CC1BAA36-11EB-45CC-9ADC-7565E273AC70)
     ImageBase.....: 27FA6000 - 27FAA0E0
     ImageSize.....: 40E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D16E90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(CC1BAA36-11EB-45CC-9ADC-7565E273AC70)'
Handle 4E (26D16B90)
   Image (26D387A8)   File:CryptoServiceRuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4AC99A7C-1DCF-4A51-8F06-5EEDFE8A8864)
     ImageBase.....: 27F87000 - 27FA5100
     ImageSize.....: 1E100
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D16A90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(4AC99A7C-1DCF-4A51-8F06-5EEDFE8A8864)'
Handle 4F (26D16790)
   02EDAD2D-3B30-4482-B22F-30347B2B0F65 (26D38648)
   728D5C4A-9601-49B9-B872-721435847EEB (26D3861C)
Handle 50 (26D16490)
   Image (26D384A8)   File:CryptoServiceRuntimeDxe
     ParentHandle..: 26D16B90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4AC99A7C-1DCF-4A51-8F06-5EEDFE8A8864)
     ImageBase.....: 3B6F8000 - 3B716100
     ImageSize.....: 1E100
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D16390) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(4AC99A7C-1DCF-4A51-8F06-5EEDFE8A8864)'
   HashSb (3B6F9340) 
Handle 51 (26D16090)
   Hash (3B8FEE9C) 
   E1475E0C-1746-4802-862E-011C2C2D9D86 (3B8FEEC8)
Handle 52 (26D15E10)
   Image (26D38328)   File:SmmControl2OnSmmControlThunk
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B55A4515-5895-4EA8-845B-75B7480F6502)
     ImageBase.....: 3B6F7000 - 3B6F7700
     ImageSize.....: 700
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D15D10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(B55A4515-5895-4EA8-845B-75B7480F6502)'
   843DC720-AB1E-42CB-9357-8A0078F3561B (3B6F72A0)
Handle 53 (26D15910)
   Image (26D381A8)   File:TrEEDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(C05ED2D1-5DDE-4B6E-A1AE-0B306ACB42BC)
     ImageBase.....: 27F82000 - 27F865E0
     ImageSize.....: 45E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D15810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(C05ED2D1-5DDE-4B6E-A1AE-0B306ACB42BC)'
   607F766C-7455-42BE-930B-E4D76DB2720F (27F82570)
   4CF01D0A-C48C-4271-A22A-AD8E55978188 (27F82604)
   CA8BC404-5655-4262-A59A-5EEF0BB5979C (27F8260C)
Handle 54 (26D15190)
   Image (26D38028)   File:FlashDeviceFvbRuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B0C2372B-9393-4CBC-9CAF-53913C9DCE29)
     ImageBase.....: 3B6F3000 - 3B6F65A0
     ImageSize.....: 35A0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D15090) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(B0C2372B-9393-4CBC-9CAF-53913C9DCE29)'
Handle 55 (26D14D90)
   Dpath (26D14E90) 
      Hardware Device Path for Memory Mapped
       Memory Type (11: FFF60000-FFFFFFFF)
      AsStr: 'MemoryMapped(0xB,0xFFF60000,0xFFFFFFFF)'
   5A25CBB6-4DB1-4E08-BA7B-570250EBFC9E (3B6F3330)
   8F644FA9-E850-4DB1-9CE2-0B44698E8DA4 (3B83FE1C)
Handle 56 (26D14990)
   Image (26D13DA8)   File:RngDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(40155DB7-F2F6-4F7E-8BA8-A3466D4EF5FE)
     ImageBase.....: 27F81000 - 27F814C0
     ImageSize.....: 4C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D14890) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(40155DB7-F2F6-4F7E-8BA8-A3466D4EF5FE)'
   3152BCA5-EADE-433D-862E-C01CDC291F44 (27F81260)
Handle 57 (26D14410)
   Image (26D13C28)   File:SetupBrowser
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4F921013-4F71-4C6C-BCF8-419B2B801932)
     ImageBase.....: 27F68000 - 27F80D40
     ImageSize.....: 18D40
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D14310) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(4F921013-4F71-4C6C-BCF8-419B2B801932)'
Handle 58 (26D14090)
   Dpath (27F68720) 
      Hardware Device Path for Vendor-Defined
       Guid 2A3DB560-D8EA-4CF6-B74B-D0694986FD6D
      AsStr: 'VenHw(2A3DB560-D8EA-4CF6-B74B-D0694986FD6D)'
Handle 59 (26D0E810)
   FormBrowser2 (27F68658) 
Handle 5A (26D0E390)
   3634B8F9-D032-4F21-A989-31ADF05F0012 (26D0E110)
   1F73B18D-4630-43C1-A1DE-6F80855D7DA4 (27F68660)
Handle 5B (26D0E190)
   348C4D62-BFBD-4882-9ECE-C80BB1C4783B (00000000)
Handle 5C (26D0FE90)
   Image (26D13AA8)   File:IsaAcpi
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(38A0EC22-FBE7-4911-8BC1-176E0D6C1DBD)
     ImageBase.....: 27F65000 - 27F67100
     ImageSize.....: 2100
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D0FD90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(38A0EC22-FBE7-4911-8BC1-176E0D6C1DBD)'
   DriverBinding (27F653E0) 
Handle 5D (26D0F990)
   Image (26D13928)   File:BiosProtectDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(C7D4F4E3-DAEA-40B0-8846-F4CAF3135CE8)
     ImageBase.....: 27F64000 - 27F64580
     ImageSize.....: 580
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D0F810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(C7D4F4E3-DAEA-40B0-8846-F4CAF3135CE8)'
Handle 5E (26D0F410)
   Image (26D137A8)   File:StringTransformDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A2811523-56BA-4765-A1AC-AD36F1920AA1)
     ImageBase.....: 27F61000 - 27F63080
     ImageSize.....: 2080
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D0F290) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(A2811523-56BA-4765-A1AC-AD36F1920AA1)'
Handle 5F (26D0F010)
   404DAB9C-EE13-483C-BD3A-335BC0917C6D (27F62F64)
Handle 60 (26D11E90)
   Image (26D13628)   File:LegacyMetronome
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(07A9330A-F347-11D4-9A49-0090273FC14D)
     ImageBase.....: 27F60000 - 27F603E0
     ImageSize.....: 3E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D11D10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(07A9330A-F347-11D4-9A49-0090273FC14D)'
Handle 61 (26D11B10)
   26BACCB2-6F42-11D4-BCE7-0080C73C8881 (27F60220)
Handle 62 (26D11990)
   Image (26D134A8)   File:DatahubStatusCodeHandlerDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(863D214F-0920-437B-8CAD-88EA83A24E97)
     ImageBase.....: 27F5E000 - 27F5F800
     ImageSize.....: 1800
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D11810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(863D214F-0920-437B-8CAD-88EA83A24E97)'
Handle 63 (26D11590)
   Image (26D13328)   File:SpiDxeInit
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(29071CAF-7BAD-4D36-B858-527EF28C0985)
     ImageBase.....: 27F5C000 - 27F5DFA0
     ImageSize.....: 1FA0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D11410) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(29071CAF-7BAD-4D36-B858-527EF28C0985)'
Handle 64 (26D11190)
   Image (26D131A8)   File:SetSsidSvidDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(96BDEA61-C364-4513-B6B3-037E9AD54CE4)
     ImageBase.....: 27F5A000 - 27F5B540
     ImageSize.....: 1540
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D11010) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(96BDEA61-C364-4513-B6B3-037E9AD54CE4)'
Handle 65 (26D10C90)
   Image (26D13028)   File:Datahub2SmbiosThunk
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(9F8B12CF-E796-408F-9D59-3ACDDC0AFBE3)
     ImageBase.....: 27F56000 - 27F59900
     ImageSize.....: 3900
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D10B10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(9F8B12CF-E796-408F-9D59-3ACDDC0AFBE3)'
Handle 66 (26D10310)
   Image (26CF9C28)   File:FaultTolerantWriteLiteDxe
     ParentHandle..: 26D10790
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4C862FC6-0E54-4E36-8C8F-FF6F3167951F)
     ImageBase.....: 3B6EF000 - 3B6F21E0
     ImageSize.....: 31E0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26D10190) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(4C862FC6-0E54-4E36-8C8F-FF6F3167951F)'
Handle 67 (26CF8E90)
   3F557189-8DAE-45AE-A0B3-2B99CA7AA7A0 (3B83C018)
Handle 68 (26D10590)
   Image (26CF9DA8)   File:FrameworkHiiOnUefiHiiThunk
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(AC3435BB-B1D3-4EF8-957C-8048606FF671)
     ImageBase.....: 27F4C000 - 27F55E20
     ImageSize.....: 9E20
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26D10510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(AC3435BB-B1D3-4EF8-957C-8048606FF671)'
Handle 69 (26CF8C90)
   5542CCE1-DF5C-4D1B-ABCA-364F77D399FB (26CF8D98)
Handle 6A (26CF8A90)
   348C4D62-BFBD-4882-9ECE-C80BB1C4783B (00000000)
Handle 6B (26CF8910)
   348C4D62-BFBD-4882-9ECE-C80BB1C4783B (00000000)
Handle 6C (26CF8790)
   348C4D62-BFBD-4882-9ECE-C80BB1C4783B (00000000)
Handle 6D (26CF8610)
   348C4D62-BFBD-4882-9ECE-C80BB1C4783B (00000000)
Handle 6E (26CF8490)
   348C4D62-BFBD-4882-9ECE-C80BB1C4783B (00000000)
Handle 6F (26CF4B10)
   0FB7C852-ADCA-4853-8D0F-FBA71B1CE11A (27F4C5D8)
Handle 70 (26CF4990)
   Image (26CF9AA8)   File:VariableDefaultUpdate
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(760F874E-B8CB-405E-AA32-A46AE2F3D680)
     ImageBase.....: 27F4A000 - 27F4B360
     ImageSize.....: 1360
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CF4810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(760F874E-B8CB-405E-AA32-A46AE2F3D680)'
Handle 71 (26CF4510)
   B701CFAE-4DD4-42FF-AE96-F21467A92B3C (26CDC110)
Handle 72 (26CF4390)
   Image (26CF9928)   File:PciHostBridge
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(9FD2360E-6B48-11D5-8E71-00902707B35E)
     ImageBase.....: 27F47000 - 27F49480
     ImageSize.....: 2480
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CF4210) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(9FD2360E-6B48-11D5-8E71-00902707B35E)'
Handle 73 (26CE9F10)
   30CFE3E7-3DE1-4586-BE20-DEABA1B3B793 (00000000)
   CF8034BE-6768-4D8B-B739-7CCE683A9FBE (26CF40A8)
Handle 74 (26CE9E10)
   Dpath (27F47438) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      AsStr: 'PciRoot(0x0)'
   PciRootBridgeIo (26E61F70) 
     ParentHandle..: 26CE9F10
     Segment #.....: 0
     Attributes....: 0
     Supports......: 3E
      Type  Flag  Base              Limit             Gran
      ====  ====  ================  ================  ====
      I/O : 00    0000000000001000  0000000000001FFF  00
      MEM : 00    0000000040000000  00000000508FFFFF  20
      MEM : 06    0000000000000000  0000000000000000  20
      MEM : 00    0000000000000000  0000000000000000  40
      MEM : 06    0000000000000000  0000000000000000  40
      BUS : 00    0000000000000000  0000000000000000  00
Handle 75 (26CE9A10)
   Image (26CF97A8)   File:DynamicHotKeyDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BFEEE587-CE44-4906-9964-72F4C5AD7CB7)
     ImageBase.....: 27F41000 - 27F46E60
     ImageSize.....: 5E60
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CE9890) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(BFEEE587-CE44-4906-9964-72F4C5AD7CB7)'
Handle 76 (26CDCE10)
   D804FDEF-D62A-464A-8B7D-ADC69BC19CBB (27F468A0)
Handle 77 (26CDC810)
   Image (26CF94A8)   File:VariableRuntimeDxe
     ParentHandle..: 26CDCC90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60)
     ImageBase.....: 3B6E3000 - 3B6EE7E0
     ImageSize.....: B7E0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26CDC690) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60)'
Handle 78 (26CDC390)
   173F9091-44B6-43BE-9D65-98947BD9B9D7 (3B83FB10)
Handle 79 (26CDC190)
   CD3D0A05-9E24-437C-A891-1EE053DB7638 (3B6E3784)
   6441F818-6362-4E44-B570-7DBA31DD2453 (00000000)
   1E5668E2-8481-11D4-BCF1-0080C73C8881 (00000000)
Handle 7A (26CDCD90)
   Image (26CF9628)   File:PcRtc
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(378D7B65-8DA9-4773-B6E4-A47826A833E1)
     ImageBase.....: 3B6E0000 - 3B6E2360
     ImageSize.....: 2360
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26CDCC10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(378D7B65-8DA9-4773-B6E4-A47826A833E1)'
Handle 7B (26CDAC10)
   27CFAC87-46CC-11D4-9A38-0090273FC14D (00000000)
Handle 7C (26CDAB10)
   Image (26CF9328)   File:TcgMor
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(AD416CE3-A483-45B1-94C2-4B4E4D575562)
     ImageBase.....: 27F40000 - 27F40420
     ImageSize.....: 420
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CDA990) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(AD416CE3-A483-45B1-94C2-4B4E4D575562)'
Handle 7D (26CDA690)
   Image (26CF91A8)   File:TrEEPhysicalPresenceDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4D06B832-6987-40F2-B76D-D170B42DB182)
     ImageBase.....: 27F3D000 - 27F3F780
     ImageSize.....: 2780
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CDA510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(4D06B832-6987-40F2-B76D-D170B42DB182)'
   469718DF-6F19-43E7-903B-EA6B035555BB (27F3D3D8)
Handle 7E (26CDA010)
   Image (26CF9028)   File:BdsDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(FC5C7020-1A48-4198-9BE2-EAD5ABC8CF2F)
     ImageBase.....: 27EE2000 - 27F3C080
     ImageSize.....: 5A080
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CD9E90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(FC5C7020-1A48-4198-9BE2-EAD5ABC8CF2F)'
   C9C83B9B-81E7-4D76-A35F-068BC0CB97AE (00000000)
   3725E246-7CAB-4241-95A3-A560BDF44A6C (00000000)
Handle 7F (26CB4910)
   665E3FF6-46CC-11D4-9A38-0090273FC14D (27EE48BC)
Handle 80 (26CB4790)
   Image (26CB6DA8)   File:MonotonicCounterRuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(AD608272-D07F-4964-801E-7BD3B7888652)
     ImageBase.....: 3B6DE000 - 3B6DF280
     ImageSize.....: 1280
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26CB4610) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(AD608272-D07F-4964-801E-7BD3B7888652)'
Handle 81 (26CB4410)
   1DA97072-BDDC-4B30-99F1-72A0B56FFF2A (00000000)
Handle 82 (26CB4290)
   Image (26CB6C28)   File:InstallMsdm
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(6903A447-CB4F-45F6-89A2-7E7E2F9EE14C)
     ImageBase.....: 27EE1000 - 27EE1CA0
     ImageSize.....: CA0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CB4110) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(6903A447-CB4F-45F6-89A2-7E7E2F9EE14C)'
Handle 83 (26CB5E90)
   Image (26CB6AA8)   File:MonitorKeyDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(27BEDA18-AE2B-43C2-AF6B-74952441DE28)
     ImageBase.....: 27EE0000 - 27EE0F00
     ImageSize.....: F00
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CB5D10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(27BEDA18-AE2B-43C2-AF6B-74952441DE28)'
Handle 84 (26CB5810)
   9E43E128-C74D-42F4-8C0C-4811674A17B5 (26CB5A18)
Handle 85 (26CB5690)
   Image (26CB6928)   File:PnpRuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A368D636-4C77-4B50-AAE8-F99E2DA40440)
     ImageBase.....: 3B6DC000 - 3B6DDD00
     ImageSize.....: 1D00
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26CB5510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(A368D636-4C77-4B50-AAE8-F99E2DA40440)'
Handle 86 (26CB5290)
   Image (26CB67A8)   File:SysPassword
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(42FCB444-B881-49D8-A6E9-5A1695FC9F3E)
     ImageBase.....: 27EDF000 - 27EDF9E0
     ImageSize.....: 9E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CB5110) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(42FCB444-B881-49D8-A6E9-5A1695FC9F3E)'
Handle 87 (26CA4E10)
   55D662CE-2EC6-4451-A305-BA06B50786C5 (26CA4F94)
Handle 88 (26CA4C10)
   Image (26CB6628)   File:UnicodeCollationDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B273CC44-E62A-41DC-9CAD-BDB4235459D8)
     ImageBase.....: 27EDD000 - 27EDE540
     ImageSize.....: 1540
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CA4A90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(B273CC44-E62A-41DC-9CAD-BDB4235459D8)'
Handle 89 (26CA4690)
   Dpath (26CA4790) 
      Hardware Device Path for Vendor-Defined
       Guid 0F0B1735-87A0-4193-B266-538C38AF48CE
       00000000: 00 00 00 00 90 47 CA 26-00 00 00 00              *.....G.&....*

      AsStr: 'VenHw(0F0B1735-87A0-4193-B266-538C38AF48CE,000000009047CA2600000000)'
Handle 8A (26CA4210)
   UnicodeCollation (27EDD344) 
   UnicodeCollation2 (27EDD344) 
Handle 8B (26CA3F90)
   Image (26CB64A8)   File:SecureFlashDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(6B1AB225-2E47-4A61-8FF5-B8EA42EE3EA8)
     ImageBase.....: 27EDB000 - 27EDCCC0
     ImageSize.....: 1CC0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CA3E10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(6B1AB225-2E47-4A61-8FF5-B8EA42EE3EA8)'
Handle 8C (26CA3B90)
   Image (26CB6328)   File:CapsuleRuntimeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(42857F0A-13F2-4B21-8A23-53D3F714B840)
     ImageBase.....: 3B6D6000 - 3B6DBB20
     ImageSize.....: 5B20
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26CA3A10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(42857F0A-13F2-4B21-8A23-53D3F714B840)'
Handle 8D (26CA3810)
   5053697E-2CBC-4819-90D9-0580DEEE5754 (00000000)
Handle 8E (26CA3690)
   Image (26CB61A8)   File:CapsuleLoaderTriggerDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(C62CEB80-FB40-4A46-A5E5-C1D997C36DFC)
     ImageBase.....: 27ED5000 - 27EDAAE0
     ImageSize.....: 5AE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CA3510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(C62CEB80-FB40-4A46-A5E5-C1D997C36DFC)'
Handle 8F (26CA3290)
   Image (26CB6028)   File:I2cBusDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(440C38B7-ED16-49EA-9669-317EF906635D)
     ImageBase.....: 27ED3000 - 27ED4B40
     ImageSize.....: 1B40
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26CA3110) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(440C38B7-ED16-49EA-9669-317EF906635D)'
Handle 90 (26C9FE90)
   5BECCC5A-19C9-42EB-8E44-9CB3977485E8 (26CA162C)
   E49D33ED-513D-4634-B698-6F55AA751C1B (26CA161C)
Handle 91 (26C9FC90)
   5BECCC5A-19C9-42EB-8E44-9CB3977485E8 (26CA16E4)
   E49D33ED-513D-4634-B698-6F55AA751C1B (26CA16D4)
Handle 92 (26C9FB10)
   5BECCC5A-19C9-42EB-8E44-9CB3977485E8 (26CA179C)
   E49D33ED-513D-4634-B698-6F55AA751C1B (26CA178C)
Handle 93 (26C9F990)
   5BECCC5A-19C9-42EB-8E44-9CB3977485E8 (26CA1854)
   E49D33ED-513D-4634-B698-6F55AA751C1B (26CA1844)
Handle 94 (26C9F810)
   5BECCC5A-19C9-42EB-8E44-9CB3977485E8 (26CA190C)
   E49D33ED-513D-4634-B698-6F55AA751C1B (26CA18FC)
Handle 95 (26C9F690)
   5BECCC5A-19C9-42EB-8E44-9CB3977485E8 (26CA19C4)
   E49D33ED-513D-4634-B698-6F55AA751C1B (26CA19B4)
Handle 96 (26C9F510)
   5BECCC5A-19C9-42EB-8E44-9CB3977485E8 (26CA1A7C)
   E49D33ED-513D-4634-B698-6F55AA751C1B (26CA1A6C)
Handle 97 (26C9F310)
   Image (26CA0328)   File:SmmAccess
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(326E9CC6-9839-4885-B2ED-275903B668E1)
     ImageBase.....: 27ED2000 - 27ED2700
     ImageSize.....: 700
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C9F190) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(326E9CC6-9839-4885-B2ED-275903B668E1)'
Handle 98 (26C9EF10)
   C2702B74-800C-4131-8746-8FB5B89CE4AC (27ED2628)
Handle 99 (26C9ED90)
   Image (26CA01A8)   File:PlatformInfoDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(025F738B-4EBD-4D55-B728-5F421B601F1F)
     ImageBase.....: 27ED1000 - 27ED1420
     ImageSize.....: 420
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C9EC10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(025F738B-4EBD-4D55-B728-5F421B601F1F)'
Handle 9A (26C9E990)
   Image (26CA0028)   File:PlatformCpuInfoDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(025F738B-4EBD-4D55-B728-5F421B601F20)
     ImageBase.....: 27ED0000 - 27ED0600
     ImageSize.....: 600
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C9E810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(025F738B-4EBD-4D55-B728-5F421B601F20)'
Handle 9B (26C9E590)
   Image (26C9DDA8)   File:PciPlatform
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(E2441B64-7EF4-41FE-B3A3-8CAA7F8D3017)
     ImageBase.....: 27ECF000 - 27ECFAA0
     ImageSize.....: AA0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C9E410) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(E2441B64-7EF4-41FE-B3A3-8CAA7F8D3017)'
Handle 9C (26C9E190)
   07D75280-27D4-4D69-90D0-5643E238B341 (27ECF358)
Handle 9D (26C9CF90)
   Image (26C9DC28)   File:PlatformCpuPolicy
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CB933912-DF8F-4305-B1F9-7B44FA11395C)
     ImageBase.....: 27ECD000 - 27ECE360
     ImageSize.....: 1360
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C9CE10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(CB933912-DF8F-4305-B1F9-7B44FA11395C)'
Handle 9E (26C9CB90)
   BD26CDC9-A092-462A-877A-5AB6ADCE4812 (27ECE188)
Handle 9F (26C9CA10)
   Image (26C9DAA8)   File:PlatformGOPPolicy
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(9737D7CA-D869-45E5-A5EF-75D9438688DE)
     ImageBase.....: 27ECC000 - 27ECC5C0
     ImageSize.....: 5C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C9C890) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(9737D7CA-D869-45E5-A5EF-75D9438688DE)'
   EC2E931B-3281-48A5-8107-DF8A8BED3C5D (27ECC550)
Handle A0 (26C9C510)
   Image (26C9D928)   File:PnpDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CE7CD764-A1D9-44E5-9857-14FEFAAE96DD)
     ImageBase.....: 27EC9000 - 27ECB4A0
     ImageSize.....: 24A0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C9C390) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(CE7CD764-A1D9-44E5-9857-14FEFAAE96DD)'
Handle A1 (26C9C110)
   Image (26C9D7A8)   File:PiSmmIpl
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2FA2A6DA-11D5-4DC3-999A-749648B03C56)
     ImageBase.....: 3B6D3000 - 3B6D50E0
     ImageSize.....: 20E0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26C9C010) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(2FA2A6DA-11D5-4DC3-999A-749648B03C56)'
Handle A2 (26C92C10)
   C68ED8E2-9DC6-4CBD-9D94-DB65ACC5C332 (3B6D3368)
   F4CCBFB7-F6E0-47FD-9DD4-10A8F150C191 (3B6D3360)
Handle A3 (26C92790)
   Image (26C9D628)   File:MpCpu
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(62D171CB-78CD-4480-8678-C6A2A797A8DE)
     ImageBase.....: 27EC0000 - 27EC81C0
     ImageSize.....: 81C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C92610) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(62D171CB-78CD-4480-8678-C6A2A797A8DE)'
Handle A4 (26C92410)
   26BACCB1-6F42-11D4-BCE7-0080C73C8881 (27EC0C10)
Handle A5 (26C8E210)
   3FDDA605-A76E-4F46-AD29-12F4531B3D08 (27EC0558)
Handle A6 (26C8E010)
   Image (26C9D4A8)   File:IntelGopDriver
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(FF0C8745-3270-4439-B74F-3E45F8C77064)
     ImageBase.....: 27EB1000 - 27EBFAA0
     ImageSize.....: EAA0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C70E90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(FF0C8745-3270-4439-B74F-3E45F8C77064)'
   DriverBinding (27EB40D0) 
   ComponentName2 (27EB4058) 
   651B7EBD-CE13-41D0-82E5-A063ABBE9BB6 (27EB4064)
Handle A7 (26C67110)
   Image (26C67210)   File:PcdSmmDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(80CF7257-87AB-47F9-A3FE-D50B76D89541)
     ImageBase.....: 3CBF7000 - 3CBF9CA0
     ImageSize.....: 2CA0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle A8 (26C64E90)
   Image (26C67010)   File:SmmLockBox
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(33FB3535-F15E-4C17-B303-5EB94595ECB6)
     ImageBase.....: 3CBF3000 - 3CBF3BA0
     ImageSize.....: BA0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle A9 (26C64D90)
   BD445D79-B7AD-4F04-9AD8-29BD2040EB3C (00000000)
Handle AA (26C64B10)
   Image (26C64C90)   File:CpuIo2Smm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A47EE2D8-F60E-42FD-8E58-7BD65EE4C29B)
     ImageBase.....: 3CBF2000 - 3CBF2740
     ImageSize.....: 740
     CodeType......: RT_code   
     DataType......: RT_data   
Handle AB (26C64890)
   Image (26C64A10)   File:ReportStatusCodeRouterSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A6885402-D022-4B0E-A509-4711B90F2A39)
     ImageBase.....: 3CBF1000 - 3CBF1940
     ImageSize.....: 940
     CodeType......: RT_code   
     DataType......: RT_data   
Handle AC (26C64710)
   6AFD2B77-98C1-4ACD-A6F9-8A9439DE0FB1 (3CBF1278)
Handle AD (26C64490)
   Image (26C64610)   File:TianoCompressSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(C7EA9F94-1547-44F0-863F-563EAE79E1C0)
     ImageBase.....: 3CBED000 - 3CBF0EE0
     ImageSize.....: 3EE0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle AE (26C64210)
   Image (26C64390)   File:ChipsetSvcSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(D359DE86-0A1B-47BC-95D2-1D1F8FFF0AD8)
     ImageBase.....: 3CBEC000 - 3CBEC560
     ImageSize.....: 560
     CodeType......: RT_code   
     DataType......: RT_data   
Handle AF (26C63F90)
   Image (26C64110)   File:PchSmiDispatcher
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(6BE18C9C-BF61-499E-88EC-5CD57430460C)
     ImageBase.....: 3CBE9000 - 3CBEB900
     ImageSize.....: 2900
     CodeType......: RT_code   
     DataType......: RT_data   
Handle B0 (26C63E10)
   A05B6FFD-87AF-4E42-95C9-6228B63CF3F3 (3CBE9D50)
   9CCA03FC-4C9E-4A19-9B06-ED7B479BDE55 (3CBE9DF8)
   B709EFA0-47A6-4B41-B931-12ECE7A8EE56 (3CBE9DE0)
   3920405B-C897-44DA-88F3-4C498A6FF736 (3CBE9DC8)
   C50B323E-9075-4F2A-AC8E-D2596A1085CC (3CBE9DB0)
   E541B773-DD11-420C-B026-DF993653F8BF (3CBE9D80)
   14FC52BE-01DC-426C-91AE-A23C3E220AE8 (3CBE9D68)
   E0744B81-9513-49CD-8CEA-E9245E7039DA (3CBE9D98)
Handle B1 (26C63490)
   Image (26C63610)   File:PchSpiSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(27F4917B-A707-4AAD-9676-26DF168CBF0D)
     ImageBase.....: 3CBE7000 - 3CBE8E60
     ImageSize.....: 1E60
     CodeType......: RT_code   
     DataType......: RT_data   
Handle B2 (26C63310)
   D9072C35-EB8F-43AD-A220-34D40E2A8285 (3CBF6410)
Handle B3 (26C63090)
   Image (26C63210)   File:PiSmmCpuDxeSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A3FF0EF5-0C28-42F5-B544-8C7DE1E80014)
     ImageBase.....: 3CBE2000 - 3CBE64C0
     ImageSize.....: 44C0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle B4 (26C52F90)
   21F302AD-6E94-471B-84BC-B14800403A1D (3CBE2DD4)
   26EEB3DE-B689-492E-80F0-BE8BD7DA4BA7 (3CBE2DC0)
Handle B5 (26C52C10)
   Image (26C52E10)   File:FwBlockServiceSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(74D936FA-D8BD-4633-B64D-6424BDD23D24)
     ImageBase.....: 3CBA5000 - 3CBA8480
     ImageSize.....: 3480
     CodeType......: RT_code   
     DataType......: RT_data   
Handle B6 (26C52A10)
   3AEAEC5F-945A-4BA5-AB98-BC230497B98D (00000000)
Handle B7 (26C52810)
   Image (26C52990)   File:CryptoServiceRuntimeDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4AC99A7C-1DCF-4A51-8F06-5EEDFE8A8864)
     ImageBase.....: 3CB86000 - 3CBA4100
     ImageSize.....: 1E100
     CodeType......: RT_code   
     DataType......: RT_data   
Handle B8 (26C52510)
   Image (26C52690)   File:HeciDrv
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(55E76644-78A5-4A82-A900-7126A5798892)
     ImageBase.....: 3CB81000 - 3CB841A0
     ImageSize.....: 31A0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle B9 (26C52290)
   Image (26C52410)   File:FirmwarePerformanceSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(044310AB-77FD-402A-AF1A-87D4120E7329)
     ImageBase.....: 3CB7F000 - 3CB80000
     ImageSize.....: 1000
     CodeType......: RT_code   
     DataType......: RT_data   
Handle BA (26C52010)
   Image (26C52190)   File:SmmBaseHelper
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(8C87E0A0-B390-4BE3-819C-7C6C83CAE4EB)
     ImageBase.....: 3CB7D000 - 3CB7E320
     ImageSize.....: 1320
     CodeType......: RT_code   
     DataType......: RT_data   
Handle BB (26C41E10)
   910DCA07-1F94-4EE7-AF2F-FF72F3154353 (26C41F90)
Handle BC (26C41B90)
   Image (26C41D10)   File:SmmUsbDispatch2OnSmmUsbDispatchThunk
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(EE1BB93E-54C5-4B17-9496-A20085950561)
     ImageBase.....: 3CB7B000 - 3CB7B500
     ImageSize.....: 500
     CodeType......: RT_code   
     DataType......: RT_data   
Handle BD (26C41910)
   Image (26C41A90)   File:SmramSaveInfoHandlerSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(63296C52-01CF-4EEA-A47C-782A14DA6894)
     ImageBase.....: 3CB7A000 - 3CB7A500
     ImageSize.....: 500
     CodeType......: RT_code   
     DataType......: RT_data   
Handle BE (26C41690)
   Image (26C41810)   File:SmmSwDispatch2OnSmmSwDispatchThunk
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(1410C6AC-9F4B-495B-9C23-8A5AEB0165E9)
     ImageBase.....: 3CB79000 - 3CB796A0
     ImageSize.....: 6A0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle BF (26C41410)
   Image (26C41590)   File:FrameworkSmmStatusCodeOnPiSmmStatusCodeThunk
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(88B49226-A63F-4505-9D3C-B5A67B846133)
     ImageBase.....: 3CB78000 - 3CB783A0
     ImageSize.....: 3A0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle C0 (26C41310)
   6AFD2B77-98C1-4ACD-A6F9-8A9439DE0FB1 (3CBF1278)
Handle C1 (26C41110)
   Image (26C41290)   File:FaultTolerantWriteLiteDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4C862FC6-0E54-4E36-8C8F-FF6F3167951F)
     ImageBase.....: 3CB74000 - 3CB771E0
     ImageSize.....: 31E0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle C2 (26C40F90)
   83A108CA-4641-451A-921D-9A422FE46B1B (3CC22F1C)
Handle C3 (26C40D10)
   Image (26C40E90)   File:PiSmmCommunicationSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(E21F35A8-42FF-4050-82D6-93F7CDFA7073)
     ImageBase.....: 3CB73000 - 3CB738E0
     ImageSize.....: 8E0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle C4 (26C40A10)
   Image (26C40B90)   File:IhisiServicesSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(87C2106E-8790-459D-BD44-2EF32A68C3F9)
     ImageBase.....: 3CB68000 - 3CB72020
     ImageSize.....: A020
     CodeType......: RT_code   
     DataType......: RT_data   
Handle C5 (26C40790)
   Image (26C40990)   File:MmcMediaDeviceSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(0518ABFB-9EF9-4865-8491-4161C55E76CA)
     ImageBase.....: 3CB66000 - 3CB66680
     ImageSize.....: 680
     CodeType......: RT_code   
     DataType......: RT_data   
Handle C6 (26C40590)
   Image (26C40710)   File:PnpSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CC1BAA36-11EB-45CC-9ADC-7565E273AC70)
     ImageBase.....: 3CB61000 - 3CB650E0
     ImageSize.....: 40E0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle C7 (26C40390)
   Image (26C40490)   File:VariableRuntimeDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CBD2E4D5-7068-4FF5-B462-9822B4AD8D60)
     ImageBase.....: 3CB55000 - 3CB607E0
     ImageSize.....: B7E0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle C8 (26C40190)
   ED32D533-99E6-4209-9CC0-2D72CDD998A7 (3CB67108)
Handle C9 (26C3FF10)
   Image (26C40090)   File:IhisiSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(7B7B65B6-E350-4139-8FE4-665772D32A47)
     ImageBase.....: 3CB33000 - 3CB350E0
     ImageSize.....: 20E0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle CA (26C3FC90)
   Image (26C3FE90)   File:VariableEditSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(84945A3D-49C8-4059-8F34-6A4532D32A47)
     ImageBase.....: 3CB31000 - 3CB32440
     ImageSize.....: 1440
     CodeType......: RT_code   
     DataType......: RT_data   
Handle CB (26C3FA90)
   2970687C-618C-4DE5-B8F9-6C7576DCA83D (26C3FC10)
Handle CC (26C3F890)
   Image (26C9D1A8)   File:SmmBaseOnSmmBase2Thunk
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(21CCF0B7-246B-412C-A334-0B65A07B28DF)
     ImageBase.....: 3B6D2000 - 3B6D2A40
     ImageSize.....: A40
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26C3F710) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(21CCF0B7-246B-412C-A334-0B65A07B28DF)'
   1390954D-DA95-4227-9328-7282C217DAA8 (3B6D2304)
Handle CD (26C3F390)
   Image (26C9D028)   File:BootScriptExecutorDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(FA20568B-548B-4B2B-81EF-1BA08D4A3CEC)
     ImageBase.....: 27EAE000 - 27EB0EE0
     ImageSize.....: 2EE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C3F210) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(FA20568B-548B-4B2B-81EF-1BA08D4A3CEC)'
Handle CE (26C33F90)
   FA20568B-548B-4B2B-81EF-1BA08D4A3CEC (00000000)
Handle CF (26C33E10)
   Image (26C32DA8)   File:SmartTimer
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(90CB75DB-71FC-489D-AACF-943477EC7212)
     ImageBase.....: 27EAD000 - 27EAD680
     ImageSize.....: 680
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C33C90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(90CB75DB-71FC-489D-AACF-943477EC7212)'
Handle D0 (26C33A90)
   26BACCB3-6F42-11D4-BCE7-0080C73C8881 (27EAD230)
Handle D1 (26C33910)
   Image (26C32C28)   File:PpmPolicy
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2EE72E7C-FB9E-4318-B888-33A315C7A91D)
     ImageBase.....: 27EAC000 - 27EAC960
     ImageSize.....: 960
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C33790) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(2EE72E7C-FB9E-4318-B888-33A315C7A91D)'
Handle D2 (26C33510)
   DDABFEAC-EF63-452C-8F39-ED7FAED8265E (27EAC860)
Handle D3 (26C33490)
   Image (26C32AA8)   File:HeciDrv
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(55E76644-78A5-4A82-A900-7126A5798892)
     ImageBase.....: 27EA8000 - 27EAB1A0
     ImageSize.....: 31A0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C33290) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(55E76644-78A5-4A82-A900-7126A5798892)'
Handle D4 (26C33010)
   11FBFDFB-10D2-43E6-B5B1-B4386EDCCB9A (26C33158)
   CFB33810-6E87-4284-B203-A66ABE07F6E8 (26C33128)
Handle D5 (26C30F10)
   704EBEA2-5EE6-4898-9659-018B74B44789 (27FB9254)
Handle D6 (26C30C10)
   Image (26C32928)   File:WatchdogTimer
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(F099D67F-71AE-4C36-B2A3-DCEB0EB2B7D8)
     ImageBase.....: 27EA7000 - 27EA7400
     ImageSize.....: 400
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C30A90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(F099D67F-71AE-4C36-B2A3-DCEB0EB2B7D8)'
Handle D7 (26C30890)
   665E3FF5-46CC-11D4-9A38-0090273FC14D (27EA7210)
Handle D8 (26C30690)
   Image (26C327A8)   File:SetupUtility
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(FE3542FE-C1D3-4EF8-657C-8048606FF670)
     ImageBase.....: 27E76000 - 27EA6BA0
     ImageSize.....: 30BA0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C30510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(FE3542FE-C1D3-4EF8-657C-8048606FF670)'
Handle D9 (26C30210)
   FE3542FE-C1D3-4EF8-657C-8048606FF670 (26C30398)
Handle DA (26C30090)
   Image (26C32628)   File:AcpiPlatform
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(F0F6F006-DAB4-44B2-A7A1-0F72EEDCA716)
     ImageBase.....: 27E6F000 - 27E75F60
     ImageSize.....: 6F60
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C2FF90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(F0F6F006-DAB4-44B2-A7A1-0F72EEDCA716)'
Handle DB (26C2FB90)
   074E1E48-8132-47A1-8C2C-3F14AD9A66DC (27E75958)
Handle DC (26C2A690)
   80EFBB27-5462-4338-B6DF-D42214E90FD8 (00000000)
Handle DD (26C2A510)
   Image (26C32028)   File:SmbiosMiscDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(EF0C99B6-B1D3-4025-9405-BF6A560FE0E0)
     ImageBase.....: 27E66000 - 27E6E980
     ImageSize.....: 8980
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C2A390) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(EF0C99B6-B1D3-4025-9405-BF6A560FE0E0)'
Handle DE (26C1BC10)
   Image (26BFFDA8)   File:UsbCoreDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(31FD7EAF-80A7-435E-8E0A-3F185F8667DD)
     ImageBase.....: 27E60000 - 27E65840
     ImageSize.....: 5840
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26C1BA90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(31FD7EAF-80A7-435E-8E0A-3F185F8667DD)'
Handle DF (26C1B490)
   C965C76A-D71E-4E66-AB06-C6230D528425 (24A71004)
Handle E0 (26C1B210)
   Image (26C1B410)   File:FtpmSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(8029A5B5-4088-48D2-96E0-F7052BC0A842)
     ImageBase.....: 3CB2A000 - 3CB2AEC0
     ImageSize.....: EC0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E1 (26BFEC90)
   Image (26BFEE10)   File:PlatformSmm
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(99C20A37-042A-46E2-80F4-E4027FDBC86F)
     ImageBase.....: 3CB25000 - 3CB293E0
     ImageSize.....: 43E0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E2 (26BFEA10)
   Image (26BFEB90)   File:PowerManagement2
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(41E89AB0-BD3D-44B6-A431-E4836EFBF2CB)
     ImageBase.....: 3CB21000 - 3CB24B80
     ImageSize.....: 3B80
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E3 (26BFD890)
   Image (26BFDA10)   File:EhciDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BDFE430E-8F2A-4DB0-9991-6F856594777E)
     ImageBase.....: 3CB1C000 - 3CB20DE0
     ImageSize.....: 4DE0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E4 (26BFD590)
   Image (26BFD710)   File:XhciDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(356C2B12-3124-4451-BF66-B502D88A0074)
     ImageBase.....: 3CB15000 - 3CB1B560
     ImageSize.....: 6560
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E5 (26BFD310)
   Image (26BFD490)   File:UsbCoreDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(31FD7EAF-80A7-435E-8E0A-3F185F8667DD)
     ImageBase.....: 3CB0F000 - 3CB14840
     ImageSize.....: 5840
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E6 (26BFD010)
   Image (26BFD190)   File:UsbKbDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2D2E62CF-9ECF-43B7-8219-94E7FC713DFE)
     ImageBase.....: 3CAEB000 - 3CAEE740
     ImageSize.....: 3740
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E7 (26BF1D10)
   Image (26BF1E90)   File:UsbMouseDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2D2E62AA-9ECF-43B7-8219-94E7FC713DFE)
     ImageBase.....: 3CAE7000 - 3CAE9940
     ImageSize.....: 2940
     CodeType......: RT_code   
     DataType......: RT_data   
Handle E8 (26BF1B10)
   Image (26BFF628)   File:ConPlatformDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(51CCF399-4FDF-4E55-A45B-E123F84D456A)
     ImageBase.....: 27E5E000 - 27E5F180
     ImageSize.....: 1180
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BF1990) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(51CCF399-4FDF-4E55-A45B-E123F84D456A)'
   DriverBinding (27E5E2E0) 
   ComponentName (27E5E310) 
   ComponentName2 (27E5E31C) 
Handle E9 (26BF1610)
   DriverBinding (27E5E2F8) 
   ComponentName (27E5E310) 
   ComponentName2 (27E5E31C) 
Handle EA (26BF1490)
   Image (26BFF4A8)   File:DiskIoDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(6B38F7B4-AD98-40E9-9093-ACA2B5A253C4)
     ImageBase.....: 27E5C000 - 27E5D560
     ImageSize.....: 1560
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BF1190) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(6B38F7B4-AD98-40E9-9093-ACA2B5A253C4)'
   DriverBinding (27E5C270) 
   ComponentName (27E5C2D8) 
   ComponentName2 (27E5C2E4) 
Handle EB (26BF0E10)
   Image (26BFF328)   File:IsaBusDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(240612B5-A063-11D4-9A3A-0090273FC14D)
     ImageBase.....: 27E5A000 - 27E5B5A0
     ImageSize.....: 15A0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BF0C90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(240612B5-A063-11D4-9A3A-0090273FC14D)'
   DriverBinding (27E5A31C) 
   ComponentName (27E5A334) 
   ComponentName2 (27E5A340) 
Handle EC (26BF0890)
   Image (26BFF1A8)   File:VgaClassDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BF89F10D-B205-474F-96E3-7A7BB1B4A407)
     ImageBase.....: 27E58000 - 27E59060
     ImageSize.....: 1060
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BF0710) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(BF89F10D-B205-474F-96E3-7A7BB1B4A407)'
   DriverBinding (27E582C0) 
   ComponentName (27E583AC) 
   ComponentName2 (27E583B8) 
Handle ED (26BF0290)
   Image (26BEFEA8)   File:TrEEConfigDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(8376BDCA-5E03-4735-951A-4A74141E5886)
     ImageBase.....: 27E57000 - 27E57E40
     ImageSize.....: E40
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BF0110) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(8376BDCA-5E03-4735-951A-4A74141E5886)'
Handle EE (26BEEE10)
   Image (26BFF028)   File:BootOptionPolicyDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2D6BB83D-84A2-404A-B4CA-3E7AC0EFB3D2)
     ImageBase.....: 27E54000 - 27E563A0
     ImageSize.....: 23A0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BEEC90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(2D6BB83D-84A2-404A-B4CA-3E7AC0EFB3D2)'
Handle EF (26BEE990)
   0E664C9F-8D6A-4763-8FED-CB61C376232D (26BEEB34)
Handle F0 (26BEE910)
   Image (26BEDDA8)   File:BootGraphicsResourceTableDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B8E62775-BB0A-43F0-A843-5BE8B14F8CCD)
     ImageBase.....: 27E51000 - 27E535E0
     ImageSize.....: 25E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BEE710) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(B8E62775-BB0A-43F0-A843-5BE8B14F8CCD)'
Handle F1 (26BEE490)
   CDEA2BD3-FC25-4C1C-B97C-B31186064990 (27E51494)
Handle F2 (26BEE310)
   Image (26BEDC28)   File:PciBusDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(93B80004-9FB3-11D4-9A3A-0090273FC14D)
     ImageBase.....: 27E46000 - 27E50A00
     ImageSize.....: AA00
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BEE110) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(93B80004-9FB3-11D4-9A3A-0090273FC14D)'
   DriverBinding (27E464C8) 
   ComponentName (27E464FC) 
   ComponentName2 (27E46508) 
Handle F3 (26BB8D10)
   19CB87AB-2CB9-4665-8360-DDCF6054F79D (27E464F8)
Handle F4 (26BB8C90)
   Image (26BEDAA8)   File:IsaSerialDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(93B80003-9FB3-11D4-9A3A-0090273FC14D)
     ImageBase.....: 27E43000 - 27E45660
     ImageSize.....: 2660
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BB8A10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(93B80003-9FB3-11D4-9A3A-0090273FC14D)'
   DriverBinding (27E432A0) 
   ComponentName (27E43368) 
   ComponentName2 (27E43374) 
Handle F5 (26BB8690)
   Image (26BED928)   File:UsbMassStorageDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(9FB4B4A7-42C0-4BCD-8540-9BCC6711F83E)
     ImageBase.....: 27E40000 - 27E42CE0
     ImageSize.....: 2CE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BB8510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(9FB4B4A7-42C0-4BCD-8540-9BCC6711F83E)'
   DriverBinding (27E405B8) 
   ComponentName (27E405D8) 
   ComponentName2 (27E405E4) 
Handle F6 (26BB8110)
   Image (26BED7A8)   File:ConSplitterDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(408EDCEC-CF6D-477C-A5A8-B4844E3DE281)
     ImageBase.....: 27E3A000 - 27E3F980
     ImageSize.....: 5980
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BB7F90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(408EDCEC-CF6D-477C-A5A8-B4844E3DE281)'
   DriverBinding (27E3A730) 
   ComponentName (27E3AA20) 
   ComponentName2 (27E3AA2C) 
Handle F7 (26BB7B90)
   DriverBinding (27E3A778) 
   ComponentName (27E3AA38) 
   ComponentName2 (27E3AA44) 
Handle F8 (26BB7990)
   DriverBinding (27E3A790) 
   ComponentName (27E3AA50) 
   ComponentName2 (27E3AA5C) 
Handle F9 (26BB7790)
   DriverBinding (27E3A748) 
   ComponentName (27E3AA68) 
   ComponentName2 (27E3AA74) 
Handle FA (26BB7590)
   DriverBinding (27E3A760) 
   ComponentName (27E3AA80) 
   ComponentName2 (27E3AA8C) 
Handle FB (26BB7390)
   TxtinEx (27E3A7D4) 
   Txtin (3B62983C) 
   SimplePointer (27E3A804) 
   AbsolutePointer (27E3A844) 
Handle FC (26BB5310)
   Txtout (3B6298AC) Attrib 7
         mode 0: col  80 row  25
         mode 1: error Unsupported

         mode 2: col  80 row  25
      *  mode 3: col 128 row  31
         mode 4: col 100 row  31
   GraphicsOutput (27E3A928) 
       HorizontalReslution   1024
       VerticalReslution     600
       PixelFormat           PixelBlueGreenRedReserved8BitPerColor
       PixelsPerScanLine     1024
       FrameBufferBase       0x40000000
       FrameBufferSize       0x258000
   UgaDraw (27E3A90C) 
Handle FD (26B9DE90)
   Txtout (27E3A97C) Attrib 7
         mode 0: col  80 row  25
         mode 1: col  80 row  50
      *  mode 2: col 100 row  67
Handle FE (26B9DE10)
   Image (26BED328)   File:GraphicsConsoleDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CCCB0C28-4B24-11D5-9A5A-0090273FC14D)
     ImageBase.....: 27E36000 - 27E39940
     ImageSize.....: 3940
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B9D990) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(CCCB0C28-4B24-11D5-9A5A-0090273FC14D)'
   DriverBinding (27E369A8) 
   ComponentName (27E369C8) 
   ComponentName2 (27E369D4) 
Handle FF (26B9D390)
   Image (26BED1A8)   File:PartitionDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(1FA1F39E-FEFF-4AAE-BD7B-38A070A3B609)
     ImageBase.....: 27E33000 - 27E35540
     ImageSize.....: 2540
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B9D210) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(1FA1F39E-FEFF-4AAE-BD7B-38A070A3B609)'
   DriverBinding (27E33290) 
   ComponentName (27E332B8) 
   ComponentName2 (27E332C4) 
Handle 100 (26B9CD10)
   Image (26BED028)   File:OemBadgingSupportDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(12AEDBEA-392D-4E2A-8789-5F6DC6B23661)
     ImageBase.....: 27E30000 - 27E32C80
     ImageSize.....: 2C80
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B9CB90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(12AEDBEA-392D-4E2A-8789-5F6DC6B23661)'
Handle 101 (26B9C810)
   4B11FF5B-590C-4BFE-96A5-04BC5CCA5C11 (26B9C998)
Handle 102 (26B8EF10)
   Image (26B9BC28)   File:I2cMmioDeviceDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(591F64F9-1CB8-4029-8868-F5A2C0CF3600)
     ImageBase.....: 27E2F000 - 27E2FFE0
     ImageSize.....: FE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8ED90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(591F64F9-1CB8-4029-8868-F5A2C0CF3600)'
Handle 103 (26B8EA90)
   Image (26B9BAA8)   File:PchPolicyInitDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(D6AC4AC2-8BC2-4CDD-8776-280E1469DE02)
     ImageBase.....: 27E2E000 - 27E2EEE0
     ImageSize.....: EE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8E910) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(D6AC4AC2-8BC2-4CDD-8776-280E1469DE02)'
Handle 104 (26B8E690)
   D31F0400-7D16-4316-BF88-6065883B402B (3B94BD90)
   4B0165A9-61D6-4E23-A0B5-3EC79C2E30D5 (27E2E9A0)
Handle 105 (26B8E510)
   1A819E49-D8EE-48CB-9A9C-0AA0D2810A38 (27E2E9CE)
Handle 106 (26B8E390)
   Image (26B9B928)   File:UsbDeviceModeDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(972456A7-96A2-406E-ABCC-ED264A3A31D6)
     ImageBase.....: 27E27000 - 27E2D7E0
     ImageSize.....: 67E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8E210) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(972456A7-96A2-406E-ABCC-ED264A3A31D6)'
Handle 107 (26B8DF90)
   C9923F7E-1746-4802-862E-011C2C2D9D86 (27E27E08)
Handle 108 (26B8DE10)
   Image (26B9B7A8)   File:PlatformPmic
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(056E7824-A718-465B-9A84-228F06642B4F)
     ImageBase.....: 27E23000 - 27E26C20
     ImageSize.....: 3C20
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8DC90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(056E7824-A718-465B-9A84-228F06642B4F)'
Handle 109 (26B8D510)
   6F20F7C8-E5EF-4F21-8D19-EDC5F0C496AE (26B8D690)
Handle 10A (26B8DA10)
   Image (26B9B628)   File:AcpiMemDbg
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(E57ACE29-03AF-4F08-9C3F-D1D803B4F7ED)
     ImageBase.....: 27E22000 - 27E22420
     ImageSize.....: 420
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8D810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(E57ACE29-03AF-4F08-9C3F-D1D803B4F7ED)'
Handle 10B (26B8D310)
   Image (26B9B4A8)   File:ISPDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(5A38B969-CD6A-4814-82E6-559F840BBC58)
     ImageBase.....: 27E21000 - 27E21F40
     ImageSize.....: F40
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8D190) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(5A38B969-CD6A-4814-82E6-559F840BBC58)'
Handle 10C (26B8BF90)
   Image (26B9B328)   File:MmcHost
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(334D5254-6160-4E4A-A78C-E15D3B3B3334)
     ImageBase.....: 27E1F000 - 27E207C0
     ImageSize.....: 17C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8BE10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(334D5254-6160-4E4A-A78C-E15D3B3B3334)'
   DriverBinding (27E1F27C) 
   ComponentName (27E1F260) 
Handle 10D (26B8BB10)
   Image (26B9B1A8)   File:MmcMediaDevice
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(DD223EF8-6D1B-490A-A53E-BA86FAAEB778)
     ImageBase.....: 27E1B000 - 27E1E200
     ImageSize.....: 3200
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8B990) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(DD223EF8-6D1B-490A-A53E-BA86FAAEB778)'
   DriverBinding (27E1B2FC) 
   ComponentName (27E1B2E0) 
Handle 10E (26B8B610)
   Image (26B9B028)   File:FvFile(961578FE-B6B7-44C3-AF35-6BC705CD2B1F)
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(961578FE-B6B7-44C3-AF35-6BC705CD2B1F)
     ImageBase.....: 27E16000 - 27E1A780
     ImageSize.....: 4780
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B8B490) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(961578FE-B6B7-44C3-AF35-6BC705CD2B1F)'
   DriverBinding (27E16364) 
   ComponentName (27E1637C) 
   ComponentName2 (27E16388) 
Handle 10F (26B8B090)
   Image (26B89DA8)   File:EhciDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BDFE430E-8F2A-4DB0-9991-6F856594777E)
     ImageBase.....: 27E11000 - 27E15DE0
     ImageSize.....: 4DE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B88F10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(BDFE430E-8F2A-4DB0-9991-6F856594777E)'
   DriverBinding (27E11350) 
   ComponentName (27E11384) 
   ComponentName2 (27E11390) 
Handle 110 (26B88A90)
   Image (26B89C28)   File:XhciDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(356C2B12-3124-4451-BF66-B502D88A0074)
     ImageBase.....: 27E0A000 - 27E10560
     ImageSize.....: 6560
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B88910) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(356C2B12-3124-4451-BF66-B502D88A0074)'
   DriverBinding (27E0A350) 
   ComponentName (27E0A378) 
   ComponentName2 (27E0A384) 
Handle 111 (26B88410)
   Image (26B89AA8)   File:UsbBusDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(240612B7-A063-11D4-9A3A-0090273FC14D)
     ImageBase.....: 27E05000 - 27E09300
     ImageSize.....: 4300
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B88290) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(240612B7-A063-11D4-9A3A-0090273FC14D)'
   DriverBinding (27E05418) 
   ComponentName (27E05430) 
   ComponentName2 (27E0543C) 
Handle 112 (26B87F90)
   347B6711-E458-43C8-9636-F173F698B329 (24A72740)
Handle 113 (26B87C10)
   Image (26B89928)   File:UsbBotDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B40612B9-A063-11D4-9A3A-0090273FC14D)
     ImageBase.....: 27E04000 - 27E04F20
     ImageSize.....: F20
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B87A90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(B40612B9-A063-11D4-9A3A-0090273FC14D)'
Handle 114 (26B87810)
   8AAFB853-FB0E-4A4D-B1B2-81BA842ED9FC (24A72800)
Handle 115 (26B87690)
   Image (26B897A8)   File:UsbCbiDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A3527D16-E6CC-42F5-BADB-BF3DE177742B)
     ImageBase.....: 27E03000 - 27E03E60
     ImageSize.....: E60
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B87510) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(A3527D16-E6CC-42F5-BADB-BF3DE177742B)'
Handle 116 (26B87310)
   8AAFB853-FB0E-4A4D-B1B2-81BA842ED9FC (24A72820)
Handle 117 (26B87210)
   8AAFB853-FB0E-4A4D-B1B2-81BA842ED9FC (24A72834)
Handle 118 (26B87110)
   Image (26B89628)   File:UsbKbDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2D2E62CF-9ECF-43B7-8219-94E7FC713DFE)
     ImageBase.....: 27DFF000 - 27E02740
     ImageSize.....: 3740
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B87010) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(2D2E62CF-9ECF-43B7-8219-94E7FC713DFE)'
   DriverBinding (27DFF6E0) 
   ComponentName (27DFF738) 
   ComponentName2 (27DFF744) 
Handle 119 (26B86C10)
   Image (26B894A8)   File:UsbMouseDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(2D2E62AA-9ECF-43B7-8219-94E7FC713DFE)
     ImageBase.....: 27DFC000 - 27DFE940
     ImageSize.....: 2940
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B86A90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(2D2E62AA-9ECF-43B7-8219-94E7FC713DFE)'
   DriverBinding (27DFC3E8) 
   ComponentName (27DFC408) 
   ComponentName2 (27DFC414) 
Handle 11A (26B86510)
   Image (26B86690)   File:PchBiosWriteProtect
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B8B8B609-0B6C-4B8C-A731-DE03A6C3F3DC)
     ImageBase.....: 3CAE6000 - 3CAE64E0
     ImageSize.....: 4E0
     CodeType......: RT_code   
     DataType......: RT_data   
Handle 11B (26B86310)
   Image (26B86490)   File:UsbBusDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(240612B7-A063-11D4-9A3A-0090273FC14D)
     ImageBase.....: 3CAE1000 - 3CAE5300
     ImageSize.....: 4300
     CodeType......: RT_code   
     DataType......: RT_data   
Handle 11C (26B86090)
   Image (26B86210)   File:UsbBotDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(B40612B9-A063-11D4-9A3A-0090273FC14D)
     ImageBase.....: 3CAE0000 - 3CAE0F20
     ImageSize.....: F20
     CodeType......: RT_code   
     DataType......: RT_data   
Handle 11D (26B84D90)
   Image (26B84F10)   File:UsbCbiDxe
     ParentHandle..: 26C9C110
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(A3527D16-E6CC-42F5-BADB-BF3DE177742B)
     ImageBase.....: 3CADF000 - 3CADFE60
     ImageSize.....: E60
     CodeType......: RT_code   
     DataType......: RT_data   
Handle 11E (26B84A10)
   Image (26B89328)   File:SetupMouseDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(06B5947E-FF53-457D-98BC-C5ABC777FD5A)
     ImageBase.....: 27DE0000 - 27DFB820
     ImageSize.....: 1B820
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B84890) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(06B5947E-FF53-457D-98BC-C5ABC777FD5A)'
Handle 11F (26B84290)
   EC002EDF-15E9-499E-ADB1-3D7BB12947F5 (26B85B18)
Handle 120 (26B84110)
   Image (26B891A8)   File:PchInitDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(DE23ACEE-CF55-4FB6-AA77-984AB53DE823)
     ImageBase.....: 27DD4000 - 27DDFEC0
     ImageSize.....: BEC0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B84010) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(DE23ACEE-CF55-4FB6-AA77-984AB53DE823)'
Handle 121 (26B83A90)
   Image (26B89028)   File:DxePlatform
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(056E7324-A718-465B-9A84-228F06642B4F)
     ImageBase.....: 27DCC000 - 27DD3860
     ImageSize.....: 7860
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B83990) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(056E7324-A718-465B-9A84-228F06642B4F)'
Handle 122 (26B83690)
   E227C522-D5FE-4A53-87B1-0FBE570F98E9 (27DCD148)
Handle 123 (26B83590)
   13F40F6E-50C1-4B73-B1E2-6E72D21CB04A (27DD30F0)
Handle 124 (26B83410)
   5BAB88BA-E0E2-4674-B6AD-B812F6881CD6 (27DD30A0)
Handle 125 (26B83290)
   4DF19259-DC71-4D46-BEF1-357BB578C418 (27DCD25C)
Handle 126 (26B83110)
   F617B358-12CF-414A-A069-60677BDA13B4 (27DD2FF4)
Handle 127 (26B81F90)
   3C485EA4-449A-46CE-BB08-2A336EA96B4E (27DD3008)
Handle 128 (26B81E10)
   A6A79162-E325-4C30-BCC3-59373064EFB3 (27DCD288)
Handle 129 (26B81B90)
   Image (26B80DA8)   File:LpssDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(3E3099F5-CBCC-4AE8-AEA0-2B7D1E7F8294)
     ImageBase.....: 27DCB000 - 27DCBA60
     ImageSize.....: A60
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B81A90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(3E3099F5-CBCC-4AE8-AEA0-2B7D1E7F8294)'
Handle 12A (26B81710)
   Image (26B80C28)   File:SmbiosMemory
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(EDA39402-F375-4496-92D3-83B43CB8A76A)
     ImageBase.....: 27DC9000 - 27DCA080
     ImageSize.....: 1080
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B81610) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(EDA39402-F375-4496-92D3-83B43CB8A76A)'
Handle 12B (26B7E890)
   Image (26B80928)   File:Dptf
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(1D000AE9-756B-4937-B736-1F3D96A5A8F0)
     ImageBase.....: 27DC7000 - 27DC8600
     ImageSize.....: 1600
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B7E790) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(1D000AE9-756B-4937-B736-1F3D96A5A8F0)'
Handle 12C (26B7E490)
   Image (26B80AA8)   File:VlvInitDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(93C81A74-B648-4F7F-925E-E4A0CDCC776D)
     ImageBase.....: 27DC3000 - 27DC6FE0
     ImageSize.....: 3FE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B7E390) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(93C81A74-B648-4F7F-925E-E4A0CDCC776D)'
Handle 12D (26B7E090)
   0FC9013A-0568-4BA9-9B7E-C9C390A6609B (27DC6CC8)
Handle 12E (26B70D90)
   CDC5DDDF-E79D-41EC-A9B0-6565490DB9D3 (27DC6CA8)
Handle 12F (26B70B90)
   Image (26B807A8)   File:LegacyRegion2OnLegacyRegionThunk
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(5167FD5D-AAA2-4FE1-9D0D-5CFCAB36C14C)
     ImageBase.....: 27DC2000 - 27DC23C0
     ImageSize.....: 3C0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26B70A90) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(5167FD5D-AAA2-4FE1-9D0D-5CFCAB36C14C)'
Handle 130 (26B70790)
   70101EAF-0085-440C-B356-8EE36FEF24F0 (27DC2220)
Handle 131 (26B70610)
   Dpath (27EE2E20) 
      Hardware Device Path for Vendor-Defined
       Guid 3EBFA8E6-511D-4B5B-A95F-FB38260F1C27
      AsStr: 'VenHw(3EBFA8E6-511D-4B5B-A95F-FB38260F1C27)'
   HiiConfAccess (27EE2D70) 
Handle 132 (26B70390)
   Dpath (27EE2E38) 
      Hardware Device Path for Vendor-Defined
       Guid F76E0A70-B5ED-4C38-AC9A-E5F54BF16E34
      AsStr: 'VenHw(F76E0A70-B5ED-4C38-AC9A-E5F54BF16E34)'
   HiiConfAccess (27EE2D7C) 
Handle 133 (26B70190)
   Dpath (27EE482C) 
      Hardware Device Path for Vendor-Defined
       Guid 847BC3FE-B974-446D-9449-5AD5412E993B
      AsStr: 'VenHw(847BC3FE-B974-446D-9449-5AD5412E993B)'
   HiiConfAccess (27EE4850) 
Handle 134 (26B6E510)
   Dpath (27EE2E90) 
      Hardware Device Path for Vendor-Defined
       Guid AA1305B9-01F3-4AFB-920E-C9B979A852FD
      AsStr: 'VenHw(AA1305B9-01F3-4AFB-920E-C9B979A852FD)'
   HiiConfAccess (27EE2E6C) 
Handle 135 (26B6C290)
   Dpath (27EE3848) 
      Hardware Device Path for Vendor-Defined
       Guid 9E0C30BC-3F06-4BA6-8288-09179B855DBE
      AsStr: 'VenHw(9E0C30BC-3F06-4BA6-8288-09179B855DBE)'
   HiiConfAccess (27EE383C) 
Handle 136 (26B11810)
   Dpath (26B13C90) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x1,INTC33B1)'
   21F7ECF6-95AC-4810-BED5-0251ADAE3111 (26A9F710)
   70B221AF-FDFF-4FDE-9968-1AF623A956D9 (26AA2534)
   578C315A-68CF-4E81-B5C6-22DB40D010BC (26AA3E14)
   75032015-D156-423E-BFA3-7A65ABA47105 (27E2F3B8)
   F30C2915-5782-4E6A-A846-05BABCE7B6A0 (27E2F3B4)
   24486226-F8C2-41F5-B9DD-783E9E56DEA0 (27E2F8F0)
Handle 137 (26B11410)
   Dpath (26B11510) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 2,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x2,INTC33B1)'
   21F7ECF6-95AC-4810-BED5-0251ADAE3111 (26965290)
   70B221AF-FDFF-4FDE-9968-1AF623A956D9 (26AA21B4)
   578C315A-68CF-4E81-B5C6-22DB40D010BC (26AA3A94)
   75032015-D156-423E-BFA3-7A65ABA47105 (27E2F544)
   F30C2915-5782-4E6A-A846-05BABCE7B6A0 (27E2F540)
   24486226-F8C2-41F5-B9DD-783E9E56DEA0 (27E2F908)
Handle 138 (26B11090)
   Dpath (26B11190) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 3,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x3,INTC33B1)'
   21F7ECF6-95AC-4810-BED5-0251ADAE3111 (26964A10)
   70B221AF-FDFF-4FDE-9968-1AF623A956D9 (26A9FEB4)
   578C315A-68CF-4E81-B5C6-22DB40D010BC (26AA3794)
   75032015-D156-423E-BFA3-7A65ABA47105 (27E2F4CC)
   F30C2915-5782-4E6A-A846-05BABCE7B6A0 (27E2F4C8)
   24486226-F8C2-41F5-B9DD-783E9E56DEA0 (27E2F920)
Handle 139 (26B10D10)
   Dpath (26B10E10) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 4,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x4,INTC33B1)'
   21F7ECF6-95AC-4810-BED5-0251ADAE3111 (26964190)
   70B221AF-FDFF-4FDE-9968-1AF623A956D9 (26A9FBB4)
   578C315A-68CF-4E81-B5C6-22DB40D010BC (26AA3494)
   75032015-D156-423E-BFA3-7A65ABA47105 (27E2F314)
   F30C2915-5782-4E6A-A846-05BABCE7B6A0 (27E2F310)
   24486226-F8C2-41F5-B9DD-783E9E56DEA0 (27E2F938)
Handle 13A (26B10990)
   Dpath (26B10A90) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 5,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x5,INTC33B1)'
   21F7ECF6-95AC-4810-BED5-0251ADAE3111 (26963610)
   70B221AF-FDFF-4FDE-9968-1AF623A956D9 (26A9F8B4)
   578C315A-68CF-4E81-B5C6-22DB40D010BC (26AA3194)
   75032015-D156-423E-BFA3-7A65ABA47105 (27E2F454)
   F30C2915-5782-4E6A-A846-05BABCE7B6A0 (27E2F450)
   24486226-F8C2-41F5-B9DD-783E9E56DEA0 (27E2F950)
Handle 13B (26B10610)
   Dpath (26B1C110) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (0)
      AsStr: 'PciRoot(0x0)/Pci(0x0,0x0)'
   PciIo (26B24018) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 00
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: 8086
     Device ID.....: 0F00
     Class Code....: 00 00 06
     Configuration Header :
       8680000F070000000F00000600000000
       00000000000000000000000000000000
       00000000000000000000000027101420
       00000000000000000000000000000000

Handle 13C (26B10310)
   Dpath (26B1C190) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (2)
      AsStr: 'PciRoot(0x0)/Pci(0x2,0x0)'
   PciIo (26B24318) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 02
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: 8086
     Device ID.....: 0F31
     Class Code....: 00 00 03
     Configuration Header :
       8680310F070010000F00000300000000
       00000050000000000800004000000000
       01100000000000000000000027101420
       00000000D000000000000000FF010000

Handle 13D (26B10010)
   Dpath (26B1C210) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (11)
      AsStr: 'PciRoot(0x0)/Pci(0x11,0x0)'
   PciIo (26B24618) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 11
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 13E (26B0FD10)
   Dpath (26B1C290) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (12)
      AsStr: 'PciRoot(0x0)/Pci(0x12,0x0)'
   PciIo (26B24918) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 12
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

   B63F8EC7-A9C9-4472-A4C0-4D8BF365CC51 (26AA9C14)
Handle 13F (26B0FA10)
   Dpath (26B1C310) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (14)
      AsStr: 'PciRoot(0x0)/Pci(0x14,0x0)'
   PciIo (26B15C18) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 14
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: 8086
     Device ID.....: 0F35
     Class Code....: 30 03 0C
     Configuration Header :
       8680350F060090020F30030C00000000
       04008050000000000000000000000000
       00000000000000000000000086807072
       000000007000000000000000FF010000

   UsbHc2 (24A72A28) 
   2B2F68CC-0CD2-44CF-8E8B-BBA20B1B5B75 (24A846E8)
   152D34B7-B4B6-4B26-970F-1EC3D99D0A84 (24A72A60)
Handle 140 (26B0F710)
   Dpath (26B1C390) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (15)
      AsStr: 'PciRoot(0x0)/Pci(0x15,0x0)'
   PciIo (26B15918) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 15
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 141 (26B0F410)
   Dpath (26B1C410) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (17)
      AsStr: 'PciRoot(0x0)/Pci(0x17,0x0)'
   PciIo (26B15618) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 17
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: 8086
     Device ID.....: 0F50
     Class Code....: 01 05 08
     Configuration Header :
       8680500F060010000F01050810000000
       00B0825000A082500000000000000000
       00000000000000000000000086807072
       000000008000000000000000FF010000

   1EBE5AB9-2129-49E7-84D7-EEB9FCE5DEDD (26AA9290)
   2E7EF202-552A-4B1F-A0BD-B644216FA5C5 (3B73835C)
   B63F8EC7-A9C9-4472-A4C0-4D8BF365CC51 (26AA9514)
Handle 142 (26B0F110)
   Dpath (26B1C490) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (18)
      AsStr: 'PciRoot(0x0)/Pci(0x18,0x0)'
   PciIo (26B15318) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 18
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 143 (26B0EE10)
   Dpath (26B1C510) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (1) Device (18)
      AsStr: 'PciRoot(0x0)/Pci(0x18,0x1)'
   PciIo (26B15018) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 18
     Function #....: 01
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 144 (26B0EB10)
   Dpath (26B1C590) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (2) Device (18)
      AsStr: 'PciRoot(0x0)/Pci(0x18,0x2)'
   PciIo (26B14C18) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 18
     Function #....: 02
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 145 (26B0E810)
   Dpath (26B1C610) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (3) Device (18)
      AsStr: 'PciRoot(0x0)/Pci(0x18,0x3)'
   PciIo (26B14918) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 18
     Function #....: 03
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 146 (26B0E510)
   Dpath (26B1C690) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (4) Device (18)
      AsStr: 'PciRoot(0x0)/Pci(0x18,0x4)'
   PciIo (26B14618) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 18
     Function #....: 04
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 147 (26B0E210)
   Dpath (26B1C710) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (5) Device (18)
      AsStr: 'PciRoot(0x0)/Pci(0x18,0x5)'
   PciIo (26B14318) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 18
     Function #....: 05
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 148 (26B0DF10)
   Dpath (26B13F90) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (1A)
      AsStr: 'PciRoot(0x0)/Pci(0x1A,0x0)'
   PciIo (26B14018) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 1A
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: 8086
     Device ID.....: 0F18
     Class Code....: 00 80 10
     Configuration Header :
       8680180F060110000F00801010000000
       00007050000060500000000000000000
       00000000000000000000000086807072
       000000008000000000000000FF010000

Handle 149 (26B0DC10)
   Dpath (26B13F10) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (1E)
      AsStr: 'PciRoot(0x0)/Pci(0x1E,0x0)'
   PciIo (26B12C18) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 1E
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 14A (26B0D910)
   Dpath (26B13E90) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (1) Device (1E)
      AsStr: 'PciRoot(0x0)/Pci(0x1E,0x1)'
   PciIo (26B12918) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 1E
     Function #....: 01
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: 8086
     Device ID.....: 0F08
     Class Code....: 00 80 0C
     Configuration Header :
       8680080F060010000F00800C10008000
       0090915000A091500000000000000000
       00000000000000000000000086807072
       000000008000000000000000FF040000

Handle 14B (26B0D610)
   Dpath (26B13E10) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (3) Device (1E)
      AsStr: 'PciRoot(0x0)/Pci(0x1E,0x3)'
   PciIo (26B12618) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 1E
     Function #....: 03
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 14C (26B0D310)
   Dpath (26B13D90) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (4) Device (1E)
      AsStr: 'PciRoot(0x0)/Pci(0x1E,0x4)'
   PciIo (26B12318) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 1E
     Function #....: 04
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: FFFF
     Device ID.....: FFFF
     Class Code....: FF FF FF
     Configuration Header :
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
       FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Handle 14D (26B0D010)
   Dpath (26B13D10) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (1F)
      AsStr: 'PciRoot(0x0)/Pci(0x1F,0x0)'
   PciIo (26B12018) 
     Segment #.....: 00
     Bus #.........: 00
     Device #......: 1F
     Function #....: 00
     ROM Size......: 0
     ROM Location..: 00000000
     Vendor ID.....: 8086
     Device ID.....: 0F1C
     Class Code....: 00 01 06
     Configuration Header :
       86801C0F070110020F00010600008000
       00000000000000000000000000000000
       00000000000000000000000086807072
       00000000E00000000000000000000000

   IsaAcpi (26AA5218) 
Handle 14E (26B0C510)
   Dpath (26B0C710) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (2)
      ACPI Device Path for AcpiAdr
       Adr 80010450
      AsStr: 'PciRoot(0x0)/Pci(0x2,0x0)/AcpiAdr(0x80010450)'
   Txtout (26AC171C) Attrib 7
         mode 0: col  80 row  25
         mode 1: error Unsupported

         mode 2: col  80 row  25
      *  mode 3: col 128 row  31
         mode 4: col 100 row  31
   GraphicsOutput (26B25020) 
       HorizontalReslution   1024
       VerticalReslution     600
       PixelFormat           PixelBlueGreenRedReserved8BitPerColor
       PixelsPerScanLine     1024
       FrameBufferBase       0x40000000
       FrameBufferSize       0x258000
   EdidDiscovered (26B25030) 
   EdidActive (26B25038) 
   ConOut (0) 
   6FF23F1D-877C-4B1B-93FC-F142B2EEA6A7 (26B25044)
   39487C79-236D-4666-87E5-09547CAAE1BC (26B25010)
Handle 14F (26AC3A90)
   Dpath (26AC3B90) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (14)
      Messaging Device Path for USB
       USB (0, 0)
      AsStr: 'PciRoot(0x0)/Pci(0x14,0x0)/USB(0x0,0x0)'
   TxtinEx (24A85C70) 
   Txtin (24A85BE8) 
   ConIn (0) 
   UsbIo (24A84A44) 
     Interface Number #.....: 00
     Interface Class #......: 03
     Interface Subclass #...: 01
     Interface Protocol #...: 01

Handle 150 (26AC3390)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 151 (26AC3210)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 152 (26AC3090)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 153 (26AC2F10)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 154 (26AC2D90)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 155 (26AC2C10)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 156 (26AC2A90)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 157 (26AC2910)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 158 (26AC2790)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 159 (26AC2610)
   856F2DEF-4E93-4D6B-94CE-1CFE47013EA5 (00000000)
Handle 15A (26AAC790)
   Image (26B80028)   File:EFICharging
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(BEB07103-05F9-4B5D-89AF-29471D593CD5)
     ImageBase.....: 24A65000 - 24A6D7A0
     ImageSize.....: 87A0
     CodeType......: RT_code   
     DataType......: RT_data   
   ImageDpath (26AAC690) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(BEB07103-05F9-4B5D-89AF-29471D593CD5)'
Handle 15B (26AAC390)
   Image (26BABDA8)   File:I2cPortA0Pio
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(605CED2C-583B-4171-9311-AA6E146B1A4B)
     ImageBase.....: 27DC0000 - 27DC1240
     ImageSize.....: 1240
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26AAC290) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(605CED2C-583B-4171-9311-AA6E146B1A4B)'
   DriverBinding (27DC0260) 
   ComponentName (27DC02C0) 
Handle 15C (26BAAE90)
   Image (26BABC28)   File:EfiFastBootDxe
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(13D3B72A-8047-47B8-A4C4-4E814F6B25A1)
     ImageBase.....: 27DBC000 - 27DBF140
     ImageSize.....: 3140
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BAAD10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(13D3B72A-8047-47B8-A4C4-4E814F6B25A1)'
Handle 15D (26BAA910)
   Image (26BABAA8)   File:OemAcpiPlatform
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(9B182CEE-AED5-4D95-B2A9-A2CF6CDFEAA8)
     ImageBase.....: 27DBB000 - 27DBB4E0
     ImageSize.....: 4E0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26BAA810) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(9B182CEE-AED5-4D95-B2A9-A2CF6CDFEAA8)'
Handle 15E (26AA8F90)
   Dpath (26AA9090) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (17)
      Hardware Device Path for Controller
       Controller Number (0)
      AsStr: 'PciRoot(0x0)/Pci(0x17,0x0)/Ctrl(0x0)'
   DiskIo (26A9F598) 
   BlkIo (3B738028) Fixed MId:0 bsize 200, lblock 1D59FFF (15,758,000,128), raw rw !cached
Handle 15F (26AA8D10)
   Dpath (26AA8E10) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (17)
      Hardware Device Path for Controller
       Controller Number (1)
      AsStr: 'PciRoot(0x0)/Pci(0x17,0x0)/Ctrl(0x1)'
   DiskIo (26A98D98) 
   BlkIo (3B738090) Fixed MId:0 bsize 200, lblock 2000 (4,194,816), raw rw !cached
   EA7D60A6-1050-45E4-BEDF-BF177290D4B2 (00000000)
Handle 160 (26AA8A10)
   Dpath (26AA8B10) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (17)
      Hardware Device Path for Controller
       Controller Number (2)
      AsStr: 'PciRoot(0x0)/Pci(0x17,0x0)/Ctrl(0x2)'
   DiskIo (26A98918) 
   BlkIo (3B7380F8) Fixed MId:0 bsize 200, lblock 2000 (4,194,816), raw rw !cached
   EA7D60A6-1050-45E4-BEDF-BF177290D4B2 (00000000)
Handle 161 (26AA4810)
   Dpath (26AA4A10) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (1F)
      ACPI Device Path for Acpi
       HID PNP0200, UID 0
      AsStr: 'PciRoot(0x0)/Pci(0x1F,0x0)/Acpi(PNP0200,0x0)'
   IsaIo (26AA4B18) 
     ROM Size......: 00000000
     ROM Location..: 00000000
     ISA Resource List :

Handle 162 (26AA2C10)
   Image (26BAB928)   File:I2cHost
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(4414D6D8-232C-4972-A4F7-2B21D4298786)
     ImageBase.....: 27DBA000 - 27DBADE0
     ImageSize.....: DE0
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26AA2B10) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(4414D6D8-232C-4972-A4F7-2B21D4298786)'
   DriverBinding (27DBA280) 
   ComponentName (27DBA29C) 
Handle 163 (26A9F010)
   Dpath (26A9F090) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (17)
      Hardware Device Path for Controller
       Controller Number (0)
      Media Device Path for Hard Drive
       Partition (1) Start (0000000000000800) Size (0000000000032000)
      AsStr: 'PciRoot(0x0)/Pci(0x17,0x0)/Ctrl(0x0)/HD(1,GPT,215E6CF3-E97D-4735-9C4E-7338C8F5A645,0x800,0x32000)'
   Fs (26A99020) 
   DiskIo (26A9E898) 
   BlkIo (26AA1320) Fixed MId:0 bsize 200, lblock 31FFF (104,857,600), partition rw !cached
   ESP (0) 
Handle 164 (26A9EC10)
   Dpath (26A9ED10) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (17)
      Hardware Device Path for Controller
       Controller Number (0)
      Media Device Path for Hard Drive
       Partition (2) Start (0000000000032800) Size (0000000001D277DF)
      AsStr: 'PciRoot(0x0)/Pci(0x17,0x0)/Ctrl(0x0)/HD(2,GPT,C14CEE83-FDB4-42A1-9AB2-693D394BA1DD,0x32800,0x1D277DF)'
   DiskIo (26A9E198) 
   BlkIo (26AA1220) Fixed MId:0 bsize 200, lblock 1D277DE (15,652,077,056), partition rw !cached
   0FC63DAF-8483-4772-8E79-3D69D8477DE4 (00000000)
Handle 165 (26A98410)
   Image (26BAB7A8)   File:I2cBus
     ParentHandle..: 3B94EE90
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(CEE19373-FB2A-4B8E-BEF5-B6D7731F4939)
     ImageBase.....: 27DB8000 - 27DB9120
     ImageSize.....: 1120
     CodeType......: BS_code   
     DataType......: BS_data   
   ImageDpath (26A98310) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(CEE19373-FB2A-4B8E-BEF5-B6D7731F4939)'
   DriverBinding (27DB82A0) 
   ComponentName (27DB82DC) 
Handle 166 (26965B10)
   Dpath (26965C10) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C00\SFFFF,CIDStr I2C00\SFFFF,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x1,INTC33B1)/AcpiEx(I2C00\SFFFF,0x1,I2C00\SFFFF)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26965D18)
Handle 167 (26965890)
   Dpath (26965910) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C00\S0078,CIDStr I2C00\S0078,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x1,INTC33B1)/AcpiEx(I2C00\S0078,0x1,I2C00\S0078)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26965A18)
Handle 168 (26965590)
   Dpath (26965610) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C00\SFFFF\400K,CIDStr I2C00\SFFFF\400K,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x1,INTC33B1)/AcpiEx(I2C00\SFFFF\400K,0x1,I2C00\SFFFF\400K)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26965718)
Handle 169 (26964F90)
   Dpath (26965010) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 2,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C01\SFFFF,CIDStr I2C01\SFFFF,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x2,INTC33B1)/AcpiEx(I2C01\SFFFF,0x1,I2C01\SFFFF)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26965118)
Handle 16A (26964C90)
   Dpath (26964D10) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 2,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C01\SFFFF\400K,CIDStr I2C01\SFFFF\400K,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x2,INTC33B1)/AcpiEx(I2C01\SFFFF\400K,0x1,I2C01\SFFFF\400K)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26964E18)
Handle 16B (26964710)
   Dpath (26964790) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 3,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C02\SFFFF,CIDStr I2C02\SFFFF,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x3,INTC33B1)/AcpiEx(I2C02\SFFFF,0x1,I2C02\SFFFF)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26964898)
Handle 16C (26964410)
   Dpath (26964490) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 3,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C02\SFFFF\400K,CIDStr I2C02\SFFFF\400K,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x3,INTC33B1)/AcpiEx(I2C02\SFFFF\400K,0x1,I2C02\SFFFF\400K)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26964598)
Handle 16D (26963E90)
   Dpath (26963F10) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 4,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C03\SFFFF,CIDStr I2C03\SFFFF,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x4,INTC33B1)/AcpiEx(I2C03\SFFFF,0x1,I2C03\SFFFF)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26964018)
Handle 16E (26963B90)
   Dpath (26963C10) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 4,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C03\S004A,CIDStr I2C03\S004A,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x4,INTC33B1)/AcpiEx(I2C03\S004A,0x1,I2C03\S004A)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26963D18)
Handle 16F (26963890)
   Dpath (26963910) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 4,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C03\SFFFF\400K,CIDStr I2C03\SFFFF\400K,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x4,INTC33B1)/AcpiEx(I2C03\SFFFF\400K,0x1,I2C03\SFFFF\400K)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26963A18)
Handle 170 (26963310)
   Dpath (26963390) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 5,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C04\SFFFF,CIDStr I2C04\SFFFF,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x5,INTC33B1)/AcpiEx(I2C04\SFFFF,0x1,I2C04\SFFFF)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26963498)
Handle 171 (26963010)
   Dpath (26963090) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 5,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr SMO91D0,CIDStr PNP0C50,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x5,INTC33B1)/AcpiEx(SMO91D0,0x1,PNP0C50)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26963198)
Handle 172 (26960D10)
   Dpath (26960D90) 
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 5,HIDStr INTC33B1,CIDStr INTC33B1,UIDStr NULL
      ACPI Device Path for AcpiEx
       HID 0,CID 0,UID 1,HIDStr I2C04\SFFFF\400K,CIDStr I2C04\SFFFF\400K,UIDStr NULL
      AsStr: 'AcpiEx(INTC33B1,0x5,INTC33B1)/AcpiEx(I2C04\SFFFF\400K,0x1,I2C04\SFFFF\400K)'
   9FA1B225-3346-461B-A069-ED01B673D240 (26960E98)
Handle 173 (26953690)
   301DC83E-B533-4E1F-83CC-F3A6196457AA (00000000)
Handle 174 (2693E310)
   D088A413-0A70-4217-BA55-9A3CB65C41B3 (00000000)
Handle 175 (2693E410)
   60FF8964-E906-41D0-AFED-F241E974E08E (00000000)
Handle 176 (26942E10)
   EF9A3971-C1A0-4A93-BD40-5AA165F2DC3A (00000000)
Handle 177 (26942390)
   AF4CC162-D41C-455A-AB45-6DBCC1CD32F3 (00000000)
Handle 178 (2695E690)
   CC5B20B9-DA0A-4164-83FE-04BF0802F250 (00000000)
Handle 179 (268EB690)
   7183F96C-0AE5-457C-8926-2F852EA7A626 (00000000)
Handle 17A (268EB910)
   301DC83E-B533-4E1F-83CC-F3A6196457AA (00000000)
Handle 17B (26BB0F10)
   301DC83E-B533-4E1F-83CC-F3A6196457AA (00000000)
Handle 17C (26BB0910)
   D088A413-0A70-4217-BA55-9A3CB65C41B3 (00000000)
Handle 17D (26BB0810)
   60FF8964-E906-41D0-AFED-F241E974E08E (00000000)
Handle 17E (26BB0710)
   EF9A3971-C1A0-4A93-BD40-5AA165F2DC3A (00000000)
Handle 17F (26AD9710)
   Image (26AD5628)   File:FvFile(C57AD6B7-0515-40A8-9D21-551652854E37)
     ParentHandle..: 26CDA010
     SystemTable...: 3B94FF90
     DeviceHandle..: 26FFC210
     FilePath......: FvFile(C57AD6B7-0515-40A8-9D21-551652854E37)
     ImageBase.....: 3B624000 - 3B6CAFA0
     ImageSize.....: A6FA0
     CodeType......: LoaderCode
     DataType......: LoaderData
   ImageDpath (26AD9090) 
      Media Device Path for PIWG Firmware File
      Media Device Path for PIWG FV
      AsStr: 'Fv(A881D567-6CB0-4EEE-8435-2E72D33E45B5)/FvFile(C57AD6B7-0515-40A8-9D21-551652854E37)'
   ShellInt (3B970B08) 
   47C7B221-C42A-11D2-8E57-00A0C969723B (3B628A38)
Handle 180 (264D2B90)
   Dpath (3B4ABB90) 
      ACPI Device Path for Acpi
       HID PNP0A03, UID 0
      Hardware Device Path for PCI
       Function (0) Device (17)
      Hardware Device Path for Controller
       Controller Number (0)
      Media Device Path for Hard Drive
       Partition (1) Start (0000000000000800) Size (0000000000032000)
      Media Device Path for File Path
       File '\dh.txt'
      AsStr: 'PciRoot(0x0)/Pci(0x17,0x0)/Ctrl(0x0)/HD(1,GPT,215E6CF3-E97D-4735-9C4E-7338C8F5A645,0x800,0x32000)/\dh.txt'
   Txtout (3B970B9C) Attrib 7

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-07 17:33     ` Jeremy Cline
@ 2018-03-08  8:45       ` Thiebaud Weksteen
  2018-03-08 18:20         ` Jeremy Cline
  0 siblings, 1 reply; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-08  8:45 UTC (permalink / raw)
  To: Jeremy Cline
  Cc: Javier Martinez Canillas, Jarkko Sakkinen, hdegoede, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

On Wed, Mar 7, 2018 at 6:33 PM Jeremy Cline <jeremy@jcline.org> wrote:

> On 03/07/2018 03:41 AM, Thiebaud Weksteen wrote:
> > Hi,
> >
> > Thanks for testing and sending this report! This patch relies heavily on
> > the functions exposed by the firmware. My first guess would be that
some of
> > these may not be implemented correctly by the manufacturer.
> >
> > Could you share more information on this specific device?
> > Do you have any link to the manufacturer website (I found [1] but it is
> > based on an ARM CPU)?
> > Do you have the option to update your firmware? Is a copy of the
firmware
> > available from the manufacturer?

> I couldn't find a copy of the firmware, unfortunately.

No worries, thanks for looking that up.


> > On your side, I assume no error message got displayed on the screen when
> > booting. Would you be able to try to boot in an UEFI shell [2] and
execute
> > the command "dh -v"?

> Yup, no errors on the screen. I've attached the output of dh -v from the
> UEFI shell.

Great, thanks for that. There is a module that exposes the EfiTcg2Protocol
(TrEEDxe). So I'm going to assume this is properly located and then called.
Unfortunately, this is so early in the boot that we can only rely on the
EFI functions for logging/debugging.

Jeremy, Hans, could you both describe precisely how your boot is
configured? This feature is only triggered when booting the EFI stub of the
kernel so this may be not executed if you are using something else in
between.

Jeremy, would you be able to modify the efi_retrieve_tpm2_eventlog_1_2
function to add multiple efi_printk(sys_table_arg,  "message\n"); to test:
if you get the output on your screen; and isolate which call might be the
cause of the hang?
I can forward a debug patch if that helps.

Thanks



> Regards,
> Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
       [not found]       ` <a3b5f822-f8f4-e2f5-46da-e23e13174f28@redhat.com>
@ 2018-03-08 16:50         ` Hans de Goede
  2018-03-08 17:26           ` Jeremy Cline
  0 siblings, 1 reply; 39+ messages in thread
From: Hans de Goede @ 2018-03-08 16:50 UTC (permalink / raw)
  To: Javier Martinez Canillas, Jeremy Cline, Thiebaud Weksteen,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

<somehow this part of the thread was missing some email addresses, I've added these now>

Hi,

On 07-03-18 12:34, Javier Martinez Canillas wrote:
> On 03/07/2018 12:10 PM, Hans de Goede wrote:

<snip>

>> Both according to the BIOS and to the /sys/class/tpm/tpm0/device/description
>> file it is a TPM 2.0.
>>
> 
> I see, so you can choose enabling the TPM 1.2 or TPM 2.0 device? At least that's
> the case on my X1 Carbon laptop. I've both a hardware TPM 1.2 and a firmware TPM
> 2.0 that's implemented as an Intel ME application (AFAIU).

This device only has the firmware TPM 2.0 implementation.

<snip>

>> I'm actually amazed that this machine has a TPM at all, a quick internet
>> search shows that it is a software implemented TPM running as part of the
>> TXE firmware.
>>
> 
> A quick search suggests that it comes with Windows 10?

Yes, it comes with Windows 10.

>>> For start, can you please check if you can boot a v4.16-rcX kernel with the
>>> TPM device enabled? That way we will know that at least that it consistently
>>> fails on this machine and is not and isolated issue.
>>
>> I just tried and v4.16-rc3 boots fine for me, repeatedly.
>>
> 
> That's an interesting data point.
> 
>> I guess Jeremy's model may actually have something in the TPM log
> 
> I don't think so. The UEFI firmware already does some measurements and also
> does shim. So you *should* have some logs.
> 
>> while my TPM log is empty... Is there anyway to make sure the TPM
>> log has some info to retreive?
>>
> 
> Are you also able to read the TPM event logs?
> 
> $ hexdump /sys/kernel/security/tpm0/binary_bios_measurements

Yes for me that outputs a lot of hex :)

> The UEFI firmware does some measurements and so does shim. So you should
> have some event logs. What version of shim are you using? And also would
> be good to know if it's the same shim version that Jeremy is using.

That is a very good question, I'm using: shim-ia32-13-0.7.x86_64, which is
the last version for F27 AFAICT.

But Jeremy's tablet might very well be not using the shim at all, as
I manually installed Fedora 25 on the tablet he now has, before Fedora supported
machines with 32 bit EFI. I then later did a "dnf distro-sync" to Fedora-27.

Jeremy might also very well still be booting using a grub binary I build
manually back then, without any shim being involved.

Jeremy what does efibootmgr -v output on your device ?

Regards,

Hans

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-08 16:50         ` Hans de Goede
@ 2018-03-08 17:26           ` Jeremy Cline
  2018-03-09  9:29             ` Hans de Goede
  0 siblings, 1 reply; 39+ messages in thread
From: Jeremy Cline @ 2018-03-08 17:26 UTC (permalink / raw)
  To: Hans de Goede, Javier Martinez Canillas, Thiebaud Weksteen,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 03/08/2018 11:50 AM, Hans de Goede wrote:
> <somehow this part of the thread was missing some email addresses, I've
> added these now>
> 
> Hi,
> 
> On 07-03-18 12:34, Javier Martinez Canillas wrote:

<snip>

>> Are you also able to read the TPM event logs?
>>
>> $ hexdump /sys/kernel/security/tpm0/binary_bios_measurements
> 
> Yes for me that outputs a lot of hex :)

For me, /sys/kernel/security/tmp0 doesn't exist on 4.15.6 or 4.16 with
the patch reverted.

>> The UEFI firmware does some measurements and so does shim. So you should
>> have some event logs. What version of shim are you using? And also would
>> be good to know if it's the same shim version that Jeremy is using.
> 
> That is a very good question, I'm using: shim-ia32-13-0.7.x86_64, which is
> the last version for F27 AFAICT.

All my tablet has installed is shim-0.8-10.x86_64, no shim-ia32.

> 
> But Jeremy's tablet might very well be not using the shim at all, as
> I manually installed Fedora 25 on the tablet he now has, before Fedora
> supported
> machines with 32 bit EFI. I then later did a "dnf distro-sync" to
> Fedora-27.
> 
> Jeremy might also very well still be booting using a grub binary I build
> manually back then, without any shim being involved.
> 
> Jeremy what does efibootmgr -v output on your device ?

# efibootmgr -v
BootCurrent: 0003
Timeout: 4 seconds
BootOrder: 0003,0000,0001,2001,2002,2003
Boot0000* Android X64 OS
HD(1,GPT,215e6cf3-e97d-4735-9c4e-7338c8f5a645,0x800,0x32000)/File(\EFI\BOOT\bootx64.efi)RC
Boot0001* Internal EFI Shell
FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)RCM&".
Boot0003* Fedora
HD(1,GPT,215e6cf3-e97d-4735-9c4e-7338c8f5a645,0x800,0x32000)/File(\EFI\fedora\grubx64.efi)
Boot2001* EFI USB Device	RC
Boot2002* EFI DVD/CDROM	RC
Boot2003* EFI Network	RC
Boot8087* Udm
FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9a9ab4c1-ee1b-488b-b300-24544a7bd418)

I think you're right about it using the old grub binary. I'm
embarrassingly unfamiliar with both UEFI and grub, but I'm guessing you
set the location of grub.cfg at compile time? When I boot
\EFI\fedora\grubx64.efi, it's pulling the grub.cfg from
\EFI\redhat\grub.cfg.

Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-08  8:45       ` Thiebaud Weksteen
@ 2018-03-08 18:20         ` Jeremy Cline
  0 siblings, 0 replies; 39+ messages in thread
From: Jeremy Cline @ 2018-03-08 18:20 UTC (permalink / raw)
  To: Thiebaud Weksteen
  Cc: Javier Martinez Canillas, Jarkko Sakkinen, hdegoede, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

On 03/08/2018 03:45 AM, Thiebaud Weksteen wrote:
> Jeremy, Hans, could you both describe precisely how your boot is
> configured? This feature is only triggered when booting the EFI stub of the
> kernel so this may be not executed if you are using something else in
> between.

I put everything I know in the other sub-thread.
> Jeremy, would you be able to modify the efi_retrieve_tpm2_eventlog_1_2
> function to add multiple efi_printk(sys_table_arg,  "message\n"); to test:
> if you get the output on your screen; and isolate which call might be the
> cause of the hang?
> I can forward a debug patch if that helps.

Thanks for the patch, here's the output:

Locating the TCG2Protocol
Calling GetEventLog on TCG2Protocol
Log returned
log_location is not empty
log_size != 0
Allocating memory for storing the logs
Returned from memory allocation
Copying log to new location

At this point it hangs.


Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-08 17:26           ` Jeremy Cline
@ 2018-03-09  9:29             ` Hans de Goede
  2018-03-09 10:43               ` Thiebaud Weksteen
  2018-03-09 17:03               ` James Bottomley
  0 siblings, 2 replies; 39+ messages in thread
From: Hans de Goede @ 2018-03-09  9:29 UTC (permalink / raw)
  To: Jeremy Cline, Javier Martinez Canillas, Thiebaud Weksteen,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

Hi,

On 08-03-18 18:26, Jeremy Cline wrote:
> On 03/08/2018 11:50 AM, Hans de Goede wrote:
>> <somehow this part of the thread was missing some email addresses, I've
>> added these now>
>>
>> Hi,
>>
>> On 07-03-18 12:34, Javier Martinez Canillas wrote:
> 
> <snip>
> 
>>> Are you also able to read the TPM event logs?
>>>
>>> $ hexdump /sys/kernel/security/tpm0/binary_bios_measurements
>>
>> Yes for me that outputs a lot of hex :)
> 
> For me, /sys/kernel/security/tmp0 doesn't exist on 4.15.6 or 4.16 with
> the patch reverted.

Hmm, have you re-enabled the TPM in the BIOS?

>>> The UEFI firmware does some measurements and so does shim. So you should
>>> have some event logs. What version of shim are you using? And also would
>>> be good to know if it's the same shim version that Jeremy is using.
>>
>> That is a very good question, I'm using: shim-ia32-13-0.7.x86_64, which is
>> the last version for F27 AFAICT.
> 
> All my tablet has installed is shim-0.8-10.x86_64, no shim-ia32.

Yes my bad, although if the kernel changes break booting on systems
without the shim that is still good to know and something which
we probably ought to fix.

>> But Jeremy's tablet might very well be not using the shim at all, as
>> I manually installed Fedora 25 on the tablet he now has, before Fedora
>> supported
>> machines with 32 bit EFI. I then later did a "dnf distro-sync" to
>> Fedora-27.
>>
>> Jeremy might also very well still be booting using a grub binary I build
>> manually back then, without any shim being involved.
>>
>> Jeremy what does efibootmgr -v output on your device ?
> 
> # efibootmgr -v
> BootCurrent: 0003
> Timeout: 4 seconds
> BootOrder: 0003,0000,0001,2001,2002,2003
> Boot0000* Android X64 OS
> HD(1,GPT,215e6cf3-e97d-4735-9c4e-7338c8f5a645,0x800,0x32000)/File(\EFI\BOOT\bootx64.efi)RC
> Boot0001* Internal EFI Shell
> FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)RCM&".
> Boot0003* Fedora
> HD(1,GPT,215e6cf3-e97d-4735-9c4e-7338c8f5a645,0x800,0x32000)/File(\EFI\fedora\grubx64.efi)
> Boot2001* EFI USB Device	RC
> Boot2002* EFI DVD/CDROM	RC
> Boot2003* EFI Network	RC
> Boot8087* Udm
> FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9a9ab4c1-ee1b-488b-b300-24544a7bd418)
> 
> I think you're right about it using the old grub binary. I'm
> embarrassingly unfamiliar with both UEFI and grub, but I'm guessing you
> set the location of grub.cfg at compile time? When I boot
> \EFI\fedora\grubx64.efi, it's pulling the grub.cfg from
> \EFI\redhat\grub.cfg.

Ah yes, so I did not build my own grub I took one from RHEL as that had
32 bit UEFI support before Fedora got it and as I was lazy I copied the
32 bit binary over the 64 bit one, so don't let the filename fool you.

What you could do is install grub2-efi-ia32 from the Fedora 27 repos
and then use efibootmgr to add an entry pointing to \EFI\fedora\grubia32.efi
note that one will look at \EFI\fedora\grub.cfg .

Then see if the problem persists. A second step would be to also install
shim-ia32 and point to that...

Regards,

Hans

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-09  9:29             ` Hans de Goede
@ 2018-03-09 10:43               ` Thiebaud Weksteen
  2018-03-09 16:54                 ` Jeremy Cline
  2018-03-09 17:03               ` James Bottomley
  1 sibling, 1 reply; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-09 10:43 UTC (permalink / raw)
  To: Jeremy Cline
  Cc: hdegoede, Javier Martinez Canillas, Jarkko Sakkinen, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

On Fri, Mar 9, 2018 at 10:29 AM Hans de Goede <hdegoede@redhat.com> wrote:

> Hi,

> On 08-03-18 18:26, Jeremy Cline wrote:
> > On 03/08/2018 11:50 AM, Hans de Goede wrote:
> >> <somehow this part of the thread was missing some email addresses, I've
> >> added these now>
> >>
> >> Hi,
> >>
> >> On 07-03-18 12:34, Javier Martinez Canillas wrote:
> >
> > <snip>
> >
> >>> Are you also able to read the TPM event logs?
> >>>
> >>> $ hexdump /sys/kernel/security/tpm0/binary_bios_measurements
> >>
> >> Yes for me that outputs a lot of hex :)
> >
> > For me, /sys/kernel/security/tmp0 doesn't exist on 4.15.6 or 4.16 with
> > the patch reverted.

> Hmm, have you re-enabled the TPM in the BIOS?

> >>> The UEFI firmware does some measurements and so does shim. So you
should
> >>> have some event logs. What version of shim are you using? And also
would
> >>> be good to know if it's the same shim version that Jeremy is using.
> >>
> >> That is a very good question, I'm using: shim-ia32-13-0.7.x86_64,
which is
> >> the last version for F27 AFAICT.
> >
> > All my tablet has installed is shim-0.8-10.x86_64, no shim-ia32.

> Yes my bad, although if the kernel changes break booting on systems
> without the shim that is still good to know and something which
> we probably ought to fix.

> >> But Jeremy's tablet might very well be not using the shim at all, as
> >> I manually installed Fedora 25 on the tablet he now has, before Fedora
> >> supported
> >> machines with 32 bit EFI. I then later did a "dnf distro-sync" to
> >> Fedora-27.
> >>
> >> Jeremy might also very well still be booting using a grub binary I
build
> >> manually back then, without any shim being involved.
> >>
> >> Jeremy what does efibootmgr -v output on your device ?
> >
> > # efibootmgr -v
> > BootCurrent: 0003
> > Timeout: 4 seconds
> > BootOrder: 0003,0000,0001,2001,2002,2003
> > Boot0000* Android X64 OS
> >
HD(1,GPT,215e6cf3-e97d-4735-9c4e-7338c8f5a645,0x800,0x32000)/File(\EFI\BOOT\bootx64.efi)RC
> > Boot0001* Internal EFI Shell
> >
FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(c57ad6b7-0515-40a8-9d21-551652854e37)RCM&".
> > Boot0003* Fedora
> >
HD(1,GPT,215e6cf3-e97d-4735-9c4e-7338c8f5a645,0x800,0x32000)/File(\EFI\fedora\grubx64.efi)
> > Boot2001* EFI USB Device      RC
> > Boot2002* EFI DVD/CDROM       RC
> > Boot2003* EFI Network RC
> > Boot8087* Udm
> >
FvVol(a881d567-6cb0-4eee-8435-2e72d33e45b5)/FvFile(9a9ab4c1-ee1b-488b-b300-24544a7bd418)
> >
> > I think you're right about it using the old grub binary. I'm
> > embarrassingly unfamiliar with both UEFI and grub, but I'm guessing you
> > set the location of grub.cfg at compile time? When I boot
> > \EFI\fedora\grubx64.efi, it's pulling the grub.cfg from
> > \EFI\redhat\grub.cfg.

> Ah yes, so I did not build my own grub I took one from RHEL as that had
> 32 bit UEFI support before Fedora got it and as I was lazy I copied the
> 32 bit binary over the 64 bit one, so don't let the filename fool you.

> What you could do is install grub2-efi-ia32 from the Fedora 27 repos
> and then use efibootmgr to add an entry pointing to
\EFI\fedora\grubia32.efi
> note that one will look at \EFI\fedora\grub.cfg .

> Then see if the problem persists. A second step would be to also install
> shim-ia32 and point to that...

Thanks a lot for trying out the patch!

Please don't modify your install at this stage, I think we are hitting a
firmware bug and that would be awesome if we can fix how we are handling it.
So, if we reach that stage in the function it could either be that:
* The allocation did not succeed, somehow, but the firmware still returned
EFI_SUCCEED.
* The size requested is incorrect (I'm thinking something like a 1G of
log). This would be due to either a miscalculation of log_size (possible)
or; the returned values of GetEventLog are not correct.
I'm sending a patch to add checks for these. Could you please apply and
retest?
Again, thanks for helping debugging this.


> Regards,

> Hans

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-09 10:43               ` Thiebaud Weksteen
@ 2018-03-09 16:54                 ` Jeremy Cline
  2018-03-10 10:45                   ` Thiebaud Weksteen
  0 siblings, 1 reply; 39+ messages in thread
From: Jeremy Cline @ 2018-03-09 16:54 UTC (permalink / raw)
  To: Thiebaud Weksteen
  Cc: hdegoede, Javier Martinez Canillas, Jarkko Sakkinen, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
> Thanks a lot for trying out the patch!
> 
> Please don't modify your install at this stage, I think we are hitting a
> firmware bug and that would be awesome if we can fix how we are handling it.
> So, if we reach that stage in the function it could either be that:
> * The allocation did not succeed, somehow, but the firmware still returned
> EFI_SUCCEED.
> * The size requested is incorrect (I'm thinking something like a 1G of
> log). This would be due to either a miscalculation of log_size (possible)
> or; the returned values of GetEventLog are not correct.
> I'm sending a patch to add checks for these. Could you please apply and
> retest?
> Again, thanks for helping debugging this.

No problem, thanks for the help :)

With the new patch:

Locating the TCG2Protocol
Calling GetEventLog on TCG2Protocol
Log returned
log_location is not empty
log_size != 0
log_size < 1M
Allocating memory for storing the logs
Returned from memory allocation
Copying log to new location

And then it hangs. I added a couple more print statements:

diff --git a/drivers/firmware/efi/libstub/tpm.c b/drivers/firmware/efi/libstub/tpm.c
index ee3fac109078..1ab5638bc50e 100644
--- a/drivers/firmware/efi/libstub/tpm.c
+++ b/drivers/firmware/efi/libstub/tpm.c
@@ -148,8 +148,11 @@ void efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
        efi_printk(sys_table_arg, "Copying log to new location\n");
 
        memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
+       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
        log_tbl->size = log_size;
+       efi_printk(sys_table_arg, "Set log_tbl->size\n");
        log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
+       efi_printk(sys_table_arg, "Set log_tbl-version\n");
        memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
 
        efi_printk(sys_table_arg, "Installing the log into the configuration table\n");

and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"

Regards,
Jeremy

^ permalink raw reply related	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-09  9:29             ` Hans de Goede
  2018-03-09 10:43               ` Thiebaud Weksteen
@ 2018-03-09 17:03               ` James Bottomley
  1 sibling, 0 replies; 39+ messages in thread
From: James Bottomley @ 2018-03-09 17:03 UTC (permalink / raw)
  To: Hans de Goede, Jeremy Cline, Javier Martinez Canillas,
	Thiebaud Weksteen, Jarkko Sakkinen, linux-efi, linux-integrity,
	tpmdd-devel, Linux Kernel Mailing List

On Fri, 2018-03-09 at 10:29 +0100, Hans de Goede wrote:
> Hi,
> 
> On 08-03-18 18:26, Jeremy Cline wrote:
> > 
> > On 03/08/2018 11:50 AM, Hans de Goede wrote:
[...]
> > > > The UEFI firmware does some measurements and so does shim. So
> > > > you should have some event logs. What version of shim are you
> > > > using? And also would be good to know if it's the same shim
> > > > version that Jeremy is using.
> > > 
> > > That is a very good question, I'm using: shim-ia32-13-0.7.x86_64, 
> > > which is the last version for F27 AFAICT.
> > 
> > All my tablet has installed is shim-0.8-10.x86_64, no shim-ia32.
> 
> Yes my bad, although if the kernel changes break booting on systems
> without the shim that is still good to know and something which
> we probably ought to fix.

My laptop is set up with secure boot but without shim using a shim
protocol thin layer to check the kernel signature against db variables:

https://git.kernel.org/pub/scm/linux/kernel/git/jejb/efitools.git/tree/ShimReplace.c

and I haven't seen any breakage, so not having a shim that does
measurements works for me all the way up to -rc4.

James

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-09 16:54                 ` Jeremy Cline
@ 2018-03-10 10:45                   ` Thiebaud Weksteen
  2018-03-12 10:17                     ` Jarkko Sakkinen
  2018-03-12 11:08                     ` Ard Biesheuvel
  0 siblings, 2 replies; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-10 10:45 UTC (permalink / raw)
  To: Jeremy Cline, Ard Biesheuvel
  Cc: hdegoede, Javier Martinez Canillas, Jarkko Sakkinen, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:

> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
> > Thanks a lot for trying out the patch!
> >
> > Please don't modify your install at this stage, I think we are hitting a
> > firmware bug and that would be awesome if we can fix how we are
handling it.
> > So, if we reach that stage in the function it could either be that:
> > * The allocation did not succeed, somehow, but the firmware still
returned
> > EFI_SUCCEED.
> > * The size requested is incorrect (I'm thinking something like a 1G of
> > log). This would be due to either a miscalculation of log_size
(possible)
> > or; the returned values of GetEventLog are not correct.
> > I'm sending a patch to add checks for these. Could you please apply and
> > retest?
> > Again, thanks for helping debugging this.

> No problem, thanks for the help :)

> With the new patch:

> Locating the TCG2Protocol
> Calling GetEventLog on TCG2Protocol
> Log returned
> log_location is not empty
> log_size != 0
> log_size < 1M
> Allocating memory for storing the logs
> Returned from memory allocation
> Copying log to new location

> And then it hangs. I added a couple more print statements:

> diff --git a/drivers/firmware/efi/libstub/tpm.c
b/drivers/firmware/efi/libstub/tpm.c
> index ee3fac109078..1ab5638bc50e 100644
> --- a/drivers/firmware/efi/libstub/tpm.c
> +++ b/drivers/firmware/efi/libstub/tpm.c
> @@ -148,8 +148,11 @@ void
efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>          efi_printk(sys_table_arg, "Copying log to new location\n");

>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
>          log_tbl->size = log_size;
> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);

>          efi_printk(sys_table_arg, "Installing the log into the
configuration table\n");

> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"

Thanks. Well, it looks like the memory that is supposedly allocated is not
usable. I'm thinking this is a firmware bug.
Ard, would you agree on this assumption? Thoughts on how to proceed?

Thanks


> Regards,
> Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-10 10:45                   ` Thiebaud Weksteen
@ 2018-03-12 10:17                     ` Jarkko Sakkinen
  2018-03-12 10:41                       ` Paul Menzel
  2018-03-12 11:08                     ` Ard Biesheuvel
  1 sibling, 1 reply; 39+ messages in thread
From: Jarkko Sakkinen @ 2018-03-12 10:17 UTC (permalink / raw)
  To: Thiebaud Weksteen, Jeremy Cline, Ard Biesheuvel
  Cc: hdegoede, Javier Martinez Canillas, linux-efi, linux-integrity,
	tpmdd-devel, linux-kernel

On Sat, 2018-03-10 at 10:45 +0000, Thiebaud Weksteen wrote:
> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
> > and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
> 
> Thanks. Well, it looks like the memory that is supposedly allocated is not
> usable. I'm thinking this is a firmware bug.
> Ard, would you agree on this assumption? Thoughts on how to proceed?

Check if the BIOS is up to date?

/Jarkko

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 10:17                     ` Jarkko Sakkinen
@ 2018-03-12 10:41                       ` Paul Menzel
  2018-03-16 13:01                         ` Jarkko Sakkinen
  0 siblings, 1 reply; 39+ messages in thread
From: Paul Menzel @ 2018-03-12 10:41 UTC (permalink / raw)
  To: Jarkko Sakkinen, Thiebaud Weksteen, Jeremy Cline, Ard Biesheuvel
  Cc: hdegoede, Javier Martinez Canillas, linux-efi, linux-integrity,
	tpmdd-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 786 bytes --]

Dear Jarkko,


On 03/12/18 11:17, Jarkko Sakkinen wrote:
> On Sat, 2018-03-10 at 10:45 +0000, Thiebaud Weksteen wrote:
>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
>>
>> Thanks. Well, it looks like the memory that is supposedly allocated is not
>> usable. I'm thinking this is a firmware bug.
>> Ard, would you agree on this assumption? Thoughts on how to proceed?
> 
> Check if the BIOS is up to date?

How would that help? The no regression policy demands, that Linux 
continues working on systems, where it worked before. So upgrading the 
firmware is no solution, is it? Until a solution is found, the commits 
should be reverted.


Kind regards,

Paul


[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5174 bytes --]

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-10 10:45                   ` Thiebaud Weksteen
  2018-03-12 10:17                     ` Jarkko Sakkinen
@ 2018-03-12 11:08                     ` Ard Biesheuvel
  2018-03-12 14:30                       ` Jeremy Cline
  1 sibling, 1 reply; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-12 11:08 UTC (permalink / raw)
  To: Thiebaud Weksteen
  Cc: Jeremy Cline, Hans de Goede, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com> wrote:
> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
>
>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
>> > Thanks a lot for trying out the patch!
>> >
>> > Please don't modify your install at this stage, I think we are hitting a
>> > firmware bug and that would be awesome if we can fix how we are
> handling it.
>> > So, if we reach that stage in the function it could either be that:
>> > * The allocation did not succeed, somehow, but the firmware still
> returned
>> > EFI_SUCCEED.
>> > * The size requested is incorrect (I'm thinking something like a 1G of
>> > log). This would be due to either a miscalculation of log_size
> (possible)
>> > or; the returned values of GetEventLog are not correct.
>> > I'm sending a patch to add checks for these. Could you please apply and
>> > retest?
>> > Again, thanks for helping debugging this.
>
>> No problem, thanks for the help :)
>
>> With the new patch:
>
>> Locating the TCG2Protocol
>> Calling GetEventLog on TCG2Protocol
>> Log returned
>> log_location is not empty
>> log_size != 0
>> log_size < 1M
>> Allocating memory for storing the logs
>> Returned from memory allocation
>> Copying log to new location
>
>> And then it hangs. I added a couple more print statements:
>
>> diff --git a/drivers/firmware/efi/libstub/tpm.c
> b/drivers/firmware/efi/libstub/tpm.c
>> index ee3fac109078..1ab5638bc50e 100644
>> --- a/drivers/firmware/efi/libstub/tpm.c
>> +++ b/drivers/firmware/efi/libstub/tpm.c
>> @@ -148,8 +148,11 @@ void
> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>          efi_printk(sys_table_arg, "Copying log to new location\n");
>
>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
>>          log_tbl->size = log_size;
>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
>
>>          efi_printk(sys_table_arg, "Installing the log into the
> configuration table\n");
>
>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
>
> Thanks. Well, it looks like the memory that is supposedly allocated is not
> usable. I'm thinking this is a firmware bug.
> Ard, would you agree on this assumption? Thoughts on how to proceed?
>

I am rather puzzled why the allocate_pool() should succeed and the
subsequent memset() should fail. This does not look like an issue that
is intimately related to TPM2 support, rather an issue in the firmware
that happens to get tickled after the change.

Would you mind trying replacing EFI_LOADER_DATA with
EFI_BOOT_SERVICES_DATA in the allocate_pool() call?

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 11:08                     ` Ard Biesheuvel
@ 2018-03-12 14:30                       ` Jeremy Cline
  2018-03-12 14:56                         ` Ard Biesheuvel
  0 siblings, 1 reply; 39+ messages in thread
From: Jeremy Cline @ 2018-03-12 14:30 UTC (permalink / raw)
  To: Ard Biesheuvel, Thiebaud Weksteen
  Cc: Hans de Goede, Javier Martinez Canillas, Jarkko Sakkinen,
	linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com> wrote:
>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
>>
>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
>>>> Thanks a lot for trying out the patch!
>>>>
>>>> Please don't modify your install at this stage, I think we are hitting a
>>>> firmware bug and that would be awesome if we can fix how we are
>> handling it.
>>>> So, if we reach that stage in the function it could either be that:
>>>> * The allocation did not succeed, somehow, but the firmware still
>> returned
>>>> EFI_SUCCEED.
>>>> * The size requested is incorrect (I'm thinking something like a 1G of
>>>> log). This would be due to either a miscalculation of log_size
>> (possible)
>>>> or; the returned values of GetEventLog are not correct.
>>>> I'm sending a patch to add checks for these. Could you please apply and
>>>> retest?
>>>> Again, thanks for helping debugging this.
>>
>>> No problem, thanks for the help :)
>>
>>> With the new patch:
>>
>>> Locating the TCG2Protocol
>>> Calling GetEventLog on TCG2Protocol
>>> Log returned
>>> log_location is not empty
>>> log_size != 0
>>> log_size < 1M
>>> Allocating memory for storing the logs
>>> Returned from memory allocation
>>> Copying log to new location
>>
>>> And then it hangs. I added a couple more print statements:
>>
>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>> b/drivers/firmware/efi/libstub/tpm.c
>>> index ee3fac109078..1ab5638bc50e 100644
>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>> @@ -148,8 +148,11 @@ void
>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>          efi_printk(sys_table_arg, "Copying log to new location\n");
>>
>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
>>>          log_tbl->size = log_size;
>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
>>
>>>          efi_printk(sys_table_arg, "Installing the log into the
>> configuration table\n");
>>
>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
>>
>> Thanks. Well, it looks like the memory that is supposedly allocated is not
>> usable. I'm thinking this is a firmware bug.
>> Ard, would you agree on this assumption? Thoughts on how to proceed?
>>
> 
> I am rather puzzled why the allocate_pool() should succeed and the
> subsequent memset() should fail. This does not look like an issue that
> is intimately related to TPM2 support, rather an issue in the firmware
> that happens to get tickled after the change.
> 
> Would you mind trying replacing EFI_LOADER_DATA with
> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?

Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at the
memset() call.

Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 14:30                       ` Jeremy Cline
@ 2018-03-12 14:56                         ` Ard Biesheuvel
  2018-03-12 17:01                           ` Jeremy Cline
  0 siblings, 1 reply; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-12 14:56 UTC (permalink / raw)
  To: Jeremy Cline
  Cc: Thiebaud Weksteen, Hans de Goede, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

[-- Attachment #1: Type: text/plain, Size: 5321 bytes --]

On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com> wrote:
>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
>>>
>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
>>>>> Thanks a lot for trying out the patch!
>>>>>
>>>>> Please don't modify your install at this stage, I think we are hitting a
>>>>> firmware bug and that would be awesome if we can fix how we are
>>> handling it.
>>>>> So, if we reach that stage in the function it could either be that:
>>>>> * The allocation did not succeed, somehow, but the firmware still
>>> returned
>>>>> EFI_SUCCEED.
>>>>> * The size requested is incorrect (I'm thinking something like a 1G of
>>>>> log). This would be due to either a miscalculation of log_size
>>> (possible)
>>>>> or; the returned values of GetEventLog are not correct.
>>>>> I'm sending a patch to add checks for these. Could you please apply and
>>>>> retest?
>>>>> Again, thanks for helping debugging this.
>>>
>>>> No problem, thanks for the help :)
>>>
>>>> With the new patch:
>>>
>>>> Locating the TCG2Protocol
>>>> Calling GetEventLog on TCG2Protocol
>>>> Log returned
>>>> log_location is not empty
>>>> log_size != 0
>>>> log_size < 1M
>>>> Allocating memory for storing the logs
>>>> Returned from memory allocation
>>>> Copying log to new location
>>>
>>>> And then it hangs. I added a couple more print statements:
>>>
>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>> b/drivers/firmware/efi/libstub/tpm.c
>>>> index ee3fac109078..1ab5638bc50e 100644
>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>> @@ -148,8 +148,11 @@ void
>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>          efi_printk(sys_table_arg, "Copying log to new location\n");
>>>
>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
>>>>          log_tbl->size = log_size;
>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
>>>
>>>>          efi_printk(sys_table_arg, "Installing the log into the
>>> configuration table\n");
>>>
>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
>>>
>>> Thanks. Well, it looks like the memory that is supposedly allocated is not
>>> usable. I'm thinking this is a firmware bug.
>>> Ard, would you agree on this assumption? Thoughts on how to proceed?
>>>
>>
>> I am rather puzzled why the allocate_pool() should succeed and the
>> subsequent memset() should fail. This does not look like an issue that
>> is intimately related to TPM2 support, rather an issue in the firmware
>> that happens to get tickled after the change.
>>
>> Would you mind trying replacing EFI_LOADER_DATA with
>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>
> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at the
> memset() call.
>

Could you try the following please? (attached as well in case gmail mangles it)

diff --git a/drivers/firmware/efi/libstub/tpm.c
b/drivers/firmware/efi/libstub/tpm.c
index 2298560cea72..30d960a344b7 100644
--- a/drivers/firmware/efi/libstub/tpm.c
+++ b/drivers/firmware/efi/libstub/tpm.c
@@ -70,6 +70,8 @@ void
efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
        size_t log_size, last_entry_size;
        efi_bool_t truncated;
        void *tcg2_protocol;
+       unsigned long num_pages;
+       efi_physical_addr_t log_tbl_alloc;

        status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
                                &tcg2_protocol);
@@ -104,9 +106,12 @@ void
efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
        }

        /* Allocate space for the logs and copy them. */
-       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
-                               sizeof(*log_tbl) + log_size,
-                               (void **) &log_tbl);
+       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size, EFI_PAGE_SIZE);
+       status = efi_call_early(allocate_pages,
+                               EFI_ALLOCATE_ANY_PAGES,
+                               EFI_LOADER_DATA,
+                               num_pages,
+                               &log_tbl_alloc);

        if (status != EFI_SUCCESS) {
                efi_printk(sys_table_arg,
@@ -114,6 +119,7 @@ void
efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
                return;
        }

+       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned long)log_tbl_alloc;
        memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
        log_tbl->size = log_size;
        log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
@@ -126,7 +132,7 @@ void
efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
        return;

 err_free:
-       efi_call_early(free_pool, log_tbl);
+       efi_call_early(free_pages, log_tbl_alloc, num_pages);
 }

 void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)

[-- Attachment #2: efitpm.diff --]
[-- Type: text/x-patch, Size: 1659 bytes --]

diff --git a/drivers/firmware/efi/libstub/tpm.c b/drivers/firmware/efi/libstub/tpm.c
index 2298560cea72..30d960a344b7 100644
--- a/drivers/firmware/efi/libstub/tpm.c
+++ b/drivers/firmware/efi/libstub/tpm.c
@@ -70,6 +70,8 @@ void efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
 	size_t log_size, last_entry_size;
 	efi_bool_t truncated;
 	void *tcg2_protocol;
+	unsigned long num_pages;
+	efi_physical_addr_t log_tbl_alloc;
 
 	status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
 				&tcg2_protocol);
@@ -104,9 +106,12 @@ void efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
 	}
 
 	/* Allocate space for the logs and copy them. */
-	status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
-				sizeof(*log_tbl) + log_size,
-				(void **) &log_tbl);
+	num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size, EFI_PAGE_SIZE);
+	status = efi_call_early(allocate_pages,
+				EFI_ALLOCATE_ANY_PAGES,
+				EFI_LOADER_DATA,
+				num_pages,
+				&log_tbl_alloc);
 
 	if (status != EFI_SUCCESS) {
 		efi_printk(sys_table_arg,
@@ -114,6 +119,7 @@ void efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
 		return;
 	}
 
+	log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned long)log_tbl_alloc;
 	memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
 	log_tbl->size = log_size;
 	log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
@@ -126,7 +132,7 @@ void efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
 	return;
 
 err_free:
-	efi_call_early(free_pool, log_tbl);
+	efi_call_early(free_pages, log_tbl_alloc, num_pages);
 }
 
 void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)

^ permalink raw reply related	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 14:56                         ` Ard Biesheuvel
@ 2018-03-12 17:01                           ` Jeremy Cline
  2018-03-12 17:30                             ` Ard Biesheuvel
  0 siblings, 1 reply; 39+ messages in thread
From: Jeremy Cline @ 2018-03-12 17:01 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Thiebaud Weksteen, Hans de Goede, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com> wrote:
>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
>>>>
>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
>>>>>> Thanks a lot for trying out the patch!
>>>>>>
>>>>>> Please don't modify your install at this stage, I think we are hitting a
>>>>>> firmware bug and that would be awesome if we can fix how we are
>>>> handling it.
>>>>>> So, if we reach that stage in the function it could either be that:
>>>>>> * The allocation did not succeed, somehow, but the firmware still
>>>> returned
>>>>>> EFI_SUCCEED.
>>>>>> * The size requested is incorrect (I'm thinking something like a 1G of
>>>>>> log). This would be due to either a miscalculation of log_size
>>>> (possible)
>>>>>> or; the returned values of GetEventLog are not correct.
>>>>>> I'm sending a patch to add checks for these. Could you please apply and
>>>>>> retest?
>>>>>> Again, thanks for helping debugging this.
>>>>
>>>>> No problem, thanks for the help :)
>>>>
>>>>> With the new patch:
>>>>
>>>>> Locating the TCG2Protocol
>>>>> Calling GetEventLog on TCG2Protocol
>>>>> Log returned
>>>>> log_location is not empty
>>>>> log_size != 0
>>>>> log_size < 1M
>>>>> Allocating memory for storing the logs
>>>>> Returned from memory allocation
>>>>> Copying log to new location
>>>>
>>>>> And then it hangs. I added a couple more print statements:
>>>>
>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>> index ee3fac109078..1ab5638bc50e 100644
>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>> @@ -148,8 +148,11 @@ void
>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>          efi_printk(sys_table_arg, "Copying log to new location\n");
>>>>
>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
>>>>>          log_tbl->size = log_size;
>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
>>>>
>>>>>          efi_printk(sys_table_arg, "Installing the log into the
>>>> configuration table\n");
>>>>
>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
>>>>
>>>> Thanks. Well, it looks like the memory that is supposedly allocated is not
>>>> usable. I'm thinking this is a firmware bug.
>>>> Ard, would you agree on this assumption? Thoughts on how to proceed?
>>>>
>>>
>>> I am rather puzzled why the allocate_pool() should succeed and the
>>> subsequent memset() should fail. This does not look like an issue that
>>> is intimately related to TPM2 support, rather an issue in the firmware
>>> that happens to get tickled after the change.
>>>
>>> Would you mind trying replacing EFI_LOADER_DATA with
>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>>
>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at the
>> memset() call.
>>
> 
> Could you try the following please? (attached as well in case gmail mangles it)
> 
> diff --git a/drivers/firmware/efi/libstub/tpm.c
> b/drivers/firmware/efi/libstub/tpm.c
> index 2298560cea72..30d960a344b7 100644
> --- a/drivers/firmware/efi/libstub/tpm.c
> +++ b/drivers/firmware/efi/libstub/tpm.c
> @@ -70,6 +70,8 @@ void
> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>         size_t log_size, last_entry_size;
>         efi_bool_t truncated;
>         void *tcg2_protocol;
> +       unsigned long num_pages;
> +       efi_physical_addr_t log_tbl_alloc;
> 
>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>                                 &tcg2_protocol);
> @@ -104,9 +106,12 @@ void
> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>         }
> 
>         /* Allocate space for the logs and copy them. */
> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
> -                               sizeof(*log_tbl) + log_size,
> -                               (void **) &log_tbl);
> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size, EFI_PAGE_SIZE);
> +       status = efi_call_early(allocate_pages,
> +                               EFI_ALLOCATE_ANY_PAGES,
> +                               EFI_LOADER_DATA,
> +                               num_pages,
> +                               &log_tbl_alloc);
> 
>         if (status != EFI_SUCCESS) {
>                 efi_printk(sys_table_arg,
> @@ -114,6 +119,7 @@ void
> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>                 return;
>         }
> 
> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned long)log_tbl_alloc;
>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>         log_tbl->size = log_size;
>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> @@ -126,7 +132,7 @@ void
> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>         return;
> 
>  err_free:
> -       efi_call_early(free_pool, log_tbl);
> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>  }
> 
>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
> 

Hi Ard,

When I apply this, it starts hanging at

status = efi_call_proto(efi_tcg2_protocol, get_event_log, tcg2_protocol,
                        EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
                        &log_location, &log_last_entry, &truncated);

rather than at the memset() call.

Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 17:01                           ` Jeremy Cline
@ 2018-03-12 17:30                             ` Ard Biesheuvel
  2018-03-12 18:29                               ` Thiebaud Weksteen
  2018-03-12 18:30                               ` Jeremy Cline
  0 siblings, 2 replies; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-12 17:30 UTC (permalink / raw)
  To: Jeremy Cline
  Cc: Thiebaud Weksteen, Hans de Goede, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com> wrote:
>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
>>>>>
>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
>>>>>>> Thanks a lot for trying out the patch!
>>>>>>>
>>>>>>> Please don't modify your install at this stage, I think we are hitting a
>>>>>>> firmware bug and that would be awesome if we can fix how we are
>>>>> handling it.
>>>>>>> So, if we reach that stage in the function it could either be that:
>>>>>>> * The allocation did not succeed, somehow, but the firmware still
>>>>> returned
>>>>>>> EFI_SUCCEED.
>>>>>>> * The size requested is incorrect (I'm thinking something like a 1G of
>>>>>>> log). This would be due to either a miscalculation of log_size
>>>>> (possible)
>>>>>>> or; the returned values of GetEventLog are not correct.
>>>>>>> I'm sending a patch to add checks for these. Could you please apply and
>>>>>>> retest?
>>>>>>> Again, thanks for helping debugging this.
>>>>>
>>>>>> No problem, thanks for the help :)
>>>>>
>>>>>> With the new patch:
>>>>>
>>>>>> Locating the TCG2Protocol
>>>>>> Calling GetEventLog on TCG2Protocol
>>>>>> Log returned
>>>>>> log_location is not empty
>>>>>> log_size != 0
>>>>>> log_size < 1M
>>>>>> Allocating memory for storing the logs
>>>>>> Returned from memory allocation
>>>>>> Copying log to new location
>>>>>
>>>>>> And then it hangs. I added a couple more print statements:
>>>>>
>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>> index ee3fac109078..1ab5638bc50e 100644
>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>> @@ -148,8 +148,11 @@ void
>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>          efi_printk(sys_table_arg, "Copying log to new location\n");
>>>>>
>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
>>>>>>          log_tbl->size = log_size;
>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
>>>>>
>>>>>>          efi_printk(sys_table_arg, "Installing the log into the
>>>>> configuration table\n");
>>>>>
>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
>>>>>
>>>>> Thanks. Well, it looks like the memory that is supposedly allocated is not
>>>>> usable. I'm thinking this is a firmware bug.
>>>>> Ard, would you agree on this assumption? Thoughts on how to proceed?
>>>>>
>>>>
>>>> I am rather puzzled why the allocate_pool() should succeed and the
>>>> subsequent memset() should fail. This does not look like an issue that
>>>> is intimately related to TPM2 support, rather an issue in the firmware
>>>> that happens to get tickled after the change.
>>>>
>>>> Would you mind trying replacing EFI_LOADER_DATA with
>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>>>
>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at the
>>> memset() call.
>>>
>>
>> Could you try the following please? (attached as well in case gmail mangles it)
>>
>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>> b/drivers/firmware/efi/libstub/tpm.c
>> index 2298560cea72..30d960a344b7 100644
>> --- a/drivers/firmware/efi/libstub/tpm.c
>> +++ b/drivers/firmware/efi/libstub/tpm.c
>> @@ -70,6 +70,8 @@ void
>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>         size_t log_size, last_entry_size;
>>         efi_bool_t truncated;
>>         void *tcg2_protocol;
>> +       unsigned long num_pages;
>> +       efi_physical_addr_t log_tbl_alloc;
>>
>>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>>                                 &tcg2_protocol);
>> @@ -104,9 +106,12 @@ void
>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>         }
>>
>>         /* Allocate space for the logs and copy them. */
>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
>> -                               sizeof(*log_tbl) + log_size,
>> -                               (void **) &log_tbl);
>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size, EFI_PAGE_SIZE);
>> +       status = efi_call_early(allocate_pages,
>> +                               EFI_ALLOCATE_ANY_PAGES,
>> +                               EFI_LOADER_DATA,
>> +                               num_pages,
>> +                               &log_tbl_alloc);
>>
>>         if (status != EFI_SUCCESS) {
>>                 efi_printk(sys_table_arg,
>> @@ -114,6 +119,7 @@ void
>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>                 return;
>>         }
>>
>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned long)log_tbl_alloc;
>>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>         log_tbl->size = log_size;
>>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>> @@ -126,7 +132,7 @@ void
>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>         return;
>>
>>  err_free:
>> -       efi_call_early(free_pool, log_tbl);
>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>>  }
>>
>>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
>>
>
> Hi Ard,
>
> When I apply this, it starts hanging at
>
> status = efi_call_proto(efi_tcg2_protocol, get_event_log, tcg2_protocol,
>                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
>                         &log_location, &log_last_entry, &truncated);
>
> rather than at the memset() call.
>

That is *very* surprising, given that the change only affects code
that executes after that.

I understand how annoying this is for you, and I think we should try
to fix this, but reverting the patches outright isn't the solution
either.

Which UEFI vendor and version does your system report?

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 17:30                             ` Ard Biesheuvel
@ 2018-03-12 18:29                               ` Thiebaud Weksteen
  2018-03-12 18:33                                 ` Jeremy Cline
  2018-03-12 18:30                               ` Jeremy Cline
  1 sibling, 1 reply; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-12 18:29 UTC (permalink / raw)
  To: Jeremy Cline
  Cc: hdegoede, Ard Biesheuvel, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	linux-kernel

On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <ard.biesheuvel@linaro.org>
wrote:

> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
> > On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
> >> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
> >>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
> >>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
wrote:
> >>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
wrote:
> >>>>>
> >>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
> >>>>>>> Thanks a lot for trying out the patch!
> >>>>>>>
> >>>>>>> Please don't modify your install at this stage, I think we are
hitting a
> >>>>>>> firmware bug and that would be awesome if we can fix how we are
> >>>>> handling it.
> >>>>>>> So, if we reach that stage in the function it could either be
that:
> >>>>>>> * The allocation did not succeed, somehow, but the firmware still
> >>>>> returned
> >>>>>>> EFI_SUCCEED.
> >>>>>>> * The size requested is incorrect (I'm thinking something like a
1G of
> >>>>>>> log). This would be due to either a miscalculation of log_size
> >>>>> (possible)
> >>>>>>> or; the returned values of GetEventLog are not correct.
> >>>>>>> I'm sending a patch to add checks for these. Could you please
apply and
> >>>>>>> retest?
> >>>>>>> Again, thanks for helping debugging this.
> >>>>>
> >>>>>> No problem, thanks for the help :)
> >>>>>
> >>>>>> With the new patch:
> >>>>>
> >>>>>> Locating the TCG2Protocol
> >>>>>> Calling GetEventLog on TCG2Protocol
> >>>>>> Log returned
> >>>>>> log_location is not empty
> >>>>>> log_size != 0
> >>>>>> log_size < 1M
> >>>>>> Allocating memory for storing the logs
> >>>>>> Returned from memory allocation
> >>>>>> Copying log to new location
> >>>>>
> >>>>>> And then it hangs. I added a couple more print statements:
> >>>>>
> >>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
> >>>>> b/drivers/firmware/efi/libstub/tpm.c
> >>>>>> index ee3fac109078..1ab5638bc50e 100644
> >>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
> >>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
> >>>>>> @@ -148,8 +148,11 @@ void
> >>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>>>>>          efi_printk(sys_table_arg, "Copying log to new
location\n");
> >>>>>
> >>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
> >>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to
0\n");
> >>>>>>          log_tbl->size = log_size;
> >>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
> >>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> >>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
> >>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
> >>>>>
> >>>>>>          efi_printk(sys_table_arg, "Installing the log into the
> >>>>> configuration table\n");
> >>>>>
> >>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
log_size);"
> >>>>>
> >>>>> Thanks. Well, it looks like the memory that is supposedly allocated
is not
> >>>>> usable. I'm thinking this is a firmware bug.
> >>>>> Ard, would you agree on this assumption? Thoughts on how to proceed?
> >>>>>
> >>>>
> >>>> I am rather puzzled why the allocate_pool() should succeed and the
> >>>> subsequent memset() should fail. This does not look like an issue
that
> >>>> is intimately related to TPM2 support, rather an issue in the
firmware
> >>>> that happens to get tickled after the change.
> >>>>
> >>>> Would you mind trying replacing EFI_LOADER_DATA with
> >>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
> >>>
> >>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at
the
> >>> memset() call.
> >>>
> >>
> >> Could you try the following please? (attached as well in case gmail
mangles it)
> >>
> >> diff --git a/drivers/firmware/efi/libstub/tpm.c
> >> b/drivers/firmware/efi/libstub/tpm.c
> >> index 2298560cea72..30d960a344b7 100644
> >> --- a/drivers/firmware/efi/libstub/tpm.c
> >> +++ b/drivers/firmware/efi/libstub/tpm.c
> >> @@ -70,6 +70,8 @@ void
> >> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>         size_t log_size, last_entry_size;
> >>         efi_bool_t truncated;
> >>         void *tcg2_protocol;
> >> +       unsigned long num_pages;
> >> +       efi_physical_addr_t log_tbl_alloc;
> >>
> >>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
> >>                                 &tcg2_protocol);
> >> @@ -104,9 +106,12 @@ void
> >> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>         }
> >>
> >>         /* Allocate space for the logs and copy them. */
> >> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
> >> -                               sizeof(*log_tbl) + log_size,
> >> -                               (void **) &log_tbl);
> >> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
EFI_PAGE_SIZE);
> >> +       status = efi_call_early(allocate_pages,
> >> +                               EFI_ALLOCATE_ANY_PAGES,
> >> +                               EFI_LOADER_DATA,
> >> +                               num_pages,
> >> +                               &log_tbl_alloc);
> >>
> >>         if (status != EFI_SUCCESS) {
> >>                 efi_printk(sys_table_arg,
> >> @@ -114,6 +119,7 @@ void
> >> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>                 return;
> >>         }
> >>
> >> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
long)log_tbl_alloc;
> >>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
> >>         log_tbl->size = log_size;
> >>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> >> @@ -126,7 +132,7 @@ void
> >> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>         return;
> >>
> >>  err_free:
> >> -       efi_call_early(free_pool, log_tbl);
> >> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
> >>  }
> >>
> >>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
> >>
> >
> > Hi Ard,
> >
> > When I apply this, it starts hanging at
> >
> > status = efi_call_proto(efi_tcg2_protocol, get_event_log, tcg2_protocol,
> >                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
> >                         &log_location, &log_last_entry, &truncated);
> >
> > rather than at the memset() call.
> >

> That is *very* surprising, given that the change only affects code
> that executes after that.

> I understand how annoying this is for you, and I think we should try
> to fix this, but reverting the patches outright isn't the solution
> either.

> Which UEFI vendor and version does your system report?

You should be able to find this info using the "ver" command in the UEFI
shell.
The UEFI vendor is Insyde (see first message).

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 17:30                             ` Ard Biesheuvel
  2018-03-12 18:29                               ` Thiebaud Weksteen
@ 2018-03-12 18:30                               ` Jeremy Cline
  1 sibling, 0 replies; 39+ messages in thread
From: Jeremy Cline @ 2018-03-12 18:30 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Thiebaud Weksteen, Hans de Goede, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 03/12/2018 01:30 PM, Ard Biesheuvel wrote:
> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com> wrote:
>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
>>>>>>
>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
>>>>>>>> Thanks a lot for trying out the patch!
>>>>>>>>
>>>>>>>> Please don't modify your install at this stage, I think we are hitting a
>>>>>>>> firmware bug and that would be awesome if we can fix how we are
>>>>>> handling it.
>>>>>>>> So, if we reach that stage in the function it could either be that:
>>>>>>>> * The allocation did not succeed, somehow, but the firmware still
>>>>>> returned
>>>>>>>> EFI_SUCCEED.
>>>>>>>> * The size requested is incorrect (I'm thinking something like a 1G of
>>>>>>>> log). This would be due to either a miscalculation of log_size
>>>>>> (possible)
>>>>>>>> or; the returned values of GetEventLog are not correct.
>>>>>>>> I'm sending a patch to add checks for these. Could you please apply and
>>>>>>>> retest?
>>>>>>>> Again, thanks for helping debugging this.
>>>>>>
>>>>>>> No problem, thanks for the help :)
>>>>>>
>>>>>>> With the new patch:
>>>>>>
>>>>>>> Locating the TCG2Protocol
>>>>>>> Calling GetEventLog on TCG2Protocol
>>>>>>> Log returned
>>>>>>> log_location is not empty
>>>>>>> log_size != 0
>>>>>>> log_size < 1M
>>>>>>> Allocating memory for storing the logs
>>>>>>> Returned from memory allocation
>>>>>>> Copying log to new location
>>>>>>
>>>>>>> And then it hangs. I added a couple more print statements:
>>>>>>
>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>>> index ee3fac109078..1ab5638bc50e 100644
>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>>> @@ -148,8 +148,11 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>          efi_printk(sys_table_arg, "Copying log to new location\n");
>>>>>>
>>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to 0\n");
>>>>>>>          log_tbl->size = log_size;
>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
>>>>>>
>>>>>>>          efi_printk(sys_table_arg, "Installing the log into the
>>>>>> configuration table\n");
>>>>>>
>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
>>>>>>
>>>>>> Thanks. Well, it looks like the memory that is supposedly allocated is not
>>>>>> usable. I'm thinking this is a firmware bug.
>>>>>> Ard, would you agree on this assumption? Thoughts on how to proceed?
>>>>>>
>>>>>
>>>>> I am rather puzzled why the allocate_pool() should succeed and the
>>>>> subsequent memset() should fail. This does not look like an issue that
>>>>> is intimately related to TPM2 support, rather an issue in the firmware
>>>>> that happens to get tickled after the change.
>>>>>
>>>>> Would you mind trying replacing EFI_LOADER_DATA with
>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>>>>
>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at the
>>>> memset() call.
>>>>
>>>
>>> Could you try the following please? (attached as well in case gmail mangles it)
>>>
>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>> b/drivers/firmware/efi/libstub/tpm.c
>>> index 2298560cea72..30d960a344b7 100644
>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>> @@ -70,6 +70,8 @@ void
>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>         size_t log_size, last_entry_size;
>>>         efi_bool_t truncated;
>>>         void *tcg2_protocol;
>>> +       unsigned long num_pages;
>>> +       efi_physical_addr_t log_tbl_alloc;
>>>
>>>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>>>                                 &tcg2_protocol);
>>> @@ -104,9 +106,12 @@ void
>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>         }
>>>
>>>         /* Allocate space for the logs and copy them. */
>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
>>> -                               sizeof(*log_tbl) + log_size,
>>> -                               (void **) &log_tbl);
>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size, EFI_PAGE_SIZE);
>>> +       status = efi_call_early(allocate_pages,
>>> +                               EFI_ALLOCATE_ANY_PAGES,
>>> +                               EFI_LOADER_DATA,
>>> +                               num_pages,
>>> +                               &log_tbl_alloc);
>>>
>>>         if (status != EFI_SUCCESS) {
>>>                 efi_printk(sys_table_arg,
>>> @@ -114,6 +119,7 @@ void
>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>                 return;
>>>         }
>>>
>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned long)log_tbl_alloc;
>>>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>         log_tbl->size = log_size;
>>>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>> @@ -126,7 +132,7 @@ void
>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>         return;
>>>
>>>  err_free:
>>> -       efi_call_early(free_pool, log_tbl);
>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>>>  }
>>>
>>>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
>>>
>>
>> Hi Ard,
>>
>> When I apply this, it starts hanging at
>>
>> status = efi_call_proto(efi_tcg2_protocol, get_event_log, tcg2_protocol,
>>                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
>>                         &log_location, &log_last_entry, &truncated);
>>
>> rather than at the memset() call.
>>
> 
> That is *very* surprising, given that the change only affects code
> that executes after that.

Yeah, I triple-checked because I was so surprised.

> I understand how annoying this is for you, and I think we should try
> to fix this, but reverting the patches outright isn't the solution
> either.

Completely understandable and I'm not the least bit annoyed :)

In case you missed it, Hans has the exact same tablet (I got this one
from him) and he can't reproduce it, but the one he sent me isn't using
shim and has a RHEL build of grub. At Thiebaud's request I didn't change
anything about the setup, but I'm guessing if I restore it to use the
Fedora setup the problem won't appear. I'm happy to make a backup and
verify this hypothesis.

> 
> Which UEFI vendor and version does your system report?
> 

It's InsydeH20 version BYT70A.YNCHENG.WIN.007

Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 18:29                               ` Thiebaud Weksteen
@ 2018-03-12 18:33                                 ` Jeremy Cline
  2018-03-12 19:55                                   ` Thiebaud Weksteen
  0 siblings, 1 reply; 39+ messages in thread
From: Jeremy Cline @ 2018-03-12 18:33 UTC (permalink / raw)
  To: Thiebaud Weksteen
  Cc: hdegoede, Ard Biesheuvel, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	linux-kernel

On 03/12/2018 02:29 PM, Thiebaud Weksteen wrote:
> On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <ard.biesheuvel@linaro.org>
> wrote:
> 
>> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
>>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
>>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
> wrote:
>>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
> wrote:
>>>>>>>
>>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen wrote:
>>>>>>>>> Thanks a lot for trying out the patch!
>>>>>>>>>
>>>>>>>>> Please don't modify your install at this stage, I think we are
> hitting a
>>>>>>>>> firmware bug and that would be awesome if we can fix how we are
>>>>>>> handling it.
>>>>>>>>> So, if we reach that stage in the function it could either be
> that:
>>>>>>>>> * The allocation did not succeed, somehow, but the firmware still
>>>>>>> returned
>>>>>>>>> EFI_SUCCEED.
>>>>>>>>> * The size requested is incorrect (I'm thinking something like a
> 1G of
>>>>>>>>> log). This would be due to either a miscalculation of log_size
>>>>>>> (possible)
>>>>>>>>> or; the returned values of GetEventLog are not correct.
>>>>>>>>> I'm sending a patch to add checks for these. Could you please
> apply and
>>>>>>>>> retest?
>>>>>>>>> Again, thanks for helping debugging this.
>>>>>>>
>>>>>>>> No problem, thanks for the help :)
>>>>>>>
>>>>>>>> With the new patch:
>>>>>>>
>>>>>>>> Locating the TCG2Protocol
>>>>>>>> Calling GetEventLog on TCG2Protocol
>>>>>>>> Log returned
>>>>>>>> log_location is not empty
>>>>>>>> log_size != 0
>>>>>>>> log_size < 1M
>>>>>>>> Allocating memory for storing the logs
>>>>>>>> Returned from memory allocation
>>>>>>>> Copying log to new location
>>>>>>>
>>>>>>>> And then it hangs. I added a couple more print statements:
>>>>>>>
>>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>> index ee3fac109078..1ab5638bc50e 100644
>>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>> @@ -148,8 +148,11 @@ void
>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>>          efi_printk(sys_table_arg, "Copying log to new
> location\n");
>>>>>>>
>>>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to
> 0\n");
>>>>>>>>          log_tbl->size = log_size;
>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr, log_size);
>>>>>>>
>>>>>>>>          efi_printk(sys_table_arg, "Installing the log into the
>>>>>>> configuration table\n");
>>>>>>>
>>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
> log_size);"
>>>>>>>
>>>>>>> Thanks. Well, it looks like the memory that is supposedly allocated
> is not
>>>>>>> usable. I'm thinking this is a firmware bug.
>>>>>>> Ard, would you agree on this assumption? Thoughts on how to proceed?
>>>>>>>
>>>>>>
>>>>>> I am rather puzzled why the allocate_pool() should succeed and the
>>>>>> subsequent memset() should fail. This does not look like an issue
> that
>>>>>> is intimately related to TPM2 support, rather an issue in the
> firmware
>>>>>> that happens to get tickled after the change.
>>>>>>
>>>>>> Would you mind trying replacing EFI_LOADER_DATA with
>>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>>>>>
>>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at
> the
>>>>> memset() call.
>>>>>
>>>>
>>>> Could you try the following please? (attached as well in case gmail
> mangles it)
>>>>
>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>> index 2298560cea72..30d960a344b7 100644
>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>> @@ -70,6 +70,8 @@ void
>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>         size_t log_size, last_entry_size;
>>>>         efi_bool_t truncated;
>>>>         void *tcg2_protocol;
>>>> +       unsigned long num_pages;
>>>> +       efi_physical_addr_t log_tbl_alloc;
>>>>
>>>>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>>>>                                 &tcg2_protocol);
>>>> @@ -104,9 +106,12 @@ void
>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>         }
>>>>
>>>>         /* Allocate space for the logs and copy them. */
>>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
>>>> -                               sizeof(*log_tbl) + log_size,
>>>> -                               (void **) &log_tbl);
>>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
> EFI_PAGE_SIZE);
>>>> +       status = efi_call_early(allocate_pages,
>>>> +                               EFI_ALLOCATE_ANY_PAGES,
>>>> +                               EFI_LOADER_DATA,
>>>> +                               num_pages,
>>>> +                               &log_tbl_alloc);
>>>>
>>>>         if (status != EFI_SUCCESS) {
>>>>                 efi_printk(sys_table_arg,
>>>> @@ -114,6 +119,7 @@ void
>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>                 return;
>>>>         }
>>>>
>>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
> long)log_tbl_alloc;
>>>>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>         log_tbl->size = log_size;
>>>>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>> @@ -126,7 +132,7 @@ void
>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>         return;
>>>>
>>>>  err_free:
>>>> -       efi_call_early(free_pool, log_tbl);
>>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>>>>  }
>>>>
>>>>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
>>>>
>>>
>>> Hi Ard,
>>>
>>> When I apply this, it starts hanging at
>>>
>>> status = efi_call_proto(efi_tcg2_protocol, get_event_log, tcg2_protocol,
>>>                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
>>>                         &log_location, &log_last_entry, &truncated);
>>>
>>> rather than at the memset() call.
>>>
> 
>> That is *very* surprising, given that the change only affects code
>> that executes after that.
> 
>> I understand how annoying this is for you, and I think we should try
>> to fix this, but reverting the patches outright isn't the solution
>> either.
> 
>> Which UEFI vendor and version does your system report?
> 
> You should be able to find this info using the "ver" command in the UEFI
> shell.
> The UEFI vendor is Insyde (see first message).
> 

Ah, thanks!

EFI Specification Revision	: 2.40
EFI Vendor			: INSYDE Corp.
EFI Revision			: 21573.83

Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 18:33                                 ` Jeremy Cline
@ 2018-03-12 19:55                                   ` Thiebaud Weksteen
  2018-03-12 21:02                                     ` Ard Biesheuvel
                                                       ` (2 more replies)
  0 siblings, 3 replies; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-12 19:55 UTC (permalink / raw)
  To: Jeremy Cline, hdegoede
  Cc: Ard Biesheuvel, Javier Martinez Canillas, Jarkko Sakkinen,
	linux-efi, linux-integrity, tpmdd-devel, linux-kernel

On Mon, Mar 12, 2018 at 7:33 PM Jeremy Cline <jeremy@jcline.org> wrote:

> On 03/12/2018 02:29 PM, Thiebaud Weksteen wrote:
> > On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <
ard.biesheuvel@linaro.org>
> > wrote:
> >
> >> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
> >>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
> >>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
> >>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
> >>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
> > wrote:
> >>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
> > wrote:
> >>>>>>>
> >>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen
wrote:
> >>>>>>>>> Thanks a lot for trying out the patch!
> >>>>>>>>>
> >>>>>>>>> Please don't modify your install at this stage, I think we are
> > hitting a
> >>>>>>>>> firmware bug and that would be awesome if we can fix how we are
> >>>>>>> handling it.
> >>>>>>>>> So, if we reach that stage in the function it could either be
> > that:
> >>>>>>>>> * The allocation did not succeed, somehow, but the firmware
still
> >>>>>>> returned
> >>>>>>>>> EFI_SUCCEED.
> >>>>>>>>> * The size requested is incorrect (I'm thinking something like a
> > 1G of
> >>>>>>>>> log). This would be due to either a miscalculation of log_size
> >>>>>>> (possible)
> >>>>>>>>> or; the returned values of GetEventLog are not correct.
> >>>>>>>>> I'm sending a patch to add checks for these. Could you please
> > apply and
> >>>>>>>>> retest?
> >>>>>>>>> Again, thanks for helping debugging this.
> >>>>>>>
> >>>>>>>> No problem, thanks for the help :)
> >>>>>>>
> >>>>>>>> With the new patch:
> >>>>>>>
> >>>>>>>> Locating the TCG2Protocol
> >>>>>>>> Calling GetEventLog on TCG2Protocol
> >>>>>>>> Log returned
> >>>>>>>> log_location is not empty
> >>>>>>>> log_size != 0
> >>>>>>>> log_size < 1M
> >>>>>>>> Allocating memory for storing the logs
> >>>>>>>> Returned from memory allocation
> >>>>>>>> Copying log to new location
> >>>>>>>
> >>>>>>>> And then it hangs. I added a couple more print statements:
> >>>>>>>
> >>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
> >>>>>>> b/drivers/firmware/efi/libstub/tpm.c
> >>>>>>>> index ee3fac109078..1ab5638bc50e 100644
> >>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
> >>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
> >>>>>>>> @@ -148,8 +148,11 @@ void
> >>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>>>>>>>          efi_printk(sys_table_arg, "Copying log to new
> > location\n");
> >>>>>>>
> >>>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
> >>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to
> > 0\n");
> >>>>>>>>          log_tbl->size = log_size;
> >>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
> >>>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> >>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
> >>>>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr,
log_size);
> >>>>>>>
> >>>>>>>>          efi_printk(sys_table_arg, "Installing the log into the
> >>>>>>> configuration table\n");
> >>>>>>>
> >>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
> > log_size);"
> >>>>>>>
> >>>>>>> Thanks. Well, it looks like the memory that is supposedly
allocated
> > is not
> >>>>>>> usable. I'm thinking this is a firmware bug.
> >>>>>>> Ard, would you agree on this assumption? Thoughts on how to
proceed?
> >>>>>>>
> >>>>>>
> >>>>>> I am rather puzzled why the allocate_pool() should succeed and the
> >>>>>> subsequent memset() should fail. This does not look like an issue
> > that
> >>>>>> is intimately related to TPM2 support, rather an issue in the
> > firmware
> >>>>>> that happens to get tickled after the change.
> >>>>>>
> >>>>>> Would you mind trying replacing EFI_LOADER_DATA with
> >>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
> >>>>>
> >>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at
> > the
> >>>>> memset() call.
> >>>>>
> >>>>
> >>>> Could you try the following please? (attached as well in case gmail
> > mangles it)
> >>>>
> >>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
> >>>> b/drivers/firmware/efi/libstub/tpm.c
> >>>> index 2298560cea72..30d960a344b7 100644
> >>>> --- a/drivers/firmware/efi/libstub/tpm.c
> >>>> +++ b/drivers/firmware/efi/libstub/tpm.c
> >>>> @@ -70,6 +70,8 @@ void
> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>>>         size_t log_size, last_entry_size;
> >>>>         efi_bool_t truncated;
> >>>>         void *tcg2_protocol;
> >>>> +       unsigned long num_pages;
> >>>> +       efi_physical_addr_t log_tbl_alloc;
> >>>>
> >>>>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
> >>>>                                 &tcg2_protocol);
> >>>> @@ -104,9 +106,12 @@ void
> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>>>         }
> >>>>
> >>>>         /* Allocate space for the logs and copy them. */
> >>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
> >>>> -                               sizeof(*log_tbl) + log_size,
> >>>> -                               (void **) &log_tbl);
> >>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
> > EFI_PAGE_SIZE);
> >>>> +       status = efi_call_early(allocate_pages,
> >>>> +                               EFI_ALLOCATE_ANY_PAGES,
> >>>> +                               EFI_LOADER_DATA,
> >>>> +                               num_pages,
> >>>> +                               &log_tbl_alloc);
> >>>>
> >>>>         if (status != EFI_SUCCESS) {
> >>>>                 efi_printk(sys_table_arg,
> >>>> @@ -114,6 +119,7 @@ void
> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>>>                 return;
> >>>>         }
> >>>>
> >>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
> > long)log_tbl_alloc;
> >>>>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
> >>>>         log_tbl->size = log_size;
> >>>>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> >>>> @@ -126,7 +132,7 @@ void
> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >>>>         return;
> >>>>
> >>>>  err_free:
> >>>> -       efi_call_early(free_pool, log_tbl);
> >>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
> >>>>  }
> >>>>
> >>>>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
> >>>>
> >>>
> >>> Hi Ard,
> >>>
> >>> When I apply this, it starts hanging at
> >>>
> >>> status = efi_call_proto(efi_tcg2_protocol, get_event_log,
tcg2_protocol,
> >>>                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
> >>>                         &log_location, &log_last_entry, &truncated);
> >>>
> >>> rather than at the memset() call.
> >>>
> >
> >> That is *very* surprising, given that the change only affects code
> >> that executes after that.
> >

Hans, you said you configured the tablet to use the 32-bit version of grub
instead
of 64. Why's that?

Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
your Android install working? (that is, what happens if you boot Boot0000)?

> >> I understand how annoying this is for you, and I think we should try
> >> to fix this, but reverting the patches outright isn't the solution
> >> either.
> >
> >> Which UEFI vendor and version does your system report?
> >
> > You should be able to find this info using the "ver" command in the UEFI
> > shell.
> > The UEFI vendor is Insyde (see first message).
> >

> Ah, thanks!

> EFI Specification Revision      : 2.40
> EFI Vendor                      : INSYDE Corp.
> EFI Revision                    : 21573.83

> Regards,
> Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 19:55                                   ` Thiebaud Weksteen
@ 2018-03-12 21:02                                     ` Ard Biesheuvel
  2018-03-13  7:24                                       ` Thiebaud Weksteen
  2018-03-13  8:08                                       ` Hans de Goede
  2018-03-13  1:50                                     ` Jeremy Cline
  2018-03-13  7:47                                     ` Hans de Goede
  2 siblings, 2 replies; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-12 21:02 UTC (permalink / raw)
  To: Thiebaud Weksteen
  Cc: Jeremy Cline, Hans de Goede, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 12 March 2018 at 19:55, Thiebaud Weksteen <tweek@google.com> wrote:
> On Mon, Mar 12, 2018 at 7:33 PM Jeremy Cline <jeremy@jcline.org> wrote:
>
>> On 03/12/2018 02:29 PM, Thiebaud Weksteen wrote:
>> > On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <
> ard.biesheuvel@linaro.org>
>> > wrote:
>> >
>> >> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
>> >>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
>> >>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>> >>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>> >>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
>> > wrote:
>> >>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
>> > wrote:
>> >>>>>>>
>> >>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen
> wrote:
>> >>>>>>>>> Thanks a lot for trying out the patch!
>> >>>>>>>>>
>> >>>>>>>>> Please don't modify your install at this stage, I think we are
>> > hitting a
>> >>>>>>>>> firmware bug and that would be awesome if we can fix how we are
>> >>>>>>> handling it.
>> >>>>>>>>> So, if we reach that stage in the function it could either be
>> > that:
>> >>>>>>>>> * The allocation did not succeed, somehow, but the firmware
> still
>> >>>>>>> returned
>> >>>>>>>>> EFI_SUCCEED.
>> >>>>>>>>> * The size requested is incorrect (I'm thinking something like a
>> > 1G of
>> >>>>>>>>> log). This would be due to either a miscalculation of log_size
>> >>>>>>> (possible)
>> >>>>>>>>> or; the returned values of GetEventLog are not correct.
>> >>>>>>>>> I'm sending a patch to add checks for these. Could you please
>> > apply and
>> >>>>>>>>> retest?
>> >>>>>>>>> Again, thanks for helping debugging this.
>> >>>>>>>
>> >>>>>>>> No problem, thanks for the help :)
>> >>>>>>>
>> >>>>>>>> With the new patch:
>> >>>>>>>
>> >>>>>>>> Locating the TCG2Protocol
>> >>>>>>>> Calling GetEventLog on TCG2Protocol
>> >>>>>>>> Log returned
>> >>>>>>>> log_location is not empty
>> >>>>>>>> log_size != 0
>> >>>>>>>> log_size < 1M
>> >>>>>>>> Allocating memory for storing the logs
>> >>>>>>>> Returned from memory allocation
>> >>>>>>>> Copying log to new location
>> >>>>>>>
>> >>>>>>>> And then it hangs. I added a couple more print statements:
>> >>>>>>>
>> >>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>> >>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>> >>>>>>>> index ee3fac109078..1ab5638bc50e 100644
>> >>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>> >>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>> >>>>>>>> @@ -148,8 +148,11 @@ void
>> >>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>> >>>>>>>>          efi_printk(sys_table_arg, "Copying log to new
>> > location\n");
>> >>>>>>>
>> >>>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>> >>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to
>> > 0\n");
>> >>>>>>>>          log_tbl->size = log_size;
>> >>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>> >>>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>> >>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>> >>>>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr,
> log_size);
>> >>>>>>>
>> >>>>>>>>          efi_printk(sys_table_arg, "Installing the log into the
>> >>>>>>> configuration table\n");
>> >>>>>>>
>> >>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
>> > log_size);"
>> >>>>>>>
>> >>>>>>> Thanks. Well, it looks like the memory that is supposedly
> allocated
>> > is not
>> >>>>>>> usable. I'm thinking this is a firmware bug.
>> >>>>>>> Ard, would you agree on this assumption? Thoughts on how to
> proceed?
>> >>>>>>>
>> >>>>>>
>> >>>>>> I am rather puzzled why the allocate_pool() should succeed and the
>> >>>>>> subsequent memset() should fail. This does not look like an issue
>> > that
>> >>>>>> is intimately related to TPM2 support, rather an issue in the
>> > firmware
>> >>>>>> that happens to get tickled after the change.
>> >>>>>>
>> >>>>>> Would you mind trying replacing EFI_LOADER_DATA with
>> >>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>> >>>>>
>> >>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at
>> > the
>> >>>>> memset() call.
>> >>>>>
>> >>>>
>> >>>> Could you try the following please? (attached as well in case gmail
>> > mangles it)
>> >>>>
>> >>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>> >>>> b/drivers/firmware/efi/libstub/tpm.c
>> >>>> index 2298560cea72..30d960a344b7 100644
>> >>>> --- a/drivers/firmware/efi/libstub/tpm.c
>> >>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>> >>>> @@ -70,6 +70,8 @@ void
>> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>> >>>>         size_t log_size, last_entry_size;
>> >>>>         efi_bool_t truncated;
>> >>>>         void *tcg2_protocol;
>> >>>> +       unsigned long num_pages;
>> >>>> +       efi_physical_addr_t log_tbl_alloc;
>> >>>>
>> >>>>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>> >>>>                                 &tcg2_protocol);
>> >>>> @@ -104,9 +106,12 @@ void
>> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>> >>>>         }
>> >>>>
>> >>>>         /* Allocate space for the logs and copy them. */
>> >>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
>> >>>> -                               sizeof(*log_tbl) + log_size,
>> >>>> -                               (void **) &log_tbl);
>> >>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
>> > EFI_PAGE_SIZE);
>> >>>> +       status = efi_call_early(allocate_pages,
>> >>>> +                               EFI_ALLOCATE_ANY_PAGES,
>> >>>> +                               EFI_LOADER_DATA,
>> >>>> +                               num_pages,
>> >>>> +                               &log_tbl_alloc);
>> >>>>
>> >>>>         if (status != EFI_SUCCESS) {
>> >>>>                 efi_printk(sys_table_arg,
>> >>>> @@ -114,6 +119,7 @@ void
>> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>> >>>>                 return;
>> >>>>         }
>> >>>>
>> >>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
>> > long)log_tbl_alloc;
>> >>>>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>> >>>>         log_tbl->size = log_size;
>> >>>>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>> >>>> @@ -126,7 +132,7 @@ void
>> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>> >>>>         return;
>> >>>>
>> >>>>  err_free:
>> >>>> -       efi_call_early(free_pool, log_tbl);
>> >>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>> >>>>  }
>> >>>>
>> >>>>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
>> >>>>
>> >>>
>> >>> Hi Ard,
>> >>>
>> >>> When I apply this, it starts hanging at
>> >>>
>> >>> status = efi_call_proto(efi_tcg2_protocol, get_event_log,
> tcg2_protocol,
>> >>>                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
>> >>>                         &log_location, &log_last_entry, &truncated);
>> >>>
>> >>> rather than at the memset() call.
>> >>>
>> >
>> >> That is *very* surprising, given that the change only affects code
>> >> that executes after that.
>> >
>
> Hans, you said you configured the tablet to use the 32-bit version of grub
> instead
> of 64. Why's that?
>
> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
> your Android install working? (that is, what happens if you boot Boot0000)?
>
>> >> I understand how annoying this is for you, and I think we should try
>> >> to fix this, but reverting the patches outright isn't the solution
>> >> either.
>> >
>> >> Which UEFI vendor and version does your system report?
>> >
>> > You should be able to find this info using the "ver" command in the UEFI
>> > shell.
>> > The UEFI vendor is Insyde (see first message).
>> >
>
>> Ah, thanks!
>
>> EFI Specification Revision      : 2.40
>> EFI Vendor                      : INSYDE Corp.
>> EFI Revision                    : 21573.83
>

Thiebaud,

If we don't manage to resolve this, do you see any way to blacklist
systems based on this information? Would it be reasonable, say, to
require UEFI v2.5 or later for TPM2 support? Or doesn't that make any
sense (I am aware that the TCG EFI spec and the UEFI spec are somewhat
orthogonal, but it also depends on the hardware you are targetting, I
guess). Otherwise, we could use a more specific match, perhaps?

This is of course depending on whether we reach consensus on whether
we should make any changes at all for what appears to be a single
sample of a certain piece of hardware, where other samples running the
same firmware (right?) are working fine.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 19:55                                   ` Thiebaud Weksteen
  2018-03-12 21:02                                     ` Ard Biesheuvel
@ 2018-03-13  1:50                                     ` Jeremy Cline
  2018-03-13  7:47                                     ` Hans de Goede
  2 siblings, 0 replies; 39+ messages in thread
From: Jeremy Cline @ 2018-03-13  1:50 UTC (permalink / raw)
  To: Thiebaud Weksteen, hdegoede
  Cc: Ard Biesheuvel, Javier Martinez Canillas, Jarkko Sakkinen,
	linux-efi, linux-integrity, tpmdd-devel, linux-kernel

On 03/12/2018 03:55 PM, Thiebaud Weksteen wrote:
> On Mon, Mar 12, 2018 at 7:33 PM Jeremy Cline <jeremy@jcline.org> wrote:
> 
>> On 03/12/2018 02:29 PM, Thiebaud Weksteen wrote:
>>> On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <
> ard.biesheuvel@linaro.org>
>>> wrote:
>>>
>>>> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
>>>>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
>>>>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>>>>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>>>>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
>>> wrote:
>>>>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
>>> wrote:
>>>>>>>>>
>>>>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen
> wrote:
>>>>>>>>>>> Thanks a lot for trying out the patch!
>>>>>>>>>>>
>>>>>>>>>>> Please don't modify your install at this stage, I think we are
>>> hitting a
>>>>>>>>>>> firmware bug and that would be awesome if we can fix how we are
>>>>>>>>> handling it.
>>>>>>>>>>> So, if we reach that stage in the function it could either be
>>> that:
>>>>>>>>>>> * The allocation did not succeed, somehow, but the firmware
> still
>>>>>>>>> returned
>>>>>>>>>>> EFI_SUCCEED.
>>>>>>>>>>> * The size requested is incorrect (I'm thinking something like a
>>> 1G of
>>>>>>>>>>> log). This would be due to either a miscalculation of log_size
>>>>>>>>> (possible)
>>>>>>>>>>> or; the returned values of GetEventLog are not correct.
>>>>>>>>>>> I'm sending a patch to add checks for these. Could you please
>>> apply and
>>>>>>>>>>> retest?
>>>>>>>>>>> Again, thanks for helping debugging this.
>>>>>>>>>
>>>>>>>>>> No problem, thanks for the help :)
>>>>>>>>>
>>>>>>>>>> With the new patch:
>>>>>>>>>
>>>>>>>>>> Locating the TCG2Protocol
>>>>>>>>>> Calling GetEventLog on TCG2Protocol
>>>>>>>>>> Log returned
>>>>>>>>>> log_location is not empty
>>>>>>>>>> log_size != 0
>>>>>>>>>> log_size < 1M
>>>>>>>>>> Allocating memory for storing the logs
>>>>>>>>>> Returned from memory allocation
>>>>>>>>>> Copying log to new location
>>>>>>>>>
>>>>>>>>>> And then it hangs. I added a couple more print statements:
>>>>>>>>>
>>>>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>> index ee3fac109078..1ab5638bc50e 100644
>>>>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>> @@ -148,8 +148,11 @@ void
>>>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>>>>          efi_printk(sys_table_arg, "Copying log to new
>>> location\n");
>>>>>>>>>
>>>>>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to
>>> 0\n");
>>>>>>>>>>          log_tbl->size = log_size;
>>>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>>>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr,
> log_size);
>>>>>>>>>
>>>>>>>>>>          efi_printk(sys_table_arg, "Installing the log into the
>>>>>>>>> configuration table\n");
>>>>>>>>>
>>>>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
>>> log_size);"
>>>>>>>>>
>>>>>>>>> Thanks. Well, it looks like the memory that is supposedly
> allocated
>>> is not
>>>>>>>>> usable. I'm thinking this is a firmware bug.
>>>>>>>>> Ard, would you agree on this assumption? Thoughts on how to
> proceed?
>>>>>>>>>
>>>>>>>>
>>>>>>>> I am rather puzzled why the allocate_pool() should succeed and the
>>>>>>>> subsequent memset() should fail. This does not look like an issue
>>> that
>>>>>>>> is intimately related to TPM2 support, rather an issue in the
>>> firmware
>>>>>>>> that happens to get tickled after the change.
>>>>>>>>
>>>>>>>> Would you mind trying replacing EFI_LOADER_DATA with
>>>>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>>>>>>>
>>>>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at
>>> the
>>>>>>> memset() call.
>>>>>>>
>>>>>>
>>>>>> Could you try the following please? (attached as well in case gmail
>>> mangles it)
>>>>>>
>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>> index 2298560cea72..30d960a344b7 100644
>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>> @@ -70,6 +70,8 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>         size_t log_size, last_entry_size;
>>>>>>         efi_bool_t truncated;
>>>>>>         void *tcg2_protocol;
>>>>>> +       unsigned long num_pages;
>>>>>> +       efi_physical_addr_t log_tbl_alloc;
>>>>>>
>>>>>>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>>>>>>                                 &tcg2_protocol);
>>>>>> @@ -104,9 +106,12 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>         }
>>>>>>
>>>>>>         /* Allocate space for the logs and copy them. */
>>>>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
>>>>>> -                               sizeof(*log_tbl) + log_size,
>>>>>> -                               (void **) &log_tbl);
>>>>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
>>> EFI_PAGE_SIZE);
>>>>>> +       status = efi_call_early(allocate_pages,
>>>>>> +                               EFI_ALLOCATE_ANY_PAGES,
>>>>>> +                               EFI_LOADER_DATA,
>>>>>> +                               num_pages,
>>>>>> +                               &log_tbl_alloc);
>>>>>>
>>>>>>         if (status != EFI_SUCCESS) {
>>>>>>                 efi_printk(sys_table_arg,
>>>>>> @@ -114,6 +119,7 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>                 return;
>>>>>>         }
>>>>>>
>>>>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
>>> long)log_tbl_alloc;
>>>>>>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>         log_tbl->size = log_size;
>>>>>>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>> @@ -126,7 +132,7 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>         return;
>>>>>>
>>>>>>  err_free:
>>>>>> -       efi_call_early(free_pool, log_tbl);
>>>>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>>>>>>  }
>>>>>>
>>>>>>  void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
>>>>>>
>>>>>
>>>>> Hi Ard,
>>>>>
>>>>> When I apply this, it starts hanging at
>>>>>
>>>>> status = efi_call_proto(efi_tcg2_protocol, get_event_log,
> tcg2_protocol,
>>>>>                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
>>>>>                         &log_location, &log_last_entry, &truncated);
>>>>>
>>>>> rather than at the memset() call.
>>>>>
>>>
>>>> That is *very* surprising, given that the change only affects code
>>>> that executes after that.
>>>
> 
> Hans, you said you configured the tablet to use the 32-bit version of grub
> instead
> of 64. Why's that?
> 
> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
> your Android install working? (that is, what happens if you boot Boot0000)?

It's definitely being built in 64bit mode. The Android install entry is
a remnant from Hans, but it appears to be a Red Hat grub so it just
boots to Fedora.

Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 21:02                                     ` Ard Biesheuvel
@ 2018-03-13  7:24                                       ` Thiebaud Weksteen
  2018-03-13  8:08                                       ` Hans de Goede
  1 sibling, 0 replies; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-13  7:24 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Jeremy Cline, hdegoede, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	linux-kernel

On Mon, Mar 12, 2018 at 10:03 PM Ard Biesheuvel <ard.biesheuvel@linaro.org>
wrote:

> On 12 March 2018 at 19:55, Thiebaud Weksteen <tweek@google.com> wrote:
> > On Mon, Mar 12, 2018 at 7:33 PM Jeremy Cline <jeremy@jcline.org> wrote:
> >
> >> On 03/12/2018 02:29 PM, Thiebaud Weksteen wrote:
> >> > On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <
> > ard.biesheuvel@linaro.org>
> >> > wrote:
> >> >
> >> >> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
> >> >>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
> >> >>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
> >> >>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
> >> >>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
> >> > wrote:
> >> >>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
> >> > wrote:
> >> >>>>>>>
> >> >>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen
> > wrote:
> >> >>>>>>>>> Thanks a lot for trying out the patch!
> >> >>>>>>>>>
> >> >>>>>>>>> Please don't modify your install at this stage, I think we
are
> >> > hitting a
> >> >>>>>>>>> firmware bug and that would be awesome if we can fix how we
are
> >> >>>>>>> handling it.
> >> >>>>>>>>> So, if we reach that stage in the function it could either be
> >> > that:
> >> >>>>>>>>> * The allocation did not succeed, somehow, but the firmware
> > still
> >> >>>>>>> returned
> >> >>>>>>>>> EFI_SUCCEED.
> >> >>>>>>>>> * The size requested is incorrect (I'm thinking something
like a
> >> > 1G of
> >> >>>>>>>>> log). This would be due to either a miscalculation of
log_size
> >> >>>>>>> (possible)
> >> >>>>>>>>> or; the returned values of GetEventLog are not correct.
> >> >>>>>>>>> I'm sending a patch to add checks for these. Could you please
> >> > apply and
> >> >>>>>>>>> retest?
> >> >>>>>>>>> Again, thanks for helping debugging this.
> >> >>>>>>>
> >> >>>>>>>> No problem, thanks for the help :)
> >> >>>>>>>
> >> >>>>>>>> With the new patch:
> >> >>>>>>>
> >> >>>>>>>> Locating the TCG2Protocol
> >> >>>>>>>> Calling GetEventLog on TCG2Protocol
> >> >>>>>>>> Log returned
> >> >>>>>>>> log_location is not empty
> >> >>>>>>>> log_size != 0
> >> >>>>>>>> log_size < 1M
> >> >>>>>>>> Allocating memory for storing the logs
> >> >>>>>>>> Returned from memory allocation
> >> >>>>>>>> Copying log to new location
> >> >>>>>>>
> >> >>>>>>>> And then it hangs. I added a couple more print statements:
> >> >>>>>>>
> >> >>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
> >> >>>>>>> b/drivers/firmware/efi/libstub/tpm.c
> >> >>>>>>>> index ee3fac109078..1ab5638bc50e 100644
> >> >>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
> >> >>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
> >> >>>>>>>> @@ -148,8 +148,11 @@ void
> >> >>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t
*sys_table_arg)
> >> >>>>>>>>          efi_printk(sys_table_arg, "Copying log to new
> >> > location\n");
> >> >>>>>>>
> >> >>>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
> >> >>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset
log_tbl to
> >> > 0\n");
> >> >>>>>>>>          log_tbl->size = log_size;
> >> >>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
> >> >>>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> >> >>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
> >> >>>>>>>>          memcpy(log_tbl->log, (void *) first_entry_addr,
> > log_size);
> >> >>>>>>>
> >> >>>>>>>>          efi_printk(sys_table_arg, "Installing the log into
the
> >> >>>>>>> configuration table\n");
> >> >>>>>>>
> >> >>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
> >> > log_size);"
> >> >>>>>>>
> >> >>>>>>> Thanks. Well, it looks like the memory that is supposedly
> > allocated
> >> > is not
> >> >>>>>>> usable. I'm thinking this is a firmware bug.
> >> >>>>>>> Ard, would you agree on this assumption? Thoughts on how to
> > proceed?
> >> >>>>>>>
> >> >>>>>>
> >> >>>>>> I am rather puzzled why the allocate_pool() should succeed and
the
> >> >>>>>> subsequent memset() should fail. This does not look like an
issue
> >> > that
> >> >>>>>> is intimately related to TPM2 support, rather an issue in the
> >> > firmware
> >> >>>>>> that happens to get tickled after the change.
> >> >>>>>>
> >> >>>>>> Would you mind trying replacing EFI_LOADER_DATA with
> >> >>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
> >> >>>>>
> >> >>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still
hangs at
> >> > the
> >> >>>>> memset() call.
> >> >>>>>
> >> >>>>
> >> >>>> Could you try the following please? (attached as well in case
gmail
> >> > mangles it)
> >> >>>>
> >> >>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
> >> >>>> b/drivers/firmware/efi/libstub/tpm.c
> >> >>>> index 2298560cea72..30d960a344b7 100644
> >> >>>> --- a/drivers/firmware/efi/libstub/tpm.c
> >> >>>> +++ b/drivers/firmware/efi/libstub/tpm.c
> >> >>>> @@ -70,6 +70,8 @@ void
> >> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >> >>>>         size_t log_size, last_entry_size;
> >> >>>>         efi_bool_t truncated;
> >> >>>>         void *tcg2_protocol;
> >> >>>> +       unsigned long num_pages;
> >> >>>> +       efi_physical_addr_t log_tbl_alloc;
> >> >>>>
> >> >>>>         status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
> >> >>>>                                 &tcg2_protocol);
> >> >>>> @@ -104,9 +106,12 @@ void
> >> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >> >>>>         }
> >> >>>>
> >> >>>>         /* Allocate space for the logs and copy them. */
> >> >>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
> >> >>>> -                               sizeof(*log_tbl) + log_size,
> >> >>>> -                               (void **) &log_tbl);
> >> >>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
> >> > EFI_PAGE_SIZE);
> >> >>>> +       status = efi_call_early(allocate_pages,
> >> >>>> +                               EFI_ALLOCATE_ANY_PAGES,
> >> >>>> +                               EFI_LOADER_DATA,
> >> >>>> +                               num_pages,
> >> >>>> +                               &log_tbl_alloc);
> >> >>>>
> >> >>>>         if (status != EFI_SUCCESS) {
> >> >>>>                 efi_printk(sys_table_arg,
> >> >>>> @@ -114,6 +119,7 @@ void
> >> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >> >>>>                 return;
> >> >>>>         }
> >> >>>>
> >> >>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
> >> > long)log_tbl_alloc;
> >> >>>>         memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
> >> >>>>         log_tbl->size = log_size;
> >> >>>>         log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
> >> >>>> @@ -126,7 +132,7 @@ void
> >> >>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
> >> >>>>         return;
> >> >>>>
> >> >>>>  err_free:
> >> >>>> -       efi_call_early(free_pool, log_tbl);
> >> >>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
> >> >>>>  }
> >> >>>>
> >> >>>>  void efi_retrieve_tpm2_eventlog(efi_system_table_t
*sys_table_arg)
> >> >>>>
> >> >>>
> >> >>> Hi Ard,
> >> >>>
> >> >>> When I apply this, it starts hanging at
> >> >>>
> >> >>> status = efi_call_proto(efi_tcg2_protocol, get_event_log,
> > tcg2_protocol,
> >> >>>                         EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
> >> >>>                         &log_location, &log_last_entry,
&truncated);
> >> >>>
> >> >>> rather than at the memset() call.
> >> >>>
> >> >
> >> >> That is *very* surprising, given that the change only affects code
> >> >> that executes after that.
> >> >
> >
> > Hans, you said you configured the tablet to use the 32-bit version of
grub
> > instead
> > of 64. Why's that?
> >
> > Jeremy, could you confirm if you are building the kernel in 64bit mode?
Is
> > your Android install working? (that is, what happens if you boot
Boot0000)?
> >
> >> >> I understand how annoying this is for you, and I think we should try
> >> >> to fix this, but reverting the patches outright isn't the solution
> >> >> either.
> >> >
> >> >> Which UEFI vendor and version does your system report?
> >> >
> >> > You should be able to find this info using the "ver" command in the
UEFI
> >> > shell.
> >> > The UEFI vendor is Insyde (see first message).
> >> >
> >
> >> Ah, thanks!
> >
> >> EFI Specification Revision      : 2.40
> >> EFI Vendor                      : INSYDE Corp.
> >> EFI Revision                    : 21573.83
> >

> Thiebaud,

> If we don't manage to resolve this, do you see any way to blacklist
> systems based on this information? Would it be reasonable, say, to
> require UEFI v2.5 or later for TPM2 support? Or doesn't that make any
> sense (I am aware that the TCG EFI spec and the UEFI spec are somewhat
> orthogonal, but it also depends on the hardware you are targetting, I
> guess). Otherwise, we could use a more specific match, perhaps?

I understand we are getting late in the rc and that this should be resolved
quickly. As we have seen, this is a bug related to the firmware more than
the TPM version. So filtering out on the UEFI version make sense. If it is
too late and our only option, I'm ok with filtering out on >= 2.5. A more
specific match would target the exact EFI revision, right? If so, yes that
would be better but I'm not sure how this can be implemented.

> This is of course depending on whether we reach consensus on whether
> we should make any changes at all for what appears to be a single
> sample of a certain piece of hardware, where other samples running the
> same firmware (right?) are working fine.

Right, this is my understanding as well.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 19:55                                   ` Thiebaud Weksteen
  2018-03-12 21:02                                     ` Ard Biesheuvel
  2018-03-13  1:50                                     ` Jeremy Cline
@ 2018-03-13  7:47                                     ` Hans de Goede
  2018-03-13  7:59                                       ` Ard Biesheuvel
  2018-03-13 12:51                                       ` Andy Shevchenko
  2 siblings, 2 replies; 39+ messages in thread
From: Hans de Goede @ 2018-03-13  7:47 UTC (permalink / raw)
  To: Thiebaud Weksteen, Jeremy Cline
  Cc: Ard Biesheuvel, Javier Martinez Canillas, Jarkko Sakkinen,
	linux-efi, linux-integrity, tpmdd-devel, linux-kernel

Hi,

On 12-03-18 20:55, Thiebaud Weksteen wrote:
> On Mon, Mar 12, 2018 at 7:33 PM Jeremy Cline <jeremy@jcline.org> wrote:
> 
>> On 03/12/2018 02:29 PM, Thiebaud Weksteen wrote:
>>> On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <
> ard.biesheuvel@linaro.org>
>>> wrote:
>>>
>>>> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
>>>>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
>>>>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>>>>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>>>>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
>>> wrote:
>>>>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
>>> wrote:
>>>>>>>>>
>>>>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen
> wrote:
>>>>>>>>>>> Thanks a lot for trying out the patch!
>>>>>>>>>>>
>>>>>>>>>>> Please don't modify your install at this stage, I think we are
>>> hitting a
>>>>>>>>>>> firmware bug and that would be awesome if we can fix how we are
>>>>>>>>> handling it.
>>>>>>>>>>> So, if we reach that stage in the function it could either be
>>> that:
>>>>>>>>>>> * The allocation did not succeed, somehow, but the firmware
> still
>>>>>>>>> returned
>>>>>>>>>>> EFI_SUCCEED.
>>>>>>>>>>> * The size requested is incorrect (I'm thinking something like a
>>> 1G of
>>>>>>>>>>> log). This would be due to either a miscalculation of log_size
>>>>>>>>> (possible)
>>>>>>>>>>> or; the returned values of GetEventLog are not correct.
>>>>>>>>>>> I'm sending a patch to add checks for these. Could you please
>>> apply and
>>>>>>>>>>> retest?
>>>>>>>>>>> Again, thanks for helping debugging this.
>>>>>>>>>
>>>>>>>>>> No problem, thanks for the help :)
>>>>>>>>>
>>>>>>>>>> With the new patch:
>>>>>>>>>
>>>>>>>>>> Locating the TCG2Protocol
>>>>>>>>>> Calling GetEventLog on TCG2Protocol
>>>>>>>>>> Log returned
>>>>>>>>>> log_location is not empty
>>>>>>>>>> log_size != 0
>>>>>>>>>> log_size < 1M
>>>>>>>>>> Allocating memory for storing the logs
>>>>>>>>>> Returned from memory allocation
>>>>>>>>>> Copying log to new location
>>>>>>>>>
>>>>>>>>>> And then it hangs. I added a couple more print statements:
>>>>>>>>>
>>>>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>> index ee3fac109078..1ab5638bc50e 100644
>>>>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>> @@ -148,8 +148,11 @@ void
>>>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>>>>           efi_printk(sys_table_arg, "Copying log to new
>>> location\n");
>>>>>>>>>
>>>>>>>>>>           memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to
>>> 0\n");
>>>>>>>>>>           log_tbl->size = log_size;
>>>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>>>>>>>           log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>>>>>>>           memcpy(log_tbl->log, (void *) first_entry_addr,
> log_size);
>>>>>>>>>
>>>>>>>>>>           efi_printk(sys_table_arg, "Installing the log into the
>>>>>>>>> configuration table\n");
>>>>>>>>>
>>>>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
>>> log_size);"
>>>>>>>>>
>>>>>>>>> Thanks. Well, it looks like the memory that is supposedly
> allocated
>>> is not
>>>>>>>>> usable. I'm thinking this is a firmware bug.
>>>>>>>>> Ard, would you agree on this assumption? Thoughts on how to
> proceed?
>>>>>>>>>
>>>>>>>>
>>>>>>>> I am rather puzzled why the allocate_pool() should succeed and the
>>>>>>>> subsequent memset() should fail. This does not look like an issue
>>> that
>>>>>>>> is intimately related to TPM2 support, rather an issue in the
>>> firmware
>>>>>>>> that happens to get tickled after the change.
>>>>>>>>
>>>>>>>> Would you mind trying replacing EFI_LOADER_DATA with
>>>>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>>>>>>>
>>>>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at
>>> the
>>>>>>> memset() call.
>>>>>>>
>>>>>>
>>>>>> Could you try the following please? (attached as well in case gmail
>>> mangles it)
>>>>>>
>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>> index 2298560cea72..30d960a344b7 100644
>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>> @@ -70,6 +70,8 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>          size_t log_size, last_entry_size;
>>>>>>          efi_bool_t truncated;
>>>>>>          void *tcg2_protocol;
>>>>>> +       unsigned long num_pages;
>>>>>> +       efi_physical_addr_t log_tbl_alloc;
>>>>>>
>>>>>>          status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>>>>>>                                  &tcg2_protocol);
>>>>>> @@ -104,9 +106,12 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>          }
>>>>>>
>>>>>>          /* Allocate space for the logs and copy them. */
>>>>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
>>>>>> -                               sizeof(*log_tbl) + log_size,
>>>>>> -                               (void **) &log_tbl);
>>>>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
>>> EFI_PAGE_SIZE);
>>>>>> +       status = efi_call_early(allocate_pages,
>>>>>> +                               EFI_ALLOCATE_ANY_PAGES,
>>>>>> +                               EFI_LOADER_DATA,
>>>>>> +                               num_pages,
>>>>>> +                               &log_tbl_alloc);
>>>>>>
>>>>>>          if (status != EFI_SUCCESS) {
>>>>>>                  efi_printk(sys_table_arg,
>>>>>> @@ -114,6 +119,7 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>                  return;
>>>>>>          }
>>>>>>
>>>>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
>>> long)log_tbl_alloc;
>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>          log_tbl->size = log_size;
>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>> @@ -126,7 +132,7 @@ void
>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>          return;
>>>>>>
>>>>>>   err_free:
>>>>>> -       efi_call_early(free_pool, log_tbl);
>>>>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>>>>>>   }
>>>>>>
>>>>>>   void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
>>>>>>
>>>>>
>>>>> Hi Ard,
>>>>>
>>>>> When I apply this, it starts hanging at
>>>>>
>>>>> status = efi_call_proto(efi_tcg2_protocol, get_event_log,
> tcg2_protocol,
>>>>>                          EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
>>>>>                          &log_location, &log_last_entry, &truncated);
>>>>>
>>>>> rather than at the memset() call.
>>>>>
>>>
>>>> That is *very* surprising, given that the change only affects code
>>>> that executes after that.
>>>
> 
> Hans, you said you configured the tablet to use the 32-bit version of grub
> instead
> of 64. Why's that?

Because this tablet, like (almost?) all Bay Trail hardware has a 32 bit UEFI,
even though the processor is 64 bit capable (AFAIK 64 bit Windows drivers were
not ready in time so all Bay Trail devices shipped with a 32 bit Windows).

So this is running a 32 bit grub which boots a 64 bit kernel.

> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
> your Android install working? (that is, what happens if you boot Boot0000)?

AFAIK the kernel on Jeremy's tablet (which I initially installed) is 64 bit.

Could the problem perhaps be that the new code for the TPM event-log is
missing some handling to deal with running on a 32 bit firmware? I know the
rest of the kernel has special code to deal with this.

Regards,

Hans

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13  7:47                                     ` Hans de Goede
@ 2018-03-13  7:59                                       ` Ard Biesheuvel
  2018-03-13  8:02                                         ` Ard Biesheuvel
                                                           ` (2 more replies)
  2018-03-13 12:51                                       ` Andy Shevchenko
  1 sibling, 3 replies; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-13  7:59 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Thiebaud Weksteen, Jeremy Cline, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 13 March 2018 at 07:47, Hans de Goede <hdegoede@redhat.com> wrote:
> Hi,
>
>
> On 12-03-18 20:55, Thiebaud Weksteen wrote:
>>
...
>>
>> Hans, you said you configured the tablet to use the 32-bit version of grub
>> instead
>> of 64. Why's that?
>
>
> Because this tablet, like (almost?) all Bay Trail hardware has a 32 bit
> UEFI,
> even though the processor is 64 bit capable (AFAIK 64 bit Windows drivers
> were
> not ready in time so all Bay Trail devices shipped with a 32 bit Windows).
>
> So this is running a 32 bit grub which boots a 64 bit kernel.
>
>> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
>> your Android install working? (that is, what happens if you boot
>> Boot0000)?
>
>
> AFAIK the kernel on Jeremy's tablet (which I initially installed) is 64 bit.
>
> Could the problem perhaps be that the new code for the TPM event-log is
> missing some handling to deal with running on a 32 bit firmware? I know the
> rest of the kernel has special code to deal with this.
>

That is a very good point, and I missed that this is a 64-bit kernel
running on 32-bit UEFI.

The TPM code does use efi_call_proto() directly, and now I am thinking
it is perhaps the allocate_pages() call that simply only initializes
the low 32-bits of log_tbl.

Jeremy, could you please try initializing tcg2_protocol and log_tbl to
NULL at the start of the function?

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13  7:59                                       ` Ard Biesheuvel
@ 2018-03-13  8:02                                         ` Ard Biesheuvel
  2018-03-13 10:23                                         ` Thiebaud Weksteen
  2018-03-13 13:41                                         ` Jeremy Cline
  2 siblings, 0 replies; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-13  8:02 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Thiebaud Weksteen, Jeremy Cline, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 13 March 2018 at 07:59, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> On 13 March 2018 at 07:47, Hans de Goede <hdegoede@redhat.com> wrote:
>> Hi,
>>
>>
>> On 12-03-18 20:55, Thiebaud Weksteen wrote:
>>>
> ...
>>>
>>> Hans, you said you configured the tablet to use the 32-bit version of grub
>>> instead
>>> of 64. Why's that?
>>
>>
>> Because this tablet, like (almost?) all Bay Trail hardware has a 32 bit
>> UEFI,
>> even though the processor is 64 bit capable (AFAIK 64 bit Windows drivers
>> were
>> not ready in time so all Bay Trail devices shipped with a 32 bit Windows).
>>
>> So this is running a 32 bit grub which boots a 64 bit kernel.
>>
>>> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
>>> your Android install working? (that is, what happens if you boot
>>> Boot0000)?
>>
>>
>> AFAIK the kernel on Jeremy's tablet (which I initially installed) is 64 bit.
>>
>> Could the problem perhaps be that the new code for the TPM event-log is
>> missing some handling to deal with running on a 32 bit firmware? I know the
>> rest of the kernel has special code to deal with this.
>>
>
> That is a very good point, and I missed that this is a 64-bit kernel
> running on 32-bit UEFI.
>
> The TPM code does use efi_call_proto() directly,

*correctly*

> and now I am thinking
> it is perhaps the allocate_pages() call that simply only initializes
> the low 32-bits of log_tbl.
>
> Jeremy, could you please try initializing tcg2_protocol and log_tbl to
> NULL at the start of the function?

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 21:02                                     ` Ard Biesheuvel
  2018-03-13  7:24                                       ` Thiebaud Weksteen
@ 2018-03-13  8:08                                       ` Hans de Goede
  1 sibling, 0 replies; 39+ messages in thread
From: Hans de Goede @ 2018-03-13  8:08 UTC (permalink / raw)
  To: Ard Biesheuvel, Thiebaud Weksteen
  Cc: Jeremy Cline, Javier Martinez Canillas, Jarkko Sakkinen,
	linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

Hi,

On 12-03-18 22:02, Ard Biesheuvel wrote:
> On 12 March 2018 at 19:55, Thiebaud Weksteen <tweek@google.com> wrote:
>> On Mon, Mar 12, 2018 at 7:33 PM Jeremy Cline <jeremy@jcline.org> wrote:
>>
>>> On 03/12/2018 02:29 PM, Thiebaud Weksteen wrote:
>>>> On Mon, Mar 12, 2018 at 6:30 PM Ard Biesheuvel <
>> ard.biesheuvel@linaro.org>
>>>> wrote:
>>>>
>>>>> On 12 March 2018 at 17:01, Jeremy Cline <jeremy@jcline.org> wrote:
>>>>>> On 03/12/2018 10:56 AM, Ard Biesheuvel wrote:
>>>>>>> On 12 March 2018 at 14:30, Jeremy Cline <jeremy@jcline.org> wrote:
>>>>>>>> On 03/12/2018 07:08 AM, Ard Biesheuvel wrote:
>>>>>>>>> On 10 March 2018 at 10:45, Thiebaud Weksteen <tweek@google.com>
>>>> wrote:
>>>>>>>>>> On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org>
>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>> On Fri, Mar 09, 2018 at 10:43:50AM +0000, Thiebaud Weksteen
>> wrote:
>>>>>>>>>>>> Thanks a lot for trying out the patch!
>>>>>>>>>>>>
>>>>>>>>>>>> Please don't modify your install at this stage, I think we are
>>>> hitting a
>>>>>>>>>>>> firmware bug and that would be awesome if we can fix how we are
>>>>>>>>>> handling it.
>>>>>>>>>>>> So, if we reach that stage in the function it could either be
>>>> that:
>>>>>>>>>>>> * The allocation did not succeed, somehow, but the firmware
>> still
>>>>>>>>>> returned
>>>>>>>>>>>> EFI_SUCCEED.
>>>>>>>>>>>> * The size requested is incorrect (I'm thinking something like a
>>>> 1G of
>>>>>>>>>>>> log). This would be due to either a miscalculation of log_size
>>>>>>>>>> (possible)
>>>>>>>>>>>> or; the returned values of GetEventLog are not correct.
>>>>>>>>>>>> I'm sending a patch to add checks for these. Could you please
>>>> apply and
>>>>>>>>>>>> retest?
>>>>>>>>>>>> Again, thanks for helping debugging this.
>>>>>>>>>>
>>>>>>>>>>> No problem, thanks for the help :)
>>>>>>>>>>
>>>>>>>>>>> With the new patch:
>>>>>>>>>>
>>>>>>>>>>> Locating the TCG2Protocol
>>>>>>>>>>> Calling GetEventLog on TCG2Protocol
>>>>>>>>>>> Log returned
>>>>>>>>>>> log_location is not empty
>>>>>>>>>>> log_size != 0
>>>>>>>>>>> log_size < 1M
>>>>>>>>>>> Allocating memory for storing the logs
>>>>>>>>>>> Returned from memory allocation
>>>>>>>>>>> Copying log to new location
>>>>>>>>>>
>>>>>>>>>>> And then it hangs. I added a couple more print statements:
>>>>>>>>>>
>>>>>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>>> index ee3fac109078..1ab5638bc50e 100644
>>>>>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>>>>>>> @@ -148,8 +148,11 @@ void
>>>>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>>>>>           efi_printk(sys_table_arg, "Copying log to new
>>>> location\n");
>>>>>>>>>>
>>>>>>>>>>>           memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>>>>>> +       efi_printk(sys_table_arg, "Successfully memset log_tbl to
>>>> 0\n");
>>>>>>>>>>>           log_tbl->size = log_size;
>>>>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl->size\n");
>>>>>>>>>>>           log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>>>>>>> +       efi_printk(sys_table_arg, "Set log_tbl-version\n");
>>>>>>>>>>>           memcpy(log_tbl->log, (void *) first_entry_addr,
>> log_size);
>>>>>>>>>>
>>>>>>>>>>>           efi_printk(sys_table_arg, "Installing the log into the
>>>>>>>>>> configuration table\n");
>>>>>>>>>>
>>>>>>>>>>> and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) +
>>>> log_size);"
>>>>>>>>>>
>>>>>>>>>> Thanks. Well, it looks like the memory that is supposedly
>> allocated
>>>> is not
>>>>>>>>>> usable. I'm thinking this is a firmware bug.
>>>>>>>>>> Ard, would you agree on this assumption? Thoughts on how to
>> proceed?
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I am rather puzzled why the allocate_pool() should succeed and the
>>>>>>>>> subsequent memset() should fail. This does not look like an issue
>>>> that
>>>>>>>>> is intimately related to TPM2 support, rather an issue in the
>>>> firmware
>>>>>>>>> that happens to get tickled after the change.
>>>>>>>>>
>>>>>>>>> Would you mind trying replacing EFI_LOADER_DATA with
>>>>>>>>> EFI_BOOT_SERVICES_DATA in the allocate_pool() call?
>>>>>>>>
>>>>>>>> Replacing EFI_LOADER_DATA with EFI_BOOT_SERVICES_DATA still hangs at
>>>> the
>>>>>>>> memset() call.
>>>>>>>>
>>>>>>>
>>>>>>> Could you try the following please? (attached as well in case gmail
>>>> mangles it)
>>>>>>>
>>>>>>> diff --git a/drivers/firmware/efi/libstub/tpm.c
>>>>>>> b/drivers/firmware/efi/libstub/tpm.c
>>>>>>> index 2298560cea72..30d960a344b7 100644
>>>>>>> --- a/drivers/firmware/efi/libstub/tpm.c
>>>>>>> +++ b/drivers/firmware/efi/libstub/tpm.c
>>>>>>> @@ -70,6 +70,8 @@ void
>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>          size_t log_size, last_entry_size;
>>>>>>>          efi_bool_t truncated;
>>>>>>>          void *tcg2_protocol;
>>>>>>> +       unsigned long num_pages;
>>>>>>> +       efi_physical_addr_t log_tbl_alloc;
>>>>>>>
>>>>>>>          status = efi_call_early(locate_protocol, &tcg2_guid, NULL,
>>>>>>>                                  &tcg2_protocol);
>>>>>>> @@ -104,9 +106,12 @@ void
>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>          }
>>>>>>>
>>>>>>>          /* Allocate space for the logs and copy them. */
>>>>>>> -       status = efi_call_early(allocate_pool, EFI_LOADER_DATA,
>>>>>>> -                               sizeof(*log_tbl) + log_size,
>>>>>>> -                               (void **) &log_tbl);
>>>>>>> +       num_pages = DIV_ROUND_UP(sizeof(*log_tbl) + log_size,
>>>> EFI_PAGE_SIZE);
>>>>>>> +       status = efi_call_early(allocate_pages,
>>>>>>> +                               EFI_ALLOCATE_ANY_PAGES,
>>>>>>> +                               EFI_LOADER_DATA,
>>>>>>> +                               num_pages,
>>>>>>> +                               &log_tbl_alloc);
>>>>>>>
>>>>>>>          if (status != EFI_SUCCESS) {
>>>>>>>                  efi_printk(sys_table_arg,
>>>>>>> @@ -114,6 +119,7 @@ void
>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>                  return;
>>>>>>>          }
>>>>>>>
>>>>>>> +       log_tbl = (struct linux_efi_tpm_eventlog *)(unsigned
>>>> long)log_tbl_alloc;
>>>>>>>          memset(log_tbl, 0, sizeof(*log_tbl) + log_size);
>>>>>>>          log_tbl->size = log_size;
>>>>>>>          log_tbl->version = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;
>>>>>>> @@ -126,7 +132,7 @@ void
>>>>>>> efi_retrieve_tpm2_eventlog_1_2(efi_system_table_t *sys_table_arg)
>>>>>>>          return;
>>>>>>>
>>>>>>>   err_free:
>>>>>>> -       efi_call_early(free_pool, log_tbl);
>>>>>>> +       efi_call_early(free_pages, log_tbl_alloc, num_pages);
>>>>>>>   }
>>>>>>>
>>>>>>>   void efi_retrieve_tpm2_eventlog(efi_system_table_t *sys_table_arg)
>>>>>>>
>>>>>>
>>>>>> Hi Ard,
>>>>>>
>>>>>> When I apply this, it starts hanging at
>>>>>>
>>>>>> status = efi_call_proto(efi_tcg2_protocol, get_event_log,
>> tcg2_protocol,
>>>>>>                          EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2,
>>>>>>                          &log_location, &log_last_entry, &truncated);
>>>>>>
>>>>>> rather than at the memset() call.
>>>>>>
>>>>
>>>>> That is *very* surprising, given that the change only affects code
>>>>> that executes after that.
>>>>
>>
>> Hans, you said you configured the tablet to use the 32-bit version of grub
>> instead
>> of 64. Why's that?
>>
>> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
>> your Android install working? (that is, what happens if you boot Boot0000)?
>>
>>>>> I understand how annoying this is for you, and I think we should try
>>>>> to fix this, but reverting the patches outright isn't the solution
>>>>> either.
>>>>
>>>>> Which UEFI vendor and version does your system report?
>>>>
>>>> You should be able to find this info using the "ver" command in the UEFI
>>>> shell.
>>>> The UEFI vendor is Insyde (see first message).
>>>>
>>
>>> Ah, thanks!
>>
>>> EFI Specification Revision      : 2.40
>>> EFI Vendor                      : INSYDE Corp.
>>> EFI Revision                    : 21573.83
>>
> 
> Thiebaud,
> 
> If we don't manage to resolve this, do you see any way to blacklist
> systems based on this information? Would it be reasonable, say, to
> require UEFI v2.5 or later for TPM2 support? Or doesn't that make any
> sense (I am aware that the TCG EFI spec and the UEFI spec are somewhat
> orthogonal, but it also depends on the hardware you are targetting, I
> guess). Otherwise, we could use a more specific match, perhaps?
> 
> This is of course depending on whether we reach consensus on whether
> we should make any changes at all for what appears to be a single
> sample of a certain piece of hardware, where other samples running the
> same firmware (right?) are working fine.

Right, I don't think a blacklist is a good idea until we understand the
problem better. Both the hard and firmware of Jeremy's tablet are pretty
generic, so I don't think there is anything special there.

One of the reason why this may work on my tablet of the same model is
because I do use shim (Jeremy does not) + a different grub version,
which perhaps leads to a different memory layout or different parts
of memory being initialized...

Regards,

Hans

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13  7:59                                       ` Ard Biesheuvel
  2018-03-13  8:02                                         ` Ard Biesheuvel
@ 2018-03-13 10:23                                         ` Thiebaud Weksteen
  2018-03-13 10:30                                           ` Ard Biesheuvel
  2018-03-13 13:41                                         ` Jeremy Cline
  2 siblings, 1 reply; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-13 10:23 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: hdegoede, Jeremy Cline, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	linux-kernel

On Tue, Mar 13, 2018 at 8:59 AM Ard Biesheuvel <ard.biesheuvel@linaro.org>
wrote:

> On 13 March 2018 at 07:47, Hans de Goede <hdegoede@redhat.com> wrote:
> > Hi,
> >
> >
> > On 12-03-18 20:55, Thiebaud Weksteen wrote:
> >>
> ...
> >>
> >> Hans, you said you configured the tablet to use the 32-bit version of
grub
> >> instead
> >> of 64. Why's that?
> >
> >
> > Because this tablet, like (almost?) all Bay Trail hardware has a 32 bit
> > UEFI,
> > even though the processor is 64 bit capable (AFAIK 64 bit Windows
drivers
> > were
> > not ready in time so all Bay Trail devices shipped with a 32 bit
Windows).
> >
> > So this is running a 32 bit grub which boots a 64 bit kernel.
> >
> >> Jeremy, could you confirm if you are building the kernel in 64bit
mode? Is
> >> your Android install working? (that is, what happens if you boot
> >> Boot0000)?
> >
> >
> > AFAIK the kernel on Jeremy's tablet (which I initially installed) is 64
bit.
> >
> > Could the problem perhaps be that the new code for the TPM event-log is
> > missing some handling to deal with running on a 32 bit firmware? I know
the
> > rest of the kernel has special code to deal with this.
> >

Yes, that was my guess as well.

> That is a very good point, and I missed that this is a 64-bit kernel
> running on 32-bit UEFI.

> The TPM code does use efi_call_proto() directly, and now I am thinking
> it is perhaps the allocate_pages() call that simply only initializes
> the low 32-bits of log_tbl.

That make sense. Would you know what happens to the arguments of the
function in this case? (I'm thinking &log_location ?)
Would it be safer to skip the code completely on EFI_MIXED systems?

> Jeremy, could you please try initializing tcg2_protocol and log_tbl to
> NULL at the start of the function?

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13 10:23                                         ` Thiebaud Weksteen
@ 2018-03-13 10:30                                           ` Ard Biesheuvel
  0 siblings, 0 replies; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-13 10:30 UTC (permalink / raw)
  To: Thiebaud Weksteen
  Cc: Hans de Goede, Jeremy Cline, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 13 March 2018 at 10:23, Thiebaud Weksteen <tweek@google.com> wrote:
> On Tue, Mar 13, 2018 at 8:59 AM Ard Biesheuvel <ard.biesheuvel@linaro.org>
> wrote:
>
>> On 13 March 2018 at 07:47, Hans de Goede <hdegoede@redhat.com> wrote:
...
>> > Could the problem perhaps be that the new code for the TPM event-log is
>> > missing some handling to deal with running on a 32 bit firmware? I know
> the
>> > rest of the kernel has special code to deal with this.
>> >
>
> Yes, that was my guess as well.
>
>> That is a very good point, and I missed that this is a 64-bit kernel
>> running on 32-bit UEFI.
>
>> The TPM code does use efi_call_proto() directly, and now I am thinking
>> it is perhaps the allocate_pages() call that simply only initializes
>> the low 32-bits of log_tbl.
>
> That make sense. Would you know what happens to the arguments of the
> function in this case? (I'm thinking &log_location ?)

log_location and log_last_entry are always 64-bit quantities, and
efi_bool_t is always u8, so that shouldn't matter.

> Would it be safer to skip the code completely on EFI_MIXED systems?
>

Obviously, but I would like to avoid that if possible. Let's see first
if we've pinpointed it now.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13  7:47                                     ` Hans de Goede
  2018-03-13  7:59                                       ` Ard Biesheuvel
@ 2018-03-13 12:51                                       ` Andy Shevchenko
  1 sibling, 0 replies; 39+ messages in thread
From: Andy Shevchenko @ 2018-03-13 12:51 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Thiebaud Weksteen, Jeremy Cline, Ard Biesheuvel,
	Javier Martinez Canillas, Jarkko Sakkinen, linux-efi,
	linux-integrity, tpmdd-devel, Linux Kernel Mailing List

On Tue, Mar 13, 2018 at 9:47 AM, Hans de Goede <hdegoede@redhat.com> wrote:
> On 12-03-18 20:55, Thiebaud Weksteen wrote:

>> Hans, you said you configured the tablet to use the 32-bit version of grub
>> instead
>> of 64. Why's that?

> Because this tablet, like (almost?) all Bay Trail hardware has a 32 bit
> UEFI,
> even though the processor is 64 bit capable (AFAIK 64 bit Windows drivers
> were
> not ready in time so all Bay Trail devices shipped with a 32 bit Windows).

Almost.

Lenovo Thinkpad 10 tablet has 64-bit firmware.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13  7:59                                       ` Ard Biesheuvel
  2018-03-13  8:02                                         ` Ard Biesheuvel
  2018-03-13 10:23                                         ` Thiebaud Weksteen
@ 2018-03-13 13:41                                         ` Jeremy Cline
  2018-03-13 13:43                                           ` Ard Biesheuvel
  2 siblings, 1 reply; 39+ messages in thread
From: Jeremy Cline @ 2018-03-13 13:41 UTC (permalink / raw)
  To: Ard Biesheuvel, Hans de Goede
  Cc: Thiebaud Weksteen, Javier Martinez Canillas, Jarkko Sakkinen,
	linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 03/13/2018 03:59 AM, Ard Biesheuvel wrote:
> On 13 March 2018 at 07:47, Hans de Goede <hdegoede@redhat.com> wrote:
>> Hi,
>>
>>
>> On 12-03-18 20:55, Thiebaud Weksteen wrote:
>>>
> ...
>>>
>>> Hans, you said you configured the tablet to use the 32-bit version of grub
>>> instead
>>> of 64. Why's that?
>>
>>
>> Because this tablet, like (almost?) all Bay Trail hardware has a 32 bit
>> UEFI,
>> even though the processor is 64 bit capable (AFAIK 64 bit Windows drivers
>> were
>> not ready in time so all Bay Trail devices shipped with a 32 bit Windows).
>>
>> So this is running a 32 bit grub which boots a 64 bit kernel.
>>
>>> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
>>> your Android install working? (that is, what happens if you boot
>>> Boot0000)?
>>
>>
>> AFAIK the kernel on Jeremy's tablet (which I initially installed) is 64 bit.
>>
>> Could the problem perhaps be that the new code for the TPM event-log is
>> missing some handling to deal with running on a 32 bit firmware? I know the
>> rest of the kernel has special code to deal with this.
>>
> 
> That is a very good point, and I missed that this is a 64-bit kernel
> running on 32-bit UEFI.
> 
> The TPM code does use efi_call_proto() directly, and now I am thinking
> it is perhaps the allocate_pages() call that simply only initializes
> the low 32-bits of log_tbl.
> 
> Jeremy, could you please try initializing tcg2_protocol and log_tbl to
> NULL at the start of the function?
> 

That was it, it boots when those are initialized to NULL.

Regards,
Jeremy

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13 13:41                                         ` Jeremy Cline
@ 2018-03-13 13:43                                           ` Ard Biesheuvel
  2018-03-13 15:00                                             ` Thiebaud Weksteen
  0 siblings, 1 reply; 39+ messages in thread
From: Ard Biesheuvel @ 2018-03-13 13:43 UTC (permalink / raw)
  To: Jeremy Cline
  Cc: Hans de Goede, Thiebaud Weksteen, Javier Martinez Canillas,
	Jarkko Sakkinen, linux-efi, linux-integrity, tpmdd-devel,
	Linux Kernel Mailing List

On 13 March 2018 at 13:41, Jeremy Cline <jeremy@jcline.org> wrote:
> On 03/13/2018 03:59 AM, Ard Biesheuvel wrote:
>> On 13 March 2018 at 07:47, Hans de Goede <hdegoede@redhat.com> wrote:
>>> Hi,
>>>
>>>
>>> On 12-03-18 20:55, Thiebaud Weksteen wrote:
>>>>
>> ...
>>>>
>>>> Hans, you said you configured the tablet to use the 32-bit version of grub
>>>> instead
>>>> of 64. Why's that?
>>>
>>>
>>> Because this tablet, like (almost?) all Bay Trail hardware has a 32 bit
>>> UEFI,
>>> even though the processor is 64 bit capable (AFAIK 64 bit Windows drivers
>>> were
>>> not ready in time so all Bay Trail devices shipped with a 32 bit Windows).
>>>
>>> So this is running a 32 bit grub which boots a 64 bit kernel.
>>>
>>>> Jeremy, could you confirm if you are building the kernel in 64bit mode? Is
>>>> your Android install working? (that is, what happens if you boot
>>>> Boot0000)?
>>>
>>>
>>> AFAIK the kernel on Jeremy's tablet (which I initially installed) is 64 bit.
>>>
>>> Could the problem perhaps be that the new code for the TPM event-log is
>>> missing some handling to deal with running on a 32 bit firmware? I know the
>>> rest of the kernel has special code to deal with this.
>>>
>>
>> That is a very good point, and I missed that this is a 64-bit kernel
>> running on 32-bit UEFI.
>>
>> The TPM code does use efi_call_proto() directly, and now I am thinking
>> it is perhaps the allocate_pages() call that simply only initializes
>> the low 32-bits of log_tbl.
>>
>> Jeremy, could you please try initializing tcg2_protocol and log_tbl to
>> NULL at the start of the function?
>>
>
> That was it, it boots when those are initialized to NULL.
>

Thanks for confirming. I'll send out a patch.

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-13 13:43                                           ` Ard Biesheuvel
@ 2018-03-13 15:00                                             ` Thiebaud Weksteen
  0 siblings, 0 replies; 39+ messages in thread
From: Thiebaud Weksteen @ 2018-03-13 15:00 UTC (permalink / raw)
  To: Ard Biesheuvel, hdegoede, Jeremy Cline
  Cc: Javier Martinez Canillas, Jarkko Sakkinen, linux-efi,
	linux-integrity, tpmdd-devel, linux-kernel

On Tue, Mar 13, 2018 at 2:43 PM Ard Biesheuvel <ard.biesheuvel@linaro.org>
wrote:

> On 13 March 2018 at 13:41, Jeremy Cline <jeremy@jcline.org> wrote:
> > On 03/13/2018 03:59 AM, Ard Biesheuvel wrote:
> >> On 13 March 2018 at 07:47, Hans de Goede <hdegoede@redhat.com> wrote:
> >>> Hi,
> >>>
> >>>
> >>> On 12-03-18 20:55, Thiebaud Weksteen wrote:
> >>>>
> >> ...
> >>>>
> >>>> Hans, you said you configured the tablet to use the 32-bit version
of grub
> >>>> instead
> >>>> of 64. Why's that?
> >>>
> >>>
> >>> Because this tablet, like (almost?) all Bay Trail hardware has a 32
bit
> >>> UEFI,
> >>> even though the processor is 64 bit capable (AFAIK 64 bit Windows
drivers
> >>> were
> >>> not ready in time so all Bay Trail devices shipped with a 32 bit
Windows).
> >>>
> >>> So this is running a 32 bit grub which boots a 64 bit kernel.
> >>>
> >>>> Jeremy, could you confirm if you are building the kernel in 64bit
mode? Is
> >>>> your Android install working? (that is, what happens if you boot
> >>>> Boot0000)?
> >>>
> >>>
> >>> AFAIK the kernel on Jeremy's tablet (which I initially installed) is
64 bit.
> >>>
> >>> Could the problem perhaps be that the new code for the TPM event-log
is
> >>> missing some handling to deal with running on a 32 bit firmware? I
know the
> >>> rest of the kernel has special code to deal with this.
> >>>
> >>
> >> That is a very good point, and I missed that this is a 64-bit kernel
> >> running on 32-bit UEFI.
> >>
> >> The TPM code does use efi_call_proto() directly, and now I am thinking
> >> it is perhaps the allocate_pages() call that simply only initializes
> >> the low 32-bits of log_tbl.
> >>
> >> Jeremy, could you please try initializing tcg2_protocol and log_tbl to
> >> NULL at the start of the function?
> >>
> >
> > That was it, it boots when those are initialized to NULL.
> >

> Thanks for confirming. I'll send out a patch.

Sweet!
Jeremy, Hans, thanks for the help debugging!
Ard, thanks for the help fixing the issue!

^ permalink raw reply	[flat|nested] 39+ messages in thread

* Re: Regression from efi: call get_event_log before ExitBootServices
  2018-03-12 10:41                       ` Paul Menzel
@ 2018-03-16 13:01                         ` Jarkko Sakkinen
  0 siblings, 0 replies; 39+ messages in thread
From: Jarkko Sakkinen @ 2018-03-16 13:01 UTC (permalink / raw)
  To: Paul Menzel
  Cc: Thiebaud Weksteen, Jeremy Cline, Ard Biesheuvel, hdegoede,
	Javier Martinez Canillas, linux-efi, linux-integrity,
	tpmdd-devel, linux-kernel

On Mon, Mar 12, 2018 at 11:41:25AM +0100, Paul Menzel wrote:
> Dear Jarkko,
> 
> 
> On 03/12/18 11:17, Jarkko Sakkinen wrote:
> > On Sat, 2018-03-10 at 10:45 +0000, Thiebaud Weksteen wrote:
> > > On Fri, Mar 9, 2018 at 5:54 PM Jeremy Cline <jeremy@jcline.org> wrote:
> > > > and it's hanging at "memset(log_tbl, 0, sizeof(*log_tbl) + log_size);"
> > > 
> > > Thanks. Well, it looks like the memory that is supposedly allocated is not
> > > usable. I'm thinking this is a firmware bug.
> > > Ard, would you agree on this assumption? Thoughts on how to proceed?
> > 
> > Check if the BIOS is up to date?
> 
> How would that help? The no regression policy demands, that Linux continues
> working on systems, where it worked before. So upgrading the firmware is no
> solution, is it? Until a solution is found, the commits should be reverted.

Nope. You are right.

/Jarkko

^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2018-03-16 13:01 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-06 16:00 Regression from efi: call get_event_log before ExitBootServices Jeremy Cline
     [not found] ` <01000161fc0b4755-df0621f4-ab5d-479a-b425-adf98427a308-000000-p/GC64/jrecnJqMo6gzdpkEOCMrvLtNR@public.gmane.org>
2018-03-07  8:41   ` Thiebaud Weksteen via tpmdd-devel
2018-03-07 11:16     ` Hans de Goede
2018-03-07 12:00       ` Javier Martinez Canillas
2018-03-07 17:33     ` Jeremy Cline
2018-03-08  8:45       ` Thiebaud Weksteen
2018-03-08 18:20         ` Jeremy Cline
     [not found] ` <e7c2be5c-cf21-fc2d-efda-d9222d93ffad@redhat.com>
     [not found]   ` <b32f335c-0d77-1749-f7fe-65f512280255@redhat.com>
     [not found]     ` <ade378f6-c997-1d48-a30d-cceee6435fc8@redhat.com>
     [not found]       ` <a3b5f822-f8f4-e2f5-46da-e23e13174f28@redhat.com>
2018-03-08 16:50         ` Hans de Goede
2018-03-08 17:26           ` Jeremy Cline
2018-03-09  9:29             ` Hans de Goede
2018-03-09 10:43               ` Thiebaud Weksteen
2018-03-09 16:54                 ` Jeremy Cline
2018-03-10 10:45                   ` Thiebaud Weksteen
2018-03-12 10:17                     ` Jarkko Sakkinen
2018-03-12 10:41                       ` Paul Menzel
2018-03-16 13:01                         ` Jarkko Sakkinen
2018-03-12 11:08                     ` Ard Biesheuvel
2018-03-12 14:30                       ` Jeremy Cline
2018-03-12 14:56                         ` Ard Biesheuvel
2018-03-12 17:01                           ` Jeremy Cline
2018-03-12 17:30                             ` Ard Biesheuvel
2018-03-12 18:29                               ` Thiebaud Weksteen
2018-03-12 18:33                                 ` Jeremy Cline
2018-03-12 19:55                                   ` Thiebaud Weksteen
2018-03-12 21:02                                     ` Ard Biesheuvel
2018-03-13  7:24                                       ` Thiebaud Weksteen
2018-03-13  8:08                                       ` Hans de Goede
2018-03-13  1:50                                     ` Jeremy Cline
2018-03-13  7:47                                     ` Hans de Goede
2018-03-13  7:59                                       ` Ard Biesheuvel
2018-03-13  8:02                                         ` Ard Biesheuvel
2018-03-13 10:23                                         ` Thiebaud Weksteen
2018-03-13 10:30                                           ` Ard Biesheuvel
2018-03-13 13:41                                         ` Jeremy Cline
2018-03-13 13:43                                           ` Ard Biesheuvel
2018-03-13 15:00                                             ` Thiebaud Weksteen
2018-03-13 12:51                                       ` Andy Shevchenko
2018-03-12 18:30                               ` Jeremy Cline
2018-03-09 17:03               ` James Bottomley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).