s390/qdio: don't touch the dsci in tiqdio_add_input_queues()
authorJulian Wiedmann <jwi@linux.ibm.com>
Tue, 18 Jun 2019 11:12:20 +0000 (13:12 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 2 Jul 2019 14:00:27 +0000 (16:00 +0200)
Current code sets the dsci to 0x00000080. Which doesn't make any sense,
as the indicator area is located in the _left-most_ byte.

Worse: if the dsci is the _shared_ indicator, this potentially clears
the indication of activity for a _different_ device.
tiqdio_thinint_handler() will then have no reason to call that device's
IRQ handler, and the device ends up stalling.

Fixes: d0c9d4a89fff ("[S390] qdio: set correct bit in dsci")
Cc: <stable@vger.kernel.org>
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
drivers/s390/cio/qdio_thinint.c

index 75e4357c1f9dea3771539d6a094626d74976063e..93ee067c10cabffd2c6e69d269a3ccd1a1c79472 100644 (file)
@@ -79,7 +79,6 @@ void tiqdio_add_input_queues(struct qdio_irq *irq_ptr)
        mutex_lock(&tiq_list_lock);
        list_add_rcu(&irq_ptr->input_qs[0]->entry, &tiq_list);
        mutex_unlock(&tiq_list_lock);
-       xchg(irq_ptr->dsci, 1 << 7);
 }
 
 void tiqdio_remove_input_queues(struct qdio_irq *irq_ptr)