Re: [PATCH 0/4] Add device links between tunneled USB3 devices and USB4 Host

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/20/2024 01:41, Mika Westerberg wrote:
+CC Mario from AMD side to check that we are good and don't break
anything accidentally.

On Wed, Jun 19, 2024 at 04:03:01PM +0300, Mathias Nyman wrote:
The relationship between a USB4 Host Interface providing USB3 tunnels,
and tunneled USB3 devices is not represented in device hierarchy.

This caused issues with power managment as devices may suspend and
resume in incorrect order.
A device link between the USB4 Host Interface and the USB3 xHCI was
originally added to solve this, preventing the USB4 Host Interface from
suspending if the USB3 xHCI Host was still active.
This unfortunately also prevents USB4 Host Interface from suspending even
if the USB3 xHCI Host is only serving native non-tunneled USB devices.

Improve the current powermanagement situation by creating device links
directly from tunneled USB3 devices to the USB4 Host Interface they depend
on instead of a device link between the hosts.
This way USB4 host may suspend when the last tunneled device is
disconnected.

Intel xHCI hosts are capable of reporting if connected USB3 devices are
tunneled via vendor specific capabilities.
Use this until a standard way is available.

Mathias Nyman (4):
   xhci: Add USB4 tunnel detection for USB3 devices on Intel hosts
   usb: Add tunneled parameter to usb device structure
   usb: acpi: add device link between tunneled USB3 device and USB4 Host
     Interface
   thunderbolt: Don't create device link from USB4 Host Interface to USB3
     xHC host

  drivers/thunderbolt/acpi.c       | 40 ++++++------------------
  drivers/usb/core/usb-acpi.c      | 52 ++++++++++++++++++++++++++++++++
  drivers/usb/host/xhci-ext-caps.h |  5 +++
  drivers/usb/host/xhci-hub.c      | 29 ++++++++++++++++++
  drivers/usb/host/xhci.c          | 12 ++++++++
  drivers/usb/host/xhci.h          |  1 +
  include/linux/usb.h              |  2 ++
  7 files changed, 111 insertions(+), 30 deletions(-)

--
2.25.1

Hi Mika,

Thanks for looping me in. Unfortunately with this is appears the XHCI controller link never gets created. I've not checked functional impact from this, but I'd guess there "should" be some functional problems too.

I grabbed a tree output on an AMD Phoenix system using:

# tree -l /sys/bus/pci/drivers/thunderbolt/ -L 5

I'll attach the before/after patch. Also here are the relevant devices from lspci -nn output:

00:03.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Family 19h USB4/Thunderbolt PCIe tunnel [1022:14ef] 00:04.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Family 19h USB4/Thunderbolt PCIe tunnel [1022:14ef]
.
.
.
c4:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:15c0] c4:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Device [1022:15c1] c4:00.5 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Pink Sardine USB4/Thunderbolt NHI controller #1 [1022:1668] c4:00.6 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Pink Sardine USB4/Thunderbolt NHI controller #2 [1022:1669]
/sys/bus/pci/drivers/thunderbolt/
├── 0000:c4:00.5 -> ../../../../devices/pci0000:00/0000:00:08.3/0000:c4:00.5
│   ├── ari_enabled
│   ├── broken_parity_status
│   ├── class
│   ├── config
│   ├── consistent_dma_mask_bits
│   ├── consumer:pci:0000:00:03.1 -> ../../../virtual/devlink/pci:0000:c4:00.5--pci:0000:00:03.1
│   │   ├── auto_remove_on
│   │   ├── consumer -> ../../../pci0000:00/0000:00:03.1
│   │   │   ├── 0000:00:03.1:pcie001
│   │   │   │   ├── driver -> ../../../../bus/pci_express/drivers/pcie_pme
│   │   │   │   ├── power
│   │   │   │   ├── subsystem -> ../../../../bus/pci_express
│   │   │   │   └── uevent
│   │   │   ├── 0000:00:03.1:pcie004
│   │   │   │   ├── driver -> ../../../../bus/pci_express/drivers/pciehp
│   │   │   │   ├── power
│   │   │   │   ├── subsystem -> ../../../../bus/pci_express  [recursive, not followed]
│   │   │   │   └── uevent
│   │   │   ├── aer_dev_correctable
│   │   │   ├── aer_dev_fatal
│   │   │   ├── aer_dev_nonfatal
│   │   │   ├── aer_rootport_total_err_cor
│   │   │   ├── aer_rootport_total_err_fatal
│   │   │   ├── aer_rootport_total_err_nonfatal
│   │   │   ├── ari_enabled
│   │   │   ├── broken_parity_status
│   │   │   ├── class
│   │   │   ├── config
│   │   │   ├── consistent_dma_mask_bits
│   │   │   ├── current_link_speed
│   │   │   ├── current_link_width
│   │   │   ├── d3cold_allowed
│   │   │   ├── device
│   │   │   ├── dma_mask_bits
│   │   │   ├── driver -> ../../../bus/pci/drivers/pcieport
│   │   │   │   ├── 0000:00:01.3 -> ../../../../devices/pci0000:00/0000:00:01.3
│   │   │   │   ├── 0000:00:02.1 -> ../../../../devices/pci0000:00/0000:00:02.1
│   │   │   │   ├── 0000:00:02.4 -> ../../../../devices/pci0000:00/0000:00:02.4
│   │   │   │   ├── 0000:00:03.1 -> ../../../../devices/pci0000:00/0000:00:03.1  [recursive, not followed]
│   │   │   │   ├── 0000:00:04.1 -> ../../../../devices/pci0000:00/0000:00:04.1
│   │   │   │   ├── 0000:00:08.1 -> ../../../../devices/pci0000:00/0000:00:08.1
│   │   │   │   ├── 0000:00:08.2 -> ../../../../devices/pci0000:00/0000:00:08.2
│   │   │   │   ├── 0000:00:08.3 -> ../../../../devices/pci0000:00/0000:00:08.3
│   │   │   │   ├── bind
│   │   │   │   ├── new_id
│   │   │   │   ├── remove_id
│   │   │   │   ├── uevent
│   │   │   │   └── unbind
│   │   │   ├── driver_override
│   │   │   ├── enable
│   │   │   ├── firmware_node -> ../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:13
│   │   │   │   ├── adr
│   │   │   │   ├── device:14
│   │   │   │   ├── LNXPOWER:04
│   │   │   │   ├── path
│   │   │   │   ├── physical_node -> ../../../../pci0000:00/0000:00:03.1  [recursive, not followed]
│   │   │   │   ├── power
│   │   │   │   ├── power_resources_D0
│   │   │   │   ├── power_resources_D3hot
│   │   │   │   ├── power_state
│   │   │   │   ├── real_power_state
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../../bus/acpi
│   │   │   │   ├── uevent
│   │   │   │   └── wakeup
│   │   │   ├── iommu -> ../0000:00:00.2/iommu/ivhd0
│   │   │   │   ├── amd-iommu
│   │   │   │   ├── device -> ../../../0000:00:00.2
│   │   │   │   ├── devices
│   │   │   │   ├── power
│   │   │   │   ├── subsystem -> ../../../../../class/iommu
│   │   │   │   └── uevent
│   │   │   ├── iommu_group -> ../../../kernel/iommu_groups/5
│   │   │   │   ├── devices
│   │   │   │   ├── reserved_regions
│   │   │   │   └── type
│   │   │   ├── irq
│   │   │   ├── link
│   │   │   ├── local_cpulist
│   │   │   ├── local_cpus
│   │   │   ├── max_link_speed
│   │   │   ├── max_link_width
│   │   │   ├── modalias
│   │   │   ├── msi_bus
│   │   │   ├── msi_irqs
│   │   │   │   └── 41
│   │   │   ├── numa_node
│   │   │   ├── pci_bus
│   │   │   │   └── 0000:04
│   │   │   ├── power
│   │   │   │   ├── async
│   │   │   │   ├── autosuspend_delay_ms
│   │   │   │   ├── control
│   │   │   │   ├── runtime_active_kids
│   │   │   │   ├── runtime_active_time
│   │   │   │   ├── runtime_enabled
│   │   │   │   ├── runtime_status
│   │   │   │   ├── runtime_suspended_time
│   │   │   │   ├── runtime_usage
│   │   │   │   ├── wakeup
│   │   │   │   ├── wakeup_abort_count
│   │   │   │   ├── wakeup_active
│   │   │   │   ├── wakeup_active_count
│   │   │   │   ├── wakeup_count
│   │   │   │   ├── wakeup_expire_count
│   │   │   │   ├── wakeup_last_time_ms
│   │   │   │   ├── wakeup_max_time_ms
│   │   │   │   └── wakeup_total_time_ms
│   │   │   ├── power_state
│   │   │   ├── remove
│   │   │   ├── rescan
│   │   │   ├── reset
│   │   │   ├── reset_method
│   │   │   ├── resource
│   │   │   ├── revision
│   │   │   ├── secondary_bus_number
│   │   │   ├── subordinate_bus_number
│   │   │   ├── subsystem -> ../../../bus/pci
│   │   │   │   ├── devices
│   │   │   │   ├── drivers
│   │   │   │   ├── drivers_autoprobe
│   │   │   │   ├── drivers_probe
│   │   │   │   ├── rescan
│   │   │   │   ├── resource_alignment
│   │   │   │   ├── slots
│   │   │   │   └── uevent
│   │   │   ├── subsystem_device
│   │   │   ├── subsystem_vendor
│   │   │   ├── supplier:pci:0000:c4:00.5 -> ../../virtual/devlink/pci:0000:c4:00.5--pci:0000:00:03.1  [recursive, not followed]
│   │   │   ├── uevent
│   │   │   ├── vendor
│   │   │   └── wakeup
│   │   │       └── wakeup6
│   │   ├── runtime_pm
│   │   ├── status
│   │   ├── subsystem -> ../../../../class/devlink
│   │   │   ├── pci:0000:c2:00.0--pci:0000:c2:00.1 -> ../../devices/virtual/devlink/pci:0000:c2:00.0--pci:0000:c2:00.1
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── consumer -> ../../../pci0000:00/0000:00:08.1/0000:c2:00.1
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── supplier -> ../../../pci0000:00/0000:00:08.1/0000:c2:00.0
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   ├── pci:0000:c4:00.5--pci:0000:00:03.1 -> ../../devices/virtual/devlink/pci:0000:c4:00.5--pci:0000:00:03.1  [recursive, not followed]
│   │   │   ├── pci:0000:c4:00.6--pci:0000:00:04.1 -> ../../devices/virtual/devlink/pci:0000:c4:00.6--pci:0000:00:04.1
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── consumer -> ../../../pci0000:00/0000:00:04.1  [recursive, not followed]
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── supplier -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.6
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   ├── platform:PNP0C14:00--wmi:05901221-D566-11D1-B2F0-00A0C9062910 -> ../../devices/virtual/devlink/platform:PNP0C14:00--wmi:05901221-D566-11D1-B2F0-00A0C9062910
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   └── platform:PNP0C14:00--wmi:ABBC0F6A-8EA1-11D1-00A0-C90629100000 -> ../../devices/virtual/devlink/platform:PNP0C14:00--wmi:ABBC0F6A-8EA1-11D1-00A0-C90629100000
│   │   │       ├── auto_remove_on
│   │   │       ├── runtime_pm
│   │   │       ├── status
│   │   │       ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │       ├── sync_state_only
│   │   │       └── uevent
│   │   ├── supplier -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.5  [recursive, not followed]
│   │   ├── sync_state_only
│   │   └── uevent
│   ├── current_link_speed
│   ├── current_link_width
│   ├── d3cold_allowed
│   ├── device
│   ├── dma_mask_bits
│   ├── domain0
│   │   ├── 0-0
│   │   │   ├── authorized
│   │   │   ├── generation
│   │   │   ├── power
│   │   │   │   ├── async
│   │   │   │   ├── autosuspend_delay_ms
│   │   │   │   ├── control
│   │   │   │   ├── runtime_active_kids
│   │   │   │   ├── runtime_active_time
│   │   │   │   ├── runtime_enabled
│   │   │   │   ├── runtime_status
│   │   │   │   ├── runtime_suspended_time
│   │   │   │   ├── runtime_usage
│   │   │   │   ├── wakeup
│   │   │   │   ├── wakeup_abort_count
│   │   │   │   ├── wakeup_active
│   │   │   │   ├── wakeup_active_count
│   │   │   │   ├── wakeup_count
│   │   │   │   ├── wakeup_expire_count
│   │   │   │   ├── wakeup_last_time_ms
│   │   │   │   ├── wakeup_max_time_ms
│   │   │   │   └── wakeup_total_time_ms
│   │   │   ├── subsystem -> ../../../../../../bus/thunderbolt
│   │   │   │   ├── devices
│   │   │   │   ├── drivers
│   │   │   │   ├── drivers_autoprobe
│   │   │   │   ├── drivers_probe
│   │   │   │   └── uevent
│   │   │   ├── uevent
│   │   │   ├── unique_id
│   │   │   ├── usb4_port2
│   │   │   │   ├── link
│   │   │   │   ├── power
│   │   │   │   └── uevent
│   │   │   └── wakeup
│   │   │       └── wakeup47
│   │   ├── deauthorization
│   │   ├── iommu_dma_protection
│   │   ├── power
│   │   │   ├── async
│   │   │   ├── runtime_active_kids
│   │   │   ├── runtime_enabled
│   │   │   ├── runtime_status
│   │   │   ├── runtime_usage
│   │   │   ├── wakeup
│   │   │   ├── wakeup_abort_count
│   │   │   ├── wakeup_active
│   │   │   ├── wakeup_active_count
│   │   │   ├── wakeup_count
│   │   │   ├── wakeup_expire_count
│   │   │   ├── wakeup_last_time_ms
│   │   │   ├── wakeup_max_time_ms
│   │   │   └── wakeup_total_time_ms
│   │   ├── security
│   │   ├── subsystem -> ../../../../../bus/thunderbolt  [recursive, not followed]
│   │   ├── uevent
│   │   └── wakeup
│   │       └── wakeup48
│   │           ├── active_count
│   │           ├── active_time_ms
│   │           ├── device -> ../../../domain0  [recursive, not followed]
│   │           ├── event_count
│   │           ├── expire_count
│   │           ├── last_change_ms
│   │           ├── max_time_ms
│   │           ├── name
│   │           ├── prevent_suspend_time_ms
│   │           ├── subsystem -> ../../../../../../../class/wakeup
│   │           ├── total_time_ms
│   │           ├── uevent
│   │           └── wakeup_count
│   ├── driver -> ../../../../bus/pci/drivers/thunderbolt  [recursive, not followed]
│   ├── driver_override
│   ├── enable
│   ├── firmware_node -> ../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:36/device:3b
│   │   ├── adr
│   │   ├── path
│   │   ├── physical_node -> ../../../../../pci0000:00/0000:00:08.3/0000:c4:00.5  [recursive, not followed]
│   │   ├── power
│   │   │   ├── async
│   │   │   ├── autosuspend_delay_ms
│   │   │   ├── control
│   │   │   ├── runtime_active_kids
│   │   │   ├── runtime_active_time
│   │   │   ├── runtime_enabled
│   │   │   ├── runtime_status
│   │   │   ├── runtime_suspended_time
│   │   │   └── runtime_usage
│   │   ├── power_resources_D0
│   │   │   └── LNXPOWER:0f -> ../../LNXPOWER:0f
│   │   │       ├── hid
│   │   │       ├── modalias
│   │   │       ├── path
│   │   │       ├── power
│   │   │       ├── resource_in_use
│   │   │       ├── status
│   │   │       ├── subsystem -> ../../../../../../bus/acpi  [recursive, not followed]
│   │   │       └── uevent
│   │   ├── power_resources_D3hot
│   │   │   └── LNXPOWER:0f -> ../../LNXPOWER:0f  [recursive, not followed]
│   │   ├── power_state
│   │   ├── real_power_state
│   │   ├── status
│   │   ├── subsystem -> ../../../../../../bus/acpi  [recursive, not followed]
│   │   ├── uevent
│   │   └── wakeup
│   │       └── wakeup29
│   │           ├── active_count
│   │           ├── active_time_ms
│   │           ├── device -> ../../../device:3b  [recursive, not followed]
│   │           ├── event_count
│   │           ├── expire_count
│   │           ├── last_change_ms
│   │           ├── max_time_ms
│   │           ├── name
│   │           ├── prevent_suspend_time_ms
│   │           ├── subsystem -> ../../../../../../../../class/wakeup  [recursive, not followed]
│   │           ├── total_time_ms
│   │           ├── uevent
│   │           └── wakeup_count
│   ├── iommu -> ../../0000:00:00.2/iommu/ivhd0  [recursive, not followed]
│   ├── iommu_group -> ../../../../kernel/iommu_groups/29
│   │   ├── devices
│   │   │   └── 0000:c4:00.5 -> ../../../../devices/pci0000:00/0000:00:08.3/0000:c4:00.5  [recursive, not followed]
│   │   ├── reserved_regions
│   │   └── type
│   ├── irq
│   ├── link
│   │   ├── l0s_aspm
│   │   └── l1_aspm
│   ├── local_cpulist
│   ├── local_cpus
│   ├── max_link_speed
│   ├── max_link_width
│   ├── modalias
│   ├── msi_bus
│   ├── msi_irqs
│   │   ├── 50
│   │   ├── 51
│   │   ├── 53
│   │   ├── 54
│   │   ├── 55
│   │   ├── 56
│   │   ├── 57
│   │   ├── 58
│   │   ├── 59
│   │   ├── 61
│   │   ├── 62
│   │   ├── 64
│   │   ├── 65
│   │   ├── 66
│   │   ├── 67
│   │   └── 68
│   ├── numa_node
│   ├── pools
│   ├── power
│   │   ├── async
│   │   ├── autosuspend_delay_ms
│   │   ├── control
│   │   ├── runtime_active_kids
│   │   ├── runtime_active_time
│   │   ├── runtime_enabled
│   │   ├── runtime_status
│   │   ├── runtime_suspended_time
│   │   ├── runtime_usage
│   │   ├── wakeup
│   │   ├── wakeup_abort_count
│   │   ├── wakeup_active
│   │   ├── wakeup_active_count
│   │   ├── wakeup_count
│   │   ├── wakeup_expire_count
│   │   ├── wakeup_last_time_ms
│   │   ├── wakeup_max_time_ms
│   │   └── wakeup_total_time_ms
│   ├── power_state
│   ├── remove
│   ├── rescan
│   ├── reset
│   ├── reset_method
│   ├── resource
│   ├── resource0
│   ├── revision
│   ├── subsystem -> ../../../../bus/pci  [recursive, not followed]
│   ├── subsystem_device
│   ├── subsystem_vendor
│   ├── uevent
│   ├── vendor
│   └── wakeup
│       └── wakeup49
│           ├── active_count
│           ├── active_time_ms
│           ├── device -> ../../../0000:c4:00.5  [recursive, not followed]
│           ├── event_count
│           ├── expire_count
│           ├── last_change_ms
│           ├── max_time_ms
│           ├── name
│           ├── prevent_suspend_time_ms
│           ├── subsystem -> ../../../../../../class/wakeup  [recursive, not followed]
│           ├── total_time_ms
│           ├── uevent
│           └── wakeup_count
├── 0000:c4:00.6 -> ../../../../devices/pci0000:00/0000:00:08.3/0000:c4:00.6  [recursive, not followed]
├── bind
├── module -> ../../../../module/thunderbolt
│   ├── coresize
│   ├── drivers
│   │   └── pci:thunderbolt -> ../../../bus/pci/drivers/thunderbolt  [recursive, not followed]
│   ├── holders
│   ├── initsize
│   ├── initstate
│   ├── notes
│   ├── parameters
│   │   ├── asym_threshold
│   │   ├── bw_alloc_mode
│   │   ├── clx
│   │   ├── dma_credits
│   │   ├── host_reset
│   │   ├── start_icm
│   │   └── xdomain
│   ├── refcnt
│   ├── sections
│   │   ├── __bpf_raw_tp_map
│   │   ├── __bug_table
│   │   ├── __dyndbg
│   │   ├── _ftrace_events
│   │   ├── __jump_table
│   │   ├── __kcrctab_gpl
│   │   ├── __ksymtab_gpl
│   │   ├── __ksymtab_strings
│   │   ├── __mcount_loc
│   │   ├── __param
│   │   ├── __patchable_function_entries
│   │   ├── __tracepoints
│   │   ├── __tracepoints_ptrs
│   │   └── __tracepoints_strings
│   ├── srcversion
│   ├── taint
│   └── uevent
├── new_id
├── remove_id
├── uevent
└── unbind

116 directories, 307 files
/sys/bus/pci/drivers/thunderbolt/
├── 0000:c4:00.5 -> ../../../../devices/pci0000:00/0000:00:08.3/0000:c4:00.5
│   ├── ari_enabled
│   ├── broken_parity_status
│   ├── class
│   ├── config
│   ├── consistent_dma_mask_bits
│   ├── consumer:pci:0000:00:03.1 -> ../../../virtual/devlink/pci:0000:c4:00.5--pci:0000:00:03.1
│   │   ├── auto_remove_on
│   │   ├── consumer -> ../../../pci0000:00/0000:00:03.1
│   │   │   ├── 0000:00:03.1:pcie001
│   │   │   │   ├── driver -> ../../../../bus/pci_express/drivers/pcie_pme
│   │   │   │   ├── power
│   │   │   │   ├── subsystem -> ../../../../bus/pci_express
│   │   │   │   └── uevent
│   │   │   ├── 0000:00:03.1:pcie004
│   │   │   │   ├── driver -> ../../../../bus/pci_express/drivers/pciehp
│   │   │   │   ├── power
│   │   │   │   ├── subsystem -> ../../../../bus/pci_express  [recursive, not followed]
│   │   │   │   └── uevent
│   │   │   ├── aer_dev_correctable
│   │   │   ├── aer_dev_fatal
│   │   │   ├── aer_dev_nonfatal
│   │   │   ├── aer_rootport_total_err_cor
│   │   │   ├── aer_rootport_total_err_fatal
│   │   │   ├── aer_rootport_total_err_nonfatal
│   │   │   ├── ari_enabled
│   │   │   ├── broken_parity_status
│   │   │   ├── class
│   │   │   ├── config
│   │   │   ├── consistent_dma_mask_bits
│   │   │   ├── current_link_speed
│   │   │   ├── current_link_width
│   │   │   ├── d3cold_allowed
│   │   │   ├── device
│   │   │   ├── dma_mask_bits
│   │   │   ├── driver -> ../../../bus/pci/drivers/pcieport
│   │   │   │   ├── 0000:00:01.3 -> ../../../../devices/pci0000:00/0000:00:01.3
│   │   │   │   ├── 0000:00:02.1 -> ../../../../devices/pci0000:00/0000:00:02.1
│   │   │   │   ├── 0000:00:02.4 -> ../../../../devices/pci0000:00/0000:00:02.4
│   │   │   │   ├── 0000:00:03.1 -> ../../../../devices/pci0000:00/0000:00:03.1  [recursive, not followed]
│   │   │   │   ├── 0000:00:04.1 -> ../../../../devices/pci0000:00/0000:00:04.1
│   │   │   │   ├── 0000:00:08.1 -> ../../../../devices/pci0000:00/0000:00:08.1
│   │   │   │   ├── 0000:00:08.2 -> ../../../../devices/pci0000:00/0000:00:08.2
│   │   │   │   ├── 0000:00:08.3 -> ../../../../devices/pci0000:00/0000:00:08.3
│   │   │   │   ├── bind
│   │   │   │   ├── new_id
│   │   │   │   ├── remove_id
│   │   │   │   ├── uevent
│   │   │   │   └── unbind
│   │   │   ├── driver_override
│   │   │   ├── enable
│   │   │   ├── firmware_node -> ../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:13
│   │   │   │   ├── adr
│   │   │   │   ├── device:14
│   │   │   │   ├── LNXPOWER:04
│   │   │   │   ├── path
│   │   │   │   ├── physical_node -> ../../../../pci0000:00/0000:00:03.1  [recursive, not followed]
│   │   │   │   ├── power
│   │   │   │   ├── power_resources_D0
│   │   │   │   ├── power_resources_D3hot
│   │   │   │   ├── power_state
│   │   │   │   ├── real_power_state
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../../bus/acpi
│   │   │   │   ├── uevent
│   │   │   │   └── wakeup
│   │   │   ├── iommu -> ../0000:00:00.2/iommu/ivhd0
│   │   │   │   ├── amd-iommu
│   │   │   │   ├── device -> ../../../0000:00:00.2
│   │   │   │   ├── devices
│   │   │   │   ├── power
│   │   │   │   ├── subsystem -> ../../../../../class/iommu
│   │   │   │   └── uevent
│   │   │   ├── iommu_group -> ../../../kernel/iommu_groups/5
│   │   │   │   ├── devices
│   │   │   │   ├── reserved_regions
│   │   │   │   └── type
│   │   │   ├── irq
│   │   │   ├── link
│   │   │   ├── local_cpulist
│   │   │   ├── local_cpus
│   │   │   ├── max_link_speed
│   │   │   ├── max_link_width
│   │   │   ├── modalias
│   │   │   ├── msi_bus
│   │   │   ├── msi_irqs
│   │   │   │   └── 41
│   │   │   ├── numa_node
│   │   │   ├── pci_bus
│   │   │   │   └── 0000:04
│   │   │   ├── power
│   │   │   │   ├── autosuspend_delay_ms
│   │   │   │   ├── control
│   │   │   │   ├── runtime_active_time
│   │   │   │   ├── runtime_status
│   │   │   │   ├── runtime_suspended_time
│   │   │   │   ├── wakeup
│   │   │   │   ├── wakeup_abort_count
│   │   │   │   ├── wakeup_active
│   │   │   │   ├── wakeup_active_count
│   │   │   │   ├── wakeup_count
│   │   │   │   ├── wakeup_expire_count
│   │   │   │   ├── wakeup_last_time_ms
│   │   │   │   ├── wakeup_max_time_ms
│   │   │   │   └── wakeup_total_time_ms
│   │   │   ├── power_state
│   │   │   ├── remove
│   │   │   ├── rescan
│   │   │   ├── reset
│   │   │   ├── reset_method
│   │   │   ├── resource
│   │   │   ├── revision
│   │   │   ├── secondary_bus_number
│   │   │   ├── subordinate_bus_number
│   │   │   ├── subsystem -> ../../../bus/pci
│   │   │   │   ├── devices
│   │   │   │   ├── drivers
│   │   │   │   ├── drivers_autoprobe
│   │   │   │   ├── drivers_probe
│   │   │   │   ├── rescan
│   │   │   │   ├── resource_alignment
│   │   │   │   ├── slots
│   │   │   │   └── uevent
│   │   │   ├── subsystem_device
│   │   │   ├── subsystem_vendor
│   │   │   ├── supplier:pci:0000:c4:00.5 -> ../../virtual/devlink/pci:0000:c4:00.5--pci:0000:00:03.1  [recursive, not followed]
│   │   │   ├── uevent
│   │   │   ├── vendor
│   │   │   └── wakeup
│   │   │       └── wakeup6
│   │   ├── runtime_pm
│   │   ├── status
│   │   ├── subsystem -> ../../../../class/devlink
│   │   │   ├── pci:0000:c2:00.0--pci:0000:c2:00.1 -> ../../devices/virtual/devlink/pci:0000:c2:00.0--pci:0000:c2:00.1
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── consumer -> ../../../pci0000:00/0000:00:08.1/0000:c2:00.1
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── supplier -> ../../../pci0000:00/0000:00:08.1/0000:c2:00.0
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   ├── pci:0000:c4:00.5--pci:0000:00:03.1 -> ../../devices/virtual/devlink/pci:0000:c4:00.5--pci:0000:00:03.1  [recursive, not followed]
│   │   │   ├── pci:0000:c4:00.5--pci:0000:c4:00.3 -> ../../devices/virtual/devlink/pci:0000:c4:00.5--pci:0000:c4:00.3
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── consumer -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.3
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── supplier -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.5  [recursive, not followed]
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   ├── pci:0000:c4:00.6--pci:0000:00:04.1 -> ../../devices/virtual/devlink/pci:0000:c4:00.6--pci:0000:00:04.1
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── consumer -> ../../../pci0000:00/0000:00:04.1  [recursive, not followed]
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── supplier -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.6
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   ├── pci:0000:c4:00.6--pci:0000:c4:00.4 -> ../../devices/virtual/devlink/pci:0000:c4:00.6--pci:0000:c4:00.4
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── consumer -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.4
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── supplier -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.6  [recursive, not followed]
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   ├── platform:PNP0C14:00--wmi:05901221-D566-11D1-B2F0-00A0C9062910 -> ../../devices/virtual/devlink/platform:PNP0C14:00--wmi:05901221-D566-11D1-B2F0-00A0C9062910
│   │   │   │   ├── auto_remove_on
│   │   │   │   ├── runtime_pm
│   │   │   │   ├── status
│   │   │   │   ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │   │   ├── sync_state_only
│   │   │   │   └── uevent
│   │   │   └── platform:PNP0C14:00--wmi:ABBC0F6A-8EA1-11D1-00A0-C90629100000 -> ../../devices/virtual/devlink/platform:PNP0C14:00--wmi:ABBC0F6A-8EA1-11D1-00A0-C90629100000
│   │   │       ├── auto_remove_on
│   │   │       ├── runtime_pm
│   │   │       ├── status
│   │   │       ├── subsystem -> ../../../../class/devlink  [recursive, not followed]
│   │   │       ├── sync_state_only
│   │   │       └── uevent
│   │   ├── supplier -> ../../../pci0000:00/0000:00:08.3/0000:c4:00.5  [recursive, not followed]
│   │   ├── sync_state_only
│   │   └── uevent
│   ├── consumer:pci:0000:c4:00.3 -> ../../../virtual/devlink/pci:0000:c4:00.5--pci:0000:c4:00.3  [recursive, not followed]
│   ├── current_link_speed
│   ├── current_link_width
│   ├── d3cold_allowed
│   ├── device
│   ├── dma_mask_bits
│   ├── domain0
│   │   ├── 0-0
│   │   │   ├── authorized
│   │   │   ├── generation
│   │   │   ├── power
│   │   │   │   ├── autosuspend_delay_ms
│   │   │   │   ├── control
│   │   │   │   ├── runtime_active_time
│   │   │   │   ├── runtime_status
│   │   │   │   ├── runtime_suspended_time
│   │   │   │   ├── wakeup
│   │   │   │   ├── wakeup_abort_count
│   │   │   │   ├── wakeup_active
│   │   │   │   ├── wakeup_active_count
│   │   │   │   ├── wakeup_count
│   │   │   │   ├── wakeup_expire_count
│   │   │   │   ├── wakeup_last_time_ms
│   │   │   │   ├── wakeup_max_time_ms
│   │   │   │   └── wakeup_total_time_ms
│   │   │   ├── subsystem -> ../../../../../../bus/thunderbolt
│   │   │   │   ├── devices
│   │   │   │   ├── drivers
│   │   │   │   ├── drivers_autoprobe
│   │   │   │   ├── drivers_probe
│   │   │   │   └── uevent
│   │   │   ├── uevent
│   │   │   ├── unique_id
│   │   │   ├── usb4_port2
│   │   │   │   ├── link
│   │   │   │   ├── power
│   │   │   │   └── uevent
│   │   │   └── wakeup
│   │   │       └── wakeup50
│   │   ├── deauthorization
│   │   ├── iommu_dma_protection
│   │   ├── power
│   │   │   ├── wakeup
│   │   │   ├── wakeup_abort_count
│   │   │   ├── wakeup_active
│   │   │   ├── wakeup_active_count
│   │   │   ├── wakeup_count
│   │   │   ├── wakeup_expire_count
│   │   │   ├── wakeup_last_time_ms
│   │   │   ├── wakeup_max_time_ms
│   │   │   └── wakeup_total_time_ms
│   │   ├── security
│   │   ├── subsystem -> ../../../../../bus/thunderbolt  [recursive, not followed]
│   │   ├── uevent
│   │   └── wakeup
│   │       └── wakeup51
│   │           ├── active_count
│   │           ├── active_time_ms
│   │           ├── device -> ../../../domain0  [recursive, not followed]
│   │           ├── event_count
│   │           ├── expire_count
│   │           ├── last_change_ms
│   │           ├── max_time_ms
│   │           ├── name
│   │           ├── prevent_suspend_time_ms
│   │           ├── subsystem -> ../../../../../../../class/wakeup
│   │           ├── total_time_ms
│   │           ├── uevent
│   │           └── wakeup_count
│   ├── driver -> ../../../../bus/pci/drivers/thunderbolt  [recursive, not followed]
│   ├── driver_override
│   ├── enable
│   ├── firmware_node -> ../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:36/device:3b
│   │   ├── adr
│   │   ├── path
│   │   ├── physical_node -> ../../../../../pci0000:00/0000:00:08.3/0000:c4:00.5  [recursive, not followed]
│   │   ├── power
│   │   │   ├── autosuspend_delay_ms
│   │   │   ├── control
│   │   │   ├── runtime_active_time
│   │   │   ├── runtime_status
│   │   │   └── runtime_suspended_time
│   │   ├── power_resources_D0
│   │   │   └── LNXPOWER:0f -> ../../LNXPOWER:0f
│   │   │       ├── hid
│   │   │       ├── modalias
│   │   │       ├── path
│   │   │       ├── power
│   │   │       ├── resource_in_use
│   │   │       ├── status
│   │   │       ├── subsystem -> ../../../../../../bus/acpi  [recursive, not followed]
│   │   │       └── uevent
│   │   ├── power_resources_D3hot
│   │   │   └── LNXPOWER:0f -> ../../LNXPOWER:0f  [recursive, not followed]
│   │   ├── power_state
│   │   ├── real_power_state
│   │   ├── status
│   │   ├── subsystem -> ../../../../../../bus/acpi  [recursive, not followed]
│   │   ├── uevent
│   │   └── wakeup
│   │       └── wakeup29
│   │           ├── active_count
│   │           ├── active_time_ms
│   │           ├── device -> ../../../device:3b  [recursive, not followed]
│   │           ├── event_count
│   │           ├── expire_count
│   │           ├── last_change_ms
│   │           ├── max_time_ms
│   │           ├── name
│   │           ├── prevent_suspend_time_ms
│   │           ├── subsystem -> ../../../../../../../../class/wakeup  [recursive, not followed]
│   │           ├── total_time_ms
│   │           ├── uevent
│   │           └── wakeup_count
│   ├── iommu -> ../../0000:00:00.2/iommu/ivhd0  [recursive, not followed]
│   ├── iommu_group -> ../../../../kernel/iommu_groups/29
│   │   ├── devices
│   │   │   └── 0000:c4:00.5 -> ../../../../devices/pci0000:00/0000:00:08.3/0000:c4:00.5  [recursive, not followed]
│   │   ├── reserved_regions
│   │   └── type
│   ├── irq
│   ├── link
│   │   ├── l0s_aspm
│   │   └── l1_aspm
│   ├── local_cpulist
│   ├── local_cpus
│   ├── max_link_speed
│   ├── max_link_width
│   ├── modalias
│   ├── msi_bus
│   ├── msi_irqs
│   │   ├── 57
│   │   ├── 59
│   │   ├── 60
│   │   ├── 61
│   │   ├── 62
│   │   ├── 63
│   │   ├── 64
│   │   ├── 65
│   │   ├── 66
│   │   ├── 67
│   │   ├── 68
│   │   ├── 69
│   │   ├── 70
│   │   ├── 71
│   │   ├── 72
│   │   └── 73
│   ├── numa_node
│   ├── pools
│   ├── power
│   │   ├── autosuspend_delay_ms
│   │   ├── control
│   │   ├── runtime_active_time
│   │   ├── runtime_status
│   │   ├── runtime_suspended_time
│   │   ├── wakeup
│   │   ├── wakeup_abort_count
│   │   ├── wakeup_active
│   │   ├── wakeup_active_count
│   │   ├── wakeup_count
│   │   ├── wakeup_expire_count
│   │   ├── wakeup_last_time_ms
│   │   ├── wakeup_max_time_ms
│   │   └── wakeup_total_time_ms
│   ├── power_state
│   ├── remove
│   ├── rescan
│   ├── reset
│   ├── reset_method
│   ├── resource
│   ├── resource0
│   ├── revision
│   ├── subsystem -> ../../../../bus/pci  [recursive, not followed]
│   ├── subsystem_device
│   ├── subsystem_vendor
│   ├── uevent
│   ├── vendor
│   └── wakeup
│       └── wakeup52
│           ├── active_count
│           ├── active_time_ms
│           ├── device -> ../../../0000:c4:00.5  [recursive, not followed]
│           ├── event_count
│           ├── expire_count
│           ├── last_change_ms
│           ├── max_time_ms
│           ├── name
│           ├── prevent_suspend_time_ms
│           ├── subsystem -> ../../../../../../class/wakeup  [recursive, not followed]
│           ├── total_time_ms
│           ├── uevent
│           └── wakeup_count
├── 0000:c4:00.6 -> ../../../../devices/pci0000:00/0000:00:08.3/0000:c4:00.6  [recursive, not followed]
├── bind
├── module -> ../../../../module/thunderbolt
│   ├── coresize
│   ├── drivers
│   │   └── pci:thunderbolt -> ../../../bus/pci/drivers/thunderbolt  [recursive, not followed]
│   ├── holders
│   ├── initsize
│   ├── initstate
│   ├── notes
│   ├── parameters
│   │   ├── asym_threshold
│   │   ├── bw_alloc_mode
│   │   ├── clx
│   │   ├── dma_credits
│   │   ├── host_reset
│   │   ├── start_icm
│   │   └── xdomain
│   ├── refcnt
│   ├── sections
│   │   ├── __bpf_raw_tp_map
│   │   ├── __bug_table
│   │   ├── __dyndbg
│   │   ├── _ftrace_events
│   │   ├── __jump_table
│   │   ├── __ksymtab_gpl
│   │   ├── __ksymtab_strings
│   │   ├── __mcount_loc
│   │   ├── __param
│   │   ├── __patchable_function_entries
│   │   ├── __tracepoints
│   │   ├── __tracepoints_ptrs
│   │   └── __tracepoints_strings
│   ├── taint
│   └── uevent
├── new_id
├── remove_id
├── uevent
└── unbind

125 directories, 294 files

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux