如何阻止由于(可能的)内核错误而产生的控制台垃圾邮件?

如何阻止由于(可能的)内核错误而产生的控制台垃圾邮件?

因此,我上周使用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 连接——键盘和鼠标——并且都工作正常。 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

发行版应该保留旧的(较旧的)内核,启动最后一个有效的内核。

报告错误!也许在为报告编译数据后,卸载这个恶棍。这样下一个就会取代它的位置。

尝试下一个内核版本。啊,玩弄发行版的实验性滚动版本的乐趣。

相关内容