(おそらく) カーネルのバグによるコンソール スパムを停止するにはどうすればよいでしょうか?

(おそらく) カーネルのバグによるコンソール スパムを停止するにはどうすればよいでしょうか?

そこで、先週、OpenSuSe Tumbleweedのローリングディストリビューションを でアップデートしましたzypper dist-upgrade。アップデート前は問題なく動作していました。アップデート後、カーネルが4秒ごとにターミナルにスパムを出し始めました。これにより、ターミナルが使用不可、ユーザー入力またはコンソール出力が二分され、複数の行に分割されます。次にdmesg | grep | tailスニペットを示します。

[  350.602656] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
[  354.682627] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?
[  358.758627] usb usb2-port2: Cannot enable. Maybe the USB cable is bad?

USB 経由で接続されているデバイスはキーボードとマウスの 2 つだけですが、どちらも正常に動作します。USB アドレスは変更される可能性があり、usb2-port2 に加えて、usb4-port2 または usb3-port2 になることもあります (これらの名前を lsusb 出力と関連付けるにはどうすればよいでしょうか。下部を参照してください)。

アップデート中に、カーネルが 4.20 から 5.5 に変更されました。GRUB の詳細オプションを使用して 4.20 カーネルで起動すると、これらのメッセージは表示されません。Windows 7 のインストールでも、USB デバイスやハブに関する問題は発生しません。

検索してみると、次のカーネルコミットが原因だと思われます:usb: ハブ再開時にウォームリセットポート要求を処理する. ウブントゥ解決済みこのコミットを元に戻すことで同じ問題が発生しましたが、OpenSuSeで言及されているのを見つけることができませんバグトラッカーまたはフォーラムで。

これらのメッセージを停止するにはどうすればよいでしょうか? 理想的な解決策は、迅速で、邪魔にならず、簡単に元に戻せることです。カーネルを手動でコンパイルしてインストールするのは最後の手段です。


これは同じブートでの lsusb -t の出力です。

/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/6p, 480M
        |__ Port 3: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
        |__ Port 5: Dev 4, If 0, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 5: Dev 4, If 1, Class=Human Interface Device, Driver=usbhid, 12M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M

sudo dmesg -n1空の出力を返します。

lsusb -vv誤ったリソースについては次のようになります(usb4-port2このブート中)

Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               3.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0
  bDeviceProtocol         3
  bMaxPacketSize0         9
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0003 3.0 root hub
  bcdDevice            5.05
  iManufacturer           3 Linux 5.5.6-1-default xhci-hcd
  iProduct                2 (error)
  iSerial                 1 0000:00:14.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x001f
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xe0
      Self Powered
      Remote Wakeup
    MaxPower                0mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         9 Hub
      bInterfaceSubClass      0
      bInterfaceProtocol      0 Full speed (or root) hub
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0004  1x 4 bytes
        bInterval              12
        bMaxBurst               0
can't get hub descriptor, LIBUSB_ERROR_TIMEOUT (Resource temporarily unavailable)
can't get debug descriptor: Resource temporarily unavailable

答え1

ディストリビューションは古いカーネルを残しておくべきで、最後に動作したカーネルを起動します。

バグを報告してください。レポート用のデータをコンパイルした後、悪質なプログラムをアンインストールしてください。そうすれば、次のプログラムがその場所を占めるようになります。

次のカーネル リリースを試してください。ああ、ディストリビューションの実験的なローリング リリースをいじくり回すのは楽しいですね。

関連情報