Bug 41808

Summary: Проблемы при работе через USB-хабы
Product: Branch p10 Reporter: Андрей Русев <raa>
Component: kernel-image-std-defAssignee: Anton V. Boyarshinov <boyarsh>
Status: NEW --- QA Contact: qa-p10 <qa-p10>
Severity: normal    
Priority: P5 CC: klark
Version: не указана   
Hardware: x86_64   
OS: Linux   

Description Андрей Русев 2022-01-26 17:18:23 MSK
Мы добавили ALT 10 в ночные тесты КриптоПро CSP, обновив (переставив начисто) машину, на которой стоял ALT 6 на ALT 10. Из изменений, которые были попутно - только переход с IDE на AHCI в настройках BIOS. Обнаружили две проблемы:
1. тесты, использующие токены и смарт-карты замедлились в 3-5 раз
2. при рестарте USB-хабов в dmesg сыпятся ошибки от flash-диска

Есть надежда, что проблемы связаны. Что известно (пишу не всё, а только самое интересное):
* проблемы вызываны внешним USB-хабом: при подключении не к материнской плате/корпусу тормозов/ошибок нет, через внешний хаб - есть
* проблемы не зависят от производителя USB-хаба (проверено 4 разных производителей, которые успешно работают в 4 других железках)
* для воспроизведения достаточно одного USB-устройства
* проблема не проявляется в Linux 2.6.32, 3.10.0, 4.9.0
* проблема проявляется в Linux 5.10.90-std-def-alt1
* при рестарте корневых хабов (делается в начале каждой ночи с помощью команд вида "echo -n 0000:00:12.2 | tee /sys/bus/pci/drivers/ehci-pci/unbind" + аналогичный bind) от флешки в хабе сыпятся в dmesg такие ошибки:

[213335.821692] sd 11:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE cmd_age=0s
[213335.821724] blk_update_request: I/O error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[213335.821732] Buffer I/O error on dev sdb, logical block 0, async page read
[213335.821778] blk_update_request: I/O error, dev sdb, sector 2 op 0x0:(READ) flags 0x0 phys_seg 3 prio class 0
[213335.821782] Buffer I/O error on dev sdb, logical block 1, async page read
[213335.821786] Buffer I/O error on dev sdb, logical block 2, async page read
[213335.821790] Buffer I/O error on dev sdb, logical block 3, async page read
[213335.821919] blk_update_request: I/O error, dev sdb, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0
[213335.821927] Buffer I/O error on dev sdb, logical block 0, async page read

Всё это напоминает мне другую ошибку (у меня eject ошибок не выдаёт, как положено после фикса):
https://bbs.archlinux.org/viewtopic.php?id=263395
https://github.com/storaged-project/udisks/issues/827
https://bugzilla.kernel.org/show_bug.cgi?id=211023
где
* проблемы нет в Kernel-5.9.12
* проблема есть в ванильном LTS Kernel 5.10.x (1-4)

Мне кажется, что это подобная регрессия. Помогите дожать, пожалуйста.
hw-x64-alt10 ~ # cat /etc/os-release
NAME="ALT Workstation"
VERSION="10.0"
ID=altlinux
VERSION_ID=10.0
PRETTY_NAME="ALT Workstation 10.0 (Autolycus)"
ANSI_COLOR="1;33"
CPE_NAME="cpe:/o:alt:workstation:10.0"
BUILD_ID="ALT Workstation 10.0"
HOME_URL="https://basealt.ru/"
BUG_REPORT_URL="https://bugs.altlinux.org/"
hw-x64-alt10 ~ # uname -a
Linux hw-x64-alt10 5.10.90-std-def-alt1 #1 SMP Wed Jan 12 19:06:46 UTC 2022 x86_64 GNU/Linux
Comment 1 Andrey Cherepanov 2022-01-26 18:36:56 MSK
Прошу проверить на ядре 5.15: под root:
 update-kernel -t un-def
и перезагрузиться.
Comment 2 Андрей Русев 2022-01-27 11:24:52 MSK
Обновил ядро на 5.15:
hw-x64-alt10 ~ # uname -a
Linux hw-x64-alt10 5.15.15-un-def-alt1 #1 SMP PREEMPT Tue Jan 25 15:50:18 UTC 2022 x86_64 GNU/Linux

Сообщения в dmesg об ошибках flash, работающей через USB-хаб исчезли. Успех!
Тормоза токенов при работе через USB-хаб остались :(

Добавлю. На другой железной машине с Debian 9 и такими пакетами pcsc/ccid при работе через любой USB-хаб тормозов не возникает:

root@hw-x64-deb9:~# uname -a
Linux hw-x64-deb9 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u5 (2017-09-19) x86_64 GNU/Linux
root@hw-x64-deb9:~# dpkg -l|grep 'pcsc\|ccid'
ii  cprocsp-rdr-pcsc-64           5.0.12392-6                    amd64        CryptoPro CSP. PC/SC devices support. Build 12392.
ii  libccid                       1.4.26-1                       amd64        PC/SC driver for USB CCID smart card readers
ii  libpcsclite-dev               1.8.20-1                       amd64        Middleware to access a smart card using PC/SC (development files)
ii  libpcsclite1:amd64            1.8.20-1                       amd64        Middleware to access a smart card using PC/SC (library)
ii  pcscd                         1.8.20-1                       amd64        Middleware to access a smart card using PC/SC (daemon side)

Поэтому в качестве эксперимента я поставил близкие по версиям пакеты на проблемную машину с ALT 10 (для этого взял пакеты от ALT 8):
hw-x64-alt10 ~ # rpm -qa|grep 'pcsc\|ccid'
pcsc-lite-1.8.22-alt0.M80P.1.x86_64
libpcsclite-1.8.22-alt0.M80P.1.x86_64
pcsc-lite-ccid-1.4.28-alt0.M80P.1.x86_64
cprocsp-rdr-pcsc-64-5.0.12393-6.x86_64

Это не изменило ситуацию: тормоза остались.
Comment 3 Leonid Krivoshein 2022-01-27 13:23:46 MSK
А Вы сравните в Дебиан и Альт по lsmod какие модули загружены для OHCI, EHCI и UHCI. Может, есть что-то лишнее?
Comment 4 Андрей Русев 2022-01-27 13:45:02 MSK
Debian 9:
root@hw-x64-deb9:~# lsmod
Module                  Size  Used by
nfsv3                  40960  1
nfs_acl                16384  1 nfsv3
rpcsec_gss_krb5        36864  0
auth_rpcgss            61440  1 rpcsec_gss_krb5
oid_registry           16384  1 auth_rpcgss
nfsv4                 565248  2
dns_resolver           16384  1 nfsv4
nfs                   249856  4 nfsv4,nfsv3
lockd                  90112  2 nfs,nfsv3
grace                  16384  1 lockd
fscache                61440  2 nfsv4,nfs
snd_hda_codec_hdmi     49152  1
snd_hda_codec_realtek    90112  1
snd_hda_codec_generic    69632  1 snd_hda_codec_realtek
binfmt_misc            20480  1
nls_ascii              16384  1
nls_cp437              20480  1
vfat                   20480  1
eeepc_wmi              16384  0
fat                    69632  1 vfat
asus_wmi               28672  1 eeepc_wmi
sparse_keymap          16384  1 asus_wmi
mxm_wmi                16384  0
intel_rapl             20480  0
efi_pstore             16384  0
i915                 1232896  2
x86_pkg_temp_thermal    16384  0
intel_powerclamp       16384  0
coretemp               16384  0
kvm_intel             192512  0
snd_hda_intel          36864  0
snd_hda_codec         135168  4 snd_hda_intel,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek
drm_kms_helper        155648  1 i915
kvm                   589824  1 kvm_intel
snd_hda_core           81920  5 snd_hda_intel,snd_hda_codec,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek
irqbypass              16384  1 kvm
snd_hwdep              16384  1 snd_hda_codec
evdev                  24576  5
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
snd_pcm               110592  4 snd_hda_intel,snd_hda_codec,snd_hda_core,snd_hda_codec_hdmi
drm                   360448  3 i915,drm_kms_helper
serio_raw              16384  0
snd_timer              32768  1 snd_pcm
pcspkr                 16384  0
i2c_algo_bit           16384  1 i915
mei_me                 36864  0
iTCO_wdt               16384  0
iTCO_vendor_support    16384  1 iTCO_wdt
sg                     32768  0
mei                   102400  1 mei_me
ghash_clmulni_intel    16384  0
snd                    86016  8 snd_hda_intel,snd_hwdep,snd_hda_codec,snd_timer,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_codec_realtek,snd_pcm
shpchp                 36864  0
soundcore              16384  1 snd
efivars                20480  1 efi_pstore
hci_uart               98304  0
btbcm                  16384  1 hci_uart
battery                20480  0
btqca                  16384  1 hci_uart
btintel                16384  1 hci_uart
wmi                    16384  2 asus_wmi,mxm_wmi
bluetooth             552960  4 hci_uart,btintel,btqca,btbcm
intel_lpss_acpi        16384  0
video                  40960  2 asus_wmi,i915
rfkill                 24576  3 asus_wmi,bluetooth
intel_lpss             16384  1 intel_lpss_acpi
mfd_core               16384  1 intel_lpss
acpi_pad               24576  0
acpi_als               16384  0
kfifo_buf              16384  1 acpi_als
button                 16384  1 i915
industrialio           69632  2 acpi_als,kfifo_buf
sunrpc                344064  24 auth_rpcgss,rpcsec_gss_krb5,nfsv4,nfs_acl,lockd,nfs,nfsv3
efivarfs               16384  1
ip_tables              24576  0
x_tables               36864  1 ip_tables
autofs4                40960  2
ext4                  585728  1
crc16                  16384  2 bluetooth,ext4
jbd2                  106496  1 ext4
crc32c_generic         16384  0
fscrypto               28672  1 ext4
ecb                    16384  0
mbcache                16384  2 ext4
sd_mod                 45056  4
crc32c_intel           24576  2
aesni_intel           167936  1
aes_x86_64             20480  1 aesni_intel
glue_helper            16384  1 aesni_intel
lrw                    16384  1 aesni_intel
gf128mul               16384  1 lrw
ablk_helper            16384  1 aesni_intel
cryptd                 24576  3 ablk_helper,ghash_clmulni_intel,aesni_intel
ahci                   36864  3
libahci                32768  1 ahci
i2c_i801               24576  0
xhci_pci               16384  0
i2c_smbus              16384  1 i2c_i801
r8169                  81920  0
libata                249856  2 ahci,libahci
xhci_hcd              188416  1 xhci_pci
mii                    16384  1 r8169
scsi_mod              225280  3 sd_mod,libata,sg
usbcore               249856  9 xhci_pci,xhci_hcd
usb_common             16384  1 usbcore
fan                    16384  0
thermal                20480  0
i2c_hid                20480  0
hid                   122880  1 i2c_hid

ALT 10:
hw-x64-alt10 ~ # lsmod
Module                  Size  Used by
nls_utf8               16384  0
nls_cp866              20480  0
vfat                   20480  0
fat                    86016  1 vfat
nfsv3                  57344  1
nfs_acl                16384  1 nfsv3
rpcsec_gss_krb5        32768  0
auth_rpcgss           155648  1 rpcsec_gss_krb5
nfsv4                 868352  2
dns_resolver           16384  1 nfsv4
nfs                   405504  4 nfsv4,nfsv3
lockd                 110592  2 nfsv3,nfs
grace                  16384  1 lockd
sunrpc                634880  13 nfsv4,auth_rpcgss,lockd,nfsv3,rpcsec_gss_krb5,nfs_acl,nfs
fscache               401408  1 nfs
netfs                  49152  1 fscache
af_packet              53248  2
cpufreq_ondemand       16384  6
hid_generic            16384  0
usbhid                 57344  0
hid                   143360  2 usbhid,hid_generic
uas                    28672  0
usb_storage            77824  1 uas
edac_mce_amd           36864  0
kvm_amd               143360  0
ccp                    98304  1 kvm_amd
rng_core               16384  1 ccp
snd_hda_codec_hdmi     69632  1
snd_hda_intel          57344  1
snd_intel_dspcfg       24576  1 snd_hda_intel
kvm                  1036288  1 kvm_amd
snd_intel_sdw_acpi     16384  1 snd_intel_dspcfg
snd_hda_codec         163840  2 snd_hda_codec_hdmi,snd_hda_intel
r8169                  98304  0
irqbypass              16384  1 kvm
pktcdvd                45056  0
ohci_pci               16384  0
snd_hda_core          106496  3 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
wl                   6393856  0
sp5100_tco             16384  0
ehci_pci               16384  0
realtek                28672  1
snd_hwdep              16384  1 snd_hda_codec
cfg80211             1036288  1 wl
ata_generic            16384  0
rfkill                 28672  2 cfg80211
ohci_hcd               45056  1 ohci_pci
sr_mod                 28672  0
snd_pcm               135168  4 snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec,snd_hda_core
cdrom                  45056  2 pktcdvd,sr_mod
pata_acpi              16384  0
pata_jmicron           16384  0
ehci_hcd               65536  1 ehci_pci
i2c_piix4              24576  0
k10temp                16384  0
wmi_bmof               16384  0
asus_atk0110           20480  0
tiny_power_button      16384  0
button                 20480  0
acpi_cpufreq           20480  1
wmi                    32768  1 wmi_bmof
sch_fq_codel           20480  2
vboxnetadp             28672  0
vboxnetflt             32768  0
vboxdrv               532480  2 vboxnetadp,vboxnetflt
vboxvideo              32768  0
drm_vram_helper        20480  1 vboxvideo
vboxsf                 40960  0
vboxguest              45056  1 vboxsf
snd_seq_midi           16384  0
snd_seq_midi_event     16384  1 snd_seq_midi
snd_seq                77824  2 snd_seq_midi,snd_seq_midi_event
snd_rawmidi            40960  1 snd_seq_midi
snd_seq_device         16384  3 snd_seq,snd_seq_midi,snd_rawmidi
snd_timer              36864  2 snd_seq,snd_pcm
snd                   106496  11 snd_seq,snd_seq_device,snd_hda_codec_hdmi,snd_hwdep,snd_hda_intel,snd_hda_codec,snd_timer,snd_pcm,snd_rawmidi
soundcore              16384  1 snd
ipmi_devintf           20480  0
ipmi_msghandler        69632  1 ipmi_devintf
msr                    16384  0
efi_pstore             16384  0
fuse                  155648  1
ip_tables              28672  0
x_tables               49152  1 ip_tables
autofs4                40960  2
sd_mod                 61440  4
radeon               1667072  4
hwmon                  32768  3 k10temp,radeon,asus_atk0110
i2c_algo_bit           16384  1 radeon
drm_ttm_helper         16384  3 drm_vram_helper,vboxvideo,radeon
ttm                    77824  3 drm_vram_helper,radeon,drm_ttm_helper
drm_kms_helper        319488  3 drm_vram_helper,vboxvideo,radeon
cec                    61440  1 drm_kms_helper
ahci                   45056  3
libahci                45056  1 ahci
libata                294912  5 libahci,ahci,pata_acpi,ata_generic,pata_jmicron
rc_core                53248  1 cec
evdev                  24576  11
input_leds             16384  0
serio_raw              16384  0
drm                   634880  9 drm_kms_helper,drm_vram_helper,vboxvideo,radeon,drm_ttm_helper,ttm
scsi_mod              270336  5 sd_mod,usb_storage,uas,libata,sr_mod

Интерпертировать затрудняюсь. В какой-то момент я при экспериментах повыгружал usbhid, usb_storage и scsi_mod. Флешка закономерно отвалилась, то токены не разогнались.
Comment 5 Leonid Krivoshein 2022-01-27 15:28:37 MSK
Разница очевидна:

Debian -- xhci_hcd, xhci_pci;
ALT 10 -- ehci_hcd, ohci_hcd, ehci_pci, ohci_pci

Надо все модули выгрузить и загрузить xhci_pci.
Надо сравнивать на железе, как отрабатывают udev-правила.
Comment 6 Андрей Русев 2022-01-27 16:50:12 MSK
Там железно разное. На ALT 10 материнская плата USB 3.0 не поддерживает

hw-x64-alt10 ~ # dmidecode
# dmidecode 3.3
...
Handle 0x0002, DMI type 2, 15 bytes
Base Board Information
        Manufacturer: ASUSTeK Computer INC.
        Product Name: M4A89GTD-PRO
        Version: Rev 1.xx
        Serial Number: 104276320001319
        Asset Tag: To Be Filled By O.E.M.
        Features:
                Board is a hosting board
                Board is replaceable
        Location In Chassis: To Be Filled By O.E.M.
        Chassis Handle: 0x0003
        Type: Motherboard
        Contained Object Handles: 0
Comment 7 Leonid Krivoshein 2022-01-27 19:33:37 MSK
Тогда непонятно, чего с чем мы сравниваем. :-)
Но понятно, что надо искать USB-хаб и как-то у себя воспроизводить.