From 68aa38ed9d7776f7d77079e92d4d320ecbd4c495 Mon Sep 17 00:00:00 2001 From: Jason Huang Date: Fri, 17 Jul 2026 13:44:50 +0800 Subject: [PATCH] egis_etu905: Fix cancel operation to trigger template update --- libfprint/drivers/egismoc/egis_etu905.c | 118 ++++++-- libfprint/drivers/egismoc/egis_etu905.h | 8 +- tests/egis_etu905/custom.pcapng | Bin 35152 -> 34688 bytes tests/egis_etu905/custom.py | 52 ++-- tests/egis_etu905/device | 364 +++++++++++++----------- 5 files changed, 324 insertions(+), 218 deletions(-) diff --git a/libfprint/drivers/egismoc/egis_etu905.c b/libfprint/drivers/egismoc/egis_etu905.c index 649360a6..7ae973fb 100644 --- a/libfprint/drivers/egismoc/egis_etu905.c +++ b/libfprint/drivers/egismoc/egis_etu905.c @@ -31,8 +31,10 @@ struct _FpiDeviceEgisEtu905 { FpDevice parent; FpiSsm *task_ssm; + FpiSsm *identify_cancel_ssm; GPtrArray *enrolled_ids; gint max_enroll_stages; + gboolean identify_started; /* TRUE after cmd_sensor_identify is sent */ }; G_DEFINE_TYPE (FpiDeviceEgisEtu905, fpi_device_egis_etu905, FP_TYPE_DEVICE); @@ -80,6 +82,11 @@ static void egis_etu905_exec_cmd_full (FpDevice *device, static void egis_etu905_cancel (FpDevice *device); +static void egis_etu905_cancel_cb (FpDevice *device, + guchar *buffer_in, + gsize length_in, + GError *error); + static void egis_etu905_finger_on_sensor_cb (FpiUsbTransfer *transfer, FpDevice *device, @@ -1324,22 +1331,86 @@ egis_etu905_identify_check_cb (FpDevice *device, fpi_ssm_next_state (self->task_ssm); } +static void egis_etu905_identify_cancel_run_state (FpiSsm *ssm, + FpDevice *device); + static void -egis_etu905_identify_send_cancel_result_cb (FpDevice *device, - guchar *buffer_in, - gsize length_in, - GError *error) +egis_etu905_identify_cancel_ssm_done (FpiSsm *ssm, + FpDevice *device, + GError *error) +{ + FpiDeviceEgisEtu905 *self = FPI_DEVICE_EGIS_ETU905 (device); + + self->identify_cancel_ssm = NULL; + + egis_etu905_cancel_cb (device, NULL, 0, error); +} + +static void +egis_etu905_identify_cancel_next_state_cb (FpDevice *device, + guchar *buffer_in, + gsize length_in, + GError *error) { FpiDeviceEgisEtu905 *self = FPI_DEVICE_EGIS_ETU905 (device); if (error) - { - fpi_ssm_mark_failed (self->task_ssm, error); - return; - } + fpi_ssm_mark_failed (self->identify_cancel_ssm, error); + else + fpi_ssm_next_state (self->identify_cancel_ssm); +} - /* Advance to complete state */ - fpi_ssm_next_state (self->task_ssm); +static void +egis_etu905_identify_cancel_run_state (FpiSsm *ssm, + FpDevice *device) +{ + FpiDeviceEgisEtu905 *self = FPI_DEVICE_EGIS_ETU905 (device); + + switch (fpi_ssm_get_cur_state (ssm)) + { + case CANCEL_SENSOR_RESET: + /* Reset sensor to ensure device is in a clean state. + * Use NULL cancellable to ensure this command reaches the device. */ + egis_etu905_exec_cmd_full (device, cmd_sensor_reset, + G_N_ELEMENTS (cmd_sensor_reset), + egis_etu905_identify_cancel_next_state_cb, + NULL); + break; + + case CANCEL_SEND_CANCEL: + /* Send cmd_identify_cancel to trigger firmware template update. + * Only send if identify was actually started (cmd_sensor_identify was sent). + * Use NULL cancellable to ensure this command reaches the device. */ + if (self->identify_started) + { + egis_etu905_exec_cmd_full (device, cmd_identify_cancel, + G_N_ELEMENTS (cmd_identify_cancel), + egis_etu905_identify_cancel_next_state_cb, + NULL); + } + else + { + fpi_ssm_next_state (ssm); + } + break; + + case CANCEL_SEND_CANCEL_RESULT: + /* Retrieve the cancel result after template update is triggered. + * Only send if identify was actually started. + * Use NULL cancellable to ensure this command reaches the device. */ + if (self->identify_started) + { + egis_etu905_exec_cmd_full (device, cmd_identify_cancel_result, + G_N_ELEMENTS (cmd_identify_cancel_result), + egis_etu905_identify_cancel_next_state_cb, + NULL); + } + else + { + fpi_ssm_next_state (ssm); + } + break; + } } static void @@ -1374,6 +1445,7 @@ egis_etu905_identify_run_state (FpiSsm *ssm, break; case IDENTIFY_SENSOR_IDENTIFY: + self->identify_started = TRUE; egis_etu905_exec_cmd (device, cmd_sensor_identify, G_N_ELEMENTS (cmd_sensor_identify), egis_etu905_task_ssm_next_state_cb); break; @@ -1393,16 +1465,10 @@ egis_etu905_identify_run_state (FpiSsm *ssm, egis_etu905_identify_check_cb); break; - case IDENTIFY_SEND_CANCEL_RESULT: - egis_etu905_exec_cmd (device, - cmd_identify_cancel_result, - G_N_ELEMENTS (cmd_identify_cancel_result), - egis_etu905_identify_send_cancel_result_cb); - break; - case IDENTIFY_COMPLETE_SENSOR_RESET: - egis_etu905_exec_cmd (device, cmd_sensor_reset, G_N_ELEMENTS (cmd_sensor_reset), - egis_etu905_task_ssm_next_state_cb); + egis_etu905_exec_cmd_full (device, cmd_sensor_reset, G_N_ELEMENTS (cmd_sensor_reset), + egis_etu905_task_ssm_next_state_cb, + NULL); break; /* @@ -1429,6 +1495,7 @@ egis_etu905_identify (FpDevice *device) FpiDeviceEgisEtu905 *self = FPI_DEVICE_EGIS_ETU905 (device); g_assert (self->task_ssm == NULL); + self->identify_started = FALSE; self->task_ssm = fpi_ssm_new (device, egis_etu905_identify_run_state, IDENTIFY_STATES); fpi_ssm_start (self->task_ssm, egis_etu905_task_ssm_done); } @@ -1712,11 +1779,14 @@ egis_etu905_cancel (FpDevice *device) } else if (action == FPI_DEVICE_ACTION_IDENTIFY) { - egis_etu905_exec_cmd_full (device, - cmd_identify_cancel, - G_N_ELEMENTS (cmd_identify_cancel), - egis_etu905_cancel_cb, - NULL); + FpiDeviceEgisEtu905 *self = FPI_DEVICE_EGIS_ETU905 (device); + + g_assert (self->identify_cancel_ssm == NULL); + + self->identify_cancel_ssm = fpi_ssm_new (device, + egis_etu905_identify_cancel_run_state, + CANCEL_STATES); + fpi_ssm_start (self->identify_cancel_ssm, egis_etu905_identify_cancel_ssm_done); } else { diff --git a/libfprint/drivers/egismoc/egis_etu905.h b/libfprint/drivers/egismoc/egis_etu905.h index c4403478..43dad367 100644 --- a/libfprint/drivers/egismoc/egis_etu905.h +++ b/libfprint/drivers/egismoc/egis_etu905.h @@ -141,7 +141,6 @@ typedef enum { IDENTIFY_WAIT_FINGER, IDENTIFY_SENSOR_CHECK, IDENTIFY_CHECK, - IDENTIFY_SEND_CANCEL_RESULT, IDENTIFY_COMPLETE_SENSOR_RESET, IDENTIFY_COMPLETE, IDENTIFY_STATES, @@ -180,3 +179,10 @@ typedef enum { DELETE_DELETE, DELETE_STATES, } DeleteStates; + +typedef enum { + CANCEL_SENSOR_RESET, + CANCEL_SEND_CANCEL, + CANCEL_SEND_CANCEL_RESULT, + CANCEL_STATES, +} CancelStates; diff --git a/tests/egis_etu905/custom.pcapng b/tests/egis_etu905/custom.pcapng index 730a7ad4126db4d9ab82bb7ae46455c704523bc2..e6f00b3b04fbbe1b87f628fa6e47e6d783bb6e9d 100644 GIT binary patch literal 34688 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 JhWQ=f{{=S05&-}J literal 35152 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 Dd!XXR diff --git a/tests/egis_etu905/custom.py b/tests/egis_etu905/custom.py index 39f83b8d..22f0baa2 100644 --- a/tests/egis_etu905/custom.py +++ b/tests/egis_etu905/custom.py @@ -39,7 +39,8 @@ def identify_done(dev, res): identified = True identify_match, identify_print = dev.identify_finish(res) print("MATCH FOUND!" if identify_match else "NO MATCH FOUND") - assert identify_match.equal(identify_print) + if identify_match: + assert identify_match.equal(identify_print) # List print("--- LISTING ---") @@ -64,6 +65,28 @@ prints2 = len(stored) print(f"--- LIST DONE: Found {prints2} prints after enroll---") assert (prints2 - prints1) == 1 +# Verify +print("--- VERIFYING ---") +assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE +verify_res, verify_print = d.verify_sync(p) +assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE +print(f"--- VERIFY DONE: Result {verify_res} ---") + +# Identify +print("--- ASYNC IDENTIFYING ---") +identified = False +deserialized_prints = [] +for sp in stored: + deserialized_prints.append(FPrint.Print.deserialize(sp.serialize())) + assert deserialized_prints[-1].equal(p) + +d.identify(deserialized_prints, callback=identify_done) +del deserialized_prints + +while not identified: + ctx.iteration(True) +print("--- IDENTIFY DONE ---") + # Cancel test - start async identify and cancel it print("--- TESTING CANCELLATION ---") deserialized_prints = [] @@ -92,27 +115,11 @@ while not identify_cancelled: print(f"--- CANCELLATION TEST DONE, result: {cancel_result} ---") del deserialized_prints -# Verify -print("--- VERIFYING ---") -assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE -verify_res, verify_print = d.verify_sync(p) -assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE -print(f"--- VERIFY DONE: Result {verify_res} ---") - -# Identify -print("--- ASYNC IDENTIFYING ---") -identified = False -deserialized_prints = [] -for p in stored: - deserialized_prints.append(FPrint.Print.deserialize(p.serialize())) - assert deserialized_prints[-1].equal(p) - -d.identify(deserialized_prints, callback=identify_done) -del deserialized_prints - -while not identified: - ctx.iteration(True) -print("--- IDENTIFY DONE ---") +# Close and reopen device to ensure clean state after cancellation +print("--- REOPENING DEVICE ---") +d.close_sync() +d.open_sync() +print("--- DEVICE REOPENED ---") # Delete print("--- DELETING ---") @@ -135,3 +142,4 @@ d.close_sync() del d del c + diff --git a/tests/egis_etu905/device b/tests/egis_etu905/device index 8cc1d7f2..71d7c2ec 100644 --- a/tests/egis_etu905/device +++ b/tests/egis_etu905/device @@ -1,27 +1,28 @@ -P: /devices/pci0000:00/0000:00:08.1/0000:05:00.4/usb3/3-3 -N: bus/usb/003/005=12010002FF0000407A1CAE0545530102030109022700010100A0320904000003FFFFFF00070581024000000705020240000007058303400001 +P: /devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1 +N: bus/usb/003/064=12010002FF0000407A1CAE0542990102030109022700010100A0320904000003FFFFFF00070581024000000705020240000007058303400001 E: BUSNUM=003 -E: DEVNAME=/dev/bus/usb/003/005 -E: DEVNUM=005 +E: CURRENT_TAGS=:snap_cups_ippeveprinter:snap_cups_cupsd: +E: DEVNAME=/dev/bus/usb/003/064 +E: DEVNUM=064 E: DEVTYPE=usb_device E: DRIVER=usb E: ID_BUS=usb E: ID_MODEL=ETU905Axx-E E: ID_MODEL_ENC=ETU905Axx-E E: ID_MODEL_ID=05ae -E: ID_PATH=pci-0000:05:00.4-usb-0:3 -E: ID_PATH_TAG=pci-0000_05_00_4-usb-0_3 -E: ID_PATH_WITH_USB_REVISION=pci-0000:05:00.4-usbv2-0:3 -E: ID_REVISION=5345 -E: ID_SERIAL=EGIS_ETU905Axx-E_0A8606PNA357 -E: ID_SERIAL_SHORT=0A8606PNA357 +E: ID_PATH=pci-0000:00:14.0-usb-0:2.1 +E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2_1 +E: ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:2.1 +E: ID_REVISION=9942 +E: ID_SERIAL=EGIS_ETU905Axx-E_0A8615PNA357 +E: ID_SERIAL_SHORT=0A8615PNA357 E: ID_USB_INTERFACES=:ffffff: E: ID_USB_MODEL=ETU905Axx-E E: ID_USB_MODEL_ENC=ETU905Axx-E E: ID_USB_MODEL_ID=05ae -E: ID_USB_REVISION=5345 -E: ID_USB_SERIAL=EGIS_ETU905Axx-E_0A8606PNA357 -E: ID_USB_SERIAL_SHORT=0A8606PNA357 +E: ID_USB_REVISION=9942 +E: ID_USB_SERIAL=EGIS_ETU905Axx-E_0A8615PNA357 +E: ID_USB_SERIAL_SHORT=0A8615PNA357 E: ID_USB_VENDOR=EGIS E: ID_USB_VENDOR_ENC=EGIS E: ID_USB_VENDOR_ID=1c7a @@ -30,9 +31,10 @@ E: ID_VENDOR_ENC=EGIS E: ID_VENDOR_FROM_DATABASE=LighTuning Technology Inc. E: ID_VENDOR_ID=1c7a E: MAJOR=189 -E: MINOR=260 -E: PRODUCT=1c7a/5ae/5345 +E: MINOR=319 +E: PRODUCT=1c7a/5ae/9942 E: SUBSYSTEM=usb +E: TAGS=:snap_cups_ippeveprinter:snap_cups_cupsd: E: TYPE=255/0/0 A: authorized=1\n A: avoid_reset_quirk=0\n @@ -44,37 +46,31 @@ A: bMaxPacketSize0=64\n A: bMaxPower=100mA\n A: bNumConfigurations=1\n A: bNumInterfaces= 1\n -A: bcdDevice=5345\n +A: bcdDevice=9942\n A: bmAttributes=a0\n A: busnum=3\n A: configuration= -H: descriptors=12010002FF0000407A1CAE0545530102030109022700010100A0320904000003FFFFFF00070581024000000705020240000007058303400001 -A: dev=189:260\n -A: devnum=5\n -A: devpath=3\n +H: descriptors=12010002FF0000407A1CAE0542990102030109022700010100A0320904000003FFFFFF00070581024000000705020240000007058303400001 +A: dev=189:319\n +A: devnum=64\n +A: devpath=2.1\n L: driver=../../../../../../bus/usb/drivers/usb -L: firmware_node=../../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0c/device:1b/device:1c/device:1f A: idProduct=05ae\n A: idVendor=1c7a\n A: ltm_capable=no\n A: manufacturer=EGIS\n A: maxchild=0\n -A: physical_location/dock=no\n -A: physical_location/horizontal_position=left\n -A: physical_location/lid=no\n -A: physical_location/panel=top\n -A: physical_location/vertical_position=upper\n -L: port=../3-0:1.0/usb3-port3 -A: power/active_duration=3828402\n +L: port=../3-2:1.0/3-2-port1 +A: power/active_duration=68970\n A: power/async=enabled\n A: power/autosuspend=2\n A: power/autosuspend_delay_ms=2000\n -A: power/connected_duration=3828402\n +A: power/connected_duration=68970\n A: power/control=on\n A: power/level=on\n A: power/persist=1\n A: power/runtime_active_kids=0\n -A: power/runtime_active_time=3828158\n +A: power/runtime_active_time=68807\n A: power/runtime_enabled=forbidden\n A: power/runtime_status=active\n A: power/runtime_suspended_time=0\n @@ -90,41 +86,142 @@ A: power/wakeup_max_time_ms=\n A: power/wakeup_total_time_ms=\n A: product=ETU905Axx-E\n A: quirks=0x0\n -A: removable=fixed\n +A: removable=removable\n A: rx_lanes=1\n -A: serial=0A8606PNA357\n +A: serial=0A8615PNA357\n A: speed=12\n A: tx_lanes=1\n -A: urbnum=1021\n +A: urbnum=21\n A: version= 2.00\n -P: /devices/pci0000:00/0000:00:08.1/0000:05:00.4/usb3 +P: /devices/pci0000:00/0000:00:14.0/usb3/3-2 +N: bus/usb/003/012=1201100209000240DA0B115430610102000109022900010100E0000904000001090001000705810301000C0904000101090002000705810301000C +E: BUSNUM=003 +E: CURRENT_TAGS=:snap_cups_cupsd:seat:snap_cups_ippeveprinter: +E: DEVNAME=/dev/bus/usb/003/012 +E: DEVNUM=012 +E: DEVTYPE=usb_device +E: DRIVER=usb +E: ID_BUS=usb +E: ID_FOR_SEAT=usb-pci-0000_00_14_0-usb-0_2 +E: ID_MODEL=4-Port_USB_2.0_Hub +E: ID_MODEL_ENC=4-Port\x20USB\x202.0\x20Hub +E: ID_MODEL_FROM_DATABASE=RTS5411 Hub +E: ID_MODEL_ID=5411 +E: ID_PATH=pci-0000:00:14.0-usb-0:2 +E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_2 +E: ID_PATH_WITH_USB_REVISION=pci-0000:00:14.0-usbv2-0:2 +E: ID_REVISION=6130 +E: ID_SERIAL=Generic_4-Port_USB_2.0_Hub +E: ID_USB_INTERFACES=:090001:090002: +E: ID_USB_MODEL=4-Port_USB_2.0_Hub +E: ID_USB_MODEL_ENC=4-Port\x20USB\x202.0\x20Hub +E: ID_USB_MODEL_ID=5411 +E: ID_USB_REVISION=6130 +E: ID_USB_SERIAL=Generic_4-Port_USB_2.0_Hub +E: ID_USB_VENDOR=Generic +E: ID_USB_VENDOR_ENC=Generic +E: ID_USB_VENDOR_ID=0bda +E: ID_VENDOR=Generic +E: ID_VENDOR_ENC=Generic +E: ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp. +E: ID_VENDOR_ID=0bda +E: MAJOR=189 +E: MINOR=267 +E: PRODUCT=bda/5411/6130 +E: SUBSYSTEM=usb +E: TAGS=:snap_cups_cupsd:seat:snap_cups_ippeveprinter: +E: TYPE=9/0/2 +A: authorized=1\n +A: avoid_reset_quirk=0\n +A: bConfigurationValue=1\n +A: bDeviceClass=09\n +A: bDeviceProtocol=02\n +A: bDeviceSubClass=00\n +A: bMaxPacketSize0=64\n +A: bMaxPower=0mA\n +A: bNumConfigurations=1\n +A: bNumInterfaces= 1\n +A: bcdDevice=6130\n +A: bmAttributes=e0\n +H: bos_descriptors=050F2A00030710021EF400000A1003000E00010AFF0314100400F1ADF5EC1150054091EC71CA7101B6A2 +A: busnum=3\n +A: configuration= +H: descriptors=1201100209000240DA0B115430610102000109022900010100E0000904000001090001000705810301000C0904000101090002000705810301000C +A: dev=189:267\n +A: devnum=12\n +A: devpath=2\n +L: driver=../../../../../bus/usb/drivers/usb +L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:11/device:12/device:14 +A: idProduct=5411\n +A: idVendor=0bda\n +A: ltm_capable=no\n +A: manufacturer=Generic\n +A: maxchild=4\n +A: physical_location/dock=no\n +A: physical_location/horizontal_position=left\n +A: physical_location/lid=no\n +A: physical_location/panel=unknown\n +A: physical_location/vertical_position=center\n +L: port=../3-0:1.0/usb3-port2 +A: power/active_duration=15037612\n +A: power/async=enabled\n +A: power/autosuspend=0\n +A: power/autosuspend_delay_ms=0\n +A: power/connected_duration=15944019\n +A: power/control=auto\n +A: power/level=auto\n +A: power/runtime_active_kids=1\n +A: power/runtime_active_time=15037501\n +A: power/runtime_enabled=enabled\n +A: power/runtime_status=active\n +A: power/runtime_suspended_time=906274\n +A: power/runtime_usage=0\n +A: power/wakeup=disabled\n +A: power/wakeup_abort_count=\n +A: power/wakeup_active=\n +A: power/wakeup_active_count=\n +A: power/wakeup_count=\n +A: power/wakeup_expire_count=\n +A: power/wakeup_last_time_ms=\n +A: power/wakeup_max_time_ms=\n +A: power/wakeup_total_time_ms=\n +A: product=4-Port USB 2.0 Hub\n +A: quirks=0x0\n +A: removable=removable\n +A: rx_lanes=1\n +A: speed=480\n +A: tx_lanes=1\n +A: urbnum=2116\n +A: version= 2.10\n + +P: /devices/pci0000:00/0000:00:14.0/usb3 N: bus/usb/003/001=12010002090001406B1D020017060302010109021900010100E0000904000001090000000705810304000C E: BUSNUM=003 -E: CURRENT_TAGS=:seat: +E: CURRENT_TAGS=:snap_cups_cupsd:seat:snap_cups_ippeveprinter: E: DEVNAME=/dev/bus/usb/003/001 E: DEVNUM=001 E: DEVTYPE=usb_device E: DRIVER=usb E: ID_AUTOSUSPEND=1 E: ID_BUS=usb -E: ID_FOR_SEAT=usb-pci-0000_05_00_4 +E: ID_FOR_SEAT=usb-pci-0000_00_14_0 E: ID_MODEL=xHCI_Host_Controller E: ID_MODEL_ENC=xHCI\x20Host\x20Controller E: ID_MODEL_FROM_DATABASE=2.0 root hub E: ID_MODEL_ID=0002 -E: ID_PATH=pci-0000:05:00.4 -E: ID_PATH_TAG=pci-0000_05_00_4 +E: ID_PATH=pci-0000:00:14.0 +E: ID_PATH_TAG=pci-0000_00_14_0 E: ID_REVISION=0617 -E: ID_SERIAL=Linux_6.17.0-35-generic_xhci-hcd_xHCI_Host_Controller_0000:05:00.4 -E: ID_SERIAL_SHORT=0000:05:00.4 +E: ID_SERIAL=Linux_6.17.0-35-generic_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 +E: ID_SERIAL_SHORT=0000:00:14.0 E: ID_USB_INTERFACES=:090000: E: ID_USB_MODEL=xHCI_Host_Controller E: ID_USB_MODEL_ENC=xHCI\x20Host\x20Controller E: ID_USB_MODEL_ID=0002 E: ID_USB_REVISION=0617 -E: ID_USB_SERIAL=Linux_6.17.0-35-generic_xhci-hcd_xHCI_Host_Controller_0000:05:00.4 -E: ID_USB_SERIAL_SHORT=0000:05:00.4 +E: ID_USB_SERIAL=Linux_6.17.0-35-generic_xhci-hcd_xHCI_Host_Controller_0000:00:14.0 +E: ID_USB_SERIAL_SHORT=0000:00:14.0 E: ID_USB_VENDOR=Linux_6.17.0-35-generic_xhci-hcd E: ID_USB_VENDOR_ENC=Linux\x206.17.0-35-generic\x20xhci-hcd E: ID_USB_VENDOR_ID=1d6b @@ -136,7 +233,7 @@ E: MAJOR=189 E: MINOR=256 E: PRODUCT=1d6b/2/617 E: SUBSYSTEM=usb -E: TAGS=:seat: +E: TAGS=:snap_cups_cupsd:seat:snap_cups_ippeveprinter: E: TYPE=9/0/1 A: authorized=1\n A: authorized_default=1\n @@ -157,26 +254,26 @@ H: descriptors=12010002090001406B1D020017060302010109021900010100E00009040000010 A: dev=189:256\n A: devnum=1\n A: devpath=0\n -L: driver=../../../../../bus/usb/drivers/usb -L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0c/device:1b/device:1c +L: driver=../../../../bus/usb/drivers/usb +L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:11/device:12 A: idProduct=0002\n A: idVendor=1d6b\n A: interface_authorized_default=1\n A: ltm_capable=no\n A: manufacturer=Linux 6.17.0-35-generic xhci-hcd\n -A: maxchild=4\n -A: power/active_duration=40424267\n +A: maxchild=12\n +A: power/active_duration=20106721\n A: power/async=enabled\n A: power/autosuspend=0\n A: power/autosuspend_delay_ms=0\n -A: power/connected_duration=40424455\n +A: power/connected_duration=20167456\n A: power/control=auto\n A: power/level=auto\n -A: power/runtime_active_kids=1\n -A: power/runtime_active_time=40424257\n +A: power/runtime_active_kids=3\n +A: power/runtime_active_time=20108025\n A: power/runtime_enabled=enabled\n A: power/runtime_status=active\n -A: power/runtime_suspended_time=50\n +A: power/runtime_suspended_time=58290\n A: power/runtime_usage=0\n A: power/wakeup=disabled\n A: power/wakeup_abort_count=\n @@ -191,34 +288,32 @@ A: product=xHCI Host Controller\n A: quirks=0x0\n A: removable=unknown\n A: rx_lanes=1\n -A: serial=0000:05:00.4\n +A: serial=0000:00:14.0\n A: speed=480\n A: tx_lanes=1\n -A: urbnum=421\n +A: urbnum=1083\n A: version= 2.00\n -P: /devices/pci0000:00/0000:00:08.1/0000:05:00.4 +P: /devices/pci0000:00/0000:00:14.0 E: DRIVER=xhci_hcd -E: ID_MODEL_FROM_DATABASE=Renoir/Cezanne USB 3.1 -E: ID_PATH=pci-0000:05:00.4 -E: ID_PATH_TAG=pci-0000_05_00_4 +E: ID_MODEL_FROM_DATABASE=Meteor Lake-P USB 3.2 Gen 2x1 xHCI Host Controller +E: ID_PATH=pci-0000:00:14.0 +E: ID_PATH_TAG=pci-0000_00_14_0 E: ID_PCI_CLASS_FROM_DATABASE=Serial bus controller E: ID_PCI_INTERFACE_FROM_DATABASE=XHCI E: ID_PCI_SUBCLASS_FROM_DATABASE=USB controller -E: ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. [AMD] -E: MODALIAS=pci:v00001022d00001639sv000017AAsd0000382Fbc0Csc03i30 +E: ID_VENDOR_FROM_DATABASE=Intel Corporation +E: MODALIAS=pci:v00008086d00007E7Dsv00001028sd00000CB2bc0Csc03i30 E: PCI_CLASS=C0330 -E: PCI_ID=1022:1639 -E: PCI_SLOT_NAME=0000:05:00.4 -E: PCI_SUBSYS_ID=17AA:382F +E: PCI_ID=8086:7E7D +E: PCI_SLOT_NAME=0000:00:14.0 +E: PCI_SUBSYS_ID=1028:0CB2 E: SUBSYSTEM=pci A: ari_enabled=0\n A: broken_parity_status=0\n A: class=0x0c0330\n -H: config=22103916070410000030030C10008000040040D0000000000000000000000000000000000000000000000000AA172F38000000004800000000000000FF010000000000000000000009500800AA172F38016403C80000000000000000000000003120000010A00200A18F000010290000030D400040000311000000000000000000000000000000001F007100000000001E00800100000100000000000000000005C08600000000000000000000000000000000000000000000000000000000001100078000E00F0000F00F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B00012A010001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +H: config=86807D7E060490022030030C1000800004002A195000000000000000000000000000000000000000000000002810B20C000000007000000000000000FF010000FD0134C08FC2FF8300000000000000003F6DDE0F000000000000000000000000326000000000000000000000000000000180C3C10800000000000000000000000590B7001804E0FE000000000000000009B014F01000400100000000C10A080000080E00001800008F50020000030000090000018680C00009001014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F200012000000 A: consistent_dma_mask_bits=64\n -A: current_link_speed=8.0 GT/s PCIe\n -A: current_link_width=16\n A: d3cold_allowed=1\n A: dbc=disabled\n A: dbc_bInterfaceProtocol=01\n @@ -226,123 +321,50 @@ A: dbc_bcdDevice=0010\n A: dbc_idProduct=0010\n A: dbc_idVendor=1d6b\n A: dbc_poll_interval_ms=64\n -A: device=0x1639\n +A: device=0x7e7d\n A: dma_mask_bits=64\n -L: driver=../../../../bus/pci/drivers/xhci_hcd +L: driver=../../../bus/pci/drivers/xhci_hcd A: driver_override=(null)\n A: enable=1\n -L: firmware_node=../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0c/device:1b -L: iommu=../../0000:00:00.2/iommu/ivhd0 -L: iommu_group=../../../../kernel/iommu_groups/19 -A: irq=44\n -A: link/l0s_aspm=0\n -A: link/l1_aspm=0\n -A: local_cpulist=0-11\n -A: local_cpus=fff\n -A: max_link_speed=8.0 GT/s PCIe\n -A: max_link_width=16\n -A: modalias=pci:v00001022d00001639sv000017AAsd0000382Fbc0Csc03i30\n +L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:11 +L: iommu=../../virtual/iommu/dmar1 +L: iommu_group=../../../kernel/iommu_groups/11 +A: irq=133\n +A: local_cpulist=0-13\n +A: local_cpus=3fff\n +A: modalias=pci:v00008086d00007E7Dsv00001028sd00000CB2bc0Csc03i30\n A: msi_bus=1\n -A: msi_irqs/45=msix\n -A: msi_irqs/46=msix\n -A: msi_irqs/47=msix\n -A: msi_irqs/48=msix\n -A: msi_irqs/49=msix\n -A: msi_irqs/50=msix\n -A: msi_irqs/51=msix\n -A: msi_irqs/52=msix\n +A: msi_irqs/133=msi\n +A: msi_irqs/134=msi\n +A: msi_irqs/135=msi\n +A: msi_irqs/136=msi\n +A: msi_irqs/137=msi\n +A: msi_irqs/138=msi\n +A: msi_irqs/139=msi\n +A: msi_irqs/140=msi\n A: numa_node=-1\n -A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 256 port bw ctx arrays 0 0 256 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 4 5 2112 5\nxHCI ring segments 23 23 4096 23\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\n +A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 256 port bw ctx arrays 0 0 256 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 22 23 2112 23\nxHCI ring segments 75 75 4096 75\nbuffer-2048 0 0 2048 0\nbuffer-512 3 8 512 1\nbuffer-128 18 32 128 1\nbuffer-32 0 0 32 0\n A: power/async=enabled\n -A: power/control=on\n +A: power/control=auto\n A: power/runtime_active_kids=1\n -A: power/runtime_active_time=40424587\n -A: power/runtime_enabled=forbidden\n +A: power/runtime_active_time=20108444\n +A: power/runtime_enabled=enabled\n A: power/runtime_status=active\n -A: power/runtime_suspended_time=0\n -A: power/runtime_usage=1\n +A: power/runtime_suspended_time=58214\n +A: power/runtime_usage=0\n A: power/wakeup=enabled\n A: power/wakeup_abort_count=0\n A: power/wakeup_active=0\n -A: power/wakeup_active_count=0\n +A: power/wakeup_active_count=1\n A: power/wakeup_count=0\n -A: power/wakeup_expire_count=0\n -A: power/wakeup_last_time_ms=0\n -A: power/wakeup_max_time_ms=0\n -A: power/wakeup_total_time_ms=0\n +A: power/wakeup_expire_count=1\n +A: power/wakeup_last_time_ms=4189999\n +A: power/wakeup_max_time_ms=106\n +A: power/wakeup_total_time_ms=106\n A: power_state=D0\n -A: reset_method=pm\n -A: resource=0x00000000d0400000 0x00000000d04fffff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n -A: revision=0x00\n -A: subsystem_device=0x382f\n -A: subsystem_vendor=0x17aa\n -A: vendor=0x1022\n - -P: /devices/pci0000:00/0000:00:08.1 -E: DRIVER=pcieport -E: ID_MODEL_FROM_DATABASE=Renoir Internal PCIe GPP Bridge to Bus -E: ID_PATH=pci-0000:00:08.1 -E: ID_PATH_TAG=pci-0000_00_08_1 -E: ID_PCI_CLASS_FROM_DATABASE=Bridge -E: ID_PCI_INTERFACE_FROM_DATABASE=Normal decode -E: ID_PCI_SUBCLASS_FROM_DATABASE=PCI bridge -E: ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. [AMD] -E: MODALIAS=pci:v00001022d00001635sv00001022sd00001635bc06sc04i00 -E: PCI_CLASS=60400 -E: PCI_ID=1022:1635 -E: PCI_SLOT_NAME=0000:00:08.1 -E: PCI_SUBSYS_ID=1022:1635 -E: SUBSYSTEM=pci -A: ari_enabled=0\n -A: broken_parity_status=0\n -A: class=0x060400\n -H: config=221035160704100000000406100081000000000000000000000505001111000030D060D001E011F0FC000000FC000000000000005000000000000000FF01020000000000000000000000000000000000015803C80000000010A042002280000010290000030D7000400C03310000000000004000180001000000000000003100000000001E00800143001F00000000000000000000000000000000000000000005C081000000E0FE0000000000000000000000000000000000000000000000000D00000022103516000000000000000000000000000000000000000000000000000000007CA006000000000000000000000000000000000000000000000000000B000127010001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001900012A00000000000000007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F000000000D0001405F001D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000250001410100008001000080000000002600014400000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2700010000000000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C0000389C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -A: consistent_dma_mask_bits=32\n -A: current_link_speed=8.0 GT/s PCIe\n -A: current_link_width=16\n -A: d3cold_allowed=1\n -A: device=0x1635\n -A: dma_mask_bits=32\n -L: driver=../../../bus/pci/drivers/pcieport -A: driver_override=(null)\n -A: enable=2\n -L: firmware_node=../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0c -L: iommu=../0000:00:00.2/iommu/ivhd0 -L: iommu_group=../../../kernel/iommu_groups/7 -A: irq=33\n -A: local_cpulist=0-11\n -A: local_cpus=fff\n -A: max_link_speed=8.0 GT/s PCIe\n -A: max_link_width=16\n -A: modalias=pci:v00001022d00001635sv00001022sd00001635bc06sc04i00\n -A: msi_bus=1\n -A: msi_irqs/33=msi\n -A: numa_node=-1\n -A: power/async=enabled\n -A: power/autosuspend_delay_ms=100\n -A: power/control=auto\n -A: power/runtime_active_kids=5\n -A: power/runtime_active_time=40424606\n -A: power/runtime_enabled=enabled\n -A: power/runtime_status=active\n -A: power/runtime_suspended_time=0\n -A: power/runtime_usage=0\n -A: power/wakeup=disabled\n -A: power/wakeup_abort_count=\n -A: power/wakeup_active=\n -A: power/wakeup_active_count=\n -A: power/wakeup_count=\n -A: power/wakeup_expire_count=\n -A: power/wakeup_last_time_ms=\n -A: power/wakeup_max_time_ms=\n -A: power/wakeup_total_time_ms=\n -A: power_state=D0\n -A: reset_method=pm\n -A: resource=0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000001000 0x0000000000001fff 0x0000000000000101\n0x00000000d0300000 0x00000000d06fffff 0x0000000000000200\n0x000000fce0000000 0x000000fcf01fffff 0x0000000000102201\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n -A: revision=0x00\n -A: secondary_bus_number=5\n -A: subordinate_bus_number=5\n -A: subsystem_device=0x1635\n -A: subsystem_vendor=0x1022\n -A: vendor=0x1022\n +A: resource=0x00000050192a0000 0x00000050192affff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n +A: revision=0x20\n +A: subsystem_device=0x0cb2\n +A: subsystem_vendor=0x1028\n +A: vendor=0x8086\n