]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/s390/cio/cio.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[karo-tx-linux.git] / drivers / s390 / cio / cio.c
index 690b8547e828deb81d94a2646459d2babc79dc24..39a8ae54e9c1df044e9c63ab6103f1944ce24665 100644 (file)
@@ -41,6 +41,7 @@
 #include "blacklist.h"
 #include "cio_debug.h"
 #include "chp.h"
+#include "trace.h"
 
 debug_info_t *cio_debug_msg_id;
 debug_info_t *cio_debug_trace_id;
@@ -76,12 +77,9 @@ static int __init cio_debug_init(void)
        return 0;
 
 out_unregister:
-       if (cio_debug_msg_id)
-               debug_unregister(cio_debug_msg_id);
-       if (cio_debug_trace_id)
-               debug_unregister(cio_debug_trace_id);
-       if (cio_debug_crw_id)
-               debug_unregister(cio_debug_crw_id);
+       debug_unregister(cio_debug_msg_id);
+       debug_unregister(cio_debug_trace_id);
+       debug_unregister(cio_debug_crw_id);
        return -1;
 }
 
@@ -348,18 +346,18 @@ int cio_commit_config(struct subchannel *sch)
        struct schib schib;
        struct irb irb;
 
-       if (stsch_err(sch->schid, &schib) || !css_sch_is_valid(&schib))
+       if (stsch(sch->schid, &schib) || !css_sch_is_valid(&schib))
                return -ENODEV;
 
        for (retry = 0; retry < 5; retry++) {
                /* copy desired changes to local schib */
                cio_apply_config(sch, &schib);
-               ccode = msch_err(sch->schid, &schib);
+               ccode = msch(sch->schid, &schib);
                if (ccode < 0) /* -EIO if msch gets a program check. */
                        return ccode;
                switch (ccode) {
                case 0: /* successful */
-                       if (stsch_err(sch->schid, &schib) ||
+                       if (stsch(sch->schid, &schib) ||
                            !css_sch_is_valid(&schib))
                                return -ENODEV;
                        if (cio_check_config(sch, &schib)) {
@@ -394,7 +392,7 @@ int cio_update_schib(struct subchannel *sch)
 {
        struct schib schib;
 
-       if (stsch_err(sch->schid, &schib) || !css_sch_is_valid(&schib))
+       if (stsch(sch->schid, &schib) || !css_sch_is_valid(&schib))
                return -ENODEV;
 
        memcpy(&sch->schib, &schib, sizeof(schib));
@@ -503,7 +501,7 @@ int cio_validate_subchannel(struct subchannel *sch, struct subchannel_id schid)
         * If stsch gets an exception, it means the current subchannel set
         * is not valid.
         */
-       ccode = stsch_err(schid, &sch->schib);
+       ccode = stsch(schid, &sch->schib);
        if (ccode) {
                err = (ccode == 3) ? -ENXIO : ccode;
                goto out;
@@ -542,6 +540,7 @@ static irqreturn_t do_cio_interrupt(int irq, void *dummy)
 
        set_cpu_flag(CIF_NOHZ_DELAY);
        tpi_info = (struct tpi_info *) &get_irq_regs()->int_code;
+       trace_s390_cio_interrupt(tpi_info);
        irb = this_cpu_ptr(&cio_irb);
        sch = (struct subchannel *)(unsigned long) tpi_info->intparm;
        if (!sch) {
@@ -619,7 +618,7 @@ static int cio_test_for_console(struct subchannel_id schid, void *data)
 {
        struct schib schib;
 
-       if (stsch_err(schid, &schib) != 0)
+       if (stsch(schid, &schib) != 0)
                return -ENXIO;
        if ((schib.pmcw.st == SUBCHANNEL_TYPE_IO) && schib.pmcw.dnv &&
            (schib.pmcw.dev == console_devno)) {
@@ -638,7 +637,7 @@ static int cio_get_console_sch_no(void)
        if (console_irq != -1) {
                /* VM provided us with the irq number of the console. */
                schid.sch_no = console_irq;
-               if (stsch_err(schid, &schib) != 0 ||
+               if (stsch(schid, &schib) != 0 ||
                    (schib.pmcw.st != SUBCHANNEL_TYPE_IO) || !schib.pmcw.dnv)
                        return -1;
                console_devno = schib.pmcw.dev;
@@ -708,10 +707,10 @@ __disable_subchannel_easy(struct subchannel_id schid, struct schib *schib)
        cc = 0;
        for (retry=0;retry<3;retry++) {
                schib->pmcw.ena = 0;
-               cc = msch_err(schid, schib);
+               cc = msch(schid, schib);
                if (cc)
                        return (cc==3?-ENODEV:-EBUSY);
-               if (stsch_err(schid, schib) || !css_sch_is_valid(schib))
+               if (stsch(schid, schib) || !css_sch_is_valid(schib))
                        return -ENODEV;
                if (!schib->pmcw.ena)
                        return 0;
@@ -758,7 +757,7 @@ static int stsch_reset(struct subchannel_id schid, struct schib *addr)
 
        pgm_check_occured = 0;
        s390_base_pgm_handler_fn = cio_reset_pgm_check_handler;
-       rc = stsch_err(schid, addr);
+       rc = stsch(schid, addr);
        s390_base_pgm_handler_fn = NULL;
 
        /* The program check handler could have changed pgm_check_occured. */
@@ -795,7 +794,7 @@ static int __shutdown_subchannel_easy(struct subchannel_id schid, void *data)
                        /* No default clear strategy */
                        break;
                }
-               stsch_err(schid, &schib);
+               stsch(schid, &schib);
                __disable_subchannel_easy(schid, &schib);
        }
 out:
@@ -917,7 +916,7 @@ void reipl_ccw_dev(struct ccw_dev_id *devid)
 {
        struct subchannel_id uninitialized_var(schid);
 
-       s390_reset_system(NULL, NULL, NULL);
+       s390_reset_system();
        if (reipl_find_schid(devid, &schid) != 0)
                panic("IPL Device not found\n");
        do_reipl_asm(*((__u32*)&schid));
@@ -943,7 +942,7 @@ int __init cio_get_iplinfo(struct cio_iplinfo *iplinfo)
                if (__chsc_enable_facility(&sda_area, CHSC_SDA_OC_MSS))
                        return -ENODEV;
        }
-       if (stsch_err(schid, &schib))
+       if (stsch(schid, &schib))
                return -ENODEV;
        if (schib.pmcw.st != SUBCHANNEL_TYPE_IO)
                return -ENODEV;