s390/cio: log fake IRB events
authorPeter Oberparleiter <oberpar@linux.ibm.com>
Wed, 10 Apr 2024 09:46:20 +0000 (11:46 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Fri, 12 Apr 2024 14:13:03 +0000 (16:13 +0200)
Add traces when queueing and delivering fake IRBs. These are significant
events that might have an impact on device driver processing and are
therefore relevant for problem analysis.

Reviewed-by: Vineeth Vijayan <vneethv@linux.ibm.com>
Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
drivers/s390/cio/device_fsm.c
drivers/s390/cio/device_ops.c

index 65d8b2cfd6262d53a03bf10295d5d6c59f518c5d..42791fa0b80e26d4246dabc18e82f2130edb9bb9 100644 (file)
@@ -504,6 +504,11 @@ callback:
                ccw_device_done(cdev, DEV_STATE_ONLINE);
                /* Deliver fake irb to device driver, if needed. */
                if (cdev->private->flags.fake_irb) {
+                       CIO_MSG_EVENT(2, "fakeirb: deliver device 0.%x.%04x intparm %lx type=%d\n",
+                                     cdev->private->dev_id.ssid,
+                                     cdev->private->dev_id.devno,
+                                     cdev->private->intparm,
+                                     cdev->private->flags.fake_irb);
                        create_fake_irb(&cdev->private->dma_area->irb,
                                        cdev->private->flags.fake_irb);
                        cdev->private->flags.fake_irb = 0;
index 40c97f8730751f2afa862ace30b16f1ade38ea80..acd6790dba4dd1311d78e05afa0f41ad5b38aa3a 100644 (file)
@@ -208,6 +208,10 @@ int ccw_device_start_timeout_key(struct ccw_device *cdev, struct ccw1 *cpa,
                if (!cdev->private->flags.fake_irb) {
                        cdev->private->flags.fake_irb = FAKE_CMD_IRB;
                        cdev->private->intparm = intparm;
+                       CIO_MSG_EVENT(2, "fakeirb: queue device 0.%x.%04x intparm %lx type=%d\n",
+                                     cdev->private->dev_id.ssid,
+                                     cdev->private->dev_id.devno, intparm,
+                                     cdev->private->flags.fake_irb);
                        return 0;
                } else
                        /* There's already a fake I/O around. */
@@ -551,6 +555,10 @@ int ccw_device_tm_start_timeout_key(struct ccw_device *cdev, struct tcw *tcw,
                if (!cdev->private->flags.fake_irb) {
                        cdev->private->flags.fake_irb = FAKE_TM_IRB;
                        cdev->private->intparm = intparm;
+                       CIO_MSG_EVENT(2, "fakeirb: queue device 0.%x.%04x intparm %lx type=%d\n",
+                                     cdev->private->dev_id.ssid,
+                                     cdev->private->dev_id.devno, intparm,
+                                     cdev->private->flags.fake_irb);
                        return 0;
                } else
                        /* There's already a fake I/O around. */