|
Petr Tesarik |
44045a |
From: Michael Kawano <mkawano@linux.ibm.com>
|
|
Petr Tesarik |
44045a |
Date: Thu, 7 Jul 2022 15:57:27 +0200
|
|
Petr Tesarik |
44045a |
Subject: vfio/ccw: Remove UUID from s390 debug log
|
|
Petr Tesarik |
44045a |
Git-commit: 3566ee1d776c1393393564b2514f9cd52a49c16e
|
|
Petr Tesarik |
44045a |
Patch-mainline: v6.0-rc1
|
|
Petr Tesarik |
44045a |
References: git-fixes
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
As vfio-ccw devices are created/destroyed, the uuid of the associated
|
|
Petr Tesarik |
44045a |
mdevs that are recorded in $S390DBF/vfio_ccw_msg/sprintf get lost.
|
|
Petr Tesarik |
44045a |
This is because a pointer to the UUID is stored instead of the UUID
|
|
Petr Tesarik |
44045a |
itself, and that memory may have been repurposed if/when the logs are
|
|
Petr Tesarik |
44045a |
examined. The result is usually garbage UUID data in the logs, though
|
|
Petr Tesarik |
44045a |
there is an outside chance of an oops happening here.
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
Simply remove the UUID from the traces, as the subchannel number will
|
|
Petr Tesarik |
44045a |
provide useful configuration information for problem determination,
|
|
Petr Tesarik |
44045a |
and is stored directly into the log instead of a pointer.
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
As we were the only consumer of mdev_uuid(), remove that too.
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
Cc: Kirti Wankhede <kwankhede@nvidia.com>
|
|
Petr Tesarik |
44045a |
Signed-off-by: Michael Kawano <mkawano@linux.ibm.com>
|
|
Petr Tesarik |
44045a |
Fixes: 60e05d1cf0875 ("vfio-ccw: add some logging")
|
|
Petr Tesarik |
44045a |
Fixes: b7701dfbf9832 ("vfio-ccw: Register a chp_event callback for vfio-ccw")
|
|
Petr Tesarik |
44045a |
[farman: reworded commit message, added Fixes: tags]
|
|
Petr Tesarik |
44045a |
Signed-off-by: Eric Farman <farman@linux.ibm.com>
|
|
Petr Tesarik |
44045a |
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
|
|
Petr Tesarik |
44045a |
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
|
|
Petr Tesarik |
44045a |
Reviewed-by: Kirti Wankhede <kwankhede@nvidia.com>
|
|
Petr Tesarik |
44045a |
Link: https://lore.kernel.org/r/20220707135737.720765-2-farman@linux.ibm.com
|
|
Petr Tesarik |
44045a |
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
|
|
Petr Tesarik |
44045a |
[ ptesarik: I have kept the "mdev" local variable in fsm_io_request().
|
|
Petr Tesarik |
44045a |
It is still used in a call to cp_init(), because SLE15-SP4 does not
|
|
Petr Tesarik |
44045a |
contain upstream commit 0a58795647cd4300470788ffdbff6b29b5f00632. ]
|
|
Petr Tesarik |
44045a |
Acked-by: Petr Tesarik <ptesarik@suse.com>
|
|
Petr Tesarik |
44045a |
---
|
|
Petr Tesarik |
44045a |
drivers/s390/cio/vfio_ccw_drv.c | 5 ++---
|
|
Petr Tesarik |
44045a |
drivers/s390/cio/vfio_ccw_fsm.c | 24 ++++++++++++------------
|
|
Petr Tesarik |
44045a |
drivers/s390/cio/vfio_ccw_ops.c | 8 ++++----
|
|
Petr Tesarik |
44045a |
include/linux/mdev.h | 5 -----
|
|
Petr Tesarik |
44045a |
4 files changed, 18 insertions(+), 24 deletions(-)
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
--- a/drivers/s390/cio/vfio_ccw_drv.c
|
|
Petr Tesarik |
44045a |
+++ b/drivers/s390/cio/vfio_ccw_drv.c
|
|
Petr Tesarik |
44045a |
@@ -14,7 +14,6 @@
|
|
Petr Tesarik |
44045a |
#include <linux/init.h>
|
|
Petr Tesarik |
44045a |
#include <linux/device.h>
|
|
Petr Tesarik |
44045a |
#include <linux/slab.h>
|
|
Petr Tesarik |
44045a |
-#include <linux/uuid.h>
|
|
Petr Tesarik |
44045a |
#include <linux/mdev.h>
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
#include <asm/isc.h>
|
|
Petr Tesarik |
44045a |
@@ -344,8 +343,8 @@ static int vfio_ccw_chp_event(struct sub
|
|
Petr Tesarik |
44045a |
return 0;
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
trace_vfio_ccw_chp_event(private->sch->schid, mask, event);
|
|
Petr Tesarik |
44045a |
- VFIO_CCW_MSG_EVENT(2, "%pUl (%x.%x.%04x): mask=0x%x event=%d\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(private->mdev), sch->schid.cssid,
|
|
Petr Tesarik |
44045a |
+ VFIO_CCW_MSG_EVENT(2, "sch %x.%x.%04x: mask=0x%x event=%d\n",
|
|
Petr Tesarik |
44045a |
+ sch->schid.cssid,
|
|
Petr Tesarik |
44045a |
sch->schid.ssid, sch->schid.sch_no,
|
|
Petr Tesarik |
44045a |
mask, event);
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
--- a/drivers/s390/cio/vfio_ccw_fsm.c
|
|
Petr Tesarik |
44045a |
+++ b/drivers/s390/cio/vfio_ccw_fsm.c
|
|
Petr Tesarik |
44045a |
@@ -256,8 +256,8 @@ static void fsm_io_request(struct vfio_c
|
|
Petr Tesarik |
44045a |
if (orb->tm.b) {
|
|
Petr Tesarik |
44045a |
io_region->ret_code = -EOPNOTSUPP;
|
|
Petr Tesarik |
44045a |
VFIO_CCW_MSG_EVENT(2,
|
|
Petr Tesarik |
44045a |
- "%pUl (%x.%x.%04x): transport mode\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), schid.cssid,
|
|
Petr Tesarik |
44045a |
+ "sch %x.%x.%04x: transport mode\n",
|
|
Petr Tesarik |
44045a |
+ schid.cssid,
|
|
Petr Tesarik |
44045a |
schid.ssid, schid.sch_no);
|
|
Petr Tesarik |
44045a |
errstr = "transport mode";
|
|
Petr Tesarik |
44045a |
goto err_out;
|
|
Petr Tesarik |
44045a |
@@ -266,8 +266,8 @@ static void fsm_io_request(struct vfio_c
|
|
Petr Tesarik |
44045a |
orb);
|
|
Petr Tesarik |
44045a |
if (io_region->ret_code) {
|
|
Petr Tesarik |
44045a |
VFIO_CCW_MSG_EVENT(2,
|
|
Petr Tesarik |
44045a |
- "%pUl (%x.%x.%04x): cp_init=%d\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), schid.cssid,
|
|
Petr Tesarik |
44045a |
+ "sch %x.%x.%04x: cp_init=%d\n",
|
|
Petr Tesarik |
44045a |
+ schid.cssid,
|
|
Petr Tesarik |
44045a |
schid.ssid, schid.sch_no,
|
|
Petr Tesarik |
44045a |
io_region->ret_code);
|
|
Petr Tesarik |
44045a |
errstr = "cp init";
|
|
Petr Tesarik |
44045a |
@@ -277,8 +277,8 @@ static void fsm_io_request(struct vfio_c
|
|
Petr Tesarik |
44045a |
io_region->ret_code = cp_prefetch(&private->cp);
|
|
Petr Tesarik |
44045a |
if (io_region->ret_code) {
|
|
Petr Tesarik |
44045a |
VFIO_CCW_MSG_EVENT(2,
|
|
Petr Tesarik |
44045a |
- "%pUl (%x.%x.%04x): cp_prefetch=%d\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), schid.cssid,
|
|
Petr Tesarik |
44045a |
+ "sch %x.%x.%04x: cp_prefetch=%d\n",
|
|
Petr Tesarik |
44045a |
+ schid.cssid,
|
|
Petr Tesarik |
44045a |
schid.ssid, schid.sch_no,
|
|
Petr Tesarik |
44045a |
io_region->ret_code);
|
|
Petr Tesarik |
44045a |
errstr = "cp prefetch";
|
|
Petr Tesarik |
44045a |
@@ -290,8 +290,8 @@ static void fsm_io_request(struct vfio_c
|
|
Petr Tesarik |
44045a |
io_region->ret_code = fsm_io_helper(private);
|
|
Petr Tesarik |
44045a |
if (io_region->ret_code) {
|
|
Petr Tesarik |
44045a |
VFIO_CCW_MSG_EVENT(2,
|
|
Petr Tesarik |
44045a |
- "%pUl (%x.%x.%04x): fsm_io_helper=%d\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), schid.cssid,
|
|
Petr Tesarik |
44045a |
+ "sch %x.%x.%04x: fsm_io_helper=%d\n",
|
|
Petr Tesarik |
44045a |
+ schid.cssid,
|
|
Petr Tesarik |
44045a |
schid.ssid, schid.sch_no,
|
|
Petr Tesarik |
44045a |
io_region->ret_code);
|
|
Petr Tesarik |
44045a |
errstr = "cp fsm_io_helper";
|
|
Petr Tesarik |
44045a |
@@ -301,16 +301,16 @@ static void fsm_io_request(struct vfio_c
|
|
Petr Tesarik |
44045a |
return;
|
|
Petr Tesarik |
44045a |
} else if (scsw->cmd.fctl & SCSW_FCTL_HALT_FUNC) {
|
|
Petr Tesarik |
44045a |
VFIO_CCW_MSG_EVENT(2,
|
|
Petr Tesarik |
44045a |
- "%pUl (%x.%x.%04x): halt on io_region\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), schid.cssid,
|
|
Petr Tesarik |
44045a |
+ "sch %x.%x.%04x: halt on io_region\n",
|
|
Petr Tesarik |
44045a |
+ schid.cssid,
|
|
Petr Tesarik |
44045a |
schid.ssid, schid.sch_no);
|
|
Petr Tesarik |
44045a |
/* halt is handled via the async cmd region */
|
|
Petr Tesarik |
44045a |
io_region->ret_code = -EOPNOTSUPP;
|
|
Petr Tesarik |
44045a |
goto err_out;
|
|
Petr Tesarik |
44045a |
} else if (scsw->cmd.fctl & SCSW_FCTL_CLEAR_FUNC) {
|
|
Petr Tesarik |
44045a |
VFIO_CCW_MSG_EVENT(2,
|
|
Petr Tesarik |
44045a |
- "%pUl (%x.%x.%04x): clear on io_region\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), schid.cssid,
|
|
Petr Tesarik |
44045a |
+ "sch %x.%x.%04x: clear on io_region\n",
|
|
Petr Tesarik |
44045a |
+ schid.cssid,
|
|
Petr Tesarik |
44045a |
schid.ssid, schid.sch_no);
|
|
Petr Tesarik |
44045a |
/* clear is handled via the async cmd region */
|
|
Petr Tesarik |
44045a |
io_region->ret_code = -EOPNOTSUPP;
|
|
Petr Tesarik |
44045a |
--- a/drivers/s390/cio/vfio_ccw_ops.c
|
|
Petr Tesarik |
44045a |
+++ b/drivers/s390/cio/vfio_ccw_ops.c
|
|
Petr Tesarik |
44045a |
@@ -127,8 +127,8 @@ static int vfio_ccw_mdev_create(struct m
|
|
Petr Tesarik |
44045a |
private->mdev = mdev;
|
|
Petr Tesarik |
44045a |
private->state = VFIO_CCW_STATE_IDLE;
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
- VFIO_CCW_MSG_EVENT(2, "mdev %pUl, sch %x.%x.%04x: create\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), private->sch->schid.cssid,
|
|
Petr Tesarik |
44045a |
+ VFIO_CCW_MSG_EVENT(2, "sch %x.%x.%04x: create\n",
|
|
Petr Tesarik |
44045a |
+ private->sch->schid.cssid,
|
|
Petr Tesarik |
44045a |
private->sch->schid.ssid,
|
|
Petr Tesarik |
44045a |
private->sch->schid.sch_no);
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
@@ -140,8 +140,8 @@ static int vfio_ccw_mdev_remove(struct m
|
|
Petr Tesarik |
44045a |
struct vfio_ccw_private *private =
|
|
Petr Tesarik |
44045a |
dev_get_drvdata(mdev_parent_dev(mdev));
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
- VFIO_CCW_MSG_EVENT(2, "mdev %pUl, sch %x.%x.%04x: remove\n",
|
|
Petr Tesarik |
44045a |
- mdev_uuid(mdev), private->sch->schid.cssid,
|
|
Petr Tesarik |
44045a |
+ VFIO_CCW_MSG_EVENT(2, "sch %x.%x.%04x: remove\n",
|
|
Petr Tesarik |
44045a |
+ private->sch->schid.cssid,
|
|
Petr Tesarik |
44045a |
private->sch->schid.ssid,
|
|
Petr Tesarik |
44045a |
private->sch->schid.sch_no);
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
--- a/include/linux/mdev.h
|
|
Petr Tesarik |
44045a |
+++ b/include/linux/mdev.h
|
|
Petr Tesarik |
44045a |
@@ -166,11 +166,6 @@ static inline void mdev_set_drvdata(stru
|
|
Petr Tesarik |
44045a |
{
|
|
Petr Tesarik |
44045a |
mdev->driver_data = data;
|
|
Petr Tesarik |
44045a |
}
|
|
Petr Tesarik |
44045a |
-static inline const guid_t *mdev_uuid(struct mdev_device *mdev)
|
|
Petr Tesarik |
44045a |
-{
|
|
Petr Tesarik |
44045a |
- return &mdev->uuid;
|
|
Petr Tesarik |
44045a |
-}
|
|
Petr Tesarik |
44045a |
-
|
|
Petr Tesarik |
44045a |
extern struct bus_type mdev_bus_type;
|
|
Petr Tesarik |
44045a |
|
|
Petr Tesarik |
44045a |
int mdev_register_device(struct device *dev, const struct mdev_parent_ops *ops);
|