On Sat, Feb 13, 2021 at 09:35:31PM +0000, [email protected] wrote:

> February 13, 2021 12:34 PM, "Marcus Glocker" <[email protected]> wrote:
> 
> > On Sat, Feb 13, 2021 at 04:50:46PM +0000, [email protected] wrote:
> > 
> >> February 13, 2021 10:44 AM, "Anton Lindqvist" <[email protected]> wrote:
> >> 
> >> Hi,
> >> 
> >> On Sat, Feb 13, 2021 at 01:58:28PM +0000, [email protected] wrote:
> >> 
> >> On amd64, upgrading from 6.8 stable to snapshot my Logitech G413 \
> >> keyboard is not sending keypresses. i.e) Pressing the "a" key \
> >> does nothing. There???s an error message saying \
> >> ???uhidev_intr: bad repid 48??? To test that it's not a \
> >> problem with my keyboard I noticed that the function keys still work. \
> >> (The keyboard light). Also to test it's not just my computer I \
> >> plugged in a different keyboard and everything works as it should. \
> >> Below is my dmesg from snapshot:
> >> 
> >> That's probably caused by the new uhidpp driver. A dmesg from a kernel
> >> before the upgrade where the keyboard did work would be helpful.
> >> 
> >> Hello, here's a dmesg from 6.8 where the keyboard works:
> > 
> > Can you please try to run the -current kernel with uhidpp(4) disabled?
> 
> I wasn't able to get keyboard input at the UKC prompt so I \
> instead ran config(8) and disabled uhidpp there. I hope \
> that doesn't impact any debugging. \

That's fine, too.
 
> I disabled uhidpp but the problem still persists. There's still \
> the error "uhidev_intr: bad repid 48". Below is a dmesg of uhidpp \
> disabled:

OK, looks like related to the changes in uhidev(4) made for uhidpp(4).
Can you please try this diff for a test?


Index: uhidev.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/uhidev.c,v
retrieving revision 1.88
diff -u -p -u -p -r1.88 uhidev.c
--- uhidev.c    11 Feb 2021 06:55:10 -0000      1.88
+++ uhidev.c    13 Feb 2021 22:03:17 -0000
@@ -256,13 +256,8 @@ uhidev_attach(struct device *parent, str
        /* Look for a driver claiming all report IDs first. */
        dev = config_found_sm(self, &uha, NULL, uhidevsubmatch);
        if (dev != NULL) {
-               for (repid = 0; repid < nrepid; repid++) {
-                       /*
-                        * Could already be assigned by uhidev_set_report_dev().
-                        */
-                       if (sc->sc_subdevs[repid] == NULL)
-                               sc->sc_subdevs[repid] = (struct uhidev *)dev;
-               }
+               for (repid = 0; repid < nrepid; repid++)
+                       sc->sc_subdevs[repid] = (struct uhidev *)dev;
                return;
        }
 
@@ -271,10 +266,6 @@ uhidev_attach(struct device *parent, str
                if (hid_report_size(desc, size, hid_input, repid) == 0 &&
                    hid_report_size(desc, size, hid_output, repid) == 0 &&
                    hid_report_size(desc, size, hid_feature, repid) == 0)
-                       continue;
-
-               /* Could already be assigned by uhidev_set_report_dev(). */
-               if (sc->sc_subdevs[repid] != NULL)
                        continue;
 
                uha.reportid = repid;

Reply via email to