<feed xmlns='http://www.w3.org/2005/Atom'>
<title>BMC/Intel-BMC/linux.git/drivers/hid/usbhid, branch dev-4.3</title>
<subtitle>Intel OpenBMC Linux kernel source tree (mirror)</subtitle>
<id>https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev-4.3</id>
<link rel='self' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/atom?h=dev-4.3'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/'/>
<updated>2016-02-19T22:28:23+00:00</updated>
<entry>
<title>HID: usbhid: fix recursive deadlock</title>
<updated>2016-02-19T22:28:23+00:00</updated>
<author>
<name>Ioan-Adrian Ratiu</name>
<email>adi@adirat.com</email>
</author>
<published>2015-11-20T20:19:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=e52edae1fe3b60307d460a5ccb9a3403e14d8bc9'/>
<id>urn:sha1:e52edae1fe3b60307d460a5ccb9a3403e14d8bc9</id>
<content type='text'>
commit e470127e9606b1fa151c4184243e61296d1e0c0f upstream.

The critical section protected by usbhid-&gt;lock in hid_ctrl() is too
big and because of this it causes a recursive deadlock. "Too big" means
the case statement and the call to hid_input_report() do not need to be
protected by the spinlock (no URB operations are done inside them).

The deadlock happens because in certain rare cases drivers try to grab
the lock while handling the ctrl irq which grabs the lock before them
as described above. For example newer wacom tablets like 056a:033c try
to reschedule proximity reads from wacom_intuos_schedule_prox_event()
calling hid_hw_request() -&gt; usbhid_request() -&gt; usbhid_submit_report()
which tries to grab the usbhid lock already held by hid_ctrl().

There are two ways to get out of this deadlock:
    1. Make the drivers work "around" the ctrl critical region, in the
    wacom case for ex. by delaying the scheduling of the proximity read
    request itself to a workqueue.
    2. Shrink the critical region so the usbhid lock protects only the
    instructions which modify usbhid state, calling hid_input_report()
    with the spinlock unlocked, allowing the device driver to grab the
    lock first, finish and then grab the lock afterwards in hid_ctrl().

This patch implements the 2nd solution.

Signed-off-by: Ioan-Adrian Ratiu &lt;adi@adirat.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
Signed-off-by: Jason Gerecke &lt;jason.gerecke@wacom.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>Merge branch 'for-4.3/microsoft' into for-linus</title>
<updated>2015-09-01T13:38:33+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2015-09-01T13:38:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=f212bd95a9f62b7929c59b16e1d3bbde2fb4081d'/>
<id>urn:sha1:f212bd95a9f62b7929c59b16e1d3bbde2fb4081d</id>
<content type='text'>
Conflicts:
	drivers/hid/usbhid/hid-quirks.c
</content>
</entry>
<entry>
<title>Merge branches 'for-4.2/upstream-fixes-devm-fixed' and 'for-4.3/upstream' into for-linus</title>
<updated>2015-09-01T13:23:13+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2015-09-01T13:23:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=3e097d1271ecdff2f251a54ddfc5eaa1f9821e96'/>
<id>urn:sha1:3e097d1271ecdff2f251a54ddfc5eaa1f9821e96</id>
<content type='text'>
</content>
</entry>
<entry>
<title>HID: quirks: add QUIRK_NOGET for an other TPV touchscreen</title>
<updated>2015-08-24T12:00:47+00:00</updated>
<author>
<name>Benjamin Tissoires</name>
<email>benjamin.tissoires@redhat.com</email>
</author>
<published>2015-08-21T14:18:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c9b57724b38d4c1555ee49418be3d76801e3327c'/>
<id>urn:sha1:c9b57724b38d4c1555ee49418be3d76801e3327c</id>
<content type='text'>
Looks like 0x8882 needs the same quirk than 0x8883.
Given that both devices claim they are "TPV OpticalTouchScreen" rename
the 0x8883 to add its PID in the #define.

Reported-by: Blaine Lee &lt;blaine.j.lee@medtronic.com&gt;
Signed-off-by: Benjamin Tissoires &lt;benjamin.tissoires@redhat.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: usbhid: Fix the check for HID_RESET_PENDING in hid_io_error</title>
<updated>2015-08-18T21:59:41+00:00</updated>
<author>
<name>Don Zickus</name>
<email>dzickus@redhat.com</email>
</author>
<published>2015-08-10T16:06:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=3af4e5a95184d6d3c1c6a065f163faa174a96a1d'/>
<id>urn:sha1:3af4e5a95184d6d3c1c6a065f163faa174a96a1d</id>
<content type='text'>
It was reported that after 10-20 reboots, a usb keyboard plugged
into a docking station would not work unless it was replugged in.

Using usbmon, it turns out the interrupt URBs were streaming with
callback errors of -71 for some reason.  The hid-core.c::hid_io_error was
supposed to retry and then reset, but the reset wasn't really happening.

The check for HID_NO_BANDWIDTH was inverted.  Fix was simple.

Tested by reporter and locally by me by unplugging a keyboard halfway until I
could recreate a stream of errors but no disconnect.

Signed-off-by: Don Zickus &lt;dzickus@redhat.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>HID: microsoft: Add Surface 3 type cover</title>
<updated>2015-07-24T12:52:19+00:00</updated>
<author>
<name>Stephen Just</name>
<email>stephenjust@gmail.com</email>
</author>
<published>2015-07-23T03:11:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=0439de75d32c249bd9f5824ffd5e40c4c2109d77'/>
<id>urn:sha1:0439de75d32c249bd9f5824ffd5e40c4c2109d77</id>
<content type='text'>
Adding support for the Microsoft Surface 3 (non-pro) Type Cover.

The existing definitions and quirks are actually for the Surface
Pro 3 type covers. I've renamed the old constants to reflect that
they belong to the Surface Pro 3, and added a new constant and
matching code for the Surface 3.

Signed-off-by: Stephen Just &lt;stephenjust@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
</entry>
<entry>
<title>HID: usbhid: no flushing if device is already polled</title>
<updated>2015-07-08T09:38:19+00:00</updated>
<author>
<name>Oliver Neukum</name>
<email>oneukum@suse.de</email>
</author>
<published>2015-06-29T09:10:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=615322f6ac358f9c94b483d0a16f3f46fcb27b1c'/>
<id>urn:sha1:615322f6ac358f9c94b483d0a16f3f46fcb27b1c</id>
<content type='text'>
During open() it is unnecessary to wait for the device to flush
stale inputs if the device is polled while closed due to a quirk
or opening fails.

Signed-off-by: Oliver Neukum &lt;oneukum@suse.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.com&gt;
</content>
</entry>
<entry>
<title>HID: microsoft: Add quirk for MS Surface Type/Touch cover</title>
<updated>2015-06-29T12:28:25+00:00</updated>
<author>
<name>Reyad Attiyat</name>
<email>reyad.attiyat@gmail.com</email>
</author>
<published>2015-06-29T00:22:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=c5b2b809cee8db018ac68566fe2114c175d79b5b'/>
<id>urn:sha1:c5b2b809cee8db018ac68566fe2114c175d79b5b</id>
<content type='text'>
The newer firmware on MS Surface 2 tablets causes the type and touch cover keyboards to timeout when waiting for reports.
The quirk HID_QUIRK_NO_INIT_REPORTS allows them to function normally.

Signed-off-by: Reyad Attiyat &lt;reyad.attiyat@gmail.com&gt;
Signed-off-by: Jiri Kosina &lt;jkosina@suse.cz&gt;
</content>
</entry>
<entry>
<title>Merge branches 'for-4.2/i2c-hid', 'for-4.2/lenovo', 'for-4.2/plantronics', 'for-4.2/rmi', 'for-4.2/sensor-hub', 'for-4.2/sjoy', 'for-4.2/sony' and 'for-4.2/wacom' into for-linus</title>
<updated>2015-06-22T14:23:43+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2015-06-22T14:23:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=ec3b34e1975670e68be3abff76f56dbb41dd417c'/>
<id>urn:sha1:ec3b34e1975670e68be3abff76f56dbb41dd417c</id>
<content type='text'>
Conflicts:
	drivers/hid/wacom_wac.c
</content>
</entry>
<entry>
<title>Merge branches 'for-4.1/upstream-fixes', 'for-4.2/upstream' and 'for-4.2/logitech' into for-linus</title>
<updated>2015-06-22T14:22:06+00:00</updated>
<author>
<name>Jiri Kosina</name>
<email>jkosina@suse.cz</email>
</author>
<published>2015-06-22T14:22:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/BMC/Intel-BMC/linux.git/commit/?id=817a3125819983956bb8a22455a569aac4e8ea34'/>
<id>urn:sha1:817a3125819983956bb8a22455a569aac4e8ea34</id>
<content type='text'>
Conflicts:
	drivers/hid/hid-logitech-hidpp.c
</content>
</entry>
</feed>
