Clint Pachl <pa...@ecentryx.com> writes:

> This is how I got suspend and hibernate working again on my Huawei
> Matebook after upgrading to 7.0 release. I thought I'd share here in
> case it helps someone else.
>
>
> SYNOPSIS:
>
> Initiating a "sleep" state blanks the screen and illuminates the
> keyboard (indicating sleep is immenent); but the laptop would never go
> to sleep. It would also never wake up. However, pressing the power
> button cleanly shutdown the system.
>
> After comparing the 7.0 dmesg with an older version (6.6), I noticed
> this difference:
>
> tpm0 at acpi0 TPM_ addr 0xfed40040/0x1000: timed out waiting for
> validity
>
> acpi(4) confirmed that the TPM does connect to the ACPI driver. The
> kernel error message above is a good hint that the TPM could be
> preventing suspend and hibernate.

Quite possible.

>
>
> SOLUTION #1:
>
> I disabled TPM in the kernel at the boot prompt (i.e., boot -c). Within
> UKC, "tpm" matched another device. I disabled TPM specifying the device
> number (devno) of the tpm0 device.
>
>   UKC> list tpm
>   UKC> disable 433
>
> If this is the solution for you, make it permanent using the kernel
> configuration file, bsd.re-config(5).
>
>
> SOLUTION #2:
>
> There is a "TCM/TPM" setting in BIOS; I disabled it. Booting the
> base 7.0 kernel (TPM enabled) also fixed "sleep" modes.
>
> This is the solution I decided to use.
>

This is the best approach.

>
> REQUEST FOR COMMENT:
>
> I'm not sure if disabling TPM like this creates a security issue.
> Please let me know if there are negative repercussions.
>

The tpm driver exists only to assist suspend/hibernate. It's not used
for anything involving "security."

> Also, is this a bug that should be reported to bugs@?
>

Any chance you can try -current? Or maybe provide a copy of
/var/db/acpi/TPM.*? You can either disassemble it with iasl from the
acpica port, provide an inline hex dump via hexdump(1), or the
binary. It can tell me what the TPM start method is that your hardware
wants the OS to use.

I recently added support to -current for a start method seen in some TPM
2.0 devices, but it doesn't support all known methods. It might allow
you to avoid disabling in the BIOS.

A full dmesg would also be appreciated.

>
> ACPI from 7.0 DMESG:
>
> "ELAN2201" at acpi0 not configured
> "INT0E0C" at acpi0 not configured
> "INT33A1" at acpi0 not configured
> "INT3400" at acpi0 not configured
> "INT3403" at acpi0 not configured
> "INT3403" at acpi0 not configured
> "INT3403" at acpi0 not configured
> "INT3403" at acpi0 not configured
> "INT3403" at acpi0 not configured
> "INT344B" at acpi0 not configured
> "PNP0C14" at acpi0 not configured
> "PNP0C14" at acpi0 not configured
> "PNP0C14" at acpi0 not configured
> "WDT0001" at acpi0 not configured
> acpi0 at bios0: ACPI 5.0
> acpi0: sleep states S0 S3 S4 S5
> acpi0: tables DSDT FACP UEFI UEFI ECDT SSDT MSDM SSDT SSDT TPM2 SSDT
> SSDT SSDT ASPT BOOT HPET APIC MCFG SSDT WSMT SSDT DBGP DBG2 SSDT SSDT
> DMAR NHLT FPDT BGRT acpi0: wakeup devices GLAN(S4) XHC_(S3) XDCI(S4)
> HDAS(S4) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4)
> PXSX(S4) RP05(S4) PXSX(S4) RP06(S4) PXSX(S4) [...] acpiac0 at acpi0: AC
> unit online acpials0 at acpi0: ALSD acpibat0 at acpi0: BAT0 model
> "BASE-BAT" serial 123456789 type Li oem "Kollur" acpibtn0 at acpi0:
> LID_ acpibtn1 at acpi0: PWRB acpicmos0 at acpi0
> acpicpu0 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33),
> C1(1000@1 mwait.1), PSS
> acpicpu1 at acpi0: C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33),
> C1(1000@1 mwait.1), PSS acpicpu2 at acpi0: C3(200@1034 mwait.1@0x60),
> C2(200@151 mwait.1@0x33), C1(1000@1 mwait.1), PSS acpicpu3 at acpi0:
> C3(200@1034 mwait.1@0x60), C2(200@151 mwait.1@0x33), C1(1000@1
> mwait.1), PSS acpiec0 at acpi0 acpihpet0 at acpi0: 23999999 Hz
> acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
> acpimcfg0 at acpi0
> acpimcfg0: addr 0xe0000000, bus 0-255
> acpipci0 at acpi0 PCI0: 0x00000000 0x00000011 0x00000001
> acpiprt0 at acpi0: bus 0 (PCI0)
> acpiprt1 at acpi0: bus -1 (RP01)
> acpiprt10 at acpi0: bus -1 (RP10)
> acpiprt11 at acpi0: bus -1 (RP11)
> acpiprt12 at acpi0: bus -1 (RP12)
> acpiprt13 at acpi0: bus -1 (RP13)
> acpiprt14 at acpi0: bus -1 (RP14)
> acpiprt15 at acpi0: bus -1 (RP15)
> acpiprt16 at acpi0: bus -1 (RP16)
> acpiprt17 at acpi0: bus -1 (RP17)
> acpiprt18 at acpi0: bus -1 (RP18)
> acpiprt19 at acpi0: bus -1 (RP19)
> acpiprt2 at acpi0: bus -1 (RP02)
> acpiprt20 at acpi0: bus -1 (RP20)
> acpiprt21 at acpi0: bus -1 (RP21)
> acpiprt22 at acpi0: bus -1 (RP22)
> acpiprt23 at acpi0: bus -1 (RP23)
> acpiprt24 at acpi0: bus -1 (RP24)
> acpiprt3 at acpi0: bus -1 (RP03)
> acpiprt4 at acpi0: bus -1 (RP04)
> acpiprt5 at acpi0: bus -1 (RP05)
> acpiprt6 at acpi0: bus -1 (RP06)
> acpiprt7 at acpi0: bus 1 (RP07)
> acpiprt8 at acpi0: bus -1 (RP08)
> acpiprt9 at acpi0: bus 2 (RP09)
> acpipwrres0 at acpi0: WRST
> acpipwrres1 at acpi0: WRST
> acpipwrres10 at acpi0: WRST
> acpipwrres11 at acpi0: WRST
> acpipwrres12 at acpi0: WRST
> acpipwrres13 at acpi0: WRST
> acpipwrres14 at acpi0: WRST
> acpipwrres15 at acpi0: WRST
> acpipwrres16 at acpi0: WRST
> acpipwrres17 at acpi0: WRST
> acpipwrres18 at acpi0: WRST
> acpipwrres19 at acpi0: WRST
> acpipwrres2 at acpi0: WRST
> acpipwrres3 at acpi0: WRST
> acpipwrres4 at acpi0: WRST
> acpipwrres5 at acpi0: WRST
> acpipwrres6 at acpi0: WRST
> acpipwrres7 at acpi0: WRST
> acpipwrres8 at acpi0: WRST
> acpipwrres9 at acpi0: WRST
> acpitimer0 at acpi0: 3579545 Hz, 24 bits
> acpitz0 at acpi0: critical temperature is 98 degC
> acpivideo0 at acpi0: GFX0
> acpivout0 at acpivideo0: DD1F
> tpm0 at acpi0 TPM_ addr 0xfed40040/0x1000: timed out waiting for
> validity

Reply via email to