* [REGRESSION] Missing bcm5974 touchpad on Macbooks @ 2024-03-04 8:35 Takashi Iwai 2024-03-04 11:26 ` Javier Carrasco 2024-03-04 12:18 ` Linux regression tracking #adding (Thorsten Leemhuis) 0 siblings, 2 replies; 7+ messages in thread From: Takashi Iwai @ 2024-03-04 8:35 UTC (permalink / raw) To: Javier Carrasco; +Cc: Dmitry Torokhov, linux-input, linux-kernel, regressions Hi, we've received a few regression reports for openSUSE Leap about the missing touchpad on Macbooks. After debugging, this turned out to be the backport of the commit 2b9c3eb32a699acdd4784d6b93743271b4970899 Input: bcm5974 - check endpoint type before starting traffic And, the same regression was confirmed on the upstream 6.8-rc6 kernel. Reverting the commit above fixes the problem, the touchpad reappears. The detailed hardware info is found at: https://bugzilla.suse.com/show_bug.cgi?id=1220030 Feel free to join the bugzilla above, or let me know if you need something for debugging, then I'll delegate on the bugzilla. thanks, Takashi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [REGRESSION] Missing bcm5974 touchpad on Macbooks 2024-03-04 8:35 [REGRESSION] Missing bcm5974 touchpad on Macbooks Takashi Iwai @ 2024-03-04 11:26 ` Javier Carrasco 2024-03-04 12:45 ` Takashi Iwai 2024-03-04 12:18 ` Linux regression tracking #adding (Thorsten Leemhuis) 1 sibling, 1 reply; 7+ messages in thread From: Javier Carrasco @ 2024-03-04 11:26 UTC (permalink / raw) To: Takashi Iwai, Javier Carrasco Cc: Dmitry Torokhov, linux-input, linux-kernel, regressions On 04.03.24 09:35, Takashi Iwai wrote: > Hi, > > we've received a few regression reports for openSUSE Leap about the > missing touchpad on Macbooks. After debugging, this turned out to be > the backport of the commit 2b9c3eb32a699acdd4784d6b93743271b4970899 > Input: bcm5974 - check endpoint type before starting traffic > > And, the same regression was confirmed on the upstream 6.8-rc6 > kernel. > > Reverting the commit above fixes the problem, the touchpad reappears. > > The detailed hardware info is found at: > https://bugzilla.suse.com/show_bug.cgi?id=1220030 > > Feel free to join the bugzilla above, or let me know if you need > something for debugging, then I'll delegate on the bugzilla. > > > thanks, > > Takashi > Hi Takashi, The commit adds a check to ensure that the endpoint type is interrupt. According to that report, the issue arose with a MacBook Pro 5.1 (no button, only trackpad endpoint), so the check on the tp_ep address (0x81) returns false. I assume that you see an error message ("Unexpected non-int endpoint) and the probe function fails returning -ENODEV. Do you see any warning in the logs when you revert the commit? It was added to prevent using wrong endpoint types, which will display the following warning: "BOGUS urb xfer, pipe "some_number" != type "another_number"" I am just wondering if for some reason the check on interrupt type is wrong here. Best regards, Javier Carrasco ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [REGRESSION] Missing bcm5974 touchpad on Macbooks 2024-03-04 11:26 ` Javier Carrasco @ 2024-03-04 12:45 ` Takashi Iwai 2024-03-04 14:04 ` Javier Carrasco 2024-03-04 20:21 ` Javier Carrasco 0 siblings, 2 replies; 7+ messages in thread From: Takashi Iwai @ 2024-03-04 12:45 UTC (permalink / raw) To: Javier Carrasco Cc: Takashi Iwai, Javier Carrasco, Dmitry Torokhov, linux-input, linux-kernel, regressions On Mon, 04 Mar 2024 12:26:48 +0100, Javier Carrasco wrote: > > On 04.03.24 09:35, Takashi Iwai wrote: > > Hi, > > > > we've received a few regression reports for openSUSE Leap about the > > missing touchpad on Macbooks. After debugging, this turned out to be > > the backport of the commit 2b9c3eb32a699acdd4784d6b93743271b4970899 > > Input: bcm5974 - check endpoint type before starting traffic > > > > And, the same regression was confirmed on the upstream 6.8-rc6 > > kernel. > > > > Reverting the commit above fixes the problem, the touchpad reappears. > > > > The detailed hardware info is found at: > > https://bugzilla.suse.com/show_bug.cgi?id=1220030 > > > > Feel free to join the bugzilla above, or let me know if you need > > something for debugging, then I'll delegate on the bugzilla. > > > > > > thanks, > > > > Takashi > > > > Hi Takashi, > > The commit adds a check to ensure that the endpoint type is interrupt. > > According to that report, the issue arose with a MacBook Pro 5.1 (no > button, only trackpad endpoint), so the check on the tp_ep address > (0x81) returns false. I assume that you see an error message > ("Unexpected non-int endpoint) and the probe function fails returning > -ENODEV. Right, there is the message. > Do you see any warning in the logs when you revert the commit? It was > added to prevent using wrong endpoint types, which will display the > following warning: "BOGUS urb xfer, pipe "some_number" != type > "another_number"" The revert was tested on the downstream kernel, but it has also the check of bogus pipe, and there was no such warning, as far as I see the report. > I am just wondering if for some reason the check on interrupt type is > wrong here. I'll ask reporters to give the lsusb -v output so that we can take a deeper look. Also, I'm building a test kernel based on 6.8-rc7 with the revert, and ask reporters to test with it, just to be sure. thanks, Takashi ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [REGRESSION] Missing bcm5974 touchpad on Macbooks 2024-03-04 12:45 ` Takashi Iwai @ 2024-03-04 14:04 ` Javier Carrasco 2024-03-04 20:21 ` Javier Carrasco 1 sibling, 0 replies; 7+ messages in thread From: Javier Carrasco @ 2024-03-04 14:04 UTC (permalink / raw) To: Takashi Iwai, Javier Carrasco Cc: Dmitry Torokhov, linux-input, linux-kernel, regressions On 04.03.24 13:45, Takashi Iwai wrote: > On Mon, 04 Mar 2024 12:26:48 +0100, > Javier Carrasco wrote: >> >> On 04.03.24 09:35, Takashi Iwai wrote: >>> Hi, >>> >>> we've received a few regression reports for openSUSE Leap about the >>> missing touchpad on Macbooks. After debugging, this turned out to be >>> the backport of the commit 2b9c3eb32a699acdd4784d6b93743271b4970899 >>> Input: bcm5974 - check endpoint type before starting traffic >>> >>> And, the same regression was confirmed on the upstream 6.8-rc6 >>> kernel. >>> >>> Reverting the commit above fixes the problem, the touchpad reappears. >>> >>> The detailed hardware info is found at: >>> https://bugzilla.suse.com/show_bug.cgi?id=1220030 >>> >>> Feel free to join the bugzilla above, or let me know if you need >>> something for debugging, then I'll delegate on the bugzilla. >>> >>> >>> thanks, >>> >>> Takashi >>> >> >> Hi Takashi, >> >> The commit adds a check to ensure that the endpoint type is interrupt. >> >> According to that report, the issue arose with a MacBook Pro 5.1 (no >> button, only trackpad endpoint), so the check on the tp_ep address >> (0x81) returns false. I assume that you see an error message >> ("Unexpected non-int endpoint) and the probe function fails returning >> -ENODEV. > > Right, there is the message. > >> Do you see any warning in the logs when you revert the commit? It was >> added to prevent using wrong endpoint types, which will display the >> following warning: "BOGUS urb xfer, pipe "some_number" != type >> "another_number"" > > The revert was tested on the downstream kernel, but it has also the > check of bogus pipe, and there was no such warning, as far as I see > the report. > >> I am just wondering if for some reason the check on interrupt type is >> wrong here. > > I'll ask reporters to give the lsusb -v output so that we can take a > deeper look. Also, I'm building a test kernel based on 6.8-rc7 with > the revert, and ask reporters to test with it, just to be sure. > > > thanks, > > Takashi Getting the output of lsusb would be awesome, thank you. The bcm9547 driver has always made the assumption that the endpoint type is interrupt, and the expected output from lsusb would be something like bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt which is what the reverted commit checks. I don't have the specific piece of hardware the report mentions, but I triggered the probe with the endpoint type = interrupt and the check was fine i.e. the probe did not fail. That made me think that the endpoint type could be different, but I am dubious about that. I will keep an eye on the bugzilla you linked, in case we get feedback quickly. Best regards, Javier Carrasco ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [REGRESSION] Missing bcm5974 touchpad on Macbooks 2024-03-04 12:45 ` Takashi Iwai 2024-03-04 14:04 ` Javier Carrasco @ 2024-03-04 20:21 ` Javier Carrasco 2024-03-05 1:15 ` Dmitry Torokhov 1 sibling, 1 reply; 7+ messages in thread From: Javier Carrasco @ 2024-03-04 20:21 UTC (permalink / raw) To: Takashi Iwai, Javier Carrasco Cc: Dmitry Torokhov, linux-input, linux-kernel, regressions, Henrik Rydberg, John Horan On 04.03.24 13:45, Takashi Iwai wrote: > On Mon, 04 Mar 2024 12:26:48 +0100, > Javier Carrasco wrote: >> >> On 04.03.24 09:35, Takashi Iwai wrote: >>> Hi, >>> >>> we've received a few regression reports for openSUSE Leap about the >>> missing touchpad on Macbooks. After debugging, this turned out to be >>> the backport of the commit 2b9c3eb32a699acdd4784d6b93743271b4970899 >>> Input: bcm5974 - check endpoint type before starting traffic >>> >>> And, the same regression was confirmed on the upstream 6.8-rc6 >>> kernel. >>> >>> Reverting the commit above fixes the problem, the touchpad reappears. >>> >>> The detailed hardware info is found at: >>> https://bugzilla.suse.com/show_bug.cgi?id=1220030 >>> >>> Feel free to join the bugzilla above, or let me know if you need >>> something for debugging, then I'll delegate on the bugzilla. >>> >>> >>> thanks, >>> >>> Takashi >>> >> >> Hi Takashi, >> >> The commit adds a check to ensure that the endpoint type is interrupt. >> >> According to that report, the issue arose with a MacBook Pro 5.1 (no >> button, only trackpad endpoint), so the check on the tp_ep address >> (0x81) returns false. I assume that you see an error message >> ("Unexpected non-int endpoint) and the probe function fails returning >> -ENODEV. > > Right, there is the message. > >> Do you see any warning in the logs when you revert the commit? It was >> added to prevent using wrong endpoint types, which will display the >> following warning: "BOGUS urb xfer, pipe "some_number" != type >> "another_number"" > > The revert was tested on the downstream kernel, but it has also the > check of bogus pipe, and there was no such warning, as far as I see > the report. > >> I am just wondering if for some reason the check on interrupt type is >> wrong here. > > I'll ask reporters to give the lsusb -v output so that we can take a > deeper look. Also, I'm building a test kernel based on 6.8-rc7 with > the revert, and ask reporters to test with it, just to be sure. > > > thanks, > > Takashi I retrieved the relevant node from the report that was uploaded a few minutes ago: Bus 003 Device 003: ID 05ac:0237 Apple, Inc. Internal Keyboard/Trackpad (ISO) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x05ac Apple, Inc. idProduct 0x0237 Internal Keyboard/Trackpad (ISO) bcdDevice 0.77 iManufacturer 1 Apple, Inc. iProduct 2 Apple Internal Keyboard / Trackpad iSerial 0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0054 bNumInterfaces 3 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xa0 (Bus Powered) Remote Wakeup MaxPower 40mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 1 Keyboard iInterface 3 Apple Internal Keyboard HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 13 International (ISO) bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 156 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x000a 1x 10 bytes bInterval 8 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 bInterfaceProtocol 0 iInterface 4 Touchpad HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 27 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 2 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 2 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 1 Boot Interface Subclass bInterfaceProtocol 2 Mouse iInterface 4 Touchpad HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.11 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 52 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x84 EP 4 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0008 1x 8 bytes bInterval 8 Device Status: 0x0000 (Bus Powered) There is indeed an interrupt endpoint with address 0x81, but the driver defines bInterfaceProtocol = 2 (Mouse), and the endpoint in that interface is 0x84: #define BCM5974_DEVICE(prod) { \ .match_flags = (USB_DEVICE_ID_MATCH_DEVICE | \ USB_DEVICE_ID_MATCH_INT_CLASS | \ USB_DEVICE_ID_MATCH_INT_PROTOCOL), \ .idVendor = USB_VENDOR_ID_APPLE, \ .idProduct = (prod), \ .bInterfaceClass = USB_INTERFACE_CLASS_HID, \ .bInterfaceProtocol = USB_INTERFACE_PROTOCOL_MOUSE \ } where USB_INTERFACE_PROTOCOL_MOUSE = 2. My interpretation is that the driver is checking if the endpoint with address 0x81 form the interface with bInterfaceProtocol = 2 (that is the last interface of the list, the one with bInterfaceNumber = 2), but it is not found, because its only endpoint has a different address (0x84). Interestingly, 0x84 is the address given to the endpoint of the button interface. The button interface should not be relevant for Macbook 5,1 (TYPE 2 in the driver), according to 43f482b48d03 ("Input: bcm5974 - only setup button urb for TYPE1 devices"). If that is true, does anyone know why bInterfaceProtocol is always set to USB_INTERFACE_PROTOCOL_MOUSE, and why the driver works anyway with bEndpointAddress = 0x81 for the trackpad? The urb setup for 0x84 is only executed for TYPE 1 devices, and the mouse interface does not have an endpoint with address 0x81. Or am I missing something? We could revert the patch in question, but I see no reason why checking an expected interrupt endpoint should cause trouble. It looks like there is something fishy going on. Best regards, Javier Carrasco ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [REGRESSION] Missing bcm5974 touchpad on Macbooks 2024-03-04 20:21 ` Javier Carrasco @ 2024-03-05 1:15 ` Dmitry Torokhov 0 siblings, 0 replies; 7+ messages in thread From: Dmitry Torokhov @ 2024-03-05 1:15 UTC (permalink / raw) To: Javier Carrasco Cc: Takashi Iwai, Javier Carrasco, linux-input, linux-kernel, regressions, Henrik Rydberg, John Horan On Mon, Mar 04, 2024 at 09:21:19PM +0100, Javier Carrasco wrote: > > There is indeed an interrupt endpoint with address 0x81, but the driver > defines bInterfaceProtocol = 2 (Mouse), and the endpoint in that > interface is 0x84: > > #define BCM5974_DEVICE(prod) { \ > .match_flags = (USB_DEVICE_ID_MATCH_DEVICE | \ > USB_DEVICE_ID_MATCH_INT_CLASS | \ > USB_DEVICE_ID_MATCH_INT_PROTOCOL), \ > .idVendor = USB_VENDOR_ID_APPLE, \ > .idProduct = (prod), \ > .bInterfaceClass = USB_INTERFACE_CLASS_HID, \ > .bInterfaceProtocol = USB_INTERFACE_PROTOCOL_MOUSE \ > } > > where USB_INTERFACE_PROTOCOL_MOUSE = 2. > > > My interpretation is that the driver is checking if the endpoint with > address 0x81 form the interface with bInterfaceProtocol = 2 (that is the > last interface of the list, the one with bInterfaceNumber = 2), but it > is not found, because its only endpoint has a different address (0x84). > > Interestingly, 0x84 is the address given to the endpoint of the button > interface. The button interface should not be relevant for Macbook 5,1 > (TYPE 2 in the driver), according to 43f482b48d03 ("Input: bcm5974 - > only setup button urb for TYPE1 devices"). > > If that is true, does anyone know why bInterfaceProtocol is always set > to USB_INTERFACE_PROTOCOL_MOUSE, and why the driver works anyway with > bEndpointAddress = 0x81 for the trackpad? The urb setup for 0x84 is only > executed for TYPE 1 devices, and the mouse interface does not have an > endpoint with address 0x81. Or am I missing something? The driver is naughty, it binds to the 3rd interface (bInterfaceNumber 2) but actually pokes into the 2nd interface with endpoint 0x84 without actually claiming it. Your check expects that the endpoint belongs to the interface that the driver binds to and thus fails. > > We could revert the patch in question, but I see no reason why checking > an expected interrupt endpoint should cause trouble. It looks like there > is something fishy going on. Yes, the driver needs to claim both interfaces and when checking use the right one. I will revert the patch for now given that it causes regression and we can try fixing it again. Thanks. -- Dmitry ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [REGRESSION] Missing bcm5974 touchpad on Macbooks 2024-03-04 8:35 [REGRESSION] Missing bcm5974 touchpad on Macbooks Takashi Iwai 2024-03-04 11:26 ` Javier Carrasco @ 2024-03-04 12:18 ` Linux regression tracking #adding (Thorsten Leemhuis) 1 sibling, 0 replies; 7+ messages in thread From: Linux regression tracking #adding (Thorsten Leemhuis) @ 2024-03-04 12:18 UTC (permalink / raw) To: regressions; +Cc: linux-input, linux-kernel [TLDR: I'm adding this report to the list of tracked Linux kernel regressions; the text you find below is based on a few templates paragraphs you might have encountered already in similar form. See link in footer if these mails annoy you.] On 04.03.24 09:35, Takashi Iwai wrote: > > we've received a few regression reports for openSUSE Leap about the > missing touchpad on Macbooks. After debugging, this turned out to be > the backport of the commit 2b9c3eb32a699acdd4784d6b93743271b4970899 > Input: bcm5974 - check endpoint type before starting traffic > > And, the same regression was confirmed on the upstream 6.8-rc6 > kernel. > > Reverting the commit above fixes the problem, the touchpad reappears. > > The detailed hardware info is found at: > https://bugzilla.suse.com/show_bug.cgi?id=1220030 Thanks for the report. To be sure the issue doesn't fall through the cracks unnoticed, I'm adding it to regzbot, the Linux kernel regression tracking bot: #regzbot ^introduced 2b9c3eb32a699ac #regzbot title Input: missing bcm5974 touchpad on Macbooks #regzbot duplicate: https://bugzilla.suse.com/show_bug.cgi?id=1220030 #regzbot ignore-activity Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat) -- Everything you wanna know about Linux kernel regression tracking: https://linux-regtracking.leemhuis.info/about/#tldr That page also explains what to do if mails like this annoy you. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-03-05 1:15 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2024-03-04 8:35 [REGRESSION] Missing bcm5974 touchpad on Macbooks Takashi Iwai 2024-03-04 11:26 ` Javier Carrasco 2024-03-04 12:45 ` Takashi Iwai 2024-03-04 14:04 ` Javier Carrasco 2024-03-04 20:21 ` Javier Carrasco 2024-03-05 1:15 ` Dmitry Torokhov 2024-03-04 12:18 ` Linux regression tracking #adding (Thorsten Leemhuis)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).