Cornelia, I think you were thinking something like this? Patch one does the refactoring to use ccw_io_region as a pointer rather than a struct embedded in vfio_ccw_private, while patch two is almost identical to the initial patch that I sent. Obviously I had to remove references to the vfio_ccw_private struct since ccw_io_region is a pointer, but the concept is the same. Eric Farman (2): s390/cio: Convert ccw_io_region to pointer s390/cio: Refactor alloc of ccw_io_region drivers/s390/cio/vfio_ccw_drv.c | 24 +++++++++++++++++++++++- drivers/s390/cio/vfio_ccw_fsm.c | 6 +++--- drivers/s390/cio/vfio_ccw_ops.c | 4 ++-- drivers/s390/cio/vfio_ccw_private.h | 2 +- 4 files changed, 29 insertions(+), 7 deletions(-) -- 2.16.4