<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/s390/cio, branch linux-4.8.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.8.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.8.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2016-10-31T11:02:12Z</updated>
<entry>
<title>s390/cio: fix accidental interrupt enabling during resume</title>
<updated>2016-10-31T11:02:12Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-09-28T11:36:19Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a1ad62a1ca2a01bbf891cafe1b92f7b5d095f10d'/>
<id>urn:sha1:a1ad62a1ca2a01bbf891cafe1b92f7b5d095f10d</id>
<content type='text'>
commit d53c51f26145657aa7c55fa396f93677e613548d upstream.

Since commit 9f3d6d7 chsc_get_channel_measurement_chars is called with
interrupts disabled during resume from hibernate. Since this function
used spin_unlock_irq, interrupts have been enabled accidentally. Fix
this by using the irqsave variant.

Since we can't guarantee the IRQ-enablement state for all (future/
external) callers, change the locking in related functions to prevent
similar bugs in the future.

Fixes: 9f3d6d7 ("s390/cio: update measurement characteristics")
Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Peter Oberparleiter &lt;oberpar@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>s390/qdio: avoid reschedule of outbound tasklet once killed</title>
<updated>2016-08-08T14:01:28Z</updated>
<author>
<name>Ursula Braun</name>
</author>
<published>2016-08-05T10:33:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9bce8b2cbebf9f11b41021ccb98c6b18d1796edd'/>
<id>urn:sha1:9bce8b2cbebf9f11b41021ccb98c6b18d1796edd</id>
<content type='text'>
During qdio_shutdown the queue tasklets are killed for all inbound and
outbound queues. The queue structures might be freed after
qdio_shutdown.
Thus it must be guaranteed that these queue tasklets are not rescheduled
after that. In addition the outbound queue timers are deleted and it
must
be guaranteed that these timers are not restarted after qdio_shutdown
processing. Timer deletion should make use of del_timer_sync() to make
sure qdio_outbound_timer() is finished on other CPUs as well. Queue
tasklets should be scheduled in state QDIO_IRQ_STATE_ACTIVE only.

Signed-off-by: Ursula Braun &lt;ubraun@linux.vnet.ibm.com&gt;
Reviewed-by: Benjamin Block &lt;bblock@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/qdio: remove checks for ccw device internal state</title>
<updated>2016-08-08T13:41:34Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-08-02T14:01:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6e30c549f6cab7a41d0934cea80822a2211132ae'/>
<id>urn:sha1:6e30c549f6cab7a41d0934cea80822a2211132ae</id>
<content type='text'>
Prior to starting IO qdio checks for the internal state of the ccw
device. These checks happen without locking, so consistency between
state evaluation and starting of the IO is not guaranteed.

Since the internal state is checked during ccw_device_start it is
safe to get rid of these additional checks.

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Cornelia Huck &lt;cornelia.huck@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/qdio: fix double return code evaluation</title>
<updated>2016-08-08T13:41:34Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-07-29T12:00:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ddebf6612c5dcc479725867b9fd9a4d98f41350f'/>
<id>urn:sha1:ddebf6612c5dcc479725867b9fd9a4d98f41350f</id>
<content type='text'>
qdio sometimes checks return codes twice. First with the ccw device's
lock held and then a 2nd time after the lock is released. Simplify
the code by releasing the lock earlier and unify the return code
evaluation.

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Ursula Braun &lt;ubraun@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/qdio: get rid of spin_lock_irqsave usage</title>
<updated>2016-08-08T13:41:33Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-07-29T11:41:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a48ed867153c6d2f6d058267213a82dbd8b6737a'/>
<id>urn:sha1:a48ed867153c6d2f6d058267213a82dbd8b6737a</id>
<content type='text'>
All qdio functions that use spin_lock_irqsave are never used
from irq context. Thus it is safe to convert all of them to
use spin_lock_irq.

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Ursula Braun &lt;ubraun@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/cio: remove subchannel_id from ccw_device_private</title>
<updated>2016-08-08T13:41:33Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-07-29T08:43:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1ab50a99f8cc6f4d761421d55a4044ad7f185cb5'/>
<id>urn:sha1:1ab50a99f8cc6f4d761421d55a4044ad7f185cb5</id>
<content type='text'>
A copy of struct subchannel_id is maintained in ccw_device_private.
The subchannel id is a property of the subchannel. The additional
copy is not needed.

Internal users can obtain it from subchannel.schid - device drivers
can use ccw_device_get_schid().

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Cornelia Huck &lt;cornelia.huck@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/qdio: obtain subchannel_id via ccw_device_get_schid()</title>
<updated>2016-08-08T13:41:33Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-07-28T18:30:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9080c92494f0d7e2bca1197bbddcc417117057c3'/>
<id>urn:sha1:9080c92494f0d7e2bca1197bbddcc417117057c3</id>
<content type='text'>
We want to get rid of the copy of struct subchannel_id maintained in
ccw_device_private, so obtain it using ccw_device_get_schid().

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Cornelia Huck &lt;cornelia.huck@de.ibm.com&gt;
Reviewed-by: Ursula Braun &lt;ubraun@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/cio: stop using subchannel_id from ccw_device_private</title>
<updated>2016-08-08T13:41:32Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-07-28T18:26:37Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7de6a63ca2ff21ea67e50a546ca0e9bb6e2b0718'/>
<id>urn:sha1:7de6a63ca2ff21ea67e50a546ca0e9bb6e2b0718</id>
<content type='text'>
We want to get rid of the copy of struct subchannel_id maintained in
ccw_device_private, so obtain it from the subchannel directly.

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Cornelia Huck &lt;cornelia.huck@de.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/cio: fix premature wakeup during chp configure</title>
<updated>2016-07-31T09:27:57Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-07-19T08:53:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4475aeb8b77db34dea96b09900ba0cb245b6fb42'/>
<id>urn:sha1:4475aeb8b77db34dea96b09900ba0cb245b6fb42</id>
<content type='text'>
We store requests for channel path configure operations in an array but
maintain an additional cfg_busy variable (indicating if we have requests
stored in said array). When 2 tasks request a channel path configure
operation cfg_busy could be set to 0 even if we still have unprocessed
requests. This would lead to the second task being woken up although its
request was not processed yet.

Fix that by getting rid of cfg_busy and use the chp_cfg_task array
in the wake up condition.

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Peter Oberparleiter &lt;oberpar@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
<entry>
<title>s390/cio: convert cfg_lock mutex to spinlock</title>
<updated>2016-07-31T09:27:57Z</updated>
<author>
<name>Sebastian Ott</name>
</author>
<published>2016-07-19T08:43:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=837c5220557270e652d89f68a9fb12a5e72e8a7a'/>
<id>urn:sha1:837c5220557270e652d89f68a9fb12a5e72e8a7a</id>
<content type='text'>
cfg_lock is never held long and we don't want to sleep while the
lock is being held. Thus it can be converted to a simple spinlock.
In addition we can now use the lock during the evaluation of a
wake_up condition.

Signed-off-by: Sebastian Ott &lt;sebott@linux.vnet.ibm.com&gt;
Reviewed-by: Peter Oberparleiter &lt;oberpar@linux.vnet.ibm.com&gt;
Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
</content>
</entry>
</feed>
