Date: Tue, 23 Jan 2018 13:36:56 +0100 From: Hans Petter Selasky <hps@selasky.org> To: Johannes Lundberg <johalun0@gmail.com>, blubee blubeeme <gurenchan@gmail.com> Cc: Adrian Chadd <adrian.chadd@gmail.com>, Ian Lepore <ian@freebsd.org>, freebsd-current <freebsd-current@freebsd.org> Subject: Re: Periodical interrupt storm when playing game with USB keyboard Message-ID: <fbf22858-acf3-bdf7-5658-7ddeb1cb82a1@selasky.org> In-Reply-To: <CAECmPws_NNrrxpaNrqqX6yMN4gcdcUUY_fWD=qMC-GkRuFXrZg@mail.gmail.com> References: <CAECmPwvDQBYw=mKJpZfUdKpXSC8GysZKSk0f9qaZEXCvy_QeMA@mail.gmail.com> <e2851846-0678-5cb9-0fce-e9cf49c41a2e@selasky.org> <CAECmPwvgMDBTUjhAERe4bKLgNYCim9bwdHw2JEL0RgTckMjSDw@mail.gmail.com> <CAECmPwtWr0t5_xLgg4NMxnjz317sqnfR9-ttH62szq4fwPdO=Q@mail.gmail.com> <64218617-98d2-0e6e-5872-e44106e61bf7@selasky.org> <1516569725.42536.99.camel@freebsd.org> <CAECmPws07U1=KkqgrjHotjnbPhX53n2L9Jj36guLruTJ-wc%2BCw@mail.gmail.com> <0aceb3ff-4938-1b29-d493-d83ce82cc853@selasky.org> <CAECmPwvr2on6_DDehnHd%2BRq1a1r2s-ib99MsabDSbxGo7Ykuhw@mail.gmail.com> <CAJ-VmoktYt4q4LsQ8x-n4xkmH=x6O=vWXUO-Zk4Gj74x8EGAFA@mail.gmail.com> <CALM2mEnUm8miuSFpTHbn3q6s9b0bjQ6mM7CWSX_jiTY1dZ3DMQ@mail.gmail.com> <CAECmPws_NNrrxpaNrqqX6yMN4gcdcUUY_fWD=qMC-GkRuFXrZg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 01/23/18 12:27, Johannes Lundberg wrote: > Hi all > > Some quick dtracing with play causing lag, vs play not causing lag (that is > not hold down any key on a usb keyboard for too long). > > Hi, The only thing I can think about is that one or more of kb_delay1 or kb_delay2 are zero: sys/dev/usb/input/ukbd.c > case KDSETREPEAT: /* set keyboard repeat rate (new > * interface) */ > if (!KBD_HAS_DEVICE(kbd)) { > return (0); > } > /* > * Convert negative, zero and tiny args to the same limits > * as atkbd. We could support delays of 1 msec, but > * anything much shorter than the shortest atkbd value > * of 250.34 is almost unusable as well as incompatible. > */ > kbd->kb_delay1 = imax(((int *)arg)[0], 250); > kbd->kb_delay2 = imax(((int *)arg)[1], 34); > #ifdef EVDEV_SUPPORT > if (sc->sc_evdev != NULL) > evdev_push_repeats(sc->sc_evdev, kbd); > #endif > return (0); Can you add some prints in ukbd.c where kb_delayX are set and see if their value are zero? Lowest supported value should be 1. --HPS
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?fbf22858-acf3-bdf7-5658-7ddeb1cb82a1>