remarkable-linux/drivers/s390
Heiko Carstens e619cd3d61 s390/hmcdrv: fix interrupt registration
The z/VM driver sets bit "63-22" in control register zero to one in order
to enable the CP Service interrupt (0x2603). However the irq subclass mask
that normally corresponds to the CP Service interrupt is
"63-54" (== "63-22-32").

So it looks like the author read the documentation with the 32 bit sized
cr0 register bit positions (== 22), but didn't realize that bit numbers
change, if applied to a 64 bit register (== 54) due to the numbering
scheme.

Also use irq_subclass_register() instead if ctl_set_bit() since multiple
services depend on the service signal subclass mask, which is the correct
bit. This also explains why nobody noticed the bug, since the bit is always
enabled anyway (e.g. pfault).

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Acked-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2015-08-19 10:40:17 +02:00
..
block s390: remove unneeded sizeof(void *) comparisons 2015-08-19 10:03:44 +02:00
char s390/hmcdrv: fix interrupt registration 2015-08-19 10:40:17 +02:00
cio s390: remove unneeded variables 2015-08-07 09:57:01 +02:00
crypto s390/zcrypt: enable s390 hwrng to seed kernel entropy 2015-07-01 09:34:37 +02:00
kvm KVM: s390: virtio-ccw: don't overwrite config space values 2015-07-03 18:55:18 +02:00
net s390: remove unneeded variables 2015-08-07 09:57:01 +02:00
scsi s390: remove unneeded semicolon 2015-08-07 09:57:00 +02:00
Makefile