hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/s390/cio/io_sch.h
....@@ -9,15 +9,20 @@
99 #include "css.h"
1010 #include "orb.h"
1111
12
+struct io_subchannel_dma_area {
13
+ struct ccw1 sense_ccw; /* static ccw for sense command */
14
+};
15
+
1216 struct io_subchannel_private {
1317 union orb orb; /* operation request block */
14
- struct ccw1 sense_ccw; /* static ccw for sense command */
1518 struct ccw_device *cdev;/* pointer to the child ccw device */
1619 struct {
1720 unsigned int suspend:1; /* allow suspend */
1821 unsigned int prefetch:1;/* deny prefetch */
1922 unsigned int inter:1; /* suppress intermediate interrupts */
2023 } __packed options;
24
+ struct io_subchannel_dma_area *dma_area;
25
+ dma_addr_t dma_area_dma;
2126 } __aligned(8);
2227
2328 #define to_io_private(n) ((struct io_subchannel_private *) \
....@@ -115,6 +120,13 @@
115120 #define FAKE_CMD_IRB 1
116121 #define FAKE_TM_IRB 2
117122
123
+struct ccw_device_dma_area {
124
+ struct senseid senseid; /* SenseID info */
125
+ struct ccw1 iccws[2]; /* ccws for SNID/SID/SPGID commands */
126
+ struct irb irb; /* device status */
127
+ struct pgid pgid[8]; /* path group IDs per chpid*/
128
+};
129
+
118130 struct ccw_device_private {
119131 struct ccw_device *cdev;
120132 struct subchannel *sch;
....@@ -156,11 +168,7 @@
156168 } __attribute__((packed)) flags;
157169 unsigned long intparm; /* user interruption parameter */
158170 struct qdio_irq *qdio_data;
159
- struct irb irb; /* device status */
160171 int async_kill_io_rc;
161
- struct senseid senseid; /* SenseID info */
162
- struct pgid pgid[8]; /* path group IDs per chpid*/
163
- struct ccw1 iccws[2]; /* ccws for SNID/SID/SPGID commands */
164172 struct work_struct todo_work;
165173 enum cdev_todo todo;
166174 wait_queue_head_t wait_q;
....@@ -169,6 +177,8 @@
169177 struct list_head cmb_list; /* list of measured devices */
170178 u64 cmb_start_time; /* clock value of cmb reset */
171179 void *cmb_wait; /* deferred cmb enable/disable */
180
+ struct gen_pool *dma_pool;
181
+ struct ccw_device_dma_area *dma_area;
172182 enum interruption_class int_class;
173183 };
174184