Thunderbolt runtime D3 and PCIe D3 Cold support

Bug #1800770 reported by AceLan Kao
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
HWE Next
Fix Released
Undecided
Unassigned
linux-oem (Ubuntu)
Fix Released
Undecided
AceLan Kao
Bionic
Fix Released
Undecided
Unassigned

Bug Description

[Impact]
Currently in Ubuntu Bionic 4.15 kernel, we already support thunderbolt to enter runtime D3 Hot, and require BIOS' assist to cut off the power of the thunderbolt.
After OSI "Windows 2017.2" (Windows 10 version 1709), BIOS stop cutting off the power of thunderbolt, and leave it to OS to set thunderbolt to D3 Cold. It consumes more than 2+Watt during short/long idle when thunderbolt is in D3 Hot, instead of D3 Cold.

[Fix]
To add D3 Cold support, we mainly require this patchset[1] which is targeted to enter v4.20. To avoid conflicts and solve error/warning message, I cherry picked 142 and backported 10 commit. I also cherry picked the "Windows 2017.2" OSI commit[2] as a whole.

[Test]
Verified on 2 machines with Alpine Ridge thunderbolt and 1 machine with Titan Ridge thunderbolt, after S3 30 times, hotplug the thunderbolt dockering, the HDMI output, Ethernet, USB disk are still working. And verified the SRU stress test on another Alpine Ridge thunderbolt machine, the result is positive.

[Regression Potential]
Medium. Although other engineers and I have done some testing on some machines, our QA will do a more thoroughly testing when the kernel is in proposed archive.

1. https://www.spinics.net/lists/linux-acpi/msg83977.html
2. https://git.kernel.org/pub/scm/linux/kernel/git/mnyman/xhci.git/commit/?h=for-usb-next&id=140a6c8af798dfcc06796f907656604c6914

Revision history for this message
AceLan Kao (acelankao) wrote :
AceLan Kao (acelankao)
tags: added: originate-from-1781335 somerville
AceLan Kao (acelankao)
Changed in linux-oem (Ubuntu):
status: In Progress → Fix Committed
Changed in linux-oem (Ubuntu Bionic):
status: New → Fix Committed
Revision history for this message
AceLan Kao (acelankao) wrote :

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-bionic' to 'verification-done-bionic'. If the problem still exists, change the tag 'verification-needed-bionic' to 'verification-failed-bionic'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-bionic
AceLan Kao (acelankao)
tags: added: verification-done-bionic
removed: verification-needed-bionic
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (9.6 KiB)

This bug was fixed in the package linux-oem - 4.15.0-1026.31

---------------
linux-oem (4.15.0-1026.31) bionic; urgency=medium

  * linux-oem: 4.15.0-1026.31 -proposed tracker (LP: #1800788)

  * Thunderbolt runtime D3 and PCIe D3 Cold support (LP: #1800770)
    - ACPI / hotplug / PCI: Don't scan bridges managed by native hotplug
    - ACPI / hotplug / PCI: Mark stale PCI devices disconnected
    - ACPI / hotplug / PCI: Drop unnecessary parentheses
    - PCI: Account for all bridges on bus when distributing bus numbers
    - PCI: Move resource distribution for single bridge outside loop
    - PCI: Improve pci_scan_bridge() and pci_scan_bridge_extend() doc
    - ACPICA: Recognize the Windows 10 version 1607 and 1703 OSI strings
    - ACPICA: Recognize the _OSI string "Windows 2017.2"
    - PCI: Do not skip power-managed bridges in pci_enable_wake()
    - PCI / ACPI: Enable wake automatically for power managed bridges
    - PCI: pciehp: Fix use-after-free on unplug
    - PCI: hotplug: Drop checking of PCI_BRIDGE_CONTROL in *_unconfigure_device()
    - PCI: Add SPDX GPL-2.0+ to replace GPL v2 or later boilerplate
    - PCI: pciehp: Declare pciehp_unconfigure_device() void
    - PCI: pciehp: Clear Presence Detect and Data Link Layer Status Changed on
      resume
    - PCI: pciehp: Document struct slot and struct controller
    - PCI: hotplug: Don't leak pci_slot on registration failure
    - PCI: pciehp: Fix unprotected list iteration in IRQ handler
    - PCI: pciehp: Drop unnecessary NULL pointer check
    - PCI: pciehp: Convert to threaded IRQ
    - PCI: pciehp: Convert to threaded polling
    - PCI: pciehp: Stop blinking on slot enable failure
    - PCI: pciehp: Handle events synchronously
    - PCI: pciehp: Drop slot workqueue
    - PCI/hotplug: ppc: correct a php_slot usage after free
    - PCI: hotplug: Demidlayer registration with the core
    - PCI: pciehp: Publish to user space last on probe
    - PCI: pciehp: Track enable/disable status
    - PCI: pciehp: Enable/disable exclusively from IRQ thread
    - PCI: pciehp: Drop enable/disable lock
    - PCI: pciehp: Declare pciehp_enable/disable_slot() static
    - PCI: pciehp: Tolerate initially unstable link
    - PCI: pciehp: Become resilient to missed events
    - PCI: pciehp: Always enable occupied slot on probe
    - PCI: pciehp: Avoid slot access during reset
    - PCI: portdrv: Deduplicate PM callback iterator
    - PCI/portdrv: Move pcieport_if.h to drivers/pci/pcie/
    - PCI/portdrv: Merge pcieport_if.h into portdrv.h
    - PCI/PM: Move pcie_clear_root_pme_status() to core
    - PCI/portdrv: Remove pcie_port_bus_type link order dependency
    - PCI/portdrv: Disable port driver in compat mode
    - PCI/portdrv: Remove unused PCIE_PORT_SERVICE_VC
    - PCI/portdrv: Remove "pcie_hp=nomsi" kernel parameter
    - PCI/portdrv: Remove unnecessary "pcie_ports=auto" parameter
    - PCI/portdrv: Encapsulate pcie_ports_auto inside the port driver
    - PCI: pciehp: Clear spurious events earlier on resume
    - PCI: pciehp: Obey compulsory command delay after resume
    - PCI: pciehp: Support interrupts sent from D3hot
    - PCI: pciehp: Resume to D0 on enable/disable
    - PCI: pciehp: Resum...

Read more...

Changed in linux-oem (Ubuntu Bionic):
status: Fix Committed → Fix Released
Changed in linux-oem (Ubuntu):
status: Fix Committed → Fix Released
Changed in hwe-next:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers