Merge branch 'timers/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / drivers / s390 / cio / qdio.c
index 17df222..2bf36e1 100644 (file)
@@ -2140,8 +2140,8 @@ qdio_handler(struct ccw_device *cdev, unsigned long intparm, struct irb *irb)
        QDIO_DBF_TEXT4(0, trace, dbf_text);
 #endif /* CONFIG_QDIO_DEBUG */
 
-        cstat = irb->scsw.cstat;
-        dstat = irb->scsw.dstat;
+       cstat = irb->scsw.cmd.cstat;
+       dstat = irb->scsw.cmd.dstat;
 
        switch (irq_ptr->state) {
        case QDIO_IRQ_STATE_INACTIVE:
@@ -2354,9 +2354,6 @@ tiqdio_check_chsc_availability(void)
 {
        char dbf_text[15];
 
-       if (!css_characteristics_avail)
-               return -EIO;
-
        /* Check for bit 41. */
        if (!css_general_characteristics.aif) {
                QDIO_PRINT_WARN("Adapter interruption facility not " \
@@ -3716,7 +3713,8 @@ tiqdio_register_thinints(void)
        char dbf_text[20];
 
        tiqdio_ind =
-               s390_register_adapter_interrupt(&tiqdio_thinint_handler, NULL);
+               s390_register_adapter_interrupt(&tiqdio_thinint_handler, NULL,
+                                               TIQDIO_THININT_ISC);
        if (IS_ERR(tiqdio_ind)) {
                sprintf(dbf_text, "regthn%lx", PTR_ERR(tiqdio_ind));
                QDIO_DBF_TEXT0(0,setup,dbf_text);
@@ -3732,7 +3730,8 @@ static void
 tiqdio_unregister_thinints(void)
 {
        if (tiqdio_ind)
-               s390_unregister_adapter_interrupt(tiqdio_ind);
+               s390_unregister_adapter_interrupt(tiqdio_ind,
+                                                 TIQDIO_THININT_ISC);
 }
 
 static int
@@ -3893,6 +3892,7 @@ init_QDIO(void)
                                            qdio_mempool_alloc,
                                            qdio_mempool_free, NULL);
 
+       isc_register(QDIO_AIRQ_ISC);
        if (tiqdio_check_chsc_availability())
                QDIO_PRINT_ERR("Not all CHSCs supported. Continuing.\n");
 
@@ -3905,6 +3905,7 @@ static void __exit
 cleanup_QDIO(void)
 {
        tiqdio_unregister_thinints();
+       isc_unregister(QDIO_AIRQ_ISC);
        qdio_remove_procfs_entry();
        qdio_release_qdio_memory();
        qdio_unregister_dbf_views();