Linux Media Controller development
 help / color / mirror / Atom feed
* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
       [not found] <CADBf=5nJVddk-yPVw3T5GH9JEPOxnO8McPJHaxtnPBvLCnp42Q@mail.gmail.com>
@ 2025-01-06  7:27 ` Laurent Pinchart
  2025-01-06 10:55 ` Thadeu Lima de Souza Cascardo
  1 sibling, 0 replies; 24+ messages in thread
From: Laurent Pinchart @ 2025-01-06  7:27 UTC (permalink / raw)
  To: Tomasz Sikora
  Cc: cascardo, hverkuil-cisco, kernel-dev, linux-media, mchehab,
	ribalda, syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

Hi Tomasz,

Please use plain text when sending e-mail to public mailing lists, HTML
e-mails are automatically dropped.

On Sun, Jan 05, 2025 at 07:31:09PM +0100, Tomasz Sikora wrote:
> Issue video camera
> ls -l /dev/video*
> zsh: no matches found: /dev/video*
> 
> 
> 01 15:43:24 Linux kernel: usb 3-2: Found multiple Units with ID 5

What's the issue ?

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
       [not found] <CADBf=5nJVddk-yPVw3T5GH9JEPOxnO8McPJHaxtnPBvLCnp42Q@mail.gmail.com>
  2025-01-06  7:27 ` [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID Laurent Pinchart
@ 2025-01-06 10:55 ` Thadeu Lima de Souza Cascardo
       [not found]   ` <CADBf=5nS8_cQvG3mRnXe_MGYmFMh=Myf_eptPqN9hgNMu73Wjg@mail.gmail.com>
  1 sibling, 1 reply; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-06 10:55 UTC (permalink / raw)
  To: Tomasz Sikora
  Cc: laurent.pinchart, hverkuil-cisco, kernel-dev, linux-media,
	mchehab, ribalda, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

On Sun, Jan 05, 2025 at 07:31:09PM +0100, Tomasz Sikora wrote:
> Issue video camera
> ls -l /dev/video*zsh: no matches found: /dev/video*
> 
> 
> 01 15:43:24 Linux kernel: usb 3-2: Found multiple Units with ID 5

Can you attach complete dmesg output? And more importantly, attach the
output of lsusb -vv?

Thanks.
Cascardo.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
       [not found]   ` <CADBf=5nS8_cQvG3mRnXe_MGYmFMh=Myf_eptPqN9hgNMu73Wjg@mail.gmail.com>
@ 2025-01-08 15:32     ` Thadeu Lima de Souza Cascardo
  2025-01-08 15:36       ` Laurent Pinchart
  0 siblings, 1 reply; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-08 15:32 UTC (permalink / raw)
  To: Tomasz Sikora
  Cc: laurent.pinchart, hverkuil-cisco, kernel-dev, linux-media,
	mchehab, ribalda, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

On Mon, Jan 06, 2025 at 02:15:24PM +0100, Tomasz Sikora wrote:
> Error in line 1034 dmesg.log
> You can see more here https://bbs.archlinux.org/viewtopic.php?id=301737
> 
> pon., 6 sty 2025 o 11:56 Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> napisał(a):
> 
> > On Sun, Jan 05, 2025 at 07:31:09PM +0100, Tomasz Sikora wrote:
> > > Issue video camera
> > > ls -l /dev/video*zsh: no matches found: /dev/video*
> > >
> > >
> > > 01 15:43:24 Linux kernel: usb 3-2: Found multiple Units with ID 5
> >
> > Can you attach complete dmesg output? And more importantly, attach the
> > output of lsusb -vv?
> >
> > Thanks.
> > Cascardo.
> >

Thanks a lot, Tomasz.

Without this patch (it could be an older kernel), do you see a warning in
your dmesg? Or messages like:

[  395.090938] usb 1-1: Failed to create links for entity 5
[  395.091385] usb 1-1: Failed to register entities (-22).

Otherwise, it might just be that your kernel is not built with
CONFIG_MEDIA_CONTROLLER.

I reached that conclusion by emulating a similar uvc device. Yours has the
entity ID for both the output terminal and processing unit. Though that is
not valid according to the spec (even UVC 1.0 mentions the IDs should be
unique), we should keep supporting such devices.

I am currently working on a fix that will restore support for your device
but improve its support for configs with CONFIG_MEDIA_CONTROLLER.

I appreciate your help on testing such configurations and fixes.

Thanks.
Cascardo.

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-08 15:32     ` Thadeu Lima de Souza Cascardo
@ 2025-01-08 15:36       ` Laurent Pinchart
  2025-01-08 15:56         ` Thadeu Lima de Souza Cascardo
  0 siblings, 1 reply; 24+ messages in thread
From: Laurent Pinchart @ 2025-01-08 15:36 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo
  Cc: Tomasz Sikora, hverkuil-cisco, kernel-dev, linux-media, mchehab,
	ribalda, syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

On Wed, Jan 08, 2025 at 12:32:07PM -0300, Thadeu Lima de Souza Cascardo wrote:
> On Mon, Jan 06, 2025 at 02:15:24PM +0100, Tomasz Sikora wrote:
> > Error in line 1034 dmesg.log
> > You can see more here https://bbs.archlinux.org/viewtopic.php?id=301737
> > 
> > pon., 6 sty 2025 o 11:56 Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> > napisał(a):
> > 
> > > On Sun, Jan 05, 2025 at 07:31:09PM +0100, Tomasz Sikora wrote:
> > > > Issue video camera
> > > > ls -l /dev/video*zsh: no matches found: /dev/video*
> > > >
> > > >
> > > > 01 15:43:24 Linux kernel: usb 3-2: Found multiple Units with ID 5
> > >
> > > Can you attach complete dmesg output? And more importantly, attach the
> > > output of lsusb -vv?
> > >
> > > Thanks.
> > > Cascardo.
> > >
> 
> Thanks a lot, Tomasz.
> 
> Without this patch (it could be an older kernel), do you see a warning in
> your dmesg? Or messages like:
> 
> [  395.090938] usb 1-1: Failed to create links for entity 5
> [  395.091385] usb 1-1: Failed to register entities (-22).
> 
> Otherwise, it might just be that your kernel is not built with
> CONFIG_MEDIA_CONTROLLER.
> 
> I reached that conclusion by emulating a similar uvc device. Yours has the
> entity ID for both the output terminal and processing unit. Though that is
> not valid according to the spec (even UVC 1.0 mentions the IDs should be
> unique), we should keep supporting such devices.
> 
> I am currently working on a fix that will restore support for your device
> but improve its support for configs with CONFIG_MEDIA_CONTROLLER.
> 
> I appreciate your help on testing such configurations and fixes.

The output of "lsusb -v -d 1c3f:2002" would help (running as root if
possible).

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-08 15:36       ` Laurent Pinchart
@ 2025-01-08 15:56         ` Thadeu Lima de Souza Cascardo
  2025-01-08 22:14           ` Tomasz Sikora
  0 siblings, 1 reply; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-08 15:56 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Tomasz Sikora, hverkuil-cisco, kernel-dev, linux-media, mchehab,
	ribalda, syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

[-- Attachment #1: Type: text/plain, Size: 1982 bytes --]

On Wed, Jan 08, 2025 at 05:36:37PM +0200, Laurent Pinchart wrote:
> On Wed, Jan 08, 2025 at 12:32:07PM -0300, Thadeu Lima de Souza Cascardo wrote:
> > On Mon, Jan 06, 2025 at 02:15:24PM +0100, Tomasz Sikora wrote:
> > > Error in line 1034 dmesg.log
> > > You can see more here https://bbs.archlinux.org/viewtopic.php?id=301737
> > > 
> > > pon., 6 sty 2025 o 11:56 Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> > > napisał(a):
> > > 
> > > > On Sun, Jan 05, 2025 at 07:31:09PM +0100, Tomasz Sikora wrote:
> > > > > Issue video camera
> > > > > ls -l /dev/video*zsh: no matches found: /dev/video*
> > > > >
> > > > >
> > > > > 01 15:43:24 Linux kernel: usb 3-2: Found multiple Units with ID 5
> > > >
> > > > Can you attach complete dmesg output? And more importantly, attach the
> > > > output of lsusb -vv?
> > > >
> > > > Thanks.
> > > > Cascardo.
> > > >
> > 
> > Thanks a lot, Tomasz.
> > 
> > Without this patch (it could be an older kernel), do you see a warning in
> > your dmesg? Or messages like:
> > 
> > [  395.090938] usb 1-1: Failed to create links for entity 5
> > [  395.091385] usb 1-1: Failed to register entities (-22).
> > 
> > Otherwise, it might just be that your kernel is not built with
> > CONFIG_MEDIA_CONTROLLER.
> > 
> > I reached that conclusion by emulating a similar uvc device. Yours has the
> > entity ID for both the output terminal and processing unit. Though that is
> > not valid according to the spec (even UVC 1.0 mentions the IDs should be
> > unique), we should keep supporting such devices.
> > 
> > I am currently working on a fix that will restore support for your device
> > but improve its support for configs with CONFIG_MEDIA_CONTROLLER.
> > 
> > I appreciate your help on testing such configurations and fixes.
> 
> The output of "lsusb -v -d 1c3f:2002" would help (running as root if
> possible).
> 
> -- 
> Regards,
> 
> Laurent Pinchart
> 

Here it is. I just realized Tomasz had only sent it to me in private.

Cascardo.

[-- Attachment #2: lsusb.log --]
[-- Type: text/plain, Size: 27037 bytes --]

Bus 003 Device 003: ID 1b3f:2002 Generalplus Technology Inc. 808 Camera
Negotiated speed: High Speed (480Mbps)
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 [unknown]
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x1b3f Generalplus Technology Inc.
  idProduct          0x2002 808 Camera
  bcdDevice            1.00
  iManufacturer           1 GENERAL
  iProduct                2 GENERAL WEBCAM
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0307
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              100mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0 
      iFunction               4 GENERAL WEBCAM
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0 
      iInterface              2 GENERAL WEBCAM
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdUVC               1.00
        wTotalLength       0x0033
        dwClockFrequency        6.000000MHz
        bInCollection           1
        baInterfaceNr( 0)       1
      VideoControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Camera Sensor
        bAssocTerminal          0
        iTerminal               0 
        wObjectiveFocalLengthMin      0
        wObjectiveFocalLengthMax      0
        wOcularFocalLength            0
        bControlSize                  3
        bmControls           0x0000000a
          Auto-Exposure Mode
          Exposure Time (Absolute)
      VideoControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             5
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               4
        iTerminal               0 
      VideoControl Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      5 (PROCESSING_UNIT)
      Warning: Descriptor too short
        bUnitID                 5
        bSourceID               4
        wMaxMultiplier      16384
        bControlSize            2
        bmControls     0x00000007
          Brightness
          Contrast
          Hue
        iProcessing             0 
        bmVideoStandards     0x73
          None
          NTSC - 525/60
          NTSC - 625/50
          PAL - 525/60
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval              32
        VideoControl Endpoint Descriptor:
          bLength                 5
          bDescriptorType        37
          bDescriptorSubtype      3 (EP_INTERRUPT)
          wMaxTransferSize        8
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      VideoStreaming Interface Descriptor:
        bLength                            15
        bDescriptorType                    36
        bDescriptorSubtype                  1 (INPUT_HEADER)
        bNumFormats                         2
        wTotalLength                   0x01a6
        bEndpointAddress                 0x85  EP 5 IN
        bmInfo                              0
        bTerminalLink                       5
        bStillCaptureMethod                 2
        bTriggerSupport                     1
        bTriggerUsage                       0
        bControlSize                        1
        bmaControls( 0)                     0
        bmaControls( 1)                     4
      VideoStreaming Interface Descriptor:
        bLength                            11
        bDescriptorType                    36
        bDescriptorSubtype                  6 (FORMAT_MJPEG)
        bFormatIndex                        1
        bNumFrameDescriptors                5
        bFlags                              1
          Fixed-size samples: Yes
        bDefaultFrameIndex                  1
        bAspectRatioX                       0
        bAspectRatioY                       0
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 1 fields
          Field 1 first: No
          Field pattern: Field 1 only
        bCopyProtect                        0
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1920
        wHeight                          1080
        dwMinBitRate                   912384
        dwMaxBitRate                   912384
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1280
        wHeight                           720
        dwMinBitRate                   912384
        dwMaxBitRate                   912384
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         3
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                   912384
        dwMaxBitRate                   912384
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         4
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1920
        wHeight                          1080
        dwMinBitRate                   912384
        dwMaxBitRate                   912384
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         5
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1920
        wHeight                          1080
        dwMinBitRate                   912384
        dwMaxBitRate                   912384
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
        bEndpointAddress                 0x00  EP 0 OUT
        bNumImageSizePatterns               5
        wWidth( 0)                       1920
        wHeight( 0)                      1080
        wWidth( 1)                       1280
        wHeight( 1)                       720
        wWidth( 2)                        640
        wHeight( 2)                       360
        wWidth( 3)                       1920
        wHeight( 3)                      1080
        wWidth( 4)                       1920
        wHeight( 4)                      1080
        bNumCompressionPatterns             4
        bCompression( 0)                    1
        bCompression( 1)                    5
        bCompression( 2)                   10
        bCompression( 3)                   20
      VideoStreaming Interface Descriptor:
        bLength                             6
        bDescriptorType                    36
        bDescriptorSubtype                 13 (COLORFORMAT)
        bColorPrimaries                     1 (BT.709,sRGB)
        bTransferCharacteristics            1 (BT.709)
        bMatrixCoefficients                 4 (SMPTE 170M (BT.601))
      VideoStreaming Interface Descriptor:
        bLength                            27
        bDescriptorType                    36
        bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)
        bFormatIndex                        2
        bNumFrameDescriptors                5
        guidFormat                            {32595559-0000-0010-8000-00aa00389b71}
        bBitsPerPixel                      16
        bDefaultFrameIndex                  1
        bAspectRatioX                       0
        bAspectRatioY                       0
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
        bCopyProtect                        0
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         3
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         4
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            30
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         5
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  1
        dwFrameInterval( 0)            333333
      VideoStreaming Interface Descriptor:
        bLength                            27
        bDescriptorType                    36
        bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
        bEndpointAddress                 0x00  EP 0 OUT
        bNumImageSizePatterns               5
        wWidth( 0)                        640
        wHeight( 0)                       360
        wWidth( 1)                        640
        wHeight( 1)                       360
        wWidth( 2)                        640
        wHeight( 2)                       360
        wWidth( 3)                        640
        wHeight( 3)                       360
        wWidth( 4)                        640
        wHeight( 4)                       360
        bNumCompressionPatterns             1
        bCompression( 0)                    1
      VideoStreaming Interface Descriptor:
        bLength                             6
        bDescriptorType                    36
        bDescriptorSubtype                 13 (COLORFORMAT)
        bColorPrimaries                     1 (BT.709,sRGB)
        bTransferCharacteristics            1 (BT.709)
        bMatrixCoefficients                 4 (SMPTE 170M (BT.601))
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0100  1x 256 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0b00  2x 768 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       5
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0c00  2x 1024 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       6
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x1354  3x 852 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       7
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x85  EP 5 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x1400  3x 1024 bytes
        bInterval               1
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         2
      bInterfaceCount         2
      bFunctionClass          1 Audio
      bFunctionSubClass       0 [unknown]
      bFunctionProtocol       0 
      iFunction               4 GENERAL WEBCAM
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              4 GENERAL WEBCAM
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength       0x0026
        bInCollection           1
        baInterfaceNr(0)        3
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bNrChannels             1
        wChannelConfig     0x0000
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 8
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 5
        bSourceID               3
        bControlSize            1
        bmaControls(0)       0x03
          Mute Control
          Volume Control
        iFeature                0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             4
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               5
        iTerminal               0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       1
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       2
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       3
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       4
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       5
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           4
        bDelay                  1 frames
        wFormatTag         0x0001 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             1
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        16000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x87  EP 7 IN
        bmAttributes            1
          Transfer Type            Isochronous
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0100  1x 256 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioStreaming Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x00
          bLockDelayUnits         0 Undefined
          wLockDelay         0x0000
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 [unknown]
  bDeviceSubClass         0 [unknown]
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-08 15:56         ` Thadeu Lima de Souza Cascardo
@ 2025-01-08 22:14           ` Tomasz Sikora
  2025-01-09 10:47             ` Thadeu Lima de Souza Cascardo
  0 siblings, 1 reply; 24+ messages in thread
From: Tomasz Sikora @ 2025-01-08 22:14 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo
  Cc: Laurent Pinchart, hverkuil-cisco, kernel-dev, linux-media,
	mchehab, ribalda, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b


[-- Attachment #1.1: Type: text/plain, Size: 2456 bytes --]

Hello,
you right
I have in dmsg (line 1228):
[   12.981124] usb 3-2: Failed to create links for entity 5
[   12.981126] usb 3-2: Failed to register entities (-22).

full output in my log.

śr., 8 sty 2025 o 16:56 Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
napisał(a):

> On Wed, Jan 08, 2025 at 05:36:37PM +0200, Laurent Pinchart wrote:
> > On Wed, Jan 08, 2025 at 12:32:07PM -0300, Thadeu Lima de Souza Cascardo
> wrote:
> > > On Mon, Jan 06, 2025 at 02:15:24PM +0100, Tomasz Sikora wrote:
> > > > Error in line 1034 dmesg.log
> > > > You can see more here
> https://bbs.archlinux.org/viewtopic.php?id=301737
> > > >
> > > > pon., 6 sty 2025 o 11:56 Thadeu Lima de Souza Cascardo <
> cascardo@igalia.com>
> > > > napisał(a):
> > > >
> > > > > On Sun, Jan 05, 2025 at 07:31:09PM +0100, Tomasz Sikora wrote:
> > > > > > Issue video camera
> > > > > > ls -l /dev/video*zsh: no matches found: /dev/video*
> > > > > >
> > > > > >
> > > > > > 01 15:43:24 Linux kernel: usb 3-2: Found multiple Units with ID 5
> > > > >
> > > > > Can you attach complete dmesg output? And more importantly, attach
> the
> > > > > output of lsusb -vv?
> > > > >
> > > > > Thanks.
> > > > > Cascardo.
> > > > >
> > >
> > > Thanks a lot, Tomasz.
> > >
> > > Without this patch (it could be an older kernel), do you see a warning
> in
> > > your dmesg? Or messages like:
> > >
> > > [  395.090938] usb 1-1: Failed to create links for entity 5
> > > [  395.091385] usb 1-1: Failed to register entities (-22).
> > >
> > > Otherwise, it might just be that your kernel is not built with
> > > CONFIG_MEDIA_CONTROLLER.
> > >
> > > I reached that conclusion by emulating a similar uvc device. Yours has
> the
> > > entity ID for both the output terminal and processing unit. Though
> that is
> > > not valid according to the spec (even UVC 1.0 mentions the IDs should
> be
> > > unique), we should keep supporting such devices.
> > >
> > > I am currently working on a fix that will restore support for your
> device
> > > but improve its support for configs with CONFIG_MEDIA_CONTROLLER.
> > >
> > > I appreciate your help on testing such configurations and fixes.
> >
> > The output of "lsusb -v -d 1c3f:2002" would help (running as root if
> > possible).
> >
> > --
> > Regards,
> >
> > Laurent Pinchart
> >
>
> Here it is. I just realized Tomasz had only sent it to me in private.
>
> Cascardo.
>

[-- Attachment #1.2: Type: text/html, Size: 3803 bytes --]

[-- Attachment #2: dmsg_without_patch.log --]
[-- Type: text/x-log, Size: 90069 bytes --]

[    0.000000] Linux version 6.6.63-1-lts (linux-lts@archlinux) (gcc (GCC) 14.2.1 20240910, GNU ld (GNU Binutils) 2.43.0) #1 SMP PREEMPT_DYNAMIC Fri, 22 Nov 2024 15:39:56 +0000
[    0.000000] Command line: BOOT_IMAGE=/vmlinuz-linux-lts root=/dev/nvme0n1p4
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009ffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000000a0000-0x00000000000fffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x0000000009ccefff] usable
[    0.000000] BIOS-e820: [mem 0x0000000009ccf000-0x0000000009ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x000000000a000000-0x000000000a1fffff] usable
[    0.000000] BIOS-e820: [mem 0x000000000a200000-0x000000000a20dfff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x000000000a20e000-0x000000000affffff] usable
[    0.000000] BIOS-e820: [mem 0x000000000b000000-0x000000000b01ffff] reserved
[    0.000000] BIOS-e820: [mem 0x000000000b020000-0x00000000bafc0fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000bafc1000-0x00000000bc72dfff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000bc72e000-0x00000000bc882fff] ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000bc883000-0x00000000bcf69fff] ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000bcf6a000-0x00000000bdbfefff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000bdbff000-0x00000000beffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000bf000000-0x00000000bfffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fd200000-0x00000000fd2fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fd600000-0x00000000fd7fffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fea00000-0x00000000fea0ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000feb80000-0x00000000fec01fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fec30000-0x00000000fec30fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed00000-0x00000000fed00fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed40000-0x00000000fed44fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed80000-0x00000000fed8ffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fedc2000-0x00000000fedcffff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000fedd4000-0x00000000fedd5fff] reserved
[    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000103f37ffff] usable
[    0.000000] BIOS-e820: [mem 0x000000103f380000-0x000000103fffffff] reserved
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] APIC: Static calls initialized
[    0.000000] e820: update [mem 0xb62e2018-0xb6301857] usable ==> usable
[    0.000000] e820: update [mem 0xb62e2018-0xb6301857] usable ==> usable
[    0.000000] e820: update [mem 0xb62d3018-0xb62e1057] usable ==> usable
[    0.000000] e820: update [mem 0xb62d3018-0xb62e1057] usable ==> usable
[    0.000000] extended physical RAM map:
[    0.000000] reserve setup_data: [mem 0x0000000000000000-0x000000000009ffff] usable
[    0.000000] reserve setup_data: [mem 0x00000000000a0000-0x00000000000fffff] reserved
[    0.000000] reserve setup_data: [mem 0x0000000000100000-0x0000000009ccefff] usable
[    0.000000] reserve setup_data: [mem 0x0000000009ccf000-0x0000000009ffffff] reserved
[    0.000000] reserve setup_data: [mem 0x000000000a000000-0x000000000a1fffff] usable
[    0.000000] reserve setup_data: [mem 0x000000000a200000-0x000000000a20dfff] ACPI NVS
[    0.000000] reserve setup_data: [mem 0x000000000a20e000-0x000000000affffff] usable
[    0.000000] reserve setup_data: [mem 0x000000000b000000-0x000000000b01ffff] reserved
[    0.000000] reserve setup_data: [mem 0x000000000b020000-0x00000000b62d3017] usable
[    0.000000] reserve setup_data: [mem 0x00000000b62d3018-0x00000000b62e1057] usable
[    0.000000] reserve setup_data: [mem 0x00000000b62e1058-0x00000000b62e2017] usable
[    0.000000] reserve setup_data: [mem 0x00000000b62e2018-0x00000000b6301857] usable
[    0.000000] reserve setup_data: [mem 0x00000000b6301858-0x00000000bafc0fff] usable
[    0.000000] reserve setup_data: [mem 0x00000000bafc1000-0x00000000bc72dfff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000bc72e000-0x00000000bc882fff] ACPI data
[    0.000000] reserve setup_data: [mem 0x00000000bc883000-0x00000000bcf69fff] ACPI NVS
[    0.000000] reserve setup_data: [mem 0x00000000bcf6a000-0x00000000bdbfefff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000bdbff000-0x00000000beffffff] usable
[    0.000000] reserve setup_data: [mem 0x00000000bf000000-0x00000000bfffffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000f0000000-0x00000000f7ffffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fd200000-0x00000000fd2fffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fd600000-0x00000000fd7fffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fea00000-0x00000000fea0ffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000feb80000-0x00000000fec01fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fec10000-0x00000000fec10fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fec30000-0x00000000fec30fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fed00000-0x00000000fed00fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fed40000-0x00000000fed44fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fed80000-0x00000000fed8ffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fedc2000-0x00000000fedcffff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000fedd4000-0x00000000fedd5fff] reserved
[    0.000000] reserve setup_data: [mem 0x00000000ff000000-0x00000000ffffffff] reserved
[    0.000000] reserve setup_data: [mem 0x0000000100000000-0x000000103f37ffff] usable
[    0.000000] reserve setup_data: [mem 0x000000103f380000-0x000000103fffffff] reserved
[    0.000000] efi: EFI v2.7 by American Megatrends
[    0.000000] efi: ACPI=0xbcf53000 ACPI 2.0=0xbcf53014 TPMFinalLog=0xbcf1d000 SMBIOS=0xbda26000 SMBIOS 3.0=0xbda25000 MEMATTR=0xb64f8018 ESRT=0xb8ff9218 INITRD=0xb64f7e98 RNG=0xbc865018 TPMEventLog=0xbc864018 
[    0.000000] random: crng init done
[    0.000000] efi: Remove mem320: MMIO range=[0xf0000000-0xf7ffffff] (128MB) from e820 map
[    0.000000] e820: remove [mem 0xf0000000-0xf7ffffff] reserved
[    0.000000] efi: Remove mem321: MMIO range=[0xfd200000-0xfd2fffff] (1MB) from e820 map
[    0.000000] e820: remove [mem 0xfd200000-0xfd2fffff] reserved
[    0.000000] efi: Remove mem322: MMIO range=[0xfd600000-0xfd7fffff] (2MB) from e820 map
[    0.000000] e820: remove [mem 0xfd600000-0xfd7fffff] reserved
[    0.000000] efi: Not removing mem323: MMIO range=[0xfea00000-0xfea0ffff] (64KB) from e820 map
[    0.000000] efi: Remove mem324: MMIO range=[0xfeb80000-0xfec01fff] (0MB) from e820 map
[    0.000000] e820: remove [mem 0xfeb80000-0xfec01fff] reserved
[    0.000000] efi: Not removing mem325: MMIO range=[0xfec10000-0xfec10fff] (4KB) from e820 map
[    0.000000] efi: Not removing mem326: MMIO range=[0xfec30000-0xfec30fff] (4KB) from e820 map
[    0.000000] efi: Not removing mem327: MMIO range=[0xfed00000-0xfed00fff] (4KB) from e820 map
[    0.000000] efi: Not removing mem328: MMIO range=[0xfed40000-0xfed44fff] (20KB) from e820 map
[    0.000000] efi: Not removing mem329: MMIO range=[0xfed80000-0xfed8ffff] (64KB) from e820 map
[    0.000000] efi: Not removing mem330: MMIO range=[0xfedc2000-0xfedcffff] (56KB) from e820 map
[    0.000000] efi: Not removing mem331: MMIO range=[0xfedd4000-0xfedd5fff] (8KB) from e820 map
[    0.000000] efi: Remove mem332: MMIO range=[0xff000000-0xffffffff] (16MB) from e820 map
[    0.000000] e820: remove [mem 0xff000000-0xffffffff] reserved
[    0.000000] SMBIOS 3.3.0 present.
[    0.000000] DMI: Gigabyte Technology Co., Ltd. B550 GAMING X V2/B550 GAMING X V2, BIOS FB 11/14/2022
[    0.000000] tsc: Fast TSC calibration using PIT
[    0.000000] tsc: Detected 3792.790 MHz processor
[    0.000334] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000335] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000341] last_pfn = 0x103f380 max_arch_pfn = 0x400000000
[    0.000346] total RAM covered: 3071M
[    0.000422] Found optimal setting for mtrr clean up
[    0.000422]  gran_size: 64K 	chunk_size: 64M 	num_reg: 3  	lose cover RAM: 0G
[    0.000424] MTRR map: 7 entries (3 fixed + 4 variable; max 20), built from 9 variable MTRRs
[    0.000426] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- WT  
[    0.000754] e820: update [mem 0xbc9f0000-0xbc9fffff] usable ==> reserved
[    0.000759] e820: update [mem 0xc0000000-0xffffffff] usable ==> reserved
[    0.000761] last_pfn = 0xbf000 max_arch_pfn = 0x400000000
[    0.003248] esrt: Reserving ESRT space from 0x00000000b8ff9218 to 0x00000000b8ff9250.
[    0.003254] e820: update [mem 0xb8ff9000-0xb8ff9fff] usable ==> reserved
[    0.003278] Using GB pages for direct mapping
[    0.003691] Secure boot disabled
[    0.003692] RAMDISK: [mem 0xb1bb6000-0xb26f0fff]
[    0.003746] ACPI: Early table checksum verification disabled
[    0.003749] ACPI: RSDP 0x00000000BCF53014 000024 (v02 ALASKA)
[    0.003751] ACPI: XSDT 0x00000000BCF52728 0000DC (v01 ALASKA A M I    01072009 AMI  01000013)
[    0.003755] ACPI: FACP 0x00000000BC869000 000114 (v06 ALASKA A M I    01072009 AMI  00010013)
[    0.003758] ACPI: DSDT 0x00000000BC76F000 0068F9 (v02 ALASKA A M I    01072009 INTL 20190509)
[    0.003760] ACPI: FACS 0x00000000BCF4D000 000040
[    0.003761] ACPI: SSDT 0x00000000BC878000 00ABD0 (v02 GBT    GSWApp   00000001 INTL 20190509)
[    0.003763] ACPI: SSDT 0x00000000BC86F000 008CE9 (v02 AMD    AmdTable 00000002 MSFT 04000000)
[    0.003764] ACPI: SSDT 0x00000000BC86B000 003D74 (v01 AMD    AMD AOD  00000001 INTL 20190509)
[    0.003765] ACPI: SSDT 0x00000000BC86A000 000221 (v02 ALASKA CPUSSDT  01072009 AMI  01072009)
[    0.003767] ACPI: FIDT 0x00000000BC862000 00009C (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.003768] ACPI: MCFG 0x00000000BC861000 00003C (v01 ALASKA A M I    01072009 MSFT 00010013)
[    0.003770] ACPI: HPET 0x00000000BC860000 000038 (v01 ALASKA A M I    01072009 AMI  00000005)
[    0.003771] ACPI: IVRS 0x00000000BC85F000 0000D0 (v02 AMD    AmdTable 00000001 AMD  00000001)
[    0.003772] ACPI: FPDT 0x00000000BC85E000 000044 (v01 ALASKA A M I    01072009 AMI  01000013)
[    0.003774] ACPI: BGRT 0x00000000BC85D000 000038 (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.003775] ACPI: TPM2 0x00000000BC85C000 00004C (v04 ALASKA A M I    00000001 AMI  00000000)
[    0.003776] ACPI: PCCT 0x00000000BC85B000 00006E (v02 AMD    AmdTable 00000001 AMD  00000001)
[    0.003778] ACPI: SSDT 0x00000000BC856000 004133 (v02 AMD    AmdTable 00000001 AMD  00000001)
[    0.003779] ACPI: CRAT 0x00000000BC855000 000F10 (v01 AMD    AmdTable 00000001 AMD  00000001)
[    0.003781] ACPI: CDIT 0x00000000BC854000 000029 (v01 AMD    AmdTable 00000001 AMD  00000001)
[    0.003782] ACPI: WPBT 0x00000000BC77D000 000038 (v01 ALASKA A M I    00000001 GBT  20181220)
[    0.003783] ACPI: SSDT 0x00000000BC77C000 000788 (v01 AMD    ArticNOI 00000001 INTL 20190509)
[    0.003785] ACPI: SSDT 0x00000000BC778000 0039F7 (v01 AMD    ArticN   00000001 INTL 20190509)
[    0.003786] ACPI: WSMT 0x00000000BC777000 000028 (v01 ALASKA A M I    01072009 AMI  00010013)
[    0.003787] ACPI: APIC 0x00000000BC776000 00015E (v04 ALASKA A M I    01072009 AMI  00010013)
[    0.003788] ACPI: SSDT 0x00000000BC867000 00147F (v01 AMD    ArticC   00000001 INTL 20190509)
[    0.003790] ACPI: SSDT 0x00000000BC866000 0000BF (v01 AMD    AmdTable 00001000 INTL 20190509)
[    0.003791] ACPI: Reserving FACP table memory at [mem 0xbc869000-0xbc869113]
[    0.003792] ACPI: Reserving DSDT table memory at [mem 0xbc76f000-0xbc7758f8]
[    0.003792] ACPI: Reserving FACS table memory at [mem 0xbcf4d000-0xbcf4d03f]
[    0.003792] ACPI: Reserving SSDT table memory at [mem 0xbc878000-0xbc882bcf]
[    0.003793] ACPI: Reserving SSDT table memory at [mem 0xbc86f000-0xbc877ce8]
[    0.003793] ACPI: Reserving SSDT table memory at [mem 0xbc86b000-0xbc86ed73]
[    0.003794] ACPI: Reserving SSDT table memory at [mem 0xbc86a000-0xbc86a220]
[    0.003794] ACPI: Reserving FIDT table memory at [mem 0xbc862000-0xbc86209b]
[    0.003794] ACPI: Reserving MCFG table memory at [mem 0xbc861000-0xbc86103b]
[    0.003795] ACPI: Reserving HPET table memory at [mem 0xbc860000-0xbc860037]
[    0.003795] ACPI: Reserving IVRS table memory at [mem 0xbc85f000-0xbc85f0cf]
[    0.003795] ACPI: Reserving FPDT table memory at [mem 0xbc85e000-0xbc85e043]
[    0.003796] ACPI: Reserving BGRT table memory at [mem 0xbc85d000-0xbc85d037]
[    0.003796] ACPI: Reserving TPM2 table memory at [mem 0xbc85c000-0xbc85c04b]
[    0.003796] ACPI: Reserving PCCT table memory at [mem 0xbc85b000-0xbc85b06d]
[    0.003797] ACPI: Reserving SSDT table memory at [mem 0xbc856000-0xbc85a132]
[    0.003797] ACPI: Reserving CRAT table memory at [mem 0xbc855000-0xbc855f0f]
[    0.003797] ACPI: Reserving CDIT table memory at [mem 0xbc854000-0xbc854028]
[    0.003798] ACPI: Reserving WPBT table memory at [mem 0xbc77d000-0xbc77d037]
[    0.003798] ACPI: Reserving SSDT table memory at [mem 0xbc77c000-0xbc77c787]
[    0.003798] ACPI: Reserving SSDT table memory at [mem 0xbc778000-0xbc77b9f6]
[    0.003799] ACPI: Reserving WSMT table memory at [mem 0xbc777000-0xbc777027]
[    0.003799] ACPI: Reserving APIC table memory at [mem 0xbc776000-0xbc77615d]
[    0.003799] ACPI: Reserving SSDT table memory at [mem 0xbc867000-0xbc86847e]
[    0.003800] ACPI: Reserving SSDT table memory at [mem 0xbc866000-0xbc8660be]
[    0.003844] No NUMA configuration found
[    0.003844] Faking a node at [mem 0x0000000000000000-0x000000103f37ffff]
[    0.003846] NODE_DATA(0) allocated [mem 0x103f37b000-0x103f37ffff]
[    0.003879] Zone ranges:
[    0.003880]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.003881]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.003881]   Normal   [mem 0x0000000100000000-0x000000103f37ffff]
[    0.003882]   Device   empty
[    0.003883] Movable zone start for each node
[    0.003883] Early memory node ranges
[    0.003883]   node   0: [mem 0x0000000000001000-0x000000000009ffff]
[    0.003884]   node   0: [mem 0x0000000000100000-0x0000000009ccefff]
[    0.003884]   node   0: [mem 0x000000000a000000-0x000000000a1fffff]
[    0.003885]   node   0: [mem 0x000000000a20e000-0x000000000affffff]
[    0.003885]   node   0: [mem 0x000000000b020000-0x00000000bafc0fff]
[    0.003886]   node   0: [mem 0x00000000bdbff000-0x00000000beffffff]
[    0.003886]   node   0: [mem 0x0000000100000000-0x000000103f37ffff]
[    0.003889] Initmem setup node 0 [mem 0x0000000000001000-0x000000103f37ffff]
[    0.003891] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.003901] On node 0, zone DMA: 96 pages in unavailable ranges
[    0.003980] On node 0, zone DMA32: 817 pages in unavailable ranges
[    0.003988] On node 0, zone DMA32: 14 pages in unavailable ranges
[    0.005938] On node 0, zone DMA32: 32 pages in unavailable ranges
[    0.006013] On node 0, zone DMA32: 11326 pages in unavailable ranges
[    0.070003] On node 0, zone Normal: 4096 pages in unavailable ranges
[    0.070019] On node 0, zone Normal: 3200 pages in unavailable ranges
[    0.070373] ACPI: PM-Timer IO Port: 0x808
[    0.070379] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[    0.070390] IOAPIC[0]: apic_id 17, version 33, address 0xfec00000, GSI 0-23
[    0.070395] IOAPIC[1]: apic_id 18, version 33, address 0xfec01000, GSI 24-55
[    0.070396] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.070398] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level)
[    0.070400] ACPI: Using ACPI (MADT) for SMP configuration information
[    0.070401] ACPI: HPET id: 0x10228201 base: 0xfed00000
[    0.070409] e820: update [mem 0xb6b22000-0xb6b66fff] usable ==> reserved
[    0.070418] smpboot: Allowing 32 CPUs, 16 hotplug CPUs
[    0.070432] PM: hibernation: Registered nosave memory: [mem 0x00000000-0x00000fff]
[    0.070433] PM: hibernation: Registered nosave memory: [mem 0x000a0000-0x000fffff]
[    0.070434] PM: hibernation: Registered nosave memory: [mem 0x09ccf000-0x09ffffff]
[    0.070435] PM: hibernation: Registered nosave memory: [mem 0x0a200000-0x0a20dfff]
[    0.070436] PM: hibernation: Registered nosave memory: [mem 0x0b000000-0x0b01ffff]
[    0.070436] PM: hibernation: Registered nosave memory: [mem 0xb62d3000-0xb62d3fff]
[    0.070437] PM: hibernation: Registered nosave memory: [mem 0xb62e1000-0xb62e1fff]
[    0.070438] PM: hibernation: Registered nosave memory: [mem 0xb62e2000-0xb62e2fff]
[    0.070438] PM: hibernation: Registered nosave memory: [mem 0xb6301000-0xb6301fff]
[    0.070439] PM: hibernation: Registered nosave memory: [mem 0xb6b22000-0xb6b66fff]
[    0.070440] PM: hibernation: Registered nosave memory: [mem 0xb8ff9000-0xb8ff9fff]
[    0.070441] PM: hibernation: Registered nosave memory: [mem 0xbafc1000-0xbc72dfff]
[    0.070441] PM: hibernation: Registered nosave memory: [mem 0xbc72e000-0xbc882fff]
[    0.070441] PM: hibernation: Registered nosave memory: [mem 0xbc883000-0xbcf69fff]
[    0.070442] PM: hibernation: Registered nosave memory: [mem 0xbcf6a000-0xbdbfefff]
[    0.070443] PM: hibernation: Registered nosave memory: [mem 0xbf000000-0xbfffffff]
[    0.070443] PM: hibernation: Registered nosave memory: [mem 0xc0000000-0xfe9fffff]
[    0.070443] PM: hibernation: Registered nosave memory: [mem 0xfea00000-0xfea0ffff]
[    0.070444] PM: hibernation: Registered nosave memory: [mem 0xfea10000-0xfec0ffff]
[    0.070444] PM: hibernation: Registered nosave memory: [mem 0xfec10000-0xfec10fff]
[    0.070444] PM: hibernation: Registered nosave memory: [mem 0xfec11000-0xfec2ffff]
[    0.070444] PM: hibernation: Registered nosave memory: [mem 0xfec30000-0xfec30fff]
[    0.070445] PM: hibernation: Registered nosave memory: [mem 0xfec31000-0xfecfffff]
[    0.070445] PM: hibernation: Registered nosave memory: [mem 0xfed00000-0xfed00fff]
[    0.070445] PM: hibernation: Registered nosave memory: [mem 0xfed01000-0xfed3ffff]
[    0.070446] PM: hibernation: Registered nosave memory: [mem 0xfed40000-0xfed44fff]
[    0.070446] PM: hibernation: Registered nosave memory: [mem 0xfed45000-0xfed7ffff]
[    0.070446] PM: hibernation: Registered nosave memory: [mem 0xfed80000-0xfed8ffff]
[    0.070447] PM: hibernation: Registered nosave memory: [mem 0xfed90000-0xfedc1fff]
[    0.070447] PM: hibernation: Registered nosave memory: [mem 0xfedc2000-0xfedcffff]
[    0.070447] PM: hibernation: Registered nosave memory: [mem 0xfedd0000-0xfedd3fff]
[    0.070447] PM: hibernation: Registered nosave memory: [mem 0xfedd4000-0xfedd5fff]
[    0.070448] PM: hibernation: Registered nosave memory: [mem 0xfedd6000-0xffffffff]
[    0.070449] [mem 0xc0000000-0xfe9fffff] available for PCI devices
[    0.070450] Booting paravirtualized kernel on bare hardware
[    0.070451] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370452778343963 ns
[    0.073229] setup_percpu: NR_CPUS:320 nr_cpumask_bits:32 nr_cpu_ids:32 nr_node_ids:1
[    0.073944] percpu: Embedded 64 pages/cpu s225280 r8192 d28672 u262144
[    0.073948] pcpu-alloc: s225280 r8192 d28672 u262144 alloc=1*2097152
[    0.073949] pcpu-alloc: [0] 00 01 02 03 04 05 06 07 [0] 08 09 10 11 12 13 14 15 
[    0.073954] pcpu-alloc: [0] 16 17 18 19 20 21 22 23 [0] 24 25 26 27 28 29 30 31 
[    0.073966] Kernel command line: BOOT_IMAGE=/vmlinuz-linux-lts root=/dev/nvme0n1p4
[    0.073987] Unknown kernel command line parameters "BOOT_IMAGE=/vmlinuz-linux-lts", will be passed to user space.
[    0.074001] printk: log_buf_len individual max cpu contribution: 4096 bytes
[    0.074002] printk: log_buf_len total cpu_extra contributions: 126976 bytes
[    0.074002] printk: log_buf_len min size: 131072 bytes
[    0.074120] printk: log_buf_len: 262144 bytes
[    0.074121] printk: early log buf free: 112312(85%)
[    0.078273] Dentry cache hash table entries: 8388608 (order: 14, 67108864 bytes, linear)
[    0.080316] Inode-cache hash table entries: 4194304 (order: 13, 33554432 bytes, linear)
[    0.080383] Fallback order for Node 0: 0 
[    0.080389] Built 1 zonelists, mobility grouping on.  Total pages: 16495635
[    0.080390] Policy zone: Normal
[    0.080539] mem auto-init: stack:all(zero), heap alloc:on, heap free:off
[    0.080573] software IO TLB: area num 32.
[    0.164405] Memory: 65647128K/67030536K available (16384K kernel code, 2138K rwdata, 13036K rodata, 3436K init, 3708K bss, 1383152K reserved, 0K cma-reserved)
[    0.164547] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=32, Nodes=1
[    0.164565] ftrace: allocating 48959 entries in 192 pages
[    0.172001] ftrace: allocated 192 pages with 2 groups
[    0.172553] Dynamic Preempt: voluntary
[    0.172615] rcu: Preemptible hierarchical RCU implementation.
[    0.172615] rcu: 	RCU restricting CPUs from NR_CPUS=320 to nr_cpu_ids=32.
[    0.172616] rcu: 	RCU priority boosting: priority 1 delay 500 ms.
[    0.172617] 	Trampoline variant of Tasks RCU enabled.
[    0.172617] 	Rude variant of Tasks RCU enabled.
[    0.172617] 	Tracing variant of Tasks RCU enabled.
[    0.172618] rcu: RCU calculated value of scheduler-enlistment delay is 30 jiffies.
[    0.172618] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=32
[    0.173971] NR_IRQS: 20736, nr_irqs: 1224, preallocated irqs: 16
[    0.174144] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.174232] kfence: initialized - using 2097152 bytes for 255 objects at 0x(____ptrval____)-0x(____ptrval____)
[    0.174268] Console: colour dummy device 80x25
[    0.174270] printk: console [tty0] enabled
[    0.174302] ACPI: Core revision 20230628
[    0.174400] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 133484873504 ns
[    0.174415] APIC: Switch to symmetric I/O mode setup
[    0.174961] AMD-Vi: Using global IVHD EFR:0x0, EFR2:0x0
[    0.493654] x2apic: IRQ remapping doesn't support X2APIC mode
[    0.493674] APIC: Switched APIC routing to: physical flat
[    0.494293] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.507755] clocksource: tsc-early: mask: 0xffffffffffffffff max_cycles: 0x6d577b0820d, max_idle_ns: 881591009473 ns
[    0.507758] Calibrating delay loop (skipped), value calculated using timer frequency.. 7588.64 BogoMIPS (lpj=12642633)
[    0.507769] x86/cpu: User Mode Instruction Prevention (UMIP) activated
[    0.507812] LVT offset 1 assigned for vector 0xf9
[    0.507959] LVT offset 2 assigned for vector 0xf4
[    0.508000] process: using mwait in idle threads
[    0.508001] Last level iTLB entries: 4KB 512, 2MB 512, 4MB 256
[    0.508002] Last level dTLB entries: 4KB 2048, 2MB 2048, 4MB 1024, 1GB 0
[    0.508004] Spectre V1 : Mitigation: usercopy/swapgs barriers and __user pointer sanitization
[    0.508005] Spectre V2 : Mitigation: Retpolines
[    0.508005] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on context switch
[    0.508006] Spectre V2 : Spectre v2 / SpectreRSB : Filling RSB on VMEXIT
[    0.508006] Spectre V2 : Enabling Restricted Speculation for firmware calls
[    0.508007] Spectre V2 : mitigation: Enabling conditional Indirect Branch Prediction Barrier
[    0.508008] Spectre V2 : User space: Mitigation: STIBP always-on protection
[    0.508009] Speculative Store Bypass: Mitigation: Speculative Store Bypass disabled via prctl
[    0.508009] Speculative Return Stack Overflow: Mitigation: Safe RET
[    0.508012] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[    0.508013] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.508014] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.508014] x86/fpu: Supporting XSAVE feature 0x200: 'Protection Keys User registers'
[    0.508015] x86/fpu: Supporting XSAVE feature 0x800: 'Control-flow User registers'
[    0.508015] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.508016] x86/fpu: xstate_offset[9]:  832, xstate_sizes[9]:    8
[    0.508017] x86/fpu: xstate_offset[11]:  840, xstate_sizes[11]:   16
[    0.508017] x86/fpu: Enabled xstate features 0xa07, context size is 856 bytes, using 'compacted' format.
[    0.525148] Freeing SMP alternatives memory: 40K
[    0.525151] pid_max: default: 32768 minimum: 301
[    0.528134] LSM: initializing lsm=capability,landlock,lockdown,yama,bpf,integrity
[    0.528156] landlock: Up and running.
[    0.528158] Yama: becoming mindful.
[    0.528161] LSM support for eBPF active
[    0.528244] Mount-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.528311] Mountpoint-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.635372] smpboot: CPU0: AMD Ryzen 7 5800X 8-Core Processor (family: 0x19, model: 0x21, stepping: 0x2)
[    0.635519] RCU Tasks: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=32.
[    0.635537] RCU Tasks Rude: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=32.
[    0.635551] RCU Tasks Trace: Setting shift to 5 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=32.
[    0.635562] Performance Events: Fam17h+ core perfctr, AMD PMU driver.
[    0.635566] ... version:                0
[    0.635567] ... bit width:              48
[    0.635568] ... generic registers:      6
[    0.635569] ... value mask:             0000ffffffffffff
[    0.635570] ... max period:             00007fffffffffff
[    0.635570] ... fixed-purpose events:   0
[    0.635571] ... event mask:             000000000000003f
[    0.635639] signal: max sigframe size: 3376
[    0.635659] rcu: Hierarchical SRCU implementation.
[    0.635660] rcu: 	Max phase no-delay instances is 1000.
[    0.637533] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[    0.637715] smp: Bringing up secondary CPUs ...
[    0.637756] smpboot: x86: Booting SMP configuration:
[    0.637756] .... node  #0, CPUs:        #1  #2  #3  #4  #5  #6  #7  #8  #9 #10 #11 #12 #13 #14 #15
[    0.656425] Spectre V2 : Update user space SMT mitigation: STIBP always-on
[    0.671129] smp: Brought up 1 node, 16 CPUs
[    0.671129] smpboot: Max logical packages: 2
[    0.671129] smpboot: Total of 16 processors activated (121417.33 BogoMIPS)
[    0.672603] devtmpfs: initialized
[    0.672603] x86/mm: Memory block size: 2048MB
[    0.672603] ACPI: PM: Registering ACPI NVS region [mem 0x0a200000-0x0a20dfff] (57344 bytes)
[    0.672603] ACPI: PM: Registering ACPI NVS region [mem 0xbc883000-0xbcf69fff] (7237632 bytes)
[    0.674530] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370867519511994 ns
[    0.674551] futex hash table entries: 8192 (order: 7, 524288 bytes, linear)
[    0.674623] pinctrl core: initialized pinctrl subsystem
[    0.674729] PM: RTC time: 22:04:25, date: 2025-01-08
[    0.675114] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.675357] DMA: preallocated 4096 KiB GFP_KERNEL pool for atomic allocations
[    0.675500] DMA: preallocated 4096 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.675645] DMA: preallocated 4096 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.675660] audit: initializing netlink subsys (disabled)
[    0.675668] audit: type=2000 audit(1736373864.186:1): state=initialized audit_enabled=0 res=1
[    0.675668] thermal_sys: Registered thermal governor 'fair_share'
[    0.675668] thermal_sys: Registered thermal governor 'bang_bang'
[    0.675668] thermal_sys: Registered thermal governor 'step_wise'
[    0.675668] thermal_sys: Registered thermal governor 'user_space'
[    0.675668] thermal_sys: Registered thermal governor 'power_allocator'
[    0.675668] cpuidle: using governor ladder
[    0.675668] cpuidle: using governor menu
[    0.675668] Detected 1 PCC Subspaces
[    0.675668] Registering PCC driver as Mailbox controller
[    0.675668] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.675668] PCI: MMCONFIG for domain 0000 [bus 00-7f] at [mem 0xf0000000-0xf7ffffff] (base 0xf0000000)
[    0.675668] PCI: Using configuration type 1 for base access
[    0.675668] kprobes: kprobe jump-optimization is enabled. All kprobes are optimized if possible.
[    0.675668] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.675668] HugeTLB: 16380 KiB vmemmap can be freed for a 1.00 GiB page
[    0.675668] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.675668] HugeTLB: 28 KiB vmemmap can be freed for a 2.00 MiB page
[    0.675668] ACPI: Added _OSI(Module Device)
[    0.675668] ACPI: Added _OSI(Processor Device)
[    0.675668] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.675668] ACPI: Added _OSI(Processor Aggregator Device)
[    0.701350] ACPI: 10 ACPI AML tables successfully acquired and loaded
[    0.703727] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.717758] ACPI: _OSC evaluation for CPUs failed, trying _PDC
[    0.717758] ACPI: Interpreter enabled
[    0.717758] ACPI: PM: (supports S0 S3 S4 S5)
[    0.717758] ACPI: Using IOAPIC for interrupt routing
[    0.719069] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[    0.719070] PCI: Using E820 reservations for host bridge windows
[    0.719614] ACPI: Enabled 8 GPEs in block 00 to 1F
[    0.731844] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.731849] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI EDR HPX-Type3]
[    0.731959] acpi PNP0A08:00: _OSC: platform does not support [SHPCHotplug LTR DPC]
[    0.732161] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME AER PCIeCapability]
[    0.732170] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 0000 [bus 00-7f] only partially covers this bridge
[    0.732708] PCI host bridge to bus 0000:00
[    0.732710] pci_bus 0000:00: root bus resource [io  0x0000-0x03af window]
[    0.732712] pci_bus 0000:00: root bus resource [io  0x03e0-0x0cf7 window]
[    0.732713] pci_bus 0000:00: root bus resource [io  0x03b0-0x03df window]
[    0.732714] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.732716] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000dffff window]
[    0.732717] pci_bus 0000:00: root bus resource [mem 0xc0000000-0xfec2ffff window]
[    0.732718] pci_bus 0000:00: root bus resource [mem 0xfee00000-0xffffffff window]
[    0.732719] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.732734] pci 0000:00:00.0: [1022:1480] type 00 class 0x060000
[    0.732838] pci 0000:00:00.2: [1022:1481] type 00 class 0x080600
[    0.732939] pci 0000:00:01.0: [1022:1482] type 00 class 0x060000
[    0.733000] pci 0000:00:01.1: [1022:1483] type 01 class 0x060400
[    0.733027] pci 0000:00:01.1: enabling Extended Tags
[    0.733078] pci 0000:00:01.1: PME# supported from D0 D3hot D3cold
[    0.733221] pci 0000:00:01.2: [1022:1483] type 01 class 0x060400
[    0.733248] pci 0000:00:01.2: enabling Extended Tags
[    0.733297] pci 0000:00:01.2: PME# supported from D0 D3hot D3cold
[    0.733457] pci 0000:00:02.0: [1022:1482] type 00 class 0x060000
[    0.733521] pci 0000:00:03.0: [1022:1482] type 00 class 0x060000
[    0.733586] pci 0000:00:04.0: [1022:1482] type 00 class 0x060000
[    0.733648] pci 0000:00:05.0: [1022:1482] type 00 class 0x060000
[    0.733713] pci 0000:00:07.0: [1022:1482] type 00 class 0x060000
[    0.733772] pci 0000:00:07.1: [1022:1484] type 01 class 0x060400
[    0.733797] pci 0000:00:07.1: enabling Extended Tags
[    0.733839] pci 0000:00:07.1: PME# supported from D0 D3hot D3cold
[    0.733962] pci 0000:00:08.0: [1022:1482] type 00 class 0x060000
[    0.734022] pci 0000:00:08.1: [1022:1484] type 01 class 0x060400
[    0.734048] pci 0000:00:08.1: enabling Extended Tags
[    0.734093] pci 0000:00:08.1: PME# supported from D0 D3hot D3cold
[    0.734244] pci 0000:00:14.0: [1022:790b] type 00 class 0x0c0500
[    0.734366] pci 0000:00:14.3: [1022:790e] type 00 class 0x060100
[    0.734504] pci 0000:00:18.0: [1022:1440] type 00 class 0x060000
[    0.734537] pci 0000:00:18.1: [1022:1441] type 00 class 0x060000
[    0.734570] pci 0000:00:18.2: [1022:1442] type 00 class 0x060000
[    0.734603] pci 0000:00:18.3: [1022:1443] type 00 class 0x060000
[    0.734636] pci 0000:00:18.4: [1022:1444] type 00 class 0x060000
[    0.734669] pci 0000:00:18.5: [1022:1445] type 00 class 0x060000
[    0.734703] pci 0000:00:18.6: [1022:1446] type 00 class 0x060000
[    0.734737] pci 0000:00:18.7: [1022:1447] type 00 class 0x060000
[    0.734824] pci 0000:01:00.0: [1cc1:5370] type 00 class 0x010802
[    0.734839] pci 0000:01:00.0: reg 0x10: [mem 0xfc800000-0xfc803fff 64bit]
[    0.734958] pci 0000:01:00.0: reg 0x1d8: [mem 0x00000000-0x00003fff 64bit]
[    0.734960] pci 0000:01:00.0: VF(n) BAR0 space: [mem 0x00000000-0x0007ffff 64bit] (contains BAR0 for 32 VFs)
[    0.735188] pci 0000:00:01.1: PCI bridge to [bus 01]
[    0.735193] pci 0000:00:01.1:   bridge window [mem 0xfc800000-0xfc8fffff]
[    0.735196] pci 0000:00:01.1: bridge has subordinate 01 but max busn 21
[    0.735263] pci 0000:02:00.0: [1022:43ee] type 00 class 0x0c0330
[    0.735282] pci 0000:02:00.0: reg 0x10: [mem 0xfc3a0000-0xfc3a7fff 64bit]
[    0.735326] pci 0000:02:00.0: enabling Extended Tags
[    0.735385] pci 0000:02:00.0: PME# supported from D3hot D3cold
[    0.735530] pci 0000:02:00.1: [1022:43eb] type 00 class 0x010601
[    0.735582] pci 0000:02:00.1: reg 0x24: [mem 0xfc380000-0xfc39ffff]
[    0.735590] pci 0000:02:00.1: reg 0x30: [mem 0xfc300000-0xfc37ffff pref]
[    0.735597] pci 0000:02:00.1: enabling Extended Tags
[    0.735656] pci 0000:02:00.1: PME# supported from D3hot D3cold
[    0.735754] pci 0000:02:00.2: [1022:43e9] type 01 class 0x060400
[    0.735802] pci 0000:02:00.2: enabling Extended Tags
[    0.735853] pci 0000:02:00.2: PME# supported from D3hot D3cold
[    0.735961] pci 0000:00:01.2: PCI bridge to [bus 02-05]
[    0.735965] pci 0000:00:01.2:   bridge window [io  0xe000-0xffff]
[    0.735967] pci 0000:00:01.2:   bridge window [mem 0xfb000000-0xfc3fffff]
[    0.735971] pci 0000:00:01.2:   bridge window [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.736103] pci 0000:03:00.0: [1022:43ea] type 01 class 0x060400
[    0.736154] pci 0000:03:00.0: enabling Extended Tags
[    0.736216] pci 0000:03:00.0: PME# supported from D3hot D3cold
[    0.736352] pci 0000:03:09.0: [1022:43ea] type 01 class 0x060400
[    0.736403] pci 0000:03:09.0: enabling Extended Tags
[    0.736465] pci 0000:03:09.0: PME# supported from D3hot D3cold
[    0.736597] pci 0000:02:00.2: PCI bridge to [bus 03-05]
[    0.736602] pci 0000:02:00.2:   bridge window [io  0xe000-0xffff]
[    0.736606] pci 0000:02:00.2:   bridge window [mem 0xfb000000-0xfc2fffff]
[    0.736611] pci 0000:02:00.2:   bridge window [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.736678] pci 0000:04:00.0: [10de:1f82] type 00 class 0x030000
[    0.736705] pci 0000:04:00.0: reg 0x10: [mem 0xfb000000-0xfbffffff]
[    0.736729] pci 0000:04:00.0: reg 0x14: [mem 0xd0000000-0xdfffffff 64bit pref]
[    0.736753] pci 0000:04:00.0: reg 0x1c: [mem 0xe0000000-0xe1ffffff 64bit pref]
[    0.736768] pci 0000:04:00.0: reg 0x24: [io  0xf000-0xf07f]
[    0.736784] pci 0000:04:00.0: reg 0x30: [mem 0xfc000000-0xfc07ffff pref]
[    0.736796] pci 0000:04:00.0: enabling Extended Tags
[    0.736826] pci 0000:04:00.0: BAR 3: assigned to efifb
[    0.736836] pci 0000:04:00.0: Video device with shadowed ROM at [mem 0x000c0000-0x000dffff]
[    0.736939] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold
[    0.737119] pci 0000:04:00.0: 4.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x2 link at 0000:03:00.0 (capable of 126.016 Gb/s with 8.0 GT/s PCIe x16 link)
[    0.737327] pci 0000:04:00.1: [10de:10fa] type 00 class 0x040300
[    0.737355] pci 0000:04:00.1: reg 0x10: [mem 0xfc080000-0xfc083fff]
[    0.737453] pci 0000:04:00.1: enabling Extended Tags
[    0.737683] pci 0000:03:00.0: PCI bridge to [bus 04]
[    0.737689] pci 0000:03:00.0:   bridge window [io  0xf000-0xffff]
[    0.737692] pci 0000:03:00.0:   bridge window [mem 0xfb000000-0xfc0fffff]
[    0.737697] pci 0000:03:00.0:   bridge window [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.737778] pci 0000:05:00.0: [10ec:8168] type 00 class 0x020000
[    0.737808] pci 0000:05:00.0: reg 0x10: [io  0xe000-0xe0ff]
[    0.737849] pci 0000:05:00.0: reg 0x18: [mem 0xfc204000-0xfc204fff 64bit]
[    0.737875] pci 0000:05:00.0: reg 0x20: [mem 0xfc200000-0xfc203fff 64bit]
[    0.738042] pci 0000:05:00.0: supports D1 D2
[    0.738043] pci 0000:05:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.738327] pci 0000:03:09.0: PCI bridge to [bus 05]
[    0.738333] pci 0000:03:09.0:   bridge window [io  0xe000-0xefff]
[    0.738336] pci 0000:03:09.0:   bridge window [mem 0xfc200000-0xfc2fffff]
[    0.738400] pci 0000:06:00.0: [1022:148a] type 00 class 0x130000
[    0.738429] pci 0000:06:00.0: enabling Extended Tags
[    0.738585] pci 0000:00:07.1: PCI bridge to [bus 06]
[    0.738650] pci 0000:07:00.0: [1022:1485] type 00 class 0x130000
[    0.738684] pci 0000:07:00.0: enabling Extended Tags
[    0.738842] pci 0000:07:00.1: [1022:1486] type 00 class 0x108000
[    0.738858] pci 0000:07:00.1: reg 0x18: [mem 0xfc600000-0xfc6fffff]
[    0.738870] pci 0000:07:00.1: reg 0x24: [mem 0xfc708000-0xfc709fff]
[    0.738879] pci 0000:07:00.1: enabling Extended Tags
[    0.739011] pci 0000:07:00.3: [1022:149c] type 00 class 0x0c0330
[    0.739025] pci 0000:07:00.3: reg 0x10: [mem 0xfc500000-0xfc5fffff 64bit]
[    0.739056] pci 0000:07:00.3: enabling Extended Tags
[    0.739104] pci 0000:07:00.3: PME# supported from D0 D3hot D3cold
[    0.739222] pci 0000:07:00.4: [1022:1487] type 00 class 0x040300
[    0.739232] pci 0000:07:00.4: reg 0x10: [mem 0xfc700000-0xfc707fff]
[    0.739259] pci 0000:07:00.4: enabling Extended Tags
[    0.739304] pci 0000:07:00.4: PME# supported from D0 D3hot D3cold
[    0.739426] pci 0000:00:08.1: PCI bridge to [bus 07]
[    0.739430] pci 0000:00:08.1:   bridge window [mem 0xfc500000-0xfc7fffff]
[    0.739779] ACPI: PCI: Interrupt link LNKA configured for IRQ 0
[    0.739843] ACPI: PCI: Interrupt link LNKB configured for IRQ 0
[    0.739899] ACPI: PCI: Interrupt link LNKC configured for IRQ 0
[    0.739966] ACPI: PCI: Interrupt link LNKD configured for IRQ 0
[    0.740027] ACPI: PCI: Interrupt link LNKE configured for IRQ 0
[    0.740078] ACPI: PCI: Interrupt link LNKF configured for IRQ 0
[    0.740128] ACPI: PCI: Interrupt link LNKG configured for IRQ 0
[    0.740179] ACPI: PCI: Interrupt link LNKH configured for IRQ 0
[    0.741573] iommu: Default domain type: Translated
[    0.741573] iommu: DMA domain TLB invalidation policy: lazy mode
[    0.741573] SCSI subsystem initialized
[    0.741573] libata version 3.00 loaded.
[    0.741573] ACPI: bus type USB registered
[    0.741573] usbcore: registered new interface driver usbfs
[    0.741573] usbcore: registered new interface driver hub
[    0.741573] usbcore: registered new device driver usb
[    0.741573] pps_core: LinuxPPS API ver. 1 registered
[    0.741573] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.741573] PTP clock support registered
[    0.741573] EDAC MC: Ver: 3.0.0
[    0.741573] efivars: Registered efivars operations
[    0.741573] NetLabel: Initializing
[    0.741573] NetLabel:  domain hash size = 128
[    0.741573] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.741573] NetLabel:  unlabeled traffic allowed by default
[    0.741573] mctp: management component transport protocol core
[    0.741573] NET: Registered PF_MCTP protocol family
[    0.741573] PCI: Using ACPI for IRQ routing
[    0.746254] PCI: pci_cache_line_size set to 64 bytes
[    0.746314] e820: reserve RAM buffer [mem 0x09ccf000-0x0bffffff]
[    0.746316] e820: reserve RAM buffer [mem 0x0a200000-0x0bffffff]
[    0.746317] e820: reserve RAM buffer [mem 0x0b000000-0x0bffffff]
[    0.746318] e820: reserve RAM buffer [mem 0xb62d3018-0xb7ffffff]
[    0.746319] e820: reserve RAM buffer [mem 0xb62e2018-0xb7ffffff]
[    0.746320] e820: reserve RAM buffer [mem 0xb6b22000-0xb7ffffff]
[    0.746321] e820: reserve RAM buffer [mem 0xb8ff9000-0xbbffffff]
[    0.746321] e820: reserve RAM buffer [mem 0xbafc1000-0xbbffffff]
[    0.746322] e820: reserve RAM buffer [mem 0xbf000000-0xbfffffff]
[    0.746323] e820: reserve RAM buffer [mem 0x103f380000-0x103fffffff]
[    0.747775] pci 0000:04:00.0: vgaarb: setting as boot VGA device
[    0.747775] pci 0000:04:00.0: vgaarb: bridge control possible
[    0.747775] pci 0000:04:00.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[    0.747775] vgaarb: loaded
[    0.747793] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.747798] hpet0: 3 comparators, 32-bit 14.318180 MHz counter
[    0.749807] clocksource: Switched to clocksource tsc-early
[    0.749807] VFS: Disk quotas dquot_6.6.0
[    0.749807] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.749807] pnp: PnP ACPI init
[    0.749807] system 00:00: [mem 0xf0000000-0xf7ffffff] has been reserved
[    0.749807] system 00:01: [mem 0xfd200000-0xfd2fffff] has been reserved
[    0.749807] system 00:03: [io  0x0a00-0x0a2f] has been reserved
[    0.749807] system 00:03: [io  0x0a30-0x0a3f] has been reserved
[    0.749807] system 00:03: [io  0x0a40-0x0a4f] has been reserved
[    0.749807] system 00:03: [mem 0xfe000000-0xfe00ffff] has been reserved
[    0.749807] system 00:04: [io  0x04d0-0x04d1] has been reserved
[    0.749807] system 00:04: [io  0x040b] has been reserved
[    0.749807] system 00:04: [io  0x04d6] has been reserved
[    0.749807] system 00:04: [io  0x0c00-0x0c01] has been reserved
[    0.749807] system 00:04: [io  0x0c14] has been reserved
[    0.749807] system 00:04: [io  0x0c50-0x0c51] has been reserved
[    0.749807] system 00:04: [io  0x0c52] has been reserved
[    0.749807] system 00:04: [io  0x0c6c] has been reserved
[    0.749807] system 00:04: [io  0x0c6f] has been reserved
[    0.749807] system 00:04: [io  0x0cd8-0x0cdf] has been reserved
[    0.749807] system 00:04: [io  0x0800-0x089f] has been reserved
[    0.749807] system 00:04: [io  0x0b00-0x0b0f] has been reserved
[    0.749807] system 00:04: [io  0x0b20-0x0b3f] has been reserved
[    0.749807] system 00:04: [io  0x0900-0x090f] has been reserved
[    0.749807] system 00:04: [io  0x0910-0x091f] has been reserved
[    0.749807] system 00:04: [mem 0xfec00000-0xfec00fff] could not be reserved
[    0.749807] system 00:04: [mem 0xfec01000-0xfec01fff] could not be reserved
[    0.749807] system 00:04: [mem 0xfedc0000-0xfedc0fff] has been reserved
[    0.749807] system 00:04: [mem 0xfee00000-0xfee00fff] has been reserved
[    0.749807] system 00:04: [mem 0xfed80000-0xfed8ffff] could not be reserved
[    0.749807] system 00:04: [mem 0xfec10000-0xfec10fff] has been reserved
[    0.749807] system 00:04: [mem 0xff000000-0xffffffff] has been reserved
[    0.750018] pnp: PnP ACPI: found 5 devices
[    0.755789] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[    0.755859] NET: Registered PF_INET protocol family
[    0.755982] IP idents hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.757618] tcp_listen_portaddr_hash hash table entries: 32768 (order: 7, 524288 bytes, linear)
[    0.757652] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.757873] TCP established hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.758210] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[    0.758287] TCP: Hash tables configured (established 524288 bind 65536)
[    0.758467] MPTCP token hash table entries: 65536 (order: 8, 1572864 bytes, linear)
[    0.758567] UDP hash table entries: 32768 (order: 8, 1048576 bytes, linear)
[    0.758680] UDP-Lite hash table entries: 32768 (order: 8, 1048576 bytes, linear)
[    0.758788] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.758793] NET: Registered PF_XDP protocol family
[    0.758801] pci 0000:01:00.0: BAR 7: assigned [mem 0xfc804000-0xfc883fff 64bit]
[    0.758805] pci 0000:00:01.1: PCI bridge to [bus 01]
[    0.758808] pci 0000:00:01.1:   bridge window [mem 0xfc800000-0xfc8fffff]
[    0.758814] pci 0000:03:00.0: PCI bridge to [bus 04]
[    0.758817] pci 0000:03:00.0:   bridge window [io  0xf000-0xffff]
[    0.758821] pci 0000:03:00.0:   bridge window [mem 0xfb000000-0xfc0fffff]
[    0.758824] pci 0000:03:00.0:   bridge window [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.758830] pci 0000:03:09.0: PCI bridge to [bus 05]
[    0.758832] pci 0000:03:09.0:   bridge window [io  0xe000-0xefff]
[    0.758837] pci 0000:03:09.0:   bridge window [mem 0xfc200000-0xfc2fffff]
[    0.758844] pci 0000:02:00.2: PCI bridge to [bus 03-05]
[    0.758847] pci 0000:02:00.2:   bridge window [io  0xe000-0xffff]
[    0.758851] pci 0000:02:00.2:   bridge window [mem 0xfb000000-0xfc2fffff]
[    0.758854] pci 0000:02:00.2:   bridge window [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.758859] pci 0000:00:01.2: PCI bridge to [bus 02-05]
[    0.758861] pci 0000:00:01.2:   bridge window [io  0xe000-0xffff]
[    0.758864] pci 0000:00:01.2:   bridge window [mem 0xfb000000-0xfc3fffff]
[    0.758866] pci 0000:00:01.2:   bridge window [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.758870] pci 0000:00:07.1: PCI bridge to [bus 06]
[    0.758876] pci 0000:00:08.1: PCI bridge to [bus 07]
[    0.758879] pci 0000:00:08.1:   bridge window [mem 0xfc500000-0xfc7fffff]
[    0.758884] pci_bus 0000:00: resource 4 [io  0x0000-0x03af window]
[    0.758886] pci_bus 0000:00: resource 5 [io  0x03e0-0x0cf7 window]
[    0.758887] pci_bus 0000:00: resource 6 [io  0x03b0-0x03df window]
[    0.758888] pci_bus 0000:00: resource 7 [io  0x0d00-0xffff window]
[    0.758889] pci_bus 0000:00: resource 8 [mem 0x000a0000-0x000dffff window]
[    0.758890] pci_bus 0000:00: resource 9 [mem 0xc0000000-0xfec2ffff window]
[    0.758892] pci_bus 0000:00: resource 10 [mem 0xfee00000-0xffffffff window]
[    0.758893] pci_bus 0000:01: resource 1 [mem 0xfc800000-0xfc8fffff]
[    0.758894] pci_bus 0000:02: resource 0 [io  0xe000-0xffff]
[    0.758895] pci_bus 0000:02: resource 1 [mem 0xfb000000-0xfc3fffff]
[    0.758896] pci_bus 0000:02: resource 2 [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.758898] pci_bus 0000:03: resource 0 [io  0xe000-0xffff]
[    0.758899] pci_bus 0000:03: resource 1 [mem 0xfb000000-0xfc2fffff]
[    0.758900] pci_bus 0000:03: resource 2 [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.758901] pci_bus 0000:04: resource 0 [io  0xf000-0xffff]
[    0.758902] pci_bus 0000:04: resource 1 [mem 0xfb000000-0xfc0fffff]
[    0.758903] pci_bus 0000:04: resource 2 [mem 0xd0000000-0xe1ffffff 64bit pref]
[    0.758904] pci_bus 0000:05: resource 0 [io  0xe000-0xefff]
[    0.758905] pci_bus 0000:05: resource 1 [mem 0xfc200000-0xfc2fffff]
[    0.758907] pci_bus 0000:07: resource 1 [mem 0xfc500000-0xfc7fffff]
[    0.759119] pci 0000:04:00.1: extending delay after power-on from D3hot to 20 msec
[    0.759149] pci 0000:04:00.1: D0 power state depends on 0000:04:00.0
[    0.759361] PCI: CLS 64 bytes, default 64
[    0.759375] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[    0.759406] Trying to unpack rootfs image as initramfs...
[    0.759410] pci 0000:00:01.0: Adding to iommu group 0
[    0.759422] pci 0000:00:01.1: Adding to iommu group 1
[    0.759435] pci 0000:00:01.2: Adding to iommu group 2
[    0.759450] pci 0000:00:02.0: Adding to iommu group 3
[    0.759466] pci 0000:00:03.0: Adding to iommu group 4
[    0.759483] pci 0000:00:04.0: Adding to iommu group 5
[    0.759499] pci 0000:00:05.0: Adding to iommu group 6
[    0.759516] pci 0000:00:07.0: Adding to iommu group 7
[    0.759527] pci 0000:00:07.1: Adding to iommu group 8
[    0.759545] pci 0000:00:08.0: Adding to iommu group 9
[    0.759556] pci 0000:00:08.1: Adding to iommu group 10
[    0.759577] pci 0000:00:14.0: Adding to iommu group 11
[    0.759588] pci 0000:00:14.3: Adding to iommu group 11
[    0.759641] pci 0000:00:18.0: Adding to iommu group 12
[    0.759652] pci 0000:00:18.1: Adding to iommu group 12
[    0.759663] pci 0000:00:18.2: Adding to iommu group 12
[    0.759674] pci 0000:00:18.3: Adding to iommu group 12
[    0.759685] pci 0000:00:18.4: Adding to iommu group 12
[    0.759696] pci 0000:00:18.5: Adding to iommu group 12
[    0.759707] pci 0000:00:18.6: Adding to iommu group 12
[    0.759718] pci 0000:00:18.7: Adding to iommu group 12
[    0.759730] pci 0000:01:00.0: Adding to iommu group 13
[    0.759756] pci 0000:02:00.0: Adding to iommu group 14
[    0.759769] pci 0000:02:00.1: Adding to iommu group 14
[    0.759783] pci 0000:02:00.2: Adding to iommu group 14
[    0.759787] pci 0000:03:00.0: Adding to iommu group 14
[    0.759791] pci 0000:03:09.0: Adding to iommu group 14
[    0.759794] pci 0000:04:00.0: Adding to iommu group 14
[    0.759798] pci 0000:04:00.1: Adding to iommu group 14
[    0.759802] pci 0000:05:00.0: Adding to iommu group 14
[    0.759814] pci 0000:06:00.0: Adding to iommu group 15
[    0.759828] pci 0000:07:00.0: Adding to iommu group 16
[    0.759841] pci 0000:07:00.1: Adding to iommu group 17
[    0.759853] pci 0000:07:00.3: Adding to iommu group 18
[    0.759867] pci 0000:07:00.4: Adding to iommu group 19
[    0.762542] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[    0.762543] AMD-Vi: Extended features (0x58f77ef22294a5a, 0x0): PPR NX GT IA PC GA_vAPIC
[    0.762549] AMD-Vi: Interrupt remapping enabled
[    0.762625] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.762627] software IO TLB: mapped [mem 0x00000000adbb6000-0x00000000b1bb6000] (64MB)
[    0.762651] LVT offset 0 assigned for vector 0x400
[    0.767022] perf: AMD IBS detected (0x000003ff)
[    0.767028] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[    0.768587] Initialise system trusted keyrings
[    0.768595] Key type blacklist registered
[    0.768617] workingset: timestamp_bits=41 max_order=24 bucket_order=0
[    0.768624] zbud: loaded
[    0.768747] integrity: Platform Keyring initialized
[    0.768749] integrity: Machine keyring initialized
[    0.774759] Key type asymmetric registered
[    0.774760] Asymmetric key parser 'x509' registered
[    0.774772] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 242)
[    0.774803] io scheduler mq-deadline registered
[    0.774805] io scheduler kyber registered
[    0.774811] io scheduler bfq registered
[    0.775897] pcieport 0000:00:01.1: PME: Signaling with IRQ 27
[    0.775944] pcieport 0000:00:01.1: AER: enabled with IRQ 27
[    0.776060] pcieport 0000:00:01.2: PME: Signaling with IRQ 28
[    0.776105] pcieport 0000:00:01.2: AER: enabled with IRQ 28
[    0.776286] pcieport 0000:00:07.1: PME: Signaling with IRQ 30
[    0.776331] pcieport 0000:00:07.1: AER: enabled with IRQ 30
[    0.776437] pcieport 0000:00:08.1: PME: Signaling with IRQ 31
[    0.776486] pcieport 0000:00:08.1: AER: enabled with IRQ 31
[    0.776928] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.777053] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[    0.777071] ACPI: button: Power Button [PWRB]
[    0.777103] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[    0.777140] ACPI: button: Power Button [PWRF]
[    0.778578] Estimated ratio of average max frequency by base frequency (times 1024): 1165
[    0.778593] Monitor-Mwait will be used to enter C-1 state
[    0.778598] ACPI: \_SB_.PLTF.C000: Found 2 idle states
[    0.778727] ACPI: \_SB_.PLTF.C002: Found 2 idle states
[    0.778843] ACPI: \_SB_.PLTF.C004: Found 2 idle states
[    0.778934] ACPI: \_SB_.PLTF.C006: Found 2 idle states
[    0.779045] ACPI: \_SB_.PLTF.C008: Found 2 idle states
[    0.779153] ACPI: \_SB_.PLTF.C00A: Found 2 idle states
[    0.779261] ACPI: \_SB_.PLTF.C00C: Found 2 idle states
[    0.779369] ACPI: \_SB_.PLTF.C00E: Found 2 idle states
[    0.779520] ACPI: \_SB_.PLTF.C001: Found 2 idle states
[    0.779615] ACPI: \_SB_.PLTF.C003: Found 2 idle states
[    0.779710] ACPI: \_SB_.PLTF.C005: Found 2 idle states
[    0.779805] ACPI: \_SB_.PLTF.C007: Found 2 idle states
[    0.779902] ACPI: \_SB_.PLTF.C009: Found 2 idle states
[    0.779998] ACPI: \_SB_.PLTF.C00B: Found 2 idle states
[    0.780094] ACPI: \_SB_.PLTF.C00D: Found 2 idle states
[    0.780185] ACPI: \_SB_.PLTF.C00F: Found 2 idle states
[    0.788259] Freeing initrd memory: 11500K
[    1.793894] tsc: Refined TSC clocksource calibration: 3792.873 MHz
[    1.793909] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x6d5818a734c, max_idle_ns: 881590694765 ns
[    1.793943] clocksource: Switched to clocksource tsc
[    2.889915] ACPI: \_TZ_.TZ10: Invalid passive threshold
[    2.890292] thermal LNXTHERM:00: registered as thermal_zone0
[    2.890293] ACPI: thermal: Thermal Zone [TZ10] (17 C)
[    2.890384] ACPI: \_TZ_.UAD0: Invalid passive threshold
[    2.890458] thermal LNXTHERM:01: registered as thermal_zone1
[    2.890459] ACPI: thermal: Thermal Zone [UAD0] (17 C)
[    2.890661] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    2.892364] Non-volatile memory driver v1.3
[    2.892365] Linux agpgart interface v0.103
[    2.950693] tpm_crb MSFT0101:00: Disabling hwrng
[    2.951092] AMD-Vi: AMD IOMMUv2 loaded and initialized
[    2.951136] ACPI: bus type drm_connector registered
[    2.952995] ahci 0000:02:00.1: version 3.0
[    2.953122] ahci 0000:02:00.1: SSS flag set, parallel bus scan disabled
[    2.953175] ahci 0000:02:00.1: AHCI 0001.0301 32 slots 6 ports 6 Gbps 0x3f impl SATA mode
[    2.953177] ahci 0000:02:00.1: flags: 64bit ncq sntf stag pm led clo only pmp pio slum part sxs deso sadm sds apst 
[    2.953609] scsi host0: ahci
[    2.953720] scsi host1: ahci
[    2.953813] scsi host2: ahci
[    2.953909] scsi host3: ahci
[    2.954013] scsi host4: ahci
[    2.954117] scsi host5: ahci
[    2.954153] ata1: SATA max UDMA/133 abar m131072@0xfc380000 port 0xfc380100 irq 37
[    2.954155] ata2: SATA max UDMA/133 abar m131072@0xfc380000 port 0xfc380180 irq 37
[    2.954158] ata3: SATA max UDMA/133 abar m131072@0xfc380000 port 0xfc380200 irq 37
[    2.954159] ata4: SATA max UDMA/133 abar m131072@0xfc380000 port 0xfc380280 irq 37
[    2.954162] ata5: SATA max UDMA/133 abar m131072@0xfc380000 port 0xfc380300 irq 37
[    2.954163] ata6: SATA max UDMA/133 abar m131072@0xfc380000 port 0xfc380380 irq 37
[    2.954253] usbcore: registered new interface driver usbserial_generic
[    2.954258] usbserial: USB Serial support registered for generic
[    2.954320] rtc_cmos 00:02: RTC can wake from S4
[    2.954541] rtc_cmos 00:02: registered as rtc0
[    2.954569] rtc_cmos 00:02: setting system clock to 2025-01-08T22:04:27 UTC (1736373867)
[    2.954594] rtc_cmos 00:02: alarms up to one month, y3k, 114 bytes nvram
[    2.954625] amd_pstate: driver load is disabled, boot with specific mode to enable this
[    2.954759] ledtrig-cpu: registered to indicate activity on CPUs
[    2.954919] Relocating firmware framebuffer to offset 0x0000000001000000[d] within [mem 0xe0000000-0xe1ffffff flags 0x14220c]
[    2.955037] [drm] Initialized simpledrm 1.0.0 20200625 for simple-framebuffer.0 on minor 0
[    2.955221] fbcon: Deferring console take-over
[    2.955223] simple-framebuffer simple-framebuffer.0: [drm] fb0: simpledrmdrmfb frame buffer device
[    2.955257] hid: raw HID events driver (C) Jiri Kosina
[    2.955335] drop_monitor: Initializing network drop monitor service
[    2.963494] Initializing XFRM netlink socket
[    2.963521] NET: Registered PF_INET6 protocol family
[    2.967872] Segment Routing with IPv6
[    2.967873] RPL Segment Routing with IPv6
[    2.967880] In-situ OAM (IOAM) with IPv6
[    2.967899] NET: Registered PF_PACKET protocol family
[    2.968984] microcode: microcode updated early to new patch_level=0x0a201210
[    2.969012] microcode: CPU1: patch_level=0x0a201210
[    2.969012] microcode: CPU2: patch_level=0x0a201210
[    2.969013] microcode: CPU3: patch_level=0x0a201210
[    2.969015] microcode: CPU9: patch_level=0x0a201210
[    2.969014] microcode: CPU7: patch_level=0x0a201210
[    2.969015] microcode: CPU8: patch_level=0x0a201210
[    2.969016] microcode: CPU0: patch_level=0x0a201210
[    2.969025] microcode: CPU5: patch_level=0x0a201210
[    2.969025] microcode: CPU13: patch_level=0x0a201210
[    2.969025] microcode: CPU4: patch_level=0x0a201210
[    2.969025] microcode: CPU12: patch_level=0x0a201210
[    2.969027] microcode: CPU14: patch_level=0x0a201210
[    2.969027] microcode: CPU6: patch_level=0x0a201210
[    2.969198] microcode: CPU1: new patch_level=0x0a201210
[    2.969199] microcode: CPU8: new patch_level=0x0a201210
[    2.969228] microcode: CPU3: new patch_level=0x0a201210
[    2.969230] microcode: CPU11: patch_level=0x0a201210
[    2.969232] microcode: CPU2: new patch_level=0x0a201210
[    2.969233] microcode: CPU10: patch_level=0x0a201210
[    2.969234] microcode: CPU7: new patch_level=0x0a201210
[    2.969236] microcode: CPU15: patch_level=0x0a201210
[    2.969375] microcode: CPU9: new patch_level=0x0a201210
[    2.969376] microcode: CPU0: new patch_level=0x0a201210
[    2.969441] microcode: CPU11: new patch_level=0x0a201210
[    2.969445] microcode: CPU10: new patch_level=0x0a201210
[    2.969449] microcode: CPU15: new patch_level=0x0a201210
[    2.969450] microcode: CPU13: new patch_level=0x0a201210
[    2.969450] microcode: CPU5: new patch_level=0x0a201210
[    2.969451] microcode: CPU12: new patch_level=0x0a201210
[    2.969451] microcode: CPU4: new patch_level=0x0a201210
[    2.969451] microcode: CPU14: new patch_level=0x0a201210
[    2.969451] microcode: CPU6: new patch_level=0x0a201210
[    2.969467] microcode: Microcode Update Driver: v2.2.
[    2.969567] resctrl: L3 allocation detected
[    2.969568] resctrl: MB allocation detected
[    2.969569] resctrl: L3 monitoring detected
[    2.969571] IPI shorthand broadcast: enabled
[    2.971418] sched_clock: Marking stable (2656667263, 313585466)->(2974134033, -3881304)
[    2.971511] registered taskstats version 1
[    2.971924] Loading compiled-in X.509 certificates
[    2.973741] Loaded X.509 cert 'Build time autogenerated kernel key: 5b66d5a4f999baf9ace6be19c365b963857af3bd'
[    2.976215] zswap: loaded using pool zstd/zsmalloc
[    2.978058] Key type .fscrypt registered
[    2.978059] Key type fscrypt-provisioning registered
[    2.978367] PM:   Magic number: 9:417:97
[    2.981541] RAS: Correctable Errors collector initialized.
[    2.981648] clk: Disabling unused clocks
[    3.268039] ata1: SATA link down (SStatus 0 SControl 300)
[    3.737232] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    3.737368] ata2.00: ATA-11: SSDPR-CX400-512, SBFM61.3, max UDMA/133
[    3.737398] ata2.00: 1000215216 sectors, multi 16: LBA48 NCQ (depth 32), AA
[    3.737967] ata2.00: configured for UDMA/133
[    3.738096] scsi 1:0:0:0: Direct-Access     ATA      SSDPR-CX400-512  61.3 PQ: 0 ANSI: 5
[    3.738393] sd 1:0:0:0: [sda] 1000215216 512-byte logical blocks: (512 GB/477 GiB)
[    3.738401] sd 1:0:0:0: [sda] Write Protect is off
[    3.738403] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    3.738414] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.738429] sd 1:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[    3.739356]  sda: sda1 sda2 sda3 sda4 < sda5 sda6 >
[    3.739516] sd 1:0:0:0: [sda] Attached SCSI disk
[    4.050787] ata3: SATA link down (SStatus 0 SControl 330)
[    4.364366] ata4: SATA link down (SStatus 0 SControl 330)
[    5.397258] ata5: failed to resume link (SControl 0)
[    5.397279] ata5: SATA link down (SStatus 0 SControl 0)
[    5.710949] ata6: SATA link down (SStatus 0 SControl 330)
[    5.712267] Freeing unused decrypted memory: 2028K
[    5.712542] Freeing unused kernel image (initmem) memory: 3436K
[    5.712544] Write protecting the kernel read-only data: 30720k
[    5.712850] Freeing unused kernel image (rodata/data gap) memory: 1300K
[    5.748540] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    5.748544] rodata_test: all tests were successful
[    5.748555] Run /init as init process
[    5.748556]   with arguments:
[    5.748558]     /init
[    5.748559]   with environment:
[    5.748560]     HOME=/
[    5.748561]     TERM=linux
[    5.748562]     BOOT_IMAGE=/vmlinuz-linux-lts
[    5.760935] fbcon: Taking over console
[    5.770069] Console: switching to colour frame buffer device 128x48
[    5.882861] xhci_hcd 0000:02:00.0: xHCI Host Controller
[    5.882869] xhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 1
[    5.889577] nvme nvme0: pci function 0000:01:00.0
[    5.896088] nvme nvme0: 32/0/0 default/read/poll queues
[    5.899541]  nvme0n1: p1 p2 p3 p4 p5 p6
[    5.938232] xhci_hcd 0000:02:00.0: hcc params 0x0200ef81 hci version 0x110 quirks 0x0000000000000410
[    5.938651] xhci_hcd 0000:02:00.0: xHCI Host Controller
[    5.938656] xhci_hcd 0000:02:00.0: new USB bus registered, assigned bus number 2
[    5.938659] xhci_hcd 0000:02:00.0: Host supports USB 3.1 Enhanced SuperSpeed
[    5.938726] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[    5.938729] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.938731] usb usb1: Product: xHCI Host Controller
[    5.938733] usb usb1: Manufacturer: Linux 6.6.63-1-lts xhci-hcd
[    5.938734] usb usb1: SerialNumber: 0000:02:00.0
[    5.938865] hub 1-0:1.0: USB hub found
[    5.938881] hub 1-0:1.0: 10 ports detected
[    5.939286] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    5.939308] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.06
[    5.939311] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.939312] usb usb2: Product: xHCI Host Controller
[    5.939314] usb usb2: Manufacturer: Linux 6.6.63-1-lts xhci-hcd
[    5.939315] usb usb2: SerialNumber: 0000:02:00.0
[    5.939397] hub 2-0:1.0: USB hub found
[    5.939406] hub 2-0:1.0: 4 ports detected
[    5.939691] xhci_hcd 0000:07:00.3: xHCI Host Controller
[    5.939696] xhci_hcd 0000:07:00.3: new USB bus registered, assigned bus number 3
[    5.939808] xhci_hcd 0000:07:00.3: hcc params 0x0278ffe5 hci version 0x110 quirks 0x0000000000000410
[    5.940176] xhci_hcd 0000:07:00.3: xHCI Host Controller
[    5.940179] xhci_hcd 0000:07:00.3: new USB bus registered, assigned bus number 4
[    5.940181] xhci_hcd 0000:07:00.3: Host supports USB 3.1 Enhanced SuperSpeed
[    5.940210] usb usb3: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.06
[    5.940211] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.940213] usb usb3: Product: xHCI Host Controller
[    5.940214] usb usb3: Manufacturer: Linux 6.6.63-1-lts xhci-hcd
[    5.940215] usb usb3: SerialNumber: 0000:07:00.3
[    5.940297] hub 3-0:1.0: USB hub found
[    5.940304] hub 3-0:1.0: 4 ports detected
[    5.940461] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[    5.940479] usb usb4: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.06
[    5.940481] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    5.940482] usb usb4: Product: xHCI Host Controller
[    5.940483] usb usb4: Manufacturer: Linux 6.6.63-1-lts xhci-hcd
[    5.940484] usb usb4: SerialNumber: 0000:07:00.3
[    5.940553] hub 4-0:1.0: USB hub found
[    5.940559] hub 4-0:1.0: 4 ports detected
[    6.025299] EXT4-fs (nvme0n1p4): orphan cleanup on readonly fs
[    6.025547] EXT4-fs (nvme0n1p4): mounted filesystem 9dd5514e-2478-4574-9ee1-37370bfd86f9 ro with ordered data mode. Quota mode: none.
[    6.083552] systemd[1]: systemd 257.2-1-arch running in system mode (+PAM +AUDIT -SELINUX -APPARMOR -IMA +IPE +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF +XKBCOMMON +UTMP -SYSVINIT +LIBARCHIVE)
[    6.083556] systemd[1]: Detected architecture x86-64.
[    6.084857] systemd[1]: Hostname set to <Linux>.
[    6.111337] systemd[1]: memfd_create() called without MFD_EXEC or MFD_NOEXEC_SEAL set
[    6.186940] usb 1-1: new full-speed USB device number 2 using xhci_hcd
[    6.190271] usb 3-1: new full-speed USB device number 2 using xhci_hcd
[    6.354334] usb 3-1: New USB device found, idVendor=331a, idProduct=500d, bcdDevice= 3.09
[    6.354340] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.354342] usb 3-1: Product: THOR 303
[    6.354343] usb 3-1: Manufacturer: GENESIS
[    6.483895] usb 3-2: new high-speed USB device number 3 using xhci_hcd
[    6.510151] usb 1-1: New USB device found, idVendor=056a, idProduct=037a, bcdDevice= 1.00
[    6.510158] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[    6.510160] usb 1-1: Product: CTL-472
[    6.510161] usb 1-1: Manufacturer: Wacom Co.,Ltd.
[    6.510163] usb 1-1: SerialNumber: 1JA00L1024771
[    6.590591] systemd[1]: bpf-restrict-fs: LSM BPF program attached
[    6.631325] usb 3-2: config 1 interface 0 altsetting 0 endpoint 0x83 has an invalid bInterval 32, changing to 9
[    6.632449] usb 3-2: New USB device found, idVendor=1b3f, idProduct=2002, bcdDevice= 1.00
[    6.632451] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.632453] usb 3-2: Product: GENERAL WEBCAM
[    6.632454] usb 3-2: Manufacturer: GENERAL
[    6.643593] usb 1-3: new full-speed USB device number 3 using xhci_hcd
[    6.659770] systemd[1]: Queued start job for default target Graphical Interface.
[    6.688495] systemd[1]: Created slice Slice /system/dirmngr.
[    6.688896] systemd[1]: Created slice Slice /system/getty.
[    6.689253] systemd[1]: Created slice Slice /system/gpg-agent.
[    6.689625] systemd[1]: Created slice Slice /system/gpg-agent-browser.
[    6.689983] systemd[1]: Created slice Slice /system/gpg-agent-extra.
[    6.690353] systemd[1]: Created slice Slice /system/gpg-agent-ssh.
[    6.690709] systemd[1]: Created slice Slice /system/keyboxd.
[    6.691072] systemd[1]: Created slice Slice /system/modprobe.
[    6.691425] systemd[1]: Created slice Slice /system/systemd-fsck.
[    6.691733] systemd[1]: Created slice User and Session Slice.
[    6.691798] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
[    6.691860] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
[    6.691991] systemd[1]: Set up automount Arbitrary Executable File Formats File System Automount Point.
[    6.692033] systemd[1]: Expecting device /dev/disk/by-uuid/4ac7ace5-b28d-48e8-8c47-a6ace10afa43...
[    6.692064] systemd[1]: Expecting device /dev/disk/by-uuid/F638-996C...
[    6.692090] systemd[1]: Reached target Local Encrypted Volumes.
[    6.692119] systemd[1]: Reached target Login Prompts.
[    6.692147] systemd[1]: Reached target Local Integrity Protected Volumes.
[    6.692178] systemd[1]: Reached target Path Units.
[    6.692205] systemd[1]: Reached target Remote File Systems.
[    6.692232] systemd[1]: Reached target Slice Units.
[    6.692259] systemd[1]: Reached target Swaps.
[    6.692287] systemd[1]: Reached target Local Verity Protected Volumes.
[    6.692355] systemd[1]: Listening on Device-mapper event daemon FIFOs.
[    6.692437] systemd[1]: Listening on LVM2 poll daemon socket.
[    6.693245] systemd[1]: Listening on Process Core Dump Socket.
[    6.693683] systemd[1]: Listening on Credential Encryption/Decryption.
[    6.693777] systemd[1]: Listening on Journal Socket (/dev/log).
[    6.693856] systemd[1]: Listening on Journal Sockets.
[    6.694083] systemd[1]: TPM PCR Measurements was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    6.694091] systemd[1]: Make TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    6.694137] systemd[1]: Listening on udev Control Socket.
[    6.694319] systemd[1]: Listening on udev Kernel Socket.
[    6.694510] systemd[1]: Listening on User Database Manager Socket.
[    6.695397] systemd[1]: Mounting Huge Pages File System...
[    6.696076] systemd[1]: Mounting POSIX Message Queue File System...
[    6.696790] systemd[1]: Mounting Kernel Debug File System...
[    6.697474] systemd[1]: Mounting Kernel Trace File System...
[    6.698278] systemd[1]: Mounting Temporary Directory /tmp...
[    6.699133] systemd[1]: Starting Create List of Static Device Nodes...
[    6.699816] systemd[1]: Starting Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling...
[    6.700468] systemd[1]: Starting Load Kernel Module configfs...
[    6.701097] systemd[1]: Starting Load Kernel Module dm_mod...
[    6.701720] systemd[1]: Starting Load Kernel Module drm...
[    6.702376] systemd[1]: Starting Load Kernel Module fuse...
[    6.703004] systemd[1]: Starting Load Kernel Module loop...
[    6.703708] systemd[1]: Starting File System Check on Root Device...
[    6.703872] systemd[1]: Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[    6.705017] systemd[1]: Starting Journal Service...
[    6.706267] systemd[1]: Starting Load Kernel Modules...
[    6.706484] systemd[1]: TPM PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    6.706531] systemd[1]: Early TPM SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    6.707330] systemd[1]: Starting Load udev Rules from Credentials...
[    6.708248] systemd[1]: Starting Coldplug All udev Devices...
[    6.709443] loop: module loaded
[    6.709941] systemd[1]: Mounted Huge Pages File System.
[    6.710165] systemd[1]: Mounted POSIX Message Queue File System.
[    6.710624] systemd[1]: Mounted Kernel Debug File System.
[    6.710836] systemd[1]: Mounted Kernel Trace File System.
[    6.711062] systemd[1]: Mounted Temporary Directory /tmp.
[    6.712168] device-mapper: uevent: version 1.0.3
[    6.712243] device-mapper: ioctl: 4.48.0-ioctl (2023-03-01) initialised: dm-devel@redhat.com
[    6.713925] fuse: init (API version 7.39)
[    6.715014] sd 1:0:0:0: Attached scsi generic sg0 type 0
[    6.718102] i2c_dev: i2c /dev entries driver
[    6.718197] systemd-journald[376]: Collecting audit messages is disabled.
[    6.747269] systemd[1]: Finished Create List of Static Device Nodes.
[    6.748179] systemd[1]: modprobe@configfs.service: Deactivated successfully.
[    6.803593] usb 3-3: new full-speed USB device number 4 using xhci_hcd
[    6.817159] systemd[1]: Finished Load Kernel Module configfs.
[    6.817771] systemd[1]: modprobe@dm_mod.service: Deactivated successfully.
[    6.834290] nvidia: loading out-of-tree module taints kernel.
[    6.834296] nvidia: module license 'NVIDIA' taints kernel.
[    6.834297] Disabling lock debugging due to kernel taint
[    6.834299] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[    6.834300] nvidia: module license taints kernel.
[    6.853807] systemd[1]: Finished Load Kernel Module dm_mod.
[    6.880413] systemd[1]: Finished Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling.
[    6.880835] systemd[1]: modprobe@drm.service: Deactivated successfully.
[    6.903721] systemd[1]: Finished Load Kernel Module drm.
[    6.904146] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[    6.927048] systemd[1]: Finished Load Kernel Module fuse.
[    6.927453] systemd[1]: modprobe@loop.service: Deactivated successfully.
[    6.953724] systemd[1]: Finished Load Kernel Module loop.
[    6.960477] usb 3-3: New USB device found, idVendor=258a, idProduct=1007, bcdDevice= 1.00
[    6.960481] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.960483] usb 3-3: Product: Game Mouse
[    6.960484] usb 3-3: Manufacturer: SINOWEALTH
[    6.977003] usb 1-3: New USB device found, idVendor=048d, idProduct=5702, bcdDevice= 0.01
[    6.977006] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[    6.977008] usb 1-3: Product: ITE Device
[    6.977010] usb 1-3: Manufacturer: ITE Tech. Inc.
[    6.990411] systemd[1]: Finished File System Check on Root Device.
[    7.013941] systemd[1]: Finished Load udev Rules from Credentials.
[    7.030426] systemd[1]: Finished Coldplug All udev Devices.
[    7.031540] systemd[1]: Mounting FUSE Control File System...
[    7.032590] systemd[1]: Mounting Kernel Configuration File System...
[    7.033350] systemd[1]: Starting Remount Root and Kernel File Systems...
[    7.033642] systemd[1]: Repartition Root Disk was skipped because no trigger condition checks were met.
[    7.034252] systemd[1]: Starting Create Static Device Nodes in /dev gracefully...
[    7.072117] systemd[1]: Mounted FUSE Control File System.
[    7.072353] systemd[1]: Mounted Kernel Configuration File System.
[    7.079748] systemd[1]: Starting User Database Manager...
[    7.090622] usb 3-4: new full-speed USB device number 5 using xhci_hcd
[    7.111023] EXT4-fs (nvme0n1p4): re-mounted 9dd5514e-2478-4574-9ee1-37370bfd86f9 r/w. Quota mode: none.
[    7.130404] systemd[1]: Finished Remount Root and Kernel File Systems.
[    7.130772] systemd[1]: Started User Database Manager.
[    7.131380] systemd[1]: Rebuild Hardware Database was skipped because no trigger condition checks were met.
[    7.132118] systemd[1]: Starting Load/Save OS Random Seed...
[    7.132318] systemd[1]: TPM SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    7.199440] nvidia-nvlink: Nvlink Core is being initialized, major device number 235

[    7.200864] nvidia 0000:04:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=io+mem
[    7.243679] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  565.77  Wed Nov 27 23:33:08 UTC 2024
[    7.247214] usb 3-4: New USB device found, idVendor=0c76, idProduct=160c, bcdDevice= 1.00
[    7.247218] usb 3-4: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    7.247221] usb 3-4: Product: USB Speaker
[    7.253040] nvidia_uvm: module uses symbols nvUvmInterfaceDisableAccessCntr from proprietary module nvidia, inheriting taint.
[    7.331793] nvidia-uvm: Loaded the UVM driver, major device number 511.
[    7.337133] systemd[1]: Finished Create Static Device Nodes in /dev gracefully.
[    7.337717] systemd[1]: Started Journal Service.
[    7.439784] systemd-journald[376]: Received client request to flush runtime journal.
[    7.774717] ACPI Warning: SystemIO range 0x0000000000000B00-0x0000000000000B08 conflicts with OpRegion 0x0000000000000B00-0x0000000000000B0F (\GSA1.SMBI) (20230628/utaddress-204)
[    7.774726] ACPI: OSL: Resource conflict; ACPI support missing from driver?
[    7.782050] sp5100_tco: SP5100/SB800 TCO WatchDog Timer Driver
[    7.783227] input: PC Speaker as /devices/platform/pcspkr/input/input2
[    7.783546] sp5100-tco sp5100-tco: Using 0xfeb00000 for watchdog MMIO address
[    7.785711] sp5100-tco sp5100-tco: initialized. heartbeat=60 sec (nowayout=0)
[    7.786188] ccp 0000:07:00.1: enabling device (0000 -> 0002)
[    7.787839] ccp 0000:07:00.1: ccp: unable to access the device: you might be running a broken BIOS.
[    7.787863] ccp 0000:07:00.1: psp enabled
[    7.800859] RAPL PMU: API unit is 2^-32 Joules, 1 fixed counters, 163840 ms ovfl timer
[    7.800863] RAPL PMU: hw unit of domain package 2^-16 Joules
[    7.804124] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  565.77  Wed Nov 27 22:53:48 UTC 2024
[    7.804200] mc: Linux media interface: v0.10
[    7.805788] cryptd: max_cpu_qlen set to 1000
[    7.806718] [drm] [nvidia-drm] [GPU ID 0x00000400] Loading driver
[    7.808466] input: GENESIS THOR 303 as /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb3/3-1/3-1:1.0/0003:331A:500D.0001/input/input3
[    7.818435] AVX2 version of gcm_enc/dec engaged.
[    7.818505] AES CTR mode by8 optimization enabled
[    7.818843] videodev: Linux video capture interface: v2.00
[    7.822643] r8169 0000:05:00.0 eth0: RTL8168h/8111h, 74:56:3c:7c:37:bb, XID 541, IRQ 93
[    7.822648] r8169 0000:05:00.0 eth0: jumbo features [frames: 9194 bytes, tx checksumming: ko]
[    7.825923] r8169 0000:05:00.0 enp5s0: renamed from eth0
[    7.838937] snd_hda_intel 0000:04:00.1: Disabling MSI
[    7.838948] snd_hda_intel 0000:04:00.1: Handle vga_switcheroo audio client
[    7.838995] snd_hda_intel 0000:07:00.4: enabling device (0000 -> 0002)
[    7.919275] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:00.0/0000:04:00.1/sound/card1/input4
[    7.948627] snd_hda_codec_realtek hdaudioC2D0: autoconfig for ALC897: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:line
[    7.948630] snd_hda_codec_realtek hdaudioC2D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    7.948632] snd_hda_codec_realtek hdaudioC2D0:    hp_outs=1 (0x1b/0x0/0x0/0x0/0x0)
[    7.948633] snd_hda_codec_realtek hdaudioC2D0:    mono: mono_out=0x0
[    7.948634] snd_hda_codec_realtek hdaudioC2D0:    inputs:
[    7.948635] snd_hda_codec_realtek hdaudioC2D0:      Front Mic=0x19
[    7.948636] snd_hda_codec_realtek hdaudioC2D0:      Rear Mic=0x18
[    7.948637] snd_hda_codec_realtek hdaudioC2D0:      Line=0x1a
[    7.950382] kvm_amd: TSC scaling supported
[    7.950383] kvm_amd: Nested Virtualization enabled
[    7.950384] kvm_amd: Nested Paging enabled
[    7.950384] kvm_amd: LBR virtualization supported
[    7.950390] kvm_amd: Virtual VMLOAD VMSAVE supported
[    7.950390] kvm_amd: Virtual GIF supported
[    7.958149] MCE: In-kernel MCE decoding enabled.
[    7.961477] input: HD-Audio Generic Front Mic as /devices/pci0000:00/0000:00:08.1/0000:07:00.4/sound/card2/input8
[    7.996998] hid-generic 0003:331A:500D.0001: input,hidraw0: USB HID v1.11 Keyboard [GENESIS THOR 303] on usb-0000:07:00.3-1/input0
[    7.997036] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:00.0/0000:04:00.1/sound/card1/input5
[    7.997098] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:00.0/0000:04:00.1/sound/card1/input6
[    7.997157] input: HD-Audio Generic Rear Mic as /devices/pci0000:00/0000:00:08.1/0000:07:00.4/sound/card2/input9
[    7.997219] input: HD-Audio Generic Line as /devices/pci0000:00/0000:00:08.1/0000:07:00.4/sound/card2/input10
[    7.997309] input: HDA NVidia HDMI/DP,pcm=9 as /devices/pci0000:00/0000:00:01.2/0000:02:00.2/0000:03:00.0/0000:04:00.1/sound/card1/input7
[    7.997437] input: HD-Audio Generic Line Out as /devices/pci0000:00/0000:00:08.1/0000:07:00.4/sound/card2/input11
[    7.997531] input: HD-Audio Generic Front Headphone as /devices/pci0000:00/0000:00:08.1/0000:07:00.4/sound/card2/input12
[    8.003420] input: GENESIS THOR 303 Keyboard as /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb3/3-1/3-1:1.1/0003:331A:500D.0002/input/input13
[    8.057051] hid-generic 0003:331A:500D.0002: input,hiddev96,hidraw1: USB HID v1.11 Keyboard [GENESIS THOR 303] on usb-0000:07:00.3-1/input1
[    8.065397] intel_rapl_common: Found RAPL domain package
[    8.065398] intel_rapl_common: Found RAPL domain core
[    8.070855] input: Wacom Co.,Ltd. CTL-472 Mouse as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-1/1-1:1.0/0003:056A:037A.0003/input/input15
[    8.070941] hid-generic 0003:056A:037A.0003: input,hiddev97,hidraw2: USB HID v1.10 Mouse [Wacom Co.,Ltd. CTL-472] on usb-0000:02:00.0-1/input0
[    8.078807] hid-generic 0003:056A:037A.0004: hiddev98,hidraw3: USB HID v1.10 Device [Wacom Co.,Ltd. CTL-472] on usb-0000:02:00.0-1/input1
[    8.082306] input: SINOWEALTH Game Mouse as /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb3/3-3/3-3:1.0/0003:258A:1007.0005/input/input17
[    8.082349] hid-generic 0003:258A:1007.0005: input,hidraw4: USB HID v1.11 Mouse [SINOWEALTH Game Mouse] on usb-0000:07:00.3-3/input0
[    8.089386] input: SINOWEALTH Game Mouse Keyboard as /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb3/3-3/3-3:1.1/0003:258A:1007.0006/input/input18
[    8.143692] hid-generic 0003:258A:1007.0006: input,hiddev99,hidraw5: USB HID v1.11 Keyboard [SINOWEALTH Game Mouse] on usb-0000:07:00.3-3/input1
[    8.147808] hid-generic 0003:048D:5702.0007: hiddev100,hidraw6: USB HID v1.12 Device [ITE Tech. Inc. ITE Device] on usb-0000:02:00.0-3/input0
[    8.150339] input: USB Speaker as /devices/pci0000:00/0000:00:08.1/0000:07:00.3/usb3/3-4/3-4:1.2/0003:0C76:160C.0008/input/input19
[    8.207120] hid-generic 0003:0C76:160C.0008: input,hidraw7: USB HID v1.00 Device [USB Speaker] on usb-0000:07:00.3-4/input2
[    8.207146] usbcore: registered new interface driver usbhid
[    8.207148] usbhid: USB HID core driver
[    8.270641] mousedev: PS/2 mouse device common for all mice
[    8.270864] wacom 0003:056A:037A.0003: hidraw2: USB HID v1.10 Mouse [Wacom Co.,Ltd. CTL-472] on usb-0000:02:00.0-1/input0
[    8.270913] input: Wacom One by Wacom S Pen as /devices/pci0000:00/0000:00:01.2/0000:02:00.0/usb1/1-1/1-1:1.0/0003:056A:037A.0003/input/input20
[    9.306471] [drm] Initialized nvidia-drm 0.0.0 20160202 for 0000:04:00.0 on minor 1
[    9.316988] Console: switching to colour dummy device 80x25
[    9.327857] EXT4-fs (nvme0n1p5): mounted filesystem 4ac7ace5-b28d-48e8-8c47-a6ace10afa43 r/w with ordered data mode. Quota mode: none.
[    9.343905] nvidia 0000:04:00.0: vgaarb: deactivate vga console
[    9.398090] fbcon: nvidia-drmdrmfb (fb0) is primary device
[    9.572926] Console: switching to colour frame buffer device 240x67
[    9.589874] nvidia 0000:04:00.0: [drm] fb0: nvidia-drmdrmfb frame buffer device
[    9.824856] 8021q: 802.1Q VLAN Support v1.8
[    9.861083] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[    9.861219] Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[    9.861311] Loaded X.509 cert 'wens: 61c038651aabdcf94bd0ac7ff06c7248db18c600'
[    9.861359] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
[    9.861361] cfg80211: failed to load regulatory.db
[    9.896936] Generic FE-GE Realtek PHY r8169-0-500:00: attached PHY driver (mii_bus:phy_addr=r8169-0-500:00, irq=MAC)
[   10.103879] r8169 0000:05:00.0 enp5s0: Link is Down
[   10.309746] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[   12.392106] r8169 0000:05:00.0 enp5s0: Link is Up - 1Gbps/Full - flow control rx/tx
[   12.916258] usb 3-2: Found UVC 1.00 device GENERAL WEBCAM (1b3f:2002)
[   12.980296] usb 3-2: UVC non compliance - GET_DEF(PROBE) not supported. Enabling workaround.
[   12.980750] ------------[ cut here ]------------
[   12.980752] WARNING: CPU: 15 PID: 535 at drivers/media/mc/mc-entity.c:1134 media_create_pad_link+0x163/0x1a0 [mc]
[   12.980768] Modules linked in: xt_MASQUERADE bridge nf_conntrack_netlink ip6table_nat iptable_nat nf_nat cfg80211 rfkill 8021q garp mrp stp llc overlay vfat fat mousedev joydev wacom intel_rapl_msr intel_rapl_common edac_mce_amd kvm_amd snd_hda_codec_realtek snd_hda_codec_generic kvm irqbypass snd_hda_codec_hdmi ledtrig_audio crct10dif_pclmul crc32_pclmul polyval_clmulni polyval_generic snd_hda_intel gf128mul uvcvideo(+) snd_intel_dspcfg ghash_clmulni_intel videobuf2_vmalloc sha512_ssse3 snd_intel_sdw_acpi snd_usb_audio(+) uvc sha256_ssse3 videobuf2_memops snd_hda_codec snd_usbmidi_lib sha1_ssse3 videobuf2_v4l2 snd_ump aesni_intel snd_hda_core videodev snd_rawmidi snd_seq_device snd_hwdep crypto_simd videobuf2_common nvidia_drm(POE) cryptd snd_pcm r8169 mc usbhid snd_timer nvidia_modeset(POE) realtek rapl mdio_devres snd video wmi_bmof gigabyte_wmi pcspkr ccp libphy sp5100_tco soundcore acpi_cpufreq k10temp i2c_piix4 gpio_amdpt gpio_generic mac_hid ip6t_REJECT nf_reject_ipv6 xt_hl ip6t_rt ipt_REJECT nf_reject_ipv4
[   12.980841]  xt_LOG nf_log_syslog xt_limit xt_addrtype xt_tcpudp xt_conntrack nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 libcrc32c ip6table_filter ip6_tables iptable_filter nvidia_uvm(POE) nvidia(POE) i2c_dev sg fuse loop dm_mod nfnetlink bpf_preload ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 nvme crc32c_intel nvme_core xhci_pci xhci_pci_renesas nvme_common wmi
[   12.980871] CPU: 15 PID: 535 Comm: (udev-worker) Tainted: P           OE      6.6.63-1-lts #1 1935f30fe99b63e43ea69e5a59d364f11de63a00
[   12.980874] Hardware name: Gigabyte Technology Co., Ltd. B550 GAMING X V2/B550 GAMING X V2, BIOS FB 11/14/2022
[   12.980876] RIP: 0010:media_create_pad_link+0x163/0x1a0 [mc]
[   12.980882] Code: 5b 5d 41 5c 41 5d 41 5e 41 5f e9 03 56 82 c7 0f 0b b8 ea ff ff ff eb e4 0f 0b b8 ea ff ff ff eb db 0f 0b b8 ea ff ff ff eb d2 <0f> 0b b8 ea ff ff ff eb c9 0f 0b b8 ea ff ff ff eb c0 b8 ea ff ff
[   12.980883] RSP: 0018:ffffc9000385b818 EFLAGS: 00010246
[   12.980885] RAX: ffff8881096f0e48 RBX: ffff888126cec018 RCX: 0000000000000000
[   12.980887] RDX: ffff888126cec018 RSI: 0000000000000000 RDI: ffff888126cec018
[   12.980888] RBP: ffff888126cec018 R08: 0000000000000003 R09: 0000000000000000
[   12.980889] R10: 0000000000000000 R11: 0000000000000009 R12: ffff888105101b18
[   12.980890] R13: 0000000000000000 R14: ffff888126cec018 R15: ffff8881096f0428
[   12.980892] FS:  0000734c05490880(0000) GS:ffff888ffedc0000(0000) knlGS:0000000000000000
[   12.980893] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   12.980894] CR2: 000062865ff4e5d1 CR3: 0000000113cc4000 CR4: 0000000000f50ee0
[   12.980896] PKRU: 55555554
[   12.980897] Call Trace:
[   12.980899]  <TASK>
[   12.980901]  ? media_create_pad_link+0x163/0x1a0 [mc a3d4e23e7ee0006fcb3a094eee4c37277f03724c]
[   12.980906]  ? __warn+0x81/0x130
[   12.980911]  ? media_create_pad_link+0x163/0x1a0 [mc a3d4e23e7ee0006fcb3a094eee4c37277f03724c]
[   12.980918]  ? report_bug+0x16f/0x1a0
[   12.980922]  ? handle_bug+0x58/0x90
[   12.980924]  ? exc_invalid_op+0x17/0x70
[   12.980926]  ? asm_exc_invalid_op+0x1a/0x20
[   12.980931]  ? media_create_pad_link+0x163/0x1a0 [mc a3d4e23e7ee0006fcb3a094eee4c37277f03724c]
[   12.980938]  uvc_mc_register_entities+0x1ef/0x320 [uvcvideo 19fedc92cd8fb55d3f2526fc9e91a77157dd2a6e]
[   12.980950]  uvc_probe+0xc51/0x1520 [uvcvideo 19fedc92cd8fb55d3f2526fc9e91a77157dd2a6e]
[   12.980960]  ? ktime_get_mono_fast_ns+0x3c/0x90
[   12.980963]  usb_probe_interface+0xe6/0x2f0
[   12.980968]  really_probe+0x19e/0x3e0
[   12.980971]  ? __pfx___driver_attach+0x10/0x10
[   12.980973]  __driver_probe_device+0x78/0x160
[   12.980976]  driver_probe_device+0x1f/0xa0
[   12.980979]  __driver_attach+0xba/0x1c0
[   12.980982]  bus_for_each_dev+0x8f/0xe0
[   12.980985]  bus_add_driver+0x112/0x240
[   12.980988]  driver_register+0x5c/0x100
[   12.980991]  usb_register_driver+0x8c/0x150
[   12.980994]  ? __pfx_uvc_init+0x10/0x10 [uvcvideo 19fedc92cd8fb55d3f2526fc9e91a77157dd2a6e]
[   12.981003]  uvc_init+0x2c/0xff0 [uvcvideo 19fedc92cd8fb55d3f2526fc9e91a77157dd2a6e]
[   12.981009]  ? __pfx_uvc_init+0x10/0x10 [uvcvideo 19fedc92cd8fb55d3f2526fc9e91a77157dd2a6e]
[   12.981016]  do_one_initcall+0x5d/0x320
[   12.981021]  do_init_module+0x60/0x240
[   12.981025]  init_module_from_file+0x89/0xe0
[   12.981030]  idempotent_init_module+0x121/0x320
[   12.981033]  __x64_sys_finit_module+0x5e/0xb0
[   12.981036]  do_syscall_64+0x5a/0x80
[   12.981040]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981041]  ? syscall_exit_to_user_mode+0x22/0x40
[   12.981043]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981045]  ? do_syscall_64+0x66/0x80
[   12.981047]  ? atime_needs_update+0xa0/0x120
[   12.981049]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981051]  ? touch_atime+0x1e/0x120
[   12.981053]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981054]  ? filemap_read+0x329/0x350
[   12.981061]  ? vfs_read+0x271/0x340
[   12.981063]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981065]  ? __rseq_handle_notify_resume+0xa9/0x4f0
[   12.981069]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981071]  ? exit_to_user_mode_prepare+0x132/0x1f0
[   12.981073]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981075]  ? syscall_exit_to_user_mode+0x22/0x40
[   12.981076]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981078]  ? do_syscall_64+0x66/0x80
[   12.981080]  ? srso_alias_return_thunk+0x5/0xfbef5
[   12.981081]  ? exc_page_fault+0x7f/0x180
[   12.981084]  entry_SYSCALL_64_after_hwframe+0x78/0xe2
[   12.981086] RIP: 0033:0x734c04f261fd
[   12.981109] Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d e3 fa 0c 00 f7 d8 64 89 01 48
[   12.981111] RSP: 002b:00007ffefc7f9b48 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
[   12.981113] RAX: ffffffffffffffda RBX: 00005ab8f0793040 RCX: 0000734c04f261fd
[   12.981114] RDX: 0000000000000004 RSI: 0000734c047fa05d RDI: 0000000000000035
[   12.981115] RBP: 00007ffefc7f9c00 R08: 0000734c04ff6b20 R09: 00007ffefc7f9b90
[   12.981116] R10: 00005ab8f0795250 R11: 0000000000000246 R12: 0000734c047fa05d
[   12.981117] R13: 0000000000020000 R14: 00005ab8f0793250 R15: 00005ab8f0795220
[   12.981121]  </TASK>
[   12.981122] ---[ end trace 0000000000000000 ]---
[   12.981124] usb 3-2: Failed to create links for entity 5
[   12.981126] usb 3-2: Failed to register entities (-22).
[   12.981226] usbcore: registered new interface driver uvcvideo
[   13.019431] usbcore: registered new interface driver snd-usb-audio
[   16.548952] block nvme0n1: No UUID available providing old NGUID

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-08 22:14           ` Tomasz Sikora
@ 2025-01-09 10:47             ` Thadeu Lima de Souza Cascardo
  2025-01-13 18:50               ` Laurent Pinchart
  0 siblings, 1 reply; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-09 10:47 UTC (permalink / raw)
  To: Tomasz Sikora
  Cc: Laurent Pinchart, hverkuil-cisco, kernel-dev, linux-media,
	mchehab, ribalda, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

[-- Attachment #1: Type: text/plain, Size: 481 bytes --]

On Wed, Jan 08, 2025 at 11:14:28PM +0100, Tomasz Sikora wrote:
> Hello,
> you right
> I have in dmsg (line 1228):
> [   12.981124] usb 3-2: Failed to create links for entity 5
> [   12.981126] usb 3-2: Failed to register entities (-22).
> 
> full output in my log.
> 

Thanks, Tomasz.

Can you test the attached fix? It should still keep the warning about the
multiple units with the same ID, but now it would not return an error nor
warn when registering the entities.

Cascardo.

[-- Attachment #2: 0001-media-uvcvideo-restore-support-for-non-compliant-dev.patch --]
[-- Type: text/x-diff, Size: 4355 bytes --]

From f771f5c4657ed25ae36784bf13992ddbee3161e6 Mon Sep 17 00:00:00 2001
From: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
Date: Thu, 9 Jan 2025 07:37:41 -0300
Subject: [PATCH RFC] media: uvcvideo: restore support for non-compliant devices

Some real-world devices have multiple units with the same ID. When creating
their media entities, it would lead to warnings and failure to create such
entities. However, the V4L2 devices would still be created and work.

Restore their support, but still warn about the multiple units with the
same ID. Avoid the failure in navigating through the chain by storing
pointers to the entities instead of only their IDs.
---
 drivers/media/usb/uvc/uvc_driver.c | 16 +++++++++++-----
 drivers/media/usb/uvc/uvc_entity.c |  4 +++-
 drivers/media/usb/uvc/uvcvideo.h   |  1 +
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index 1a22364f7da9..dd81067f8d30 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -791,10 +791,8 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
 	}
 
 	/* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
-	if (uvc_entity_by_id(dev, id)) {
-		dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
-		return ERR_PTR(-EINVAL);
-	}
+	if (uvc_entity_by_id(dev, id))
+		dev_warn(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
 
 	extra_size = roundup(extra_size, sizeof(*entity->pads));
 	if (num_pads)
@@ -802,7 +800,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
 	else
 		num_inputs = 0;
 	size = sizeof(*entity) + extra_size + sizeof(*entity->pads) * num_pads
-	     + num_inputs;
+	     + num_inputs + sizeof(struct uvc_entity *) * num_inputs;
 	entity = kzalloc(size, GFP_KERNEL);
 	if (entity == NULL)
 		return ERR_PTR(-ENOMEM);
@@ -840,6 +838,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
 
 	entity->bNrInPins = num_inputs;
 	entity->baSourceID = (u8 *)(&entity->pads[num_pads]);
+	entity->source_entities = (struct uvc_entity **)(&entity->baSourceID[num_inputs]);
 
 	return entity;
 }
@@ -1503,6 +1502,7 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
 				}
 
 				forward->baSourceID[0] = source->id;
+				forward->source_entities[0] = source;
 			}
 
 			list_add_tail(&forward->chain, &chain->entities);
@@ -1586,6 +1586,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
 				return -EINVAL;
 			}
 
+			entity->source_entities[i] = term;
+
 			uvc_dbg_cont(PROBE, " %d", term->id);
 
 			list_add_tail(&term->chain, &chain->entities);
@@ -1620,6 +1622,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
 		return -EINVAL;
 	}
 
+	(*_entity)->source_entities[0] = entity;
+
 	*_entity = entity;
 	return 0;
 }
@@ -1783,6 +1787,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
 			goto error;
 
 		prev->baSourceID[0] = entity->id;
+		prev->source_entities[0] = entity;
 		prev = entity;
 	}
 
@@ -1790,6 +1795,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
 		goto error;
 
 	prev->baSourceID[0] = iterm->id;
+	prev->source_entities[0] = iterm;
 
 	list_add_tail(&chain->list, &dev->chains);
 
diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc_entity.c
index cc68dd24eb42..7f42292b7fde 100644
--- a/drivers/media/usb/uvc/uvc_entity.c
+++ b/drivers/media/usb/uvc/uvc_entity.c
@@ -36,7 +36,9 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,
 		if (!(entity->pads[i].flags & MEDIA_PAD_FL_SINK))
 			continue;
 
-		remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
+		remote = entity->source_entities[i];
+		if (remote == NULL)
+			remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
 		if (remote == NULL || remote->num_pads == 0)
 			return -EINVAL;
 
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index 07f9921d83f2..a4ee79e4e85b 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -239,6 +239,7 @@ struct uvc_entity {
 
 	u8 bNrInPins;
 	u8 *baSourceID;
+	struct uvc_entity **source_entities;
 
 	int (*get_info)(struct uvc_device *dev, struct uvc_entity *entity,
 			u8 cs, u8 *caps);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-09 10:47             ` Thadeu Lima de Souza Cascardo
@ 2025-01-13 18:50               ` Laurent Pinchart
  2025-01-14  3:01                 ` Ricardo Ribalda
  2025-01-14 12:37                 ` [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID Thadeu Lima de Souza Cascardo
  0 siblings, 2 replies; 24+ messages in thread
From: Laurent Pinchart @ 2025-01-13 18:50 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo
  Cc: Tomasz Sikora, hverkuil-cisco, kernel-dev, linux-media, mchehab,
	ribalda, syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

On Thu, Jan 09, 2025 at 07:47:31AM -0300, Thadeu Lima de Souza Cascardo wrote:
> On Wed, Jan 08, 2025 at 11:14:28PM +0100, Tomasz Sikora wrote:
> > Hello,
> > you right
> > I have in dmsg (line 1228):
> > [   12.981124] usb 3-2: Failed to create links for entity 5
> > [   12.981126] usb 3-2: Failed to register entities (-22).
> > 
> > full output in my log.
> 
> Thanks, Tomasz.
> 
> Can you test the attached fix? It should still keep the warning about the
> multiple units with the same ID, but now it would not return an error nor
> warn when registering the entities.
> 
> Cascardo.

> From f771f5c4657ed25ae36784bf13992ddbee3161e6 Mon Sep 17 00:00:00 2001
> From: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> Date: Thu, 9 Jan 2025 07:37:41 -0300
> Subject: [PATCH RFC] media: uvcvideo: restore support for non-compliant devices
> 
> Some real-world devices have multiple units with the same ID. When creating
> their media entities, it would lead to warnings and failure to create such
> entities. However, the V4L2 devices would still be created and work.
> 
> Restore their support, but still warn about the multiple units with the
> same ID. Avoid the failure in navigating through the chain by storing

What's "the failure" here ?

> pointers to the entities instead of only their IDs.

Missing SoB and Fixes tags.

The commit message should explain why this is better than reverting
3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero
unique ID"). I'm wondering if a revert with a clean fix on top may not
be easier to review.

> ---
>  drivers/media/usb/uvc/uvc_driver.c | 16 +++++++++++-----
>  drivers/media/usb/uvc/uvc_entity.c |  4 +++-
>  drivers/media/usb/uvc/uvcvideo.h   |  1 +
>  3 files changed, 15 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index 1a22364f7da9..dd81067f8d30 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -791,10 +791,8 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
>  	}
>  
>  	/* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> -	if (uvc_entity_by_id(dev, id)) {
> -		dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> -		return ERR_PTR(-EINVAL);
> -	}
> +	if (uvc_entity_by_id(dev, id))
> +		dev_warn(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
>  
>  	extra_size = roundup(extra_size, sizeof(*entity->pads));
>  	if (num_pads)
> @@ -802,7 +800,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
>  	else
>  		num_inputs = 0;
>  	size = sizeof(*entity) + extra_size + sizeof(*entity->pads) * num_pads
> -	     + num_inputs;
> +	     + num_inputs + sizeof(struct uvc_entity *) * num_inputs;
>  	entity = kzalloc(size, GFP_KERNEL);
>  	if (entity == NULL)
>  		return ERR_PTR(-ENOMEM);
> @@ -840,6 +838,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
>  
>  	entity->bNrInPins = num_inputs;
>  	entity->baSourceID = (u8 *)(&entity->pads[num_pads]);
> +	entity->source_entities = (struct uvc_entity **)(&entity->baSourceID[num_inputs]);
>  
>  	return entity;
>  }
> @@ -1503,6 +1502,7 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
>  				}
>  
>  				forward->baSourceID[0] = source->id;
> +				forward->source_entities[0] = source;
>  			}
>  
>  			list_add_tail(&forward->chain, &chain->entities);
> @@ -1586,6 +1586,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
>  				return -EINVAL;
>  			}
>  
> +			entity->source_entities[i] = term;
> +
>  			uvc_dbg_cont(PROBE, " %d", term->id);
>  
>  			list_add_tail(&term->chain, &chain->entities);
> @@ -1620,6 +1622,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
>  		return -EINVAL;
>  	}
>  
> +	(*_entity)->source_entities[0] = entity;
> +
>  	*_entity = entity;
>  	return 0;
>  }
> @@ -1783,6 +1787,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
>  			goto error;
>  
>  		prev->baSourceID[0] = entity->id;
> +		prev->source_entities[0] = entity;
>  		prev = entity;
>  	}
>  
> @@ -1790,6 +1795,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
>  		goto error;
>  
>  	prev->baSourceID[0] = iterm->id;
> +	prev->source_entities[0] = iterm;
>  
>  	list_add_tail(&chain->list, &dev->chains);
>  
> diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc_entity.c
> index cc68dd24eb42..7f42292b7fde 100644
> --- a/drivers/media/usb/uvc/uvc_entity.c
> +++ b/drivers/media/usb/uvc/uvc_entity.c
> @@ -36,7 +36,9 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,
>  		if (!(entity->pads[i].flags & MEDIA_PAD_FL_SINK))
>  			continue;
>  
> -		remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> +		remote = entity->source_entities[i];
> +		if (remote == NULL)
> +			remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);

That looks worrying. Why would source_entities[i] be NULL ?

Devices with bad descriptors can lead to crashes, and it's important to
harden the code. Just warning about duplicate ideas and adding a
source_entities array that may or may not point to the right source (and
could point to NULL) doesn't seem to go in the right direction.

Other options include adding a device-specific quirk that overrides the
incorrect entity IDs, or, possibly better, implementing a heuristic to
fix those automatically.

>  		if (remote == NULL || remote->num_pads == 0)
>  			return -EINVAL;
>  
> diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> index 07f9921d83f2..a4ee79e4e85b 100644
> --- a/drivers/media/usb/uvc/uvcvideo.h
> +++ b/drivers/media/usb/uvc/uvcvideo.h
> @@ -239,6 +239,7 @@ struct uvc_entity {
>  
>  	u8 bNrInPins;
>  	u8 *baSourceID;
> +	struct uvc_entity **source_entities;
>  
>  	int (*get_info)(struct uvc_device *dev, struct uvc_entity *entity,
>  			u8 cs, u8 *caps);

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-13 18:50               ` Laurent Pinchart
@ 2025-01-14  3:01                 ` Ricardo Ribalda
  2025-01-14 12:41                   ` Thadeu Lima de Souza Cascardo
  2025-01-14 12:37                 ` [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID Thadeu Lima de Souza Cascardo
  1 sibling, 1 reply; 24+ messages in thread
From: Ricardo Ribalda @ 2025-01-14  3:01 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Thadeu Lima de Souza Cascardo, Tomasz Sikora, hverkuil-cisco,
	kernel-dev, linux-media, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

Hi

On Tue, 14 Jan 2025 at 02:51, Laurent Pinchart
<laurent.pinchart@ideasonboard.com> wrote:
>
> On Thu, Jan 09, 2025 at 07:47:31AM -0300, Thadeu Lima de Souza Cascardo wrote:
> > On Wed, Jan 08, 2025 at 11:14:28PM +0100, Tomasz Sikora wrote:
> > > Hello,
> > > you right
> > > I have in dmsg (line 1228):
> > > [   12.981124] usb 3-2: Failed to create links for entity 5
> > > [   12.981126] usb 3-2: Failed to register entities (-22).
> > >
> > > full output in my log.
> >
> > Thanks, Tomasz.
> >
> > Can you test the attached fix? It should still keep the warning about the
> > multiple units with the same ID, but now it would not return an error nor
> > warn when registering the entities.
> >
> > Cascardo.
>
> > From f771f5c4657ed25ae36784bf13992ddbee3161e6 Mon Sep 17 00:00:00 2001
> > From: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> > Date: Thu, 9 Jan 2025 07:37:41 -0300
> > Subject: [PATCH RFC] media: uvcvideo: restore support for non-compliant devices
> >
> > Some real-world devices have multiple units with the same ID. When creating
> > their media entities, it would lead to warnings and failure to create such
> > entities. However, the V4L2 devices would still be created and work.
> >
> > Restore their support, but still warn about the multiple units with the
> > same ID. Avoid the failure in navigating through the chain by storing
>
> What's "the failure" here ?
>
> > pointers to the entities instead of only their IDs.
>
> Missing SoB and Fixes tags.
>
> The commit message should explain why this is better than reverting
> 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero
> unique ID"). I'm wondering if a revert with a clean fix on top may not
> be easier to review.
>
> > ---
> >  drivers/media/usb/uvc/uvc_driver.c | 16 +++++++++++-----
> >  drivers/media/usb/uvc/uvc_entity.c |  4 +++-
> >  drivers/media/usb/uvc/uvcvideo.h   |  1 +
> >  3 files changed, 15 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > index 1a22364f7da9..dd81067f8d30 100644
> > --- a/drivers/media/usb/uvc/uvc_driver.c
> > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > @@ -791,10 +791,8 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> >       }
> >
> >       /* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> > -     if (uvc_entity_by_id(dev, id)) {
> > -             dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> > -             return ERR_PTR(-EINVAL);
> > -     }
> > +     if (uvc_entity_by_id(dev, id))
> > +             dev_warn(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> >
> >       extra_size = roundup(extra_size, sizeof(*entity->pads));
> >       if (num_pads)
> > @@ -802,7 +800,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> >       else
> >               num_inputs = 0;
> >       size = sizeof(*entity) + extra_size + sizeof(*entity->pads) * num_pads
> > -          + num_inputs;
> > +          + num_inputs + sizeof(struct uvc_entity *) * num_inputs;
> >       entity = kzalloc(size, GFP_KERNEL);
> >       if (entity == NULL)
> >               return ERR_PTR(-ENOMEM);
> > @@ -840,6 +838,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> >
> >       entity->bNrInPins = num_inputs;
> >       entity->baSourceID = (u8 *)(&entity->pads[num_pads]);
> > +     entity->source_entities = (struct uvc_entity **)(&entity->baSourceID[num_inputs]);
> >
> >       return entity;
> >  }
> > @@ -1503,6 +1502,7 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
> >                               }
> >
> >                               forward->baSourceID[0] = source->id;
> > +                             forward->source_entities[0] = source;
> >                       }
> >
> >                       list_add_tail(&forward->chain, &chain->entities);
> > @@ -1586,6 +1586,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> >                               return -EINVAL;
> >                       }
> >
> > +                     entity->source_entities[i] = term;
> > +
> >                       uvc_dbg_cont(PROBE, " %d", term->id);
> >
> >                       list_add_tail(&term->chain, &chain->entities);
> > @@ -1620,6 +1622,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> >               return -EINVAL;
> >       }
> >
> > +     (*_entity)->source_entities[0] = entity;
> > +
> >       *_entity = entity;
> >       return 0;
> >  }
> > @@ -1783,6 +1787,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> >                       goto error;
> >
> >               prev->baSourceID[0] = entity->id;
> > +             prev->source_entities[0] = entity;
> >               prev = entity;
> >       }
> >
> > @@ -1790,6 +1795,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> >               goto error;
> >
> >       prev->baSourceID[0] = iterm->id;
> > +     prev->source_entities[0] = iterm;
> >
> >       list_add_tail(&chain->list, &dev->chains);
> >
> > diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc_entity.c
> > index cc68dd24eb42..7f42292b7fde 100644
> > --- a/drivers/media/usb/uvc/uvc_entity.c
> > +++ b/drivers/media/usb/uvc/uvc_entity.c
> > @@ -36,7 +36,9 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,
> >               if (!(entity->pads[i].flags & MEDIA_PAD_FL_SINK))
> >                       continue;
> >
> > -             remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> > +             remote = entity->source_entities[i];
> > +             if (remote == NULL)
> > +                     remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
>
> That looks worrying. Why would source_entities[i] be NULL ?
>
> Devices with bad descriptors can lead to crashes, and it's important to
> harden the code. Just warning about duplicate ideas and adding a
> source_entities array that may or may not point to the right source (and
> could point to NULL) doesn't seem to go in the right direction.
>
> Other options include adding a device-specific quirk that overrides the
> incorrect entity IDs, or, possibly better, implementing a heuristic to
> fix those automatically.


Can't we simply do something like this:

diff --git a/drivers/media/usb/uvc/uvc_driver.c
b/drivers/media/usb/uvc/uvc_driver.c
index a10d4f4d9f95..b55dc440db26 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -135,6 +135,9 @@ struct uvc_entity *uvc_entity_by_id(struct
uvc_device *dev, int id)
 {
        struct uvc_entity *entity;

+       if (id == UVC_INVALID_ENTITY_ID)
+               return NULL;
+
        list_for_each_entry(entity, &dev->entities, list) {
                if (entity->id == id)
                        return entity;
@@ -802,13 +805,13 @@ static struct uvc_entity
*uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
        /* Per UVC 1.1+ spec 3.7.2, the ID should be non-zero. */
        if (id == 0) {
                dev_err(&dev->udev->dev, "Found Unit with invalid ID 0.\n");
-               return ERR_PTR(-EINVAL);
+               id = UVC_INVALID_ENTITY_ID;
        }

        /* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
        if (uvc_entity_by_id(dev, id)) {
                dev_err(&dev->udev->dev, "Found multiple Units with ID
%u\n", id);
-               return ERR_PTR(-EINVAL);
+               id = UVC_INVALID_ENTITY_ID;
        }

        extra_size = roundup(extra_size, sizeof(*entity->pads));
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index 5e388f05f3fc..2ba8e32260ca 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -41,6 +41,8 @@
 #define UVC_EXT_GPIO_UNIT              0x7ffe
 #define UVC_EXT_GPIO_UNIT_ID           0x100

+#define UVC_INVALID_ENTITY_ID          0xffff
+
 /* ------------------------------------------------------------------------
  * Driver specific constants.
  */





>
> >               if (remote == NULL || remote->num_pads == 0)
> >                       return -EINVAL;
> >
> > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> > index 07f9921d83f2..a4ee79e4e85b 100644
> > --- a/drivers/media/usb/uvc/uvcvideo.h
> > +++ b/drivers/media/usb/uvc/uvcvideo.h
> > @@ -239,6 +239,7 @@ struct uvc_entity {
> >
> >       u8 bNrInPins;
> >       u8 *baSourceID;
> > +     struct uvc_entity **source_entities;
> >
> >       int (*get_info)(struct uvc_device *dev, struct uvc_entity *entity,
> >                       u8 cs, u8 *caps);
>
> --
> Regards,
>
> Laurent Pinchart



--
Ricardo Ribalda

^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-13 18:50               ` Laurent Pinchart
  2025-01-14  3:01                 ` Ricardo Ribalda
@ 2025-01-14 12:37                 ` Thadeu Lima de Souza Cascardo
  1 sibling, 0 replies; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-14 12:37 UTC (permalink / raw)
  To: Laurent Pinchart
  Cc: Tomasz Sikora, hverkuil-cisco, kernel-dev, linux-media, mchehab,
	ribalda, syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

On Mon, Jan 13, 2025 at 08:50:59PM +0200, Laurent Pinchart wrote:
> On Thu, Jan 09, 2025 at 07:47:31AM -0300, Thadeu Lima de Souza Cascardo wrote:
> > On Wed, Jan 08, 2025 at 11:14:28PM +0100, Tomasz Sikora wrote:
> > > Hello,
> > > you right
> > > I have in dmsg (line 1228):
> > > [   12.981124] usb 3-2: Failed to create links for entity 5
> > > [   12.981126] usb 3-2: Failed to register entities (-22).
> > > 
> > > full output in my log.
> > 
> > Thanks, Tomasz.
> > 
> > Can you test the attached fix? It should still keep the warning about the
> > multiple units with the same ID, but now it would not return an error nor
> > warn when registering the entities.
> > 
> > Cascardo.
> 
> > From f771f5c4657ed25ae36784bf13992ddbee3161e6 Mon Sep 17 00:00:00 2001
> > From: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> > Date: Thu, 9 Jan 2025 07:37:41 -0300
> > Subject: [PATCH RFC] media: uvcvideo: restore support for non-compliant devices
> > 
> > Some real-world devices have multiple units with the same ID. When creating
> > their media entities, it would lead to warnings and failure to create such
> > entities. However, the V4L2 devices would still be created and work.
> > 
> > Restore their support, but still warn about the multiple units with the
> > same ID. Avoid the failure in navigating through the chain by storing
> 
> What's "the failure" here ?
> 

This is the original failure that we saw with a syzkaller reproducer. But
now, we know this same failure may happen with real devices.

uvc_mc_create_links will use baSourceID to find an entity on the list, but
since there may be multiple entities with the same ID, it may find the
incorrect one (in this case, finding the output terminal instead of the
processing unit).

> > pointers to the entities instead of only their IDs.
> 
> Missing SoB and Fixes tags.
> 

I skipped them on purpose since this was an RFC.

> The commit message should explain why this is better than reverting
> 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero
> unique ID"). I'm wondering if a revert with a clean fix on top may not
> be easier to review.
> 

I am trying to get a proper fix on top because reverting would lead to
these warnings on real hardware.

> > ---
> >  drivers/media/usb/uvc/uvc_driver.c | 16 +++++++++++-----
> >  drivers/media/usb/uvc/uvc_entity.c |  4 +++-
> >  drivers/media/usb/uvc/uvcvideo.h   |  1 +
> >  3 files changed, 15 insertions(+), 6 deletions(-)
> > 
> > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > index 1a22364f7da9..dd81067f8d30 100644
> > --- a/drivers/media/usb/uvc/uvc_driver.c
> > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > @@ -791,10 +791,8 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> >  	}
> >  
> >  	/* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> > -	if (uvc_entity_by_id(dev, id)) {
> > -		dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> > -		return ERR_PTR(-EINVAL);
> > -	}
> > +	if (uvc_entity_by_id(dev, id))
> > +		dev_warn(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> >  
> >  	extra_size = roundup(extra_size, sizeof(*entity->pads));
> >  	if (num_pads)
> > @@ -802,7 +800,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> >  	else
> >  		num_inputs = 0;
> >  	size = sizeof(*entity) + extra_size + sizeof(*entity->pads) * num_pads
> > -	     + num_inputs;
> > +	     + num_inputs + sizeof(struct uvc_entity *) * num_inputs;
> >  	entity = kzalloc(size, GFP_KERNEL);
> >  	if (entity == NULL)
> >  		return ERR_PTR(-ENOMEM);
> > @@ -840,6 +838,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> >  
> >  	entity->bNrInPins = num_inputs;
> >  	entity->baSourceID = (u8 *)(&entity->pads[num_pads]);
> > +	entity->source_entities = (struct uvc_entity **)(&entity->baSourceID[num_inputs]);
> >  
> >  	return entity;
> >  }
> > @@ -1503,6 +1502,7 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
> >  				}
> >  
> >  				forward->baSourceID[0] = source->id;
> > +				forward->source_entities[0] = source;
> >  			}
> >  
> >  			list_add_tail(&forward->chain, &chain->entities);
> > @@ -1586,6 +1586,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> >  				return -EINVAL;
> >  			}
> >  
> > +			entity->source_entities[i] = term;
> > +
> >  			uvc_dbg_cont(PROBE, " %d", term->id);
> >  
> >  			list_add_tail(&term->chain, &chain->entities);
> > @@ -1620,6 +1622,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> >  		return -EINVAL;
> >  	}
> >  
> > +	(*_entity)->source_entities[0] = entity;
> > +
> >  	*_entity = entity;
> >  	return 0;
> >  }
> > @@ -1783,6 +1787,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> >  			goto error;
> >  
> >  		prev->baSourceID[0] = entity->id;
> > +		prev->source_entities[0] = entity;
> >  		prev = entity;
> >  	}
> >  
> > @@ -1790,6 +1795,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> >  		goto error;
> >  
> >  	prev->baSourceID[0] = iterm->id;
> > +	prev->source_entities[0] = iterm;
> >  
> >  	list_add_tail(&chain->list, &dev->chains);
> >  
> > diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc_entity.c
> > index cc68dd24eb42..7f42292b7fde 100644
> > --- a/drivers/media/usb/uvc/uvc_entity.c
> > +++ b/drivers/media/usb/uvc/uvc_entity.c
> > @@ -36,7 +36,9 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,
> >  		if (!(entity->pads[i].flags & MEDIA_PAD_FL_SINK))
> >  			continue;
> >  
> > -		remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> > +		remote = entity->source_entities[i];
> > +		if (remote == NULL)
> > +			remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> 
> That looks worrying. Why would source_entities[i] be NULL ?
> 
> Devices with bad descriptors can lead to crashes, and it's important to
> harden the code. Just warning about duplicate ideas and adding a
> source_entities array that may or may not point to the right source (and
> could point to NULL) doesn't seem to go in the right direction.
> 
> Other options include adding a device-specific quirk that overrides the
> incorrect entity IDs, or, possibly better, implementing a heuristic to
> fix those automatically.
> 

The heuristic is uvc_scan_fallback. I am trying to balance here between
changing the code too much, which could lead to other hardware stop working
and fixing the two bugs. We could replace baSourceID array with the
source_entities array entirely. But while the baSourceID is built from the
USB descriptors, the source_entities rely on the building of the chain. And
using baSourceID to find the entities in unreliable because of these
devices with multiple entities with the same ID.

Perhaps we should skip when source_entities[i] is NULL, which indicates
that we could not build the chain. But then, again, this introduces more
risk of regressing other hardware, at least without further analysis.

Cascardo.

> >  		if (remote == NULL || remote->num_pads == 0)
> >  			return -EINVAL;
> >  
> > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> > index 07f9921d83f2..a4ee79e4e85b 100644
> > --- a/drivers/media/usb/uvc/uvcvideo.h
> > +++ b/drivers/media/usb/uvc/uvcvideo.h
> > @@ -239,6 +239,7 @@ struct uvc_entity {
> >  
> >  	u8 bNrInPins;
> >  	u8 *baSourceID;
> > +	struct uvc_entity **source_entities;
> >  
> >  	int (*get_info)(struct uvc_device *dev, struct uvc_entity *entity,
> >  			u8 cs, u8 *caps);
> 
> -- 
> Regards,
> 
> Laurent Pinchart

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-14  3:01                 ` Ricardo Ribalda
@ 2025-01-14 12:41                   ` Thadeu Lima de Souza Cascardo
  2025-01-14 15:20                     ` Ricardo Ribalda
  0 siblings, 1 reply; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-14 12:41 UTC (permalink / raw)
  To: Ricardo Ribalda
  Cc: Laurent Pinchart, Tomasz Sikora, hverkuil-cisco, kernel-dev,
	linux-media, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

On Tue, Jan 14, 2025 at 11:01:32AM +0800, Ricardo Ribalda wrote:
> Hi
> 
> On Tue, 14 Jan 2025 at 02:51, Laurent Pinchart
> <laurent.pinchart@ideasonboard.com> wrote:
> >
> > On Thu, Jan 09, 2025 at 07:47:31AM -0300, Thadeu Lima de Souza Cascardo wrote:
> > > On Wed, Jan 08, 2025 at 11:14:28PM +0100, Tomasz Sikora wrote:
> > > > Hello,
> > > > you right
> > > > I have in dmsg (line 1228):
> > > > [   12.981124] usb 3-2: Failed to create links for entity 5
> > > > [   12.981126] usb 3-2: Failed to register entities (-22).
> > > >
> > > > full output in my log.
> > >
> > > Thanks, Tomasz.
> > >
> > > Can you test the attached fix? It should still keep the warning about the
> > > multiple units with the same ID, but now it would not return an error nor
> > > warn when registering the entities.
> > >
> > > Cascardo.
> >
> > > From f771f5c4657ed25ae36784bf13992ddbee3161e6 Mon Sep 17 00:00:00 2001
> > > From: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> > > Date: Thu, 9 Jan 2025 07:37:41 -0300
> > > Subject: [PATCH RFC] media: uvcvideo: restore support for non-compliant devices
> > >
> > > Some real-world devices have multiple units with the same ID. When creating
> > > their media entities, it would lead to warnings and failure to create such
> > > entities. However, the V4L2 devices would still be created and work.
> > >
> > > Restore their support, but still warn about the multiple units with the
> > > same ID. Avoid the failure in navigating through the chain by storing
> >
> > What's "the failure" here ?
> >
> > > pointers to the entities instead of only their IDs.
> >
> > Missing SoB and Fixes tags.
> >
> > The commit message should explain why this is better than reverting
> > 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero
> > unique ID"). I'm wondering if a revert with a clean fix on top may not
> > be easier to review.
> >
> > > ---
> > >  drivers/media/usb/uvc/uvc_driver.c | 16 +++++++++++-----
> > >  drivers/media/usb/uvc/uvc_entity.c |  4 +++-
> > >  drivers/media/usb/uvc/uvcvideo.h   |  1 +
> > >  3 files changed, 15 insertions(+), 6 deletions(-)
> > >
> > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > > index 1a22364f7da9..dd81067f8d30 100644
> > > --- a/drivers/media/usb/uvc/uvc_driver.c
> > > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > > @@ -791,10 +791,8 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> > >       }
> > >
> > >       /* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> > > -     if (uvc_entity_by_id(dev, id)) {
> > > -             dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> > > -             return ERR_PTR(-EINVAL);
> > > -     }
> > > +     if (uvc_entity_by_id(dev, id))
> > > +             dev_warn(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> > >
> > >       extra_size = roundup(extra_size, sizeof(*entity->pads));
> > >       if (num_pads)
> > > @@ -802,7 +800,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> > >       else
> > >               num_inputs = 0;
> > >       size = sizeof(*entity) + extra_size + sizeof(*entity->pads) * num_pads
> > > -          + num_inputs;
> > > +          + num_inputs + sizeof(struct uvc_entity *) * num_inputs;
> > >       entity = kzalloc(size, GFP_KERNEL);
> > >       if (entity == NULL)
> > >               return ERR_PTR(-ENOMEM);
> > > @@ -840,6 +838,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> > >
> > >       entity->bNrInPins = num_inputs;
> > >       entity->baSourceID = (u8 *)(&entity->pads[num_pads]);
> > > +     entity->source_entities = (struct uvc_entity **)(&entity->baSourceID[num_inputs]);
> > >
> > >       return entity;
> > >  }
> > > @@ -1503,6 +1502,7 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
> > >                               }
> > >
> > >                               forward->baSourceID[0] = source->id;
> > > +                             forward->source_entities[0] = source;
> > >                       }
> > >
> > >                       list_add_tail(&forward->chain, &chain->entities);
> > > @@ -1586,6 +1586,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> > >                               return -EINVAL;
> > >                       }
> > >
> > > +                     entity->source_entities[i] = term;
> > > +
> > >                       uvc_dbg_cont(PROBE, " %d", term->id);
> > >
> > >                       list_add_tail(&term->chain, &chain->entities);
> > > @@ -1620,6 +1622,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> > >               return -EINVAL;
> > >       }
> > >
> > > +     (*_entity)->source_entities[0] = entity;
> > > +
> > >       *_entity = entity;
> > >       return 0;
> > >  }
> > > @@ -1783,6 +1787,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> > >                       goto error;
> > >
> > >               prev->baSourceID[0] = entity->id;
> > > +             prev->source_entities[0] = entity;
> > >               prev = entity;
> > >       }
> > >
> > > @@ -1790,6 +1795,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> > >               goto error;
> > >
> > >       prev->baSourceID[0] = iterm->id;
> > > +     prev->source_entities[0] = iterm;
> > >
> > >       list_add_tail(&chain->list, &dev->chains);
> > >
> > > diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc_entity.c
> > > index cc68dd24eb42..7f42292b7fde 100644
> > > --- a/drivers/media/usb/uvc/uvc_entity.c
> > > +++ b/drivers/media/usb/uvc/uvc_entity.c
> > > @@ -36,7 +36,9 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,
> > >               if (!(entity->pads[i].flags & MEDIA_PAD_FL_SINK))
> > >                       continue;
> > >
> > > -             remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> > > +             remote = entity->source_entities[i];
> > > +             if (remote == NULL)
> > > +                     remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> >
> > That looks worrying. Why would source_entities[i] be NULL ?
> >
> > Devices with bad descriptors can lead to crashes, and it's important to
> > harden the code. Just warning about duplicate ideas and adding a
> > source_entities array that may or may not point to the right source (and
> > could point to NULL) doesn't seem to go in the right direction.
> >
> > Other options include adding a device-specific quirk that overrides the
> > incorrect entity IDs, or, possibly better, implementing a heuristic to
> > fix those automatically.
> 
> 
> Can't we simply do something like this:
> 
> diff --git a/drivers/media/usb/uvc/uvc_driver.c
> b/drivers/media/usb/uvc/uvc_driver.c
> index a10d4f4d9f95..b55dc440db26 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -135,6 +135,9 @@ struct uvc_entity *uvc_entity_by_id(struct
> uvc_device *dev, int id)
>  {
>         struct uvc_entity *entity;
> 
> +       if (id == UVC_INVALID_ENTITY_ID)
> +               return NULL;
> +
>         list_for_each_entry(entity, &dev->entities, list) {
>                 if (entity->id == id)
>                         return entity;
> @@ -802,13 +805,13 @@ static struct uvc_entity
> *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
>         /* Per UVC 1.1+ spec 3.7.2, the ID should be non-zero. */
>         if (id == 0) {
>                 dev_err(&dev->udev->dev, "Found Unit with invalid ID 0.\n");
> -               return ERR_PTR(-EINVAL);
> +               id = UVC_INVALID_ENTITY_ID;
>         }
> 
>         /* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
>         if (uvc_entity_by_id(dev, id)) {
>                 dev_err(&dev->udev->dev, "Found multiple Units with ID
> %u\n", id);
> -               return ERR_PTR(-EINVAL);
> +               id = UVC_INVALID_ENTITY_ID;
>         }
> 
>         extra_size = roundup(extra_size, sizeof(*entity->pads));
> diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> index 5e388f05f3fc..2ba8e32260ca 100644
> --- a/drivers/media/usb/uvc/uvcvideo.h
> +++ b/drivers/media/usb/uvc/uvcvideo.h
> @@ -41,6 +41,8 @@
>  #define UVC_EXT_GPIO_UNIT              0x7ffe
>  #define UVC_EXT_GPIO_UNIT_ID           0x100
> 
> +#define UVC_INVALID_ENTITY_ID          0xffff
> +
>  /* ------------------------------------------------------------------------
>   * Driver specific constants.
>   */
> 

At first, this looks fine, but the it would still allow for multiple units
on the list with the Invalid ID. We could reserve some range and allocate
from it instead.

For the case in hand, it may just work because there is only one entity
with the duplicate ID, so we only need to allocate one new ID.

Regards.
Cascardo.

> 
> 
> 
> 
> >
> > >               if (remote == NULL || remote->num_pads == 0)
> > >                       return -EINVAL;
> > >
> > > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> > > index 07f9921d83f2..a4ee79e4e85b 100644
> > > --- a/drivers/media/usb/uvc/uvcvideo.h
> > > +++ b/drivers/media/usb/uvc/uvcvideo.h
> > > @@ -239,6 +239,7 @@ struct uvc_entity {
> > >
> > >       u8 bNrInPins;
> > >       u8 *baSourceID;
> > > +     struct uvc_entity **source_entities;
> > >
> > >       int (*get_info)(struct uvc_device *dev, struct uvc_entity *entity,
> > >                       u8 cs, u8 *caps);
> >
> > --
> > Regards,
> >
> > Laurent Pinchart
> 
> 
> 
> --
> Ricardo Ribalda

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-14 12:41                   ` Thadeu Lima de Souza Cascardo
@ 2025-01-14 15:20                     ` Ricardo Ribalda
  2025-01-14 17:26                       ` Thadeu Lima de Souza Cascardo
  0 siblings, 1 reply; 24+ messages in thread
From: Ricardo Ribalda @ 2025-01-14 15:20 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo
  Cc: Laurent Pinchart, Tomasz Sikora, hverkuil-cisco, kernel-dev,
	linux-media, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

On Tue, 14 Jan 2025 at 20:41, Thadeu Lima de Souza Cascardo
<cascardo@igalia.com> wrote:
>
> On Tue, Jan 14, 2025 at 11:01:32AM +0800, Ricardo Ribalda wrote:
> > Hi
> >
> > On Tue, 14 Jan 2025 at 02:51, Laurent Pinchart
> > <laurent.pinchart@ideasonboard.com> wrote:
> > >
> > > On Thu, Jan 09, 2025 at 07:47:31AM -0300, Thadeu Lima de Souza Cascardo wrote:
> > > > On Wed, Jan 08, 2025 at 11:14:28PM +0100, Tomasz Sikora wrote:
> > > > > Hello,
> > > > > you right
> > > > > I have in dmsg (line 1228):
> > > > > [   12.981124] usb 3-2: Failed to create links for entity 5
> > > > > [   12.981126] usb 3-2: Failed to register entities (-22).
> > > > >
> > > > > full output in my log.
> > > >
> > > > Thanks, Tomasz.
> > > >
> > > > Can you test the attached fix? It should still keep the warning about the
> > > > multiple units with the same ID, but now it would not return an error nor
> > > > warn when registering the entities.
> > > >
> > > > Cascardo.
> > >
> > > > From f771f5c4657ed25ae36784bf13992ddbee3161e6 Mon Sep 17 00:00:00 2001
> > > > From: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
> > > > Date: Thu, 9 Jan 2025 07:37:41 -0300
> > > > Subject: [PATCH RFC] media: uvcvideo: restore support for non-compliant devices
> > > >
> > > > Some real-world devices have multiple units with the same ID. When creating
> > > > their media entities, it would lead to warnings and failure to create such
> > > > entities. However, the V4L2 devices would still be created and work.
> > > >
> > > > Restore their support, but still warn about the multiple units with the
> > > > same ID. Avoid the failure in navigating through the chain by storing
> > >
> > > What's "the failure" here ?
> > >
> > > > pointers to the entities instead of only their IDs.
> > >
> > > Missing SoB and Fixes tags.
> > >
> > > The commit message should explain why this is better than reverting
> > > 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero
> > > unique ID"). I'm wondering if a revert with a clean fix on top may not
> > > be easier to review.
> > >
> > > > ---
> > > >  drivers/media/usb/uvc/uvc_driver.c | 16 +++++++++++-----
> > > >  drivers/media/usb/uvc/uvc_entity.c |  4 +++-
> > > >  drivers/media/usb/uvc/uvcvideo.h   |  1 +
> > > >  3 files changed, 15 insertions(+), 6 deletions(-)
> > > >
> > > > diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> > > > index 1a22364f7da9..dd81067f8d30 100644
> > > > --- a/drivers/media/usb/uvc/uvc_driver.c
> > > > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > > > @@ -791,10 +791,8 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> > > >       }
> > > >
> > > >       /* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> > > > -     if (uvc_entity_by_id(dev, id)) {
> > > > -             dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> > > > -             return ERR_PTR(-EINVAL);
> > > > -     }
> > > > +     if (uvc_entity_by_id(dev, id))
> > > > +             dev_warn(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> > > >
> > > >       extra_size = roundup(extra_size, sizeof(*entity->pads));
> > > >       if (num_pads)
> > > > @@ -802,7 +800,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> > > >       else
> > > >               num_inputs = 0;
> > > >       size = sizeof(*entity) + extra_size + sizeof(*entity->pads) * num_pads
> > > > -          + num_inputs;
> > > > +          + num_inputs + sizeof(struct uvc_entity *) * num_inputs;
> > > >       entity = kzalloc(size, GFP_KERNEL);
> > > >       if (entity == NULL)
> > > >               return ERR_PTR(-ENOMEM);
> > > > @@ -840,6 +838,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> > > >
> > > >       entity->bNrInPins = num_inputs;
> > > >       entity->baSourceID = (u8 *)(&entity->pads[num_pads]);
> > > > +     entity->source_entities = (struct uvc_entity **)(&entity->baSourceID[num_inputs]);
> > > >
> > > >       return entity;
> > > >  }
> > > > @@ -1503,6 +1502,7 @@ static int uvc_scan_chain_forward(struct uvc_video_chain *chain,
> > > >                               }
> > > >
> > > >                               forward->baSourceID[0] = source->id;
> > > > +                             forward->source_entities[0] = source;
> > > >                       }
> > > >
> > > >                       list_add_tail(&forward->chain, &chain->entities);
> > > > @@ -1586,6 +1586,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> > > >                               return -EINVAL;
> > > >                       }
> > > >
> > > > +                     entity->source_entities[i] = term;
> > > > +
> > > >                       uvc_dbg_cont(PROBE, " %d", term->id);
> > > >
> > > >                       list_add_tail(&term->chain, &chain->entities);
> > > > @@ -1620,6 +1622,8 @@ static int uvc_scan_chain_backward(struct uvc_video_chain *chain,
> > > >               return -EINVAL;
> > > >       }
> > > >
> > > > +     (*_entity)->source_entities[0] = entity;
> > > > +
> > > >       *_entity = entity;
> > > >       return 0;
> > > >  }
> > > > @@ -1783,6 +1787,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> > > >                       goto error;
> > > >
> > > >               prev->baSourceID[0] = entity->id;
> > > > +             prev->source_entities[0] = entity;
> > > >               prev = entity;
> > > >       }
> > > >
> > > > @@ -1790,6 +1795,7 @@ static int uvc_scan_fallback(struct uvc_device *dev)
> > > >               goto error;
> > > >
> > > >       prev->baSourceID[0] = iterm->id;
> > > > +     prev->source_entities[0] = iterm;
> > > >
> > > >       list_add_tail(&chain->list, &dev->chains);
> > > >
> > > > diff --git a/drivers/media/usb/uvc/uvc_entity.c b/drivers/media/usb/uvc/uvc_entity.c
> > > > index cc68dd24eb42..7f42292b7fde 100644
> > > > --- a/drivers/media/usb/uvc/uvc_entity.c
> > > > +++ b/drivers/media/usb/uvc/uvc_entity.c
> > > > @@ -36,7 +36,9 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,
> > > >               if (!(entity->pads[i].flags & MEDIA_PAD_FL_SINK))
> > > >                       continue;
> > > >
> > > > -             remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> > > > +             remote = entity->source_entities[i];
> > > > +             if (remote == NULL)
> > > > +                     remote = uvc_entity_by_id(chain->dev, entity->baSourceID[i]);
> > >
> > > That looks worrying. Why would source_entities[i] be NULL ?
> > >
> > > Devices with bad descriptors can lead to crashes, and it's important to
> > > harden the code. Just warning about duplicate ideas and adding a
> > > source_entities array that may or may not point to the right source (and
> > > could point to NULL) doesn't seem to go in the right direction.
> > >
> > > Other options include adding a device-specific quirk that overrides the
> > > incorrect entity IDs, or, possibly better, implementing a heuristic to
> > > fix those automatically.
> >
> >
> > Can't we simply do something like this:
> >
> > diff --git a/drivers/media/usb/uvc/uvc_driver.c
> > b/drivers/media/usb/uvc/uvc_driver.c
> > index a10d4f4d9f95..b55dc440db26 100644
> > --- a/drivers/media/usb/uvc/uvc_driver.c
> > +++ b/drivers/media/usb/uvc/uvc_driver.c
> > @@ -135,6 +135,9 @@ struct uvc_entity *uvc_entity_by_id(struct
> > uvc_device *dev, int id)
> >  {
> >         struct uvc_entity *entity;
> >
> > +       if (id == UVC_INVALID_ENTITY_ID)
> > +               return NULL;
> > +
> >         list_for_each_entry(entity, &dev->entities, list) {
> >                 if (entity->id == id)
> >                         return entity;
> > @@ -802,13 +805,13 @@ static struct uvc_entity
> > *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> >         /* Per UVC 1.1+ spec 3.7.2, the ID should be non-zero. */
> >         if (id == 0) {
> >                 dev_err(&dev->udev->dev, "Found Unit with invalid ID 0.\n");
> > -               return ERR_PTR(-EINVAL);
> > +               id = UVC_INVALID_ENTITY_ID;
> >         }
> >
> >         /* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> >         if (uvc_entity_by_id(dev, id)) {
> >                 dev_err(&dev->udev->dev, "Found multiple Units with ID
> > %u\n", id);
> > -               return ERR_PTR(-EINVAL);
> > +               id = UVC_INVALID_ENTITY_ID;
> >         }
> >
> >         extra_size = roundup(extra_size, sizeof(*entity->pads));
> > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> > index 5e388f05f3fc..2ba8e32260ca 100644
> > --- a/drivers/media/usb/uvc/uvcvideo.h
> > +++ b/drivers/media/usb/uvc/uvcvideo.h
> > @@ -41,6 +41,8 @@
> >  #define UVC_EXT_GPIO_UNIT              0x7ffe
> >  #define UVC_EXT_GPIO_UNIT_ID           0x100
> >
> > +#define UVC_INVALID_ENTITY_ID          0xffff
> > +
> >  /* ------------------------------------------------------------------------
> >   * Driver specific constants.
> >   */
> >
>
> At first, this looks fine, but the it would still allow for multiple units
> on the list with the Invalid ID. We could reserve some range and allocate
> from it instead.

Please correct me if I am wrong, but the ID is only required to
configure the topology of the device. If multiple entities have the
same id then they cannot be part of the topology, because we will
never be sure about what entity is the correct one.

My proposal is to mark the duplicated as invalid so they cannot be
found with uvc_entity_by_id(), but they can still have controls.

I think it can work with multiple duplicated IDs. It is also pretty
clean and is not affected by the issue found by syszcaller.

In any case we probably want to act fast on this one. We had reports
from multiple parties.

Regards!

 >
> For the case in hand, it may just work because there is only one entity
> with the duplicate ID, so we only need to allocate one new ID.
>
> Regards.
> Cascardo.


>
> >
> >
> >
> >
> > >
> > > >               if (remote == NULL || remote->num_pads == 0)
> > > >                       return -EINVAL;
> > > >
> > > > diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> > > > index 07f9921d83f2..a4ee79e4e85b 100644
> > > > --- a/drivers/media/usb/uvc/uvcvideo.h
> > > > +++ b/drivers/media/usb/uvc/uvcvideo.h
> > > > @@ -239,6 +239,7 @@ struct uvc_entity {
> > > >
> > > >       u8 bNrInPins;
> > > >       u8 *baSourceID;
> > > > +     struct uvc_entity **source_entities;
> > > >
> > > >       int (*get_info)(struct uvc_device *dev, struct uvc_entity *entity,
> > > >                       u8 cs, u8 *caps);
> > >
> > > --
> > > Regards,
> > >
> > > Laurent Pinchart
> >
> >
> >
> > --
> > Ricardo Ribalda



-- 
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID
  2025-01-14 15:20                     ` Ricardo Ribalda
@ 2025-01-14 17:26                       ` Thadeu Lima de Souza Cascardo
  2025-01-14 20:00                         ` [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID" Thadeu Lima de Souza Cascardo
  0 siblings, 1 reply; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-14 17:26 UTC (permalink / raw)
  To: Ricardo Ribalda
  Cc: Laurent Pinchart, Tomasz Sikora, hverkuil-cisco, kernel-dev,
	linux-media, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

On Tue, Jan 14, 2025 at 11:20:30PM +0800, Ricardo Ribalda wrote:
> On Tue, 14 Jan 2025 at 20:41, Thadeu Lima de Souza Cascardo
> <cascardo@igalia.com> wrote:
[...] 
> Please correct me if I am wrong, but the ID is only required to
> configure the topology of the device. If multiple entities have the
> same id then they cannot be part of the topology, because we will
> never be sure about what entity is the correct one.
> 

I can say mostly about the device that has been reported:

Output Terminal has ID 5 and source ID 4.
Processing Unit has ID 5 and source ID 4.
Input Terminal has ID 1.

But we end up connecting them with uvc_scan_fallback:

OT -> PU -> IT

As if Processing Unit had ID 4 and source ID 1.


> My proposal is to mark the duplicated as invalid so they cannot be
> found with uvc_entity_by_id(), but they can still have controls.
> 

I would need to test them.

> I think it can work with multiple duplicated IDs. It is also pretty
> clean and is not affected by the issue found by syszcaller.
> 
> In any case we probably want to act fast on this one. We had reports
> from multiple parties.
> 

Perhaps we should then revert the previous fix (which implies that this
same device would lead to some warnings, but they don't seem to cause any
other issues except for not exposing some media controls). And, then, we
work on reapplying it and another fix on top, or a different fix during
6.14 or 6.15.

Thanks for the patience.
Cascardo.

> Regards!

^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-14 17:26                       ` Thadeu Lima de Souza Cascardo
@ 2025-01-14 20:00                         ` Thadeu Lima de Souza Cascardo
  2025-01-20 11:52                           ` Ricardo Ribalda
                                             ` (2 more replies)
  0 siblings, 3 replies; 24+ messages in thread
From: Thadeu Lima de Souza Cascardo @ 2025-01-14 20:00 UTC (permalink / raw)
  To: linux-media
  Cc: Ricardo Ribalda, Laurent Pinchart, Tomasz Sikora, hverkuil-cisco,
	kernel-dev, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b, Thadeu Lima de Souza Cascardo

This reverts commit 3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195.

Tomasz has reported that his device, Generalplus Technology Inc. 808 Camera,
with ID 1b3f:2002, stopped being detected:

$ ls -l /dev/video*
zsh: no matches found: /dev/video*
[    7.230599] usb 3-2: Found multiple Units with ID 5

This particular device is non-compliant, having both the Output Terminal
and Processing Unit with ID 5. uvc_scan_fallback, though, is able to build
a chain. However, when media elements are added and uvc_mc_create_links
call uvc_entity_by_id, it will get the incorrect entity,
media_create_pad_link will WARN, and it will fail to register the entities.

In order to reinstate support for such devices in a timely fashion,
reverting the fix for these warnings is appropriate. A proper fix that
considers the existence of such non-compliant devices will be submitted in
a later development cycle.

Reported-by: Tomasz Sikora <sikora.tomus@gmail.com>
Fixes: 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero unique ID")
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>
---
 drivers/media/usb/uvc/uvc_driver.c | 70 ++++++++++++------------------
 1 file changed, 27 insertions(+), 43 deletions(-)

diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
index b3c8411dc05c..9febd2375636 100644
--- a/drivers/media/usb/uvc/uvc_driver.c
+++ b/drivers/media/usb/uvc/uvc_driver.c
@@ -775,27 +775,14 @@ static const u8 uvc_media_transport_input_guid[16] =
 	UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT;
 static const u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING;
 
-static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
-					       u16 id, unsigned int num_pads,
-					       unsigned int extra_size)
+static struct uvc_entity *uvc_alloc_entity(u16 type, u16 id,
+		unsigned int num_pads, unsigned int extra_size)
 {
 	struct uvc_entity *entity;
 	unsigned int num_inputs;
 	unsigned int size;
 	unsigned int i;
 
-	/* Per UVC 1.1+ spec 3.7.2, the ID should be non-zero. */
-	if (id == 0) {
-		dev_err(&dev->udev->dev, "Found Unit with invalid ID 0.\n");
-		return ERR_PTR(-EINVAL);
-	}
-
-	/* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
-	if (uvc_entity_by_id(dev, id)) {
-		dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
-		return ERR_PTR(-EINVAL);
-	}
-
 	extra_size = roundup(extra_size, sizeof(*entity->pads));
 	if (num_pads)
 		num_inputs = type & UVC_TERM_OUTPUT ? num_pads : num_pads - 1;
@@ -805,7 +792,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
 	     + num_inputs;
 	entity = kzalloc(size, GFP_KERNEL);
 	if (entity == NULL)
-		return ERR_PTR(-ENOMEM);
+		return NULL;
 
 	entity->id = id;
 	entity->type = type;
@@ -917,10 +904,10 @@ static int uvc_parse_vendor_control(struct uvc_device *dev,
 			break;
 		}
 
-		unit = uvc_alloc_new_entity(dev, UVC_VC_EXTENSION_UNIT,
-					    buffer[3], p + 1, 2 * n);
-		if (IS_ERR(unit))
-			return PTR_ERR(unit);
+		unit = uvc_alloc_entity(UVC_VC_EXTENSION_UNIT, buffer[3],
+					p + 1, 2*n);
+		if (unit == NULL)
+			return -ENOMEM;
 
 		memcpy(unit->guid, &buffer[4], 16);
 		unit->extension.bNumControls = buffer[20];
@@ -1029,10 +1016,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 			return -EINVAL;
 		}
 
-		term = uvc_alloc_new_entity(dev, type | UVC_TERM_INPUT,
-					    buffer[3], 1, n + p);
-		if (IS_ERR(term))
-			return PTR_ERR(term);
+		term = uvc_alloc_entity(type | UVC_TERM_INPUT, buffer[3],
+					1, n + p);
+		if (term == NULL)
+			return -ENOMEM;
 
 		if (UVC_ENTITY_TYPE(term) == UVC_ITT_CAMERA) {
 			term->camera.bControlSize = n;
@@ -1088,10 +1075,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 			return 0;
 		}
 
-		term = uvc_alloc_new_entity(dev, type | UVC_TERM_OUTPUT,
-					    buffer[3], 1, 0);
-		if (IS_ERR(term))
-			return PTR_ERR(term);
+		term = uvc_alloc_entity(type | UVC_TERM_OUTPUT, buffer[3],
+					1, 0);
+		if (term == NULL)
+			return -ENOMEM;
 
 		memcpy(term->baSourceID, &buffer[7], 1);
 
@@ -1110,10 +1097,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 			return -EINVAL;
 		}
 
-		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
-					    p + 1, 0);
-		if (IS_ERR(unit))
-			return PTR_ERR(unit);
+		unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, 0);
+		if (unit == NULL)
+			return -ENOMEM;
 
 		memcpy(unit->baSourceID, &buffer[5], p);
 
@@ -1133,9 +1119,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 			return -EINVAL;
 		}
 
-		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3], 2, n);
-		if (IS_ERR(unit))
-			return PTR_ERR(unit);
+		unit = uvc_alloc_entity(buffer[2], buffer[3], 2, n);
+		if (unit == NULL)
+			return -ENOMEM;
 
 		memcpy(unit->baSourceID, &buffer[4], 1);
 		unit->processing.wMaxMultiplier =
@@ -1162,10 +1148,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
 			return -EINVAL;
 		}
 
-		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
-					    p + 1, n);
-		if (IS_ERR(unit))
-			return PTR_ERR(unit);
+		unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, n);
+		if (unit == NULL)
+			return -ENOMEM;
 
 		memcpy(unit->guid, &buffer[4], 16);
 		unit->extension.bNumControls = buffer[20];
@@ -1305,10 +1290,9 @@ static int uvc_gpio_parse(struct uvc_device *dev)
 		return dev_err_probe(&dev->udev->dev, irq,
 				     "No IRQ for privacy GPIO\n");
 
-	unit = uvc_alloc_new_entity(dev, UVC_EXT_GPIO_UNIT,
-				    UVC_EXT_GPIO_UNIT_ID, 0, 1);
-	if (IS_ERR(unit))
-		return PTR_ERR(unit);
+	unit = uvc_alloc_entity(UVC_EXT_GPIO_UNIT, UVC_EXT_GPIO_UNIT_ID, 0, 1);
+	if (!unit)
+		return -ENOMEM;
 
 	unit->gpio.gpio_privacy = gpio_privacy;
 	unit->gpio.irq = irq;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-14 20:00                         ` [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID" Thadeu Lima de Souza Cascardo
@ 2025-01-20 11:52                           ` Ricardo Ribalda
  2025-01-31 10:04                             ` Ricardo Ribalda
  2025-01-31 16:35                           ` Hans de Goede
  2025-01-31 16:59                           ` Laurent Pinchart
  2 siblings, 1 reply; 24+ messages in thread
From: Ricardo Ribalda @ 2025-01-20 11:52 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo
  Cc: linux-media, Laurent Pinchart, Tomasz Sikora, hverkuil-cisco,
	kernel-dev, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

On Tue, 14 Jan 2025 at 21:01, Thadeu Lima de Souza Cascardo
<cascardo@igalia.com> wrote:
>
> This reverts commit 3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195.
>
> Tomasz has reported that his device, Generalplus Technology Inc. 808 Camera,
> with ID 1b3f:2002, stopped being detected:
>
> $ ls -l /dev/video*
> zsh: no matches found: /dev/video*
> [    7.230599] usb 3-2: Found multiple Units with ID 5
>
> This particular device is non-compliant, having both the Output Terminal
> and Processing Unit with ID 5. uvc_scan_fallback, though, is able to build
> a chain. However, when media elements are added and uvc_mc_create_links
> call uvc_entity_by_id, it will get the incorrect entity,
> media_create_pad_link will WARN, and it will fail to register the entities.
>
> In order to reinstate support for such devices in a timely fashion,
> reverting the fix for these warnings is appropriate. A proper fix that
> considers the existence of such non-compliant devices will be submitted in
> a later development cycle.
>
> Reported-by: Tomasz Sikora <sikora.tomus@gmail.com>
> Fixes: 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero unique ID")
> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>

If we do not find another solution in a reasonable time I think we
should land this ASAP:

Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>



> ---
>  drivers/media/usb/uvc/uvc_driver.c | 70 ++++++++++++------------------
>  1 file changed, 27 insertions(+), 43 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index b3c8411dc05c..9febd2375636 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -775,27 +775,14 @@ static const u8 uvc_media_transport_input_guid[16] =
>         UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT;
>  static const u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING;
>
> -static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> -                                              u16 id, unsigned int num_pads,
> -                                              unsigned int extra_size)
> +static struct uvc_entity *uvc_alloc_entity(u16 type, u16 id,
> +               unsigned int num_pads, unsigned int extra_size)
>  {
>         struct uvc_entity *entity;
>         unsigned int num_inputs;
>         unsigned int size;
>         unsigned int i;
>
> -       /* Per UVC 1.1+ spec 3.7.2, the ID should be non-zero. */
> -       if (id == 0) {
> -               dev_err(&dev->udev->dev, "Found Unit with invalid ID 0.\n");
> -               return ERR_PTR(-EINVAL);
> -       }
> -
> -       /* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> -       if (uvc_entity_by_id(dev, id)) {
> -               dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> -               return ERR_PTR(-EINVAL);
> -       }
> -
>         extra_size = roundup(extra_size, sizeof(*entity->pads));
>         if (num_pads)
>                 num_inputs = type & UVC_TERM_OUTPUT ? num_pads : num_pads - 1;
> @@ -805,7 +792,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
>              + num_inputs;
>         entity = kzalloc(size, GFP_KERNEL);
>         if (entity == NULL)
> -               return ERR_PTR(-ENOMEM);
> +               return NULL;
>
>         entity->id = id;
>         entity->type = type;
> @@ -917,10 +904,10 @@ static int uvc_parse_vendor_control(struct uvc_device *dev,
>                         break;
>                 }
>
> -               unit = uvc_alloc_new_entity(dev, UVC_VC_EXTENSION_UNIT,
> -                                           buffer[3], p + 1, 2 * n);
> -               if (IS_ERR(unit))
> -                       return PTR_ERR(unit);
> +               unit = uvc_alloc_entity(UVC_VC_EXTENSION_UNIT, buffer[3],
> +                                       p + 1, 2*n);
> +               if (unit == NULL)
> +                       return -ENOMEM;
>
>                 memcpy(unit->guid, &buffer[4], 16);
>                 unit->extension.bNumControls = buffer[20];
> @@ -1029,10 +1016,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>                         return -EINVAL;
>                 }
>
> -               term = uvc_alloc_new_entity(dev, type | UVC_TERM_INPUT,
> -                                           buffer[3], 1, n + p);
> -               if (IS_ERR(term))
> -                       return PTR_ERR(term);
> +               term = uvc_alloc_entity(type | UVC_TERM_INPUT, buffer[3],
> +                                       1, n + p);
> +               if (term == NULL)
> +                       return -ENOMEM;
>
>                 if (UVC_ENTITY_TYPE(term) == UVC_ITT_CAMERA) {
>                         term->camera.bControlSize = n;
> @@ -1088,10 +1075,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>                         return 0;
>                 }
>
> -               term = uvc_alloc_new_entity(dev, type | UVC_TERM_OUTPUT,
> -                                           buffer[3], 1, 0);
> -               if (IS_ERR(term))
> -                       return PTR_ERR(term);
> +               term = uvc_alloc_entity(type | UVC_TERM_OUTPUT, buffer[3],
> +                                       1, 0);
> +               if (term == NULL)
> +                       return -ENOMEM;
>
>                 memcpy(term->baSourceID, &buffer[7], 1);
>
> @@ -1110,10 +1097,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>                         return -EINVAL;
>                 }
>
> -               unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
> -                                           p + 1, 0);
> -               if (IS_ERR(unit))
> -                       return PTR_ERR(unit);
> +               unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, 0);
> +               if (unit == NULL)
> +                       return -ENOMEM;
>
>                 memcpy(unit->baSourceID, &buffer[5], p);
>
> @@ -1133,9 +1119,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>                         return -EINVAL;
>                 }
>
> -               unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3], 2, n);
> -               if (IS_ERR(unit))
> -                       return PTR_ERR(unit);
> +               unit = uvc_alloc_entity(buffer[2], buffer[3], 2, n);
> +               if (unit == NULL)
> +                       return -ENOMEM;
>
>                 memcpy(unit->baSourceID, &buffer[4], 1);
>                 unit->processing.wMaxMultiplier =
> @@ -1162,10 +1148,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>                         return -EINVAL;
>                 }
>
> -               unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
> -                                           p + 1, n);
> -               if (IS_ERR(unit))
> -                       return PTR_ERR(unit);
> +               unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, n);
> +               if (unit == NULL)
> +                       return -ENOMEM;
>
>                 memcpy(unit->guid, &buffer[4], 16);
>                 unit->extension.bNumControls = buffer[20];
> @@ -1305,10 +1290,9 @@ static int uvc_gpio_parse(struct uvc_device *dev)
>                 return dev_err_probe(&dev->udev->dev, irq,
>                                      "No IRQ for privacy GPIO\n");
>
> -       unit = uvc_alloc_new_entity(dev, UVC_EXT_GPIO_UNIT,
> -                                   UVC_EXT_GPIO_UNIT_ID, 0, 1);
> -       if (IS_ERR(unit))
> -               return PTR_ERR(unit);
> +       unit = uvc_alloc_entity(UVC_EXT_GPIO_UNIT, UVC_EXT_GPIO_UNIT_ID, 0, 1);
> +       if (!unit)
> +               return -ENOMEM;
>
>         unit->gpio.gpio_privacy = gpio_privacy;
>         unit->gpio.irq = irq;
> --
> 2.34.1
>


--
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-20 11:52                           ` Ricardo Ribalda
@ 2025-01-31 10:04                             ` Ricardo Ribalda
  2025-01-31 11:12                               ` Hans de Goede
  0 siblings, 1 reply; 24+ messages in thread
From: Ricardo Ribalda @ 2025-01-31 10:04 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo, Hans de Goede, hverkuil-cisco,
	Laurent Pinchart, mchehab
  Cc: linux-media, Tomasz Sikora, kernel-dev,
	syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

Hi Hans

We are seeing a spike of reports with the signature:

"Found multiple Units with ID XX"

Could you take a look at this patch? I agree with Thadeu that the best
strategy is to land the revert asap and when the storm disappears work
on a different solution.

Regards!

> If we do not find another solution in a reasonable time I think we
> should land this ASAP:
>

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-31 10:04                             ` Ricardo Ribalda
@ 2025-01-31 11:12                               ` Hans de Goede
  2025-01-31 11:17                                 ` Ricardo Ribalda
  0 siblings, 1 reply; 24+ messages in thread
From: Hans de Goede @ 2025-01-31 11:12 UTC (permalink / raw)
  To: Ricardo Ribalda, Thadeu Lima de Souza Cascardo, hverkuil-cisco,
	Laurent Pinchart, mchehab
  Cc: linux-media, Tomasz Sikora, kernel-dev,
	syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

Hi Ricardo,

On 31-Jan-25 11:04 AM, Ricardo Ribalda wrote:
> Hi Hans

Which Hans, me or Hans Verkuil?  Since this needs to go out
through a fixed pull-request I think it would be best if
Hans Verkuil picks up the revert directly in the fixes
branch ?

> We are seeing a spike of reports with the signature:
> 
> "Found multiple Units with ID XX"
> 
> Could you take a look at this patch? I agree with Thadeu that the best
> strategy is to land the revert asap and when the storm disappears work
> on a different solution.

Ack, Fedora is getting some bug reports about this too. Since both
you (Ricardo) and Laurant seemed to be on top of this I didn't take
a closer look yet. But this definitely is hitting users and we
need to fix this.

Since we still don't have a fix yet we really should revert the commit
causing this problem ASAP.

Regards,

Hans


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-31 11:12                               ` Hans de Goede
@ 2025-01-31 11:17                                 ` Ricardo Ribalda
  2025-01-31 14:06                                   ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 24+ messages in thread
From: Ricardo Ribalda @ 2025-01-31 11:17 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Thadeu Lima de Souza Cascardo, hverkuil-cisco, Laurent Pinchart,
	mchehab, linux-media, Tomasz Sikora, kernel-dev,
	syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

On Fri, 31 Jan 2025 at 12:12, Hans de Goede <hdegoede@redhat.com> wrote:
>
> Hi Ricardo,
>
> On 31-Jan-25 11:04 AM, Ricardo Ribalda wrote:
> > Hi Hans
>
> Which Hans, me or Hans Verkuil?  Since this needs to go out
> through a fixed pull-request I think it would be best if
> Hans Verkuil picks up the revert directly in the fixes
> branch ?

Whoever started in v4l2 later needs to change their name :P.

I was thinking about you this time :)

>
> > We are seeing a spike of reports with the signature:
> >
> > "Found multiple Units with ID XX"
> >
> > Could you take a look at this patch? I agree with Thadeu that the best
> > strategy is to land the revert asap and when the storm disappears work
> > on a different solution.
>
> Ack, Fedora is getting some bug reports about this too. Since both
> you (Ricardo) and Laurant seemed to be on top of this I didn't take
> a closer look yet. But this definitely is hitting users and we
> need to fix this.
>
> Since we still don't have a fix yet we really should revert the commit
> causing this problem ASAP.

Hans (Verkuil) if Hans (de Goede) adds a Reviewed-by or a Acked-by,
could you take this patch to the media-committers/fixes branch ?

Thanks


>
> Regards,
>
> Hans
>


-- 
Ricardo Ribalda

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-31 11:17                                 ` Ricardo Ribalda
@ 2025-01-31 14:06                                   ` Mauro Carvalho Chehab
  2025-01-31 14:30                                     ` Hans Verkuil
  2025-01-31 16:38                                     ` Hans de Goede
  0 siblings, 2 replies; 24+ messages in thread
From: Mauro Carvalho Chehab @ 2025-01-31 14:06 UTC (permalink / raw)
  To: Ricardo Ribalda
  Cc: Hans de Goede, Thadeu Lima de Souza Cascardo, hverkuil-cisco,
	Laurent Pinchart, mchehab, linux-media, Tomasz Sikora, kernel-dev,
	syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

Em Fri, 31 Jan 2025 12:17:25 +0100
Ricardo Ribalda <ribalda@chromium.org> escreveu:

> On Fri, 31 Jan 2025 at 12:12, Hans de Goede <hdegoede@redhat.com> wrote:
> >
> > Hi Ricardo,
> >
> > On 31-Jan-25 11:04 AM, Ricardo Ribalda wrote:  
> > > Hi Hans  
> >
> > Which Hans, me or Hans Verkuil?  Since this needs to go out
> > through a fixed pull-request I think it would be best if
> > Hans Verkuil picks up the revert directly in the fixes
> > branch ?  
> 
> Whoever started in v4l2 later needs to change their name :P.
> 
> I was thinking about you this time :)
> 
> >  
> > > We are seeing a spike of reports with the signature:
> > >
> > > "Found multiple Units with ID XX"
> > >
> > > Could you take a look at this patch? I agree with Thadeu that the best
> > > strategy is to land the revert asap and when the storm disappears work
> > > on a different solution.  
> >
> > Ack, Fedora is getting some bug reports about this too. Since both
> > you (Ricardo) and Laurant seemed to be on top of this I didn't take
> > a closer look yet. But this definitely is hitting users and we
> > need to fix this.
> >
> > Since we still don't have a fix yet we really should revert the commit
> > causing this problem ASAP.  
> 
> Hans (Verkuil) if Hans (de Goede) adds a Reviewed-by or a Acked-by,
> could you take this patch to the media-committers/fixes branch ?

I can pick it as well. From what I got, Hans de Goede is also ok
with such change.


Thanks,
Mauro

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-31 14:06                                   ` Mauro Carvalho Chehab
@ 2025-01-31 14:30                                     ` Hans Verkuil
  2025-01-31 16:38                                     ` Hans de Goede
  1 sibling, 0 replies; 24+ messages in thread
From: Hans Verkuil @ 2025-01-31 14:30 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Ricardo Ribalda
  Cc: Hans de Goede, Thadeu Lima de Souza Cascardo, Laurent Pinchart,
	mchehab, linux-media, Tomasz Sikora, kernel-dev,
	syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

On 31/01/2025 15:06, Mauro Carvalho Chehab wrote:
> Em Fri, 31 Jan 2025 12:17:25 +0100
> Ricardo Ribalda <ribalda@chromium.org> escreveu:
> 
>> On Fri, 31 Jan 2025 at 12:12, Hans de Goede <hdegoede@redhat.com> wrote:
>>>
>>> Hi Ricardo,
>>>
>>> On 31-Jan-25 11:04 AM, Ricardo Ribalda wrote:  
>>>> Hi Hans  
>>>
>>> Which Hans, me or Hans Verkuil?  Since this needs to go out
>>> through a fixed pull-request I think it would be best if
>>> Hans Verkuil picks up the revert directly in the fixes
>>> branch ?  
>>
>> Whoever started in v4l2 later needs to change their name :P.
>>
>> I was thinking about you this time :)
>>
>>>  
>>>> We are seeing a spike of reports with the signature:
>>>>
>>>> "Found multiple Units with ID XX"
>>>>
>>>> Could you take a look at this patch? I agree with Thadeu that the best
>>>> strategy is to land the revert asap and when the storm disappears work
>>>> on a different solution.  
>>>
>>> Ack, Fedora is getting some bug reports about this too. Since both
>>> you (Ricardo) and Laurant seemed to be on top of this I didn't take
>>> a closer look yet. But this definitely is hitting users and we
>>> need to fix this.
>>>
>>> Since we still don't have a fix yet we really should revert the commit
>>> causing this problem ASAP.  
>>
>> Hans (Verkuil) if Hans (de Goede) adds a Reviewed-by or a Acked-by,
>> could you take this patch to the media-committers/fixes branch ?
> 
> I can pick it as well. From what I got, Hans de Goede is also ok
> with such change.

OK, I leave it to you, Mauro.

I'm swamped at work, unfortunately.

Regards,

	Hans

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-14 20:00                         ` [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID" Thadeu Lima de Souza Cascardo
  2025-01-20 11:52                           ` Ricardo Ribalda
@ 2025-01-31 16:35                           ` Hans de Goede
  2025-01-31 16:59                           ` Laurent Pinchart
  2 siblings, 0 replies; 24+ messages in thread
From: Hans de Goede @ 2025-01-31 16:35 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo, linux-media
  Cc: Ricardo Ribalda, Laurent Pinchart, Tomasz Sikora, hverkuil-cisco,
	kernel-dev, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

Hi,

On 14-Jan-25 21:00, Thadeu Lima de Souza Cascardo wrote:
> This reverts commit 3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195.
> 
> Tomasz has reported that his device, Generalplus Technology Inc. 808 Camera,
> with ID 1b3f:2002, stopped being detected:
> 
> $ ls -l /dev/video*
> zsh: no matches found: /dev/video*
> [    7.230599] usb 3-2: Found multiple Units with ID 5
> 
> This particular device is non-compliant, having both the Output Terminal
> and Processing Unit with ID 5. uvc_scan_fallback, though, is able to build
> a chain. However, when media elements are added and uvc_mc_create_links
> call uvc_entity_by_id, it will get the incorrect entity,
> media_create_pad_link will WARN, and it will fail to register the entities.
> 
> In order to reinstate support for such devices in a timely fashion,
> reverting the fix for these warnings is appropriate. A proper fix that
> considers the existence of such non-compliant devices will be submitted in
> a later development cycle.
> 
> Reported-by: Tomasz Sikora <sikora.tomus@gmail.com>
> Fixes: 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero unique ID")
> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>

Since no other fix has been found in a timely matter lets move forward with
this fix:

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <hdegoede@redhat.com>

Regards,

Hans





> ---
>  drivers/media/usb/uvc/uvc_driver.c | 70 ++++++++++++------------------
>  1 file changed, 27 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index b3c8411dc05c..9febd2375636 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -775,27 +775,14 @@ static const u8 uvc_media_transport_input_guid[16] =
>  	UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT;
>  static const u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING;
>  
> -static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> -					       u16 id, unsigned int num_pads,
> -					       unsigned int extra_size)
> +static struct uvc_entity *uvc_alloc_entity(u16 type, u16 id,
> +		unsigned int num_pads, unsigned int extra_size)
>  {
>  	struct uvc_entity *entity;
>  	unsigned int num_inputs;
>  	unsigned int size;
>  	unsigned int i;
>  
> -	/* Per UVC 1.1+ spec 3.7.2, the ID should be non-zero. */
> -	if (id == 0) {
> -		dev_err(&dev->udev->dev, "Found Unit with invalid ID 0.\n");
> -		return ERR_PTR(-EINVAL);
> -	}
> -
> -	/* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> -	if (uvc_entity_by_id(dev, id)) {
> -		dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> -		return ERR_PTR(-EINVAL);
> -	}
> -
>  	extra_size = roundup(extra_size, sizeof(*entity->pads));
>  	if (num_pads)
>  		num_inputs = type & UVC_TERM_OUTPUT ? num_pads : num_pads - 1;
> @@ -805,7 +792,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
>  	     + num_inputs;
>  	entity = kzalloc(size, GFP_KERNEL);
>  	if (entity == NULL)
> -		return ERR_PTR(-ENOMEM);
> +		return NULL;
>  
>  	entity->id = id;
>  	entity->type = type;
> @@ -917,10 +904,10 @@ static int uvc_parse_vendor_control(struct uvc_device *dev,
>  			break;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, UVC_VC_EXTENSION_UNIT,
> -					    buffer[3], p + 1, 2 * n);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(UVC_VC_EXTENSION_UNIT, buffer[3],
> +					p + 1, 2*n);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->guid, &buffer[4], 16);
>  		unit->extension.bNumControls = buffer[20];
> @@ -1029,10 +1016,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		term = uvc_alloc_new_entity(dev, type | UVC_TERM_INPUT,
> -					    buffer[3], 1, n + p);
> -		if (IS_ERR(term))
> -			return PTR_ERR(term);
> +		term = uvc_alloc_entity(type | UVC_TERM_INPUT, buffer[3],
> +					1, n + p);
> +		if (term == NULL)
> +			return -ENOMEM;
>  
>  		if (UVC_ENTITY_TYPE(term) == UVC_ITT_CAMERA) {
>  			term->camera.bControlSize = n;
> @@ -1088,10 +1075,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return 0;
>  		}
>  
> -		term = uvc_alloc_new_entity(dev, type | UVC_TERM_OUTPUT,
> -					    buffer[3], 1, 0);
> -		if (IS_ERR(term))
> -			return PTR_ERR(term);
> +		term = uvc_alloc_entity(type | UVC_TERM_OUTPUT, buffer[3],
> +					1, 0);
> +		if (term == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(term->baSourceID, &buffer[7], 1);
>  
> @@ -1110,10 +1097,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
> -					    p + 1, 0);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, 0);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->baSourceID, &buffer[5], p);
>  
> @@ -1133,9 +1119,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3], 2, n);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(buffer[2], buffer[3], 2, n);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->baSourceID, &buffer[4], 1);
>  		unit->processing.wMaxMultiplier =
> @@ -1162,10 +1148,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
> -					    p + 1, n);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, n);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->guid, &buffer[4], 16);
>  		unit->extension.bNumControls = buffer[20];
> @@ -1305,10 +1290,9 @@ static int uvc_gpio_parse(struct uvc_device *dev)
>  		return dev_err_probe(&dev->udev->dev, irq,
>  				     "No IRQ for privacy GPIO\n");
>  
> -	unit = uvc_alloc_new_entity(dev, UVC_EXT_GPIO_UNIT,
> -				    UVC_EXT_GPIO_UNIT_ID, 0, 1);
> -	if (IS_ERR(unit))
> -		return PTR_ERR(unit);
> +	unit = uvc_alloc_entity(UVC_EXT_GPIO_UNIT, UVC_EXT_GPIO_UNIT_ID, 0, 1);
> +	if (!unit)
> +		return -ENOMEM;
>  
>  	unit->gpio.gpio_privacy = gpio_privacy;
>  	unit->gpio.irq = irq;


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-31 14:06                                   ` Mauro Carvalho Chehab
  2025-01-31 14:30                                     ` Hans Verkuil
@ 2025-01-31 16:38                                     ` Hans de Goede
  2025-01-31 16:57                                       ` Laurent Pinchart
  1 sibling, 1 reply; 24+ messages in thread
From: Hans de Goede @ 2025-01-31 16:38 UTC (permalink / raw)
  To: Mauro Carvalho Chehab, Ricardo Ribalda
  Cc: Thadeu Lima de Souza Cascardo, hverkuil-cisco, Laurent Pinchart,
	mchehab, linux-media, Tomasz Sikora, kernel-dev,
	syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

Hi,

On 31-Jan-25 15:06, Mauro Carvalho Chehab wrote:
> Em Fri, 31 Jan 2025 12:17:25 +0100
> Ricardo Ribalda <ribalda@chromium.org> escreveu:
> 
>> On Fri, 31 Jan 2025 at 12:12, Hans de Goede <hdegoede@redhat.com> wrote:
>>>
>>> Hi Ricardo,
>>>
>>> On 31-Jan-25 11:04 AM, Ricardo Ribalda wrote:  
>>>> Hi Hans  
>>>
>>> Which Hans, me or Hans Verkuil?  Since this needs to go out
>>> through a fixed pull-request I think it would be best if
>>> Hans Verkuil picks up the revert directly in the fixes
>>> branch ?  
>>
>> Whoever started in v4l2 later needs to change their name :P.
>>
>> I was thinking about you this time :)
>>
>>>  
>>>> We are seeing a spike of reports with the signature:
>>>>
>>>> "Found multiple Units with ID XX"
>>>>
>>>> Could you take a look at this patch? I agree with Thadeu that the best
>>>> strategy is to land the revert asap and when the storm disappears work
>>>> on a different solution.  
>>>
>>> Ack, Fedora is getting some bug reports about this too. Since both
>>> you (Ricardo) and Laurant seemed to be on top of this I didn't take
>>> a closer look yet. But this definitely is hitting users and we
>>> need to fix this.
>>>
>>> Since we still don't have a fix yet we really should revert the commit
>>> causing this problem ASAP.  
>>
>> Hans (Verkuil) if Hans (de Goede) adds a Reviewed-by or a Acked-by,
>> could you take this patch to the media-committers/fixes branch ?
> 
> I can pick it as well. From what I got, Hans de Goede is also ok
> with such change.

Yes I have just replied to the revert patch with my reviewed-by. Mauro
if you can pick this up and send it to Linus soon(ish) that would be
great.

Can you also please add a Cc: stable@vger.kernel.org tag while
merging it?  This will need to be backported to kernels which have
the troublesome commit.

Regards,

Hans


> 
> 
> Thanks,
> Mauro
> 


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-31 16:38                                     ` Hans de Goede
@ 2025-01-31 16:57                                       ` Laurent Pinchart
  0 siblings, 0 replies; 24+ messages in thread
From: Laurent Pinchart @ 2025-01-31 16:57 UTC (permalink / raw)
  To: Hans de Goede
  Cc: Mauro Carvalho Chehab, Ricardo Ribalda,
	Thadeu Lima de Souza Cascardo, hverkuil-cisco, mchehab,
	linux-media, Tomasz Sikora, kernel-dev,
	syzbot+0584f746fde3d52b4675, syzbot+dd320d114deb3f5bb79b

On Fri, Jan 31, 2025 at 05:38:54PM +0100, Hans de Goede wrote:
> On 31-Jan-25 15:06, Mauro Carvalho Chehab wrote:
> > Em Fri, 31 Jan 2025 12:17:25 +0100 Ricardo Ribalda escreveu:
> >> On Fri, 31 Jan 2025 at 12:12, Hans de Goede wrote:
> >>> On 31-Jan-25 11:04 AM, Ricardo Ribalda wrote:  
> >>>> Hi Hans  
> >>>
> >>> Which Hans, me or Hans Verkuil?  Since this needs to go out
> >>> through a fixed pull-request I think it would be best if
> >>> Hans Verkuil picks up the revert directly in the fixes
> >>> branch ?  
> >>
> >> Whoever started in v4l2 later needs to change their name :P.
> >>
> >> I was thinking about you this time :)
> >>
> >>>> We are seeing a spike of reports with the signature:
> >>>>
> >>>> "Found multiple Units with ID XX"
> >>>>
> >>>> Could you take a look at this patch? I agree with Thadeu that the best
> >>>> strategy is to land the revert asap and when the storm disappears work
> >>>> on a different solution.  
> >>>
> >>> Ack, Fedora is getting some bug reports about this too. Since both
> >>> you (Ricardo) and Laurant seemed to be on top of this I didn't take
> >>> a closer look yet. But this definitely is hitting users and we
> >>> need to fix this.
> >>>
> >>> Since we still don't have a fix yet we really should revert the commit
> >>> causing this problem ASAP.  
> >>
> >> Hans (Verkuil) if Hans (de Goede) adds a Reviewed-by or a Acked-by,
> >> could you take this patch to the media-committers/fixes branch ?
> > 
> > I can pick it as well. From what I got, Hans de Goede is also ok
> > with such change.
> 
> Yes I have just replied to the revert patch with my reviewed-by. Mauro
> if you can pick this up and send it to Linus soon(ish) that would be
> great.
> 
> Can you also please add a Cc: stable@vger.kernel.org tag while
> merging it?  This will need to be backported to kernels which have
> the troublesome commit.

I was planning to send a fixes pull request for this once -rc1 comes out
(so basically on Monday). As we're in the middle of the merge window,
the patch couldn't be merged right away.

I'm also fine if Mauro picks it up, that's easier for me. If it hasn't
been merged in the fixes branch on Monday, I'll send the pull request.

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID"
  2025-01-14 20:00                         ` [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID" Thadeu Lima de Souza Cascardo
  2025-01-20 11:52                           ` Ricardo Ribalda
  2025-01-31 16:35                           ` Hans de Goede
@ 2025-01-31 16:59                           ` Laurent Pinchart
  2 siblings, 0 replies; 24+ messages in thread
From: Laurent Pinchart @ 2025-01-31 16:59 UTC (permalink / raw)
  To: Thadeu Lima de Souza Cascardo
  Cc: linux-media, Ricardo Ribalda, Tomasz Sikora, hverkuil-cisco,
	kernel-dev, mchehab, syzbot+0584f746fde3d52b4675,
	syzbot+dd320d114deb3f5bb79b

Hi Thadeu,

Thank you for the patch.

On Tue, Jan 14, 2025 at 05:00:45PM -0300, Thadeu Lima de Souza Cascardo wrote:
> This reverts commit 3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195.
> 
> Tomasz has reported that his device, Generalplus Technology Inc. 808 Camera,
> with ID 1b3f:2002, stopped being detected:
> 
> $ ls -l /dev/video*
> zsh: no matches found: /dev/video*
> [    7.230599] usb 3-2: Found multiple Units with ID 5
> 
> This particular device is non-compliant, having both the Output Terminal
> and Processing Unit with ID 5. uvc_scan_fallback, though, is able to build
> a chain. However, when media elements are added and uvc_mc_create_links
> call uvc_entity_by_id, it will get the incorrect entity,
> media_create_pad_link will WARN, and it will fail to register the entities.
> 
> In order to reinstate support for such devices in a timely fashion,
> reverting the fix for these warnings is appropriate. A proper fix that
> considers the existence of such non-compliant devices will be submitted in
> a later development cycle.
> 
> Reported-by: Tomasz Sikora <sikora.tomus@gmail.com>
> Fixes: 3dd075fe8ebb ("media: uvcvideo: Require entities to have a non-zero unique ID")
> Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@igalia.com>

Cc: stable@vger.kernel.org
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  drivers/media/usb/uvc/uvc_driver.c | 70 ++++++++++++------------------
>  1 file changed, 27 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index b3c8411dc05c..9febd2375636 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -775,27 +775,14 @@ static const u8 uvc_media_transport_input_guid[16] =
>  	UVC_GUID_UVC_MEDIA_TRANSPORT_INPUT;
>  static const u8 uvc_processing_guid[16] = UVC_GUID_UVC_PROCESSING;
>  
> -static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
> -					       u16 id, unsigned int num_pads,
> -					       unsigned int extra_size)
> +static struct uvc_entity *uvc_alloc_entity(u16 type, u16 id,
> +		unsigned int num_pads, unsigned int extra_size)
>  {
>  	struct uvc_entity *entity;
>  	unsigned int num_inputs;
>  	unsigned int size;
>  	unsigned int i;
>  
> -	/* Per UVC 1.1+ spec 3.7.2, the ID should be non-zero. */
> -	if (id == 0) {
> -		dev_err(&dev->udev->dev, "Found Unit with invalid ID 0.\n");
> -		return ERR_PTR(-EINVAL);
> -	}
> -
> -	/* Per UVC 1.1+ spec 3.7.2, the ID is unique. */
> -	if (uvc_entity_by_id(dev, id)) {
> -		dev_err(&dev->udev->dev, "Found multiple Units with ID %u\n", id);
> -		return ERR_PTR(-EINVAL);
> -	}
> -
>  	extra_size = roundup(extra_size, sizeof(*entity->pads));
>  	if (num_pads)
>  		num_inputs = type & UVC_TERM_OUTPUT ? num_pads : num_pads - 1;
> @@ -805,7 +792,7 @@ static struct uvc_entity *uvc_alloc_new_entity(struct uvc_device *dev, u16 type,
>  	     + num_inputs;
>  	entity = kzalloc(size, GFP_KERNEL);
>  	if (entity == NULL)
> -		return ERR_PTR(-ENOMEM);
> +		return NULL;
>  
>  	entity->id = id;
>  	entity->type = type;
> @@ -917,10 +904,10 @@ static int uvc_parse_vendor_control(struct uvc_device *dev,
>  			break;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, UVC_VC_EXTENSION_UNIT,
> -					    buffer[3], p + 1, 2 * n);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(UVC_VC_EXTENSION_UNIT, buffer[3],
> +					p + 1, 2*n);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->guid, &buffer[4], 16);
>  		unit->extension.bNumControls = buffer[20];
> @@ -1029,10 +1016,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		term = uvc_alloc_new_entity(dev, type | UVC_TERM_INPUT,
> -					    buffer[3], 1, n + p);
> -		if (IS_ERR(term))
> -			return PTR_ERR(term);
> +		term = uvc_alloc_entity(type | UVC_TERM_INPUT, buffer[3],
> +					1, n + p);
> +		if (term == NULL)
> +			return -ENOMEM;
>  
>  		if (UVC_ENTITY_TYPE(term) == UVC_ITT_CAMERA) {
>  			term->camera.bControlSize = n;
> @@ -1088,10 +1075,10 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return 0;
>  		}
>  
> -		term = uvc_alloc_new_entity(dev, type | UVC_TERM_OUTPUT,
> -					    buffer[3], 1, 0);
> -		if (IS_ERR(term))
> -			return PTR_ERR(term);
> +		term = uvc_alloc_entity(type | UVC_TERM_OUTPUT, buffer[3],
> +					1, 0);
> +		if (term == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(term->baSourceID, &buffer[7], 1);
>  
> @@ -1110,10 +1097,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
> -					    p + 1, 0);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, 0);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->baSourceID, &buffer[5], p);
>  
> @@ -1133,9 +1119,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3], 2, n);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(buffer[2], buffer[3], 2, n);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->baSourceID, &buffer[4], 1);
>  		unit->processing.wMaxMultiplier =
> @@ -1162,10 +1148,9 @@ static int uvc_parse_standard_control(struct uvc_device *dev,
>  			return -EINVAL;
>  		}
>  
> -		unit = uvc_alloc_new_entity(dev, buffer[2], buffer[3],
> -					    p + 1, n);
> -		if (IS_ERR(unit))
> -			return PTR_ERR(unit);
> +		unit = uvc_alloc_entity(buffer[2], buffer[3], p + 1, n);
> +		if (unit == NULL)
> +			return -ENOMEM;
>  
>  		memcpy(unit->guid, &buffer[4], 16);
>  		unit->extension.bNumControls = buffer[20];
> @@ -1305,10 +1290,9 @@ static int uvc_gpio_parse(struct uvc_device *dev)
>  		return dev_err_probe(&dev->udev->dev, irq,
>  				     "No IRQ for privacy GPIO\n");
>  
> -	unit = uvc_alloc_new_entity(dev, UVC_EXT_GPIO_UNIT,
> -				    UVC_EXT_GPIO_UNIT_ID, 0, 1);
> -	if (IS_ERR(unit))
> -		return PTR_ERR(unit);
> +	unit = uvc_alloc_entity(UVC_EXT_GPIO_UNIT, UVC_EXT_GPIO_UNIT_ID, 0, 1);
> +	if (!unit)
> +		return -ENOMEM;
>  
>  	unit->gpio.gpio_privacy = gpio_privacy;
>  	unit->gpio.irq = irq;

-- 
Regards,

Laurent Pinchart

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2025-01-31 16:59 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CADBf=5nJVddk-yPVw3T5GH9JEPOxnO8McPJHaxtnPBvLCnp42Q@mail.gmail.com>
2025-01-06  7:27 ` [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID Laurent Pinchart
2025-01-06 10:55 ` Thadeu Lima de Souza Cascardo
     [not found]   ` <CADBf=5nS8_cQvG3mRnXe_MGYmFMh=Myf_eptPqN9hgNMu73Wjg@mail.gmail.com>
2025-01-08 15:32     ` Thadeu Lima de Souza Cascardo
2025-01-08 15:36       ` Laurent Pinchart
2025-01-08 15:56         ` Thadeu Lima de Souza Cascardo
2025-01-08 22:14           ` Tomasz Sikora
2025-01-09 10:47             ` Thadeu Lima de Souza Cascardo
2025-01-13 18:50               ` Laurent Pinchart
2025-01-14  3:01                 ` Ricardo Ribalda
2025-01-14 12:41                   ` Thadeu Lima de Souza Cascardo
2025-01-14 15:20                     ` Ricardo Ribalda
2025-01-14 17:26                       ` Thadeu Lima de Souza Cascardo
2025-01-14 20:00                         ` [PATCH] Revert "media: uvcvideo: Require entities to have a non-zero unique ID" Thadeu Lima de Souza Cascardo
2025-01-20 11:52                           ` Ricardo Ribalda
2025-01-31 10:04                             ` Ricardo Ribalda
2025-01-31 11:12                               ` Hans de Goede
2025-01-31 11:17                                 ` Ricardo Ribalda
2025-01-31 14:06                                   ` Mauro Carvalho Chehab
2025-01-31 14:30                                     ` Hans Verkuil
2025-01-31 16:38                                     ` Hans de Goede
2025-01-31 16:57                                       ` Laurent Pinchart
2025-01-31 16:35                           ` Hans de Goede
2025-01-31 16:59                           ` Laurent Pinchart
2025-01-14 12:37                 ` [PATCH v3 1/1] media: uvcvideo: require entities to have a non-zero unique ID Thadeu Lima de Souza Cascardo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox