/openbmc/linux/drivers/s390/char/ |
H A D | tape.h | 303 tape_ccw_cc(struct ccw1 *ccw, __u8 cmd_code, __u16 memsize, void *cda) in tape_ccw_cc() argument 305 ccw->cmd_code = cmd_code; in tape_ccw_cc() 306 ccw->flags = CCW_FLAG_CC; in tape_ccw_cc() 307 ccw->count = memsize; in tape_ccw_cc() 308 ccw->cda = (__u32)(addr_t) cda; in tape_ccw_cc() 309 return ccw + 1; in tape_ccw_cc() 313 tape_ccw_end(struct ccw1 *ccw, __u8 cmd_code, __u16 memsize, void *cda) in tape_ccw_end() argument 315 ccw->cmd_code = cmd_code; in tape_ccw_end() 316 ccw->flags = 0; in tape_ccw_end() 317 ccw->count = memsize; in tape_ccw_end() [all …]
|
H A D | tape_std.c | 269 struct ccw1 *ccw; in tape_std_mtfsf() local 276 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsf() 278 ccw = tape_ccw_repeat(ccw, FORSPACEFILE, mt_count); in tape_std_mtfsf() 279 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsf() 293 struct ccw1 *ccw; in tape_std_mtfsr() local 301 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtfsr() 303 ccw = tape_ccw_repeat(ccw, FORSPACEBLOCK, mt_count); in tape_std_mtfsr() 304 ccw = tape_ccw_end(ccw, NOP, 0, NULL); in tape_std_mtfsr() 325 struct ccw1 *ccw; in tape_std_mtbsr() local 333 ccw = tape_ccw_cc(request->cpaddr, MODE_SET_DB, 1, in tape_std_mtbsr() [all …]
|
H A D | raw3270.c | 163 rq->ccw.cda = __pa(rq->buffer); in raw3270_request_alloc() 164 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_alloc() 187 rq->ccw.cmd_code = 0; in raw3270_request_reset() 188 rq->ccw.count = 0; in raw3270_request_reset() 189 rq->ccw.cda = __pa(rq->buffer); in raw3270_request_reset() 190 rq->ccw.flags = CCW_FLAG_SLI; in raw3270_request_reset() 202 rq->ccw.cmd_code = cmd; in raw3270_request_set_cmd() 211 if (size + rq->ccw.count > rq->size) in raw3270_request_add_data() 213 memcpy(rq->buffer + rq->ccw.count, data, size); in raw3270_request_add_data() 214 rq->ccw.count += size; in raw3270_request_add_data() [all …]
|
H A D | con3215.c | 147 struct ccw1 *ccw; in raw3215_mk_read_req() local 159 ccw = req->ccws; in raw3215_mk_read_req() 160 ccw->cmd_code = 0x0A; /* read inquiry */ in raw3215_mk_read_req() 161 ccw->flags = 0x20; /* ignore incorrect length */ in raw3215_mk_read_req() 162 ccw->count = 160; in raw3215_mk_read_req() 163 ccw->cda = (__u32)__pa(raw->inbuf); in raw3215_mk_read_req() 175 struct ccw1 *ccw; in raw3215_mk_write_req() local 192 ccw = req->ccws; in raw3215_mk_write_req() 218 if (ccw > req->ccws) in raw3215_mk_write_req() 219 ccw[-1].flags |= 0x40; /* use command chaining */ in raw3215_mk_write_req() [all …]
|
/openbmc/linux/drivers/s390/virtio/ |
H A D | virtio_ccw.c | 323 struct ccw1 *ccw, __u32 intparm) in ccw_io_helper() argument 332 ret = ccw_device_start(vcdev->cdev, ccw, intparm, 0, 0); in ccw_io_helper() 348 struct ccw1 *ccw) in virtio_ccw_drop_indicator() argument 363 ccw->cmd_code = CCW_CMD_SET_IND_ADAPTER; in virtio_ccw_drop_indicator() 364 ccw->count = sizeof(*thinint_area); in virtio_ccw_drop_indicator() 365 ccw->cda = (__u32)virt_to_phys(thinint_area); in virtio_ccw_drop_indicator() 373 ccw->cmd_code = CCW_CMD_SET_IND; in virtio_ccw_drop_indicator() 374 ccw->count = sizeof(indicators(vcdev)); in virtio_ccw_drop_indicator() 375 ccw->cda = (__u32)virt_to_phys(indicatorp); in virtio_ccw_drop_indicator() 379 ccw->flags = 0; in virtio_ccw_drop_indicator() [all …]
|
/openbmc/linux/drivers/s390/block/ |
H A D | dasd_fba.c | 55 MODULE_DEVICE_TABLE(ccw, dasd_fba_ids); 80 define_extent(struct ccw1 * ccw, struct DE_fba_data *data, int rw, in define_extent() argument 83 ccw->cmd_code = DASD_FBA_CCW_DEFINE_EXTENT; in define_extent() 84 ccw->flags = 0; in define_extent() 85 ccw->count = 16; in define_extent() 86 ccw->cda = (__u32)virt_to_phys(data); in define_extent() 100 locate_record(struct ccw1 * ccw, struct LO_fba_data *data, int rw, in locate_record() argument 103 ccw->cmd_code = DASD_FBA_CCW_LOCATE; in locate_record() 104 ccw->flags = 0; in locate_record() 105 ccw->count = 8; in locate_record() [all …]
|
H A D | dasd_eckd.c | 74 MODULE_DEVICE_TABLE(ccw, dasd_eckd_ids); 87 struct ccw1 ccw; member 94 struct ccw1 ccw[2]; member 110 struct ccw1 ccw; member 252 static int set_timestamp(struct ccw1 *ccw, struct DE_eckd_data *data, in set_timestamp() argument 271 if (ccw) { in set_timestamp() 272 ccw->count = sizeof(struct DE_eckd_data); in set_timestamp() 273 ccw->flags |= CCW_FLAG_SLI; in set_timestamp() 280 define_extent(struct ccw1 *ccw, struct DE_eckd_data *data, unsigned int trk, in define_extent() argument 289 if (ccw) { in define_extent() [all …]
|
H A D | dasd_3990_erp.c | 201 struct ccw1 *ccw; in dasd_3990_erp_DCTL() local 219 ccw = dctl_cqr->cpaddr; in dasd_3990_erp_DCTL() 220 memset(ccw, 0, sizeof(struct ccw1)); in dasd_3990_erp_DCTL() 221 ccw->cmd_code = CCW_CMD_DCTL; in dasd_3990_erp_DCTL() 222 ccw->count = 4; in dasd_3990_erp_DCTL() 223 ccw->cda = (__u32)virt_to_phys(DCTL_data); in dasd_3990_erp_DCTL() 1612 struct ccw1 *ccw, *oldccw; in dasd_3990_erp_action_1B_32() local 1706 ccw = erp->cpaddr; in dasd_3990_erp_action_1B_32() 1707 memset(ccw, 0, sizeof(struct ccw1)); in dasd_3990_erp_action_1B_32() 1708 ccw->cmd_code = DASD_ECKD_CCW_DEFINE_EXTENT; in dasd_3990_erp_action_1B_32() [all …]
|
/openbmc/qemu/hw/s390x/ |
H A D | meson.build | 5 'ccw-device.c', 10 's390-ccw.c', 31 s390x_ss.add(when: 'CONFIG_S390_CCW_VIRTIO', if_true: files('s390-virtio-ccw.c')) 32 s390x_ss.add(when: 'CONFIG_TERMINAL3270', if_true: files('3270-ccw.c')) 36 virtio_ss.add(files('virtio-ccw.c')) 37 virtio_ss.add(when: 'CONFIG_VIRTIO_BALLOON', if_true: files('virtio-ccw-balloon.c')) 38 virtio_ss.add(when: 'CONFIG_VIRTIO_BLK', if_true: files('virtio-ccw-blk.c')) 39 virtio_ss.add(when: 'CONFIG_VIRTIO_CRYPTO', if_true: files('virtio-ccw-crypto.c')) 40 virtio_ss.add(when: 'CONFIG_VIRTIO_INPUT', if_true: files('virtio-ccw-input.c')) 41 virtio_ss.add(when: 'CONFIG_VIRTIO_NET', if_true: files('virtio-ccw-net.c')) [all …]
|
H A D | virtio-ccw.c | 272 static int virtio_ccw_handle_set_vq(SubchDev *sch, CCW1 ccw, bool check_len, in virtio_ccw_handle_set_vq() argument 281 if (ccw.count != info_len) { in virtio_ccw_handle_set_vq() 284 } else if (ccw.count < info_len) { in virtio_ccw_handle_set_vq() 288 if (!ccw.cda) { in virtio_ccw_handle_set_vq() 317 static int virtio_ccw_cb(SubchDev *sch, CCW1 ccw) in virtio_ccw_cb() argument 336 ccw.cmd_code); in virtio_ccw_cb() 337 check_len = !((ccw.flags & CCW_FLAG_SLI) && !(ccw.flags & CCW_FLAG_DC)); in virtio_ccw_cb() 339 if (dev->revision < 0 && ccw.cmd_code != CCW_CMD_SET_VIRTIO_REV) { in virtio_ccw_cb() 356 switch (ccw.cmd_code) { in virtio_ccw_cb() 358 ret = virtio_ccw_handle_set_vq(sch, ccw, check_len, dev->revision < 1); in virtio_ccw_cb() [all …]
|
H A D | 3270-ccw.c | 22 static int handle_payload_3270_read(EmulatedCcw3270Device *dev, CCW1 *ccw) in handle_payload_3270_read() argument 28 if (!ccw->cda) { in handle_payload_3270_read() 36 ccw_dev->sch->curr_status.scsw.count = ccw->count - len; in handle_payload_3270_read() 42 static int handle_payload_3270_write(EmulatedCcw3270Device *dev, CCW1 *ccw) in handle_payload_3270_write() argument 48 if (!ccw->cda) { in handle_payload_3270_write() 52 len = ck->write_payload_3270(dev, ccw->cmd_code); in handle_payload_3270_write() 58 ccw_dev->sch->curr_status.scsw.count = ccw->count - len; in handle_payload_3270_write() 62 static int emulated_ccw_3270_cb(SubchDev *sch, CCW1 ccw) in emulated_ccw_3270_cb() argument 67 switch (ccw.cmd_code) { in emulated_ccw_3270_cb() 72 rc = handle_payload_3270_write(dev, &ccw); in emulated_ccw_3270_cb() [all …]
|
/openbmc/linux/drivers/s390/cio/ |
H A D | vfio_ccw_cp.c | 261 static inline int ccw_does_data_transfer(struct ccw1 *ccw) in ccw_does_data_transfer() argument 264 if (ccw->count == 0) in ccw_does_data_transfer() 268 if (ccw_is_noop(ccw)) in ccw_does_data_transfer() 272 if (!ccw_is_skip(ccw)) in ccw_does_data_transfer() 280 if (ccw_is_read(ccw) || ccw_is_read_backward(ccw)) in ccw_does_data_transfer() 283 if (ccw_is_sense(ccw)) in ccw_does_data_transfer() 309 static inline int is_tic_within_range(struct ccw1 *ccw, u32 head, int len) in is_tic_within_range() argument 311 if (!ccw_is_tic(ccw)) in is_tic_within_range() 314 return is_cpa_within_range(ccw->cda, head, len); in is_tic_within_range() 354 struct ccw1 *ccw = &chain->ch_ccw[idx]; in ccwchain_cda_free() local [all …]
|
/openbmc/linux/drivers/dma/ |
H A D | mxs-dma.c | 114 struct mxs_dma_ccw *ccw; member 401 mxs_chan->ccw = dma_alloc_coherent(mxs_dma->dma_device.dev, in mxs_dma_alloc_chan_resources() 404 if (!mxs_chan->ccw) { in mxs_dma_alloc_chan_resources() 432 mxs_chan->ccw, mxs_chan->ccw_phys); in mxs_dma_alloc_chan_resources() 447 mxs_chan->ccw, mxs_chan->ccw_phys); in mxs_dma_free_chan_resources() 481 struct mxs_dma_ccw *ccw; in mxs_dma_prep_slave_sg() local 506 ccw = &mxs_chan->ccw[idx - 1]; in mxs_dma_prep_slave_sg() 507 ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * idx; in mxs_dma_prep_slave_sg() 508 ccw->bits |= CCW_CHAIN; in mxs_dma_prep_slave_sg() 509 ccw->bits &= ~CCW_IRQ; in mxs_dma_prep_slave_sg() [all …]
|
/openbmc/linux/arch/s390/include/asm/ |
H A D | idals.h | 83 set_normalized_cda(struct ccw1 * ccw, void *vaddr) in set_normalized_cda() argument 88 if (ccw->flags & CCW_FLAG_IDA) in set_normalized_cda() 90 nridaws = idal_nr_words(vaddr, ccw->count); in set_normalized_cda() 96 idal_create_words(idal, vaddr, ccw->count); in set_normalized_cda() 97 ccw->flags |= CCW_FLAG_IDA; in set_normalized_cda() 100 ccw->cda = (__u32)(unsigned long) vaddr; in set_normalized_cda() 108 clear_normalized_cda(struct ccw1 * ccw) in clear_normalized_cda() argument 110 if (ccw->flags & CCW_FLAG_IDA) { in clear_normalized_cda() 111 kfree((void *)(unsigned long) ccw->cda); in clear_normalized_cda() 112 ccw->flags &= ~CCW_FLAG_IDA; in clear_normalized_cda() [all …]
|
/openbmc/linux/Documentation/driver-api/ |
H A D | s390-drivers.rst | 39 device on the ccw bus and are described below. 40 * I/O subchannels bound to the vfio-ccw driver. See 41 Documentation/arch/s390/vfio-ccw.rst. 47 The ccw bus 50 The ccw bus typically contains the majority of devices available to a 51 s390 system. Named after the channel command word (ccw), the basic 52 command structure used to address its devices, the ccw bus contains 56 subchannel directly, but only via the I/O device on the ccw bus, the ccw 70 ccw devices 73 Devices that want to initiate channel I/O need to attach to the ccw bus. [all …]
|
/openbmc/qemu/docs/devel/ |
H A D | s390-dasd-ipl.rst | 9 1. A READ IPL ccw is constructed in memory location ``0x0``. 10 This ccw, by definition, reads the IPL1 record which is located on the disk 11 at cylinder 0 track 0 record 1. Note that the chain flag is on in this ccw 12 so when it is complete another ccw will be fetched and executed from memory 15 2. Execute the Read IPL ccw at ``0x00``, thereby reading IPL1 data into ``0x00``. 17 information: ``[psw][read ccw][tic ccw]``. When the machine executes the Read 18 IPL ccw it read the 24-bytes of IPL1 to be read into memory starting at 19 location ``0x0``. Then the ccw program at ``0x08`` which consists of a read 20 ccw and a tic ccw is automatically executed because of the chain flag from 21 the original READ IPL ccw. The read ccw will read the IPL2 data into memory [all …]
|
/openbmc/linux/drivers/s390/net/ |
H A D | ctcm_mpc.c | 1513 rc = ccw_device_start(ch->cdev, &ch->ccw[15], 0, 0xff, 0); in mpc_action_send_discontact() 1695 ch->ccw[8].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid() 1696 ch->ccw[8].count = 0; in mpc_action_side_xid() 1697 ch->ccw[8].cda = 0x00; in mpc_action_side_xid() 1708 ch->ccw[9].cmd_code = CCW_CMD_WRITE; in mpc_action_side_xid() 1709 ch->ccw[9].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid() 1710 ch->ccw[9].count = TH_HEADER_LENGTH; in mpc_action_side_xid() 1711 ch->ccw[9].cda = virt_to_phys(ch->xid_th); in mpc_action_side_xid() 1715 ch->ccw[10].cmd_code = CCW_CMD_WRITE; in mpc_action_side_xid() 1716 ch->ccw[10].flags = CCW_FLAG_SLI | CCW_FLAG_CC; in mpc_action_side_xid() [all …]
|
H A D | ctcm_fsms.c | 279 clear_normalized_cda(&ch->ccw[4]); in chx_txdone() 307 ch->ccw[1].count = ch->trans_skb->len; in chx_txdone() 310 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_txdone() 418 ch->ccw[1].count = ch->max_bufsize; in chx_rx() 419 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_rx() 475 ch->ccw[1].count = 2; /* Transfer only length */ in chx_firstio() 479 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_firstio() 525 ch->ccw[1].count = ch->max_bufsize; in chx_rxidle() 527 rc = ccw_device_start(ch->cdev, &ch->ccw[0], 0, 0xff, 0); in chx_rxidle() 563 CTCM_CCW_DUMP((char *)&ch->ccw[6], sizeof(struct ccw1) * 2); in ctcm_chx_setmode() [all …]
|
/openbmc/qemu/target/s390x/kvm/ |
H A D | pv.h | 24 static S390CcwMachineState *ccw; in s390_is_pv() local 27 if (ccw) { in s390_is_pv() 28 return ccw->pv; in s390_is_pv() 37 ccw = S390_CCW_MACHINE(obj); in s390_is_pv() 38 return ccw->pv; in s390_is_pv()
|
/openbmc/linux/arch/s390/kernel/ |
H A D | ipl_vmparm.c | 16 if ((ipb->ccw.vm_flags & IPL_PB0_CCW_VM_FLAG_VP) && in ipl_block_get_ascii_vmparm() 17 (ipb->ccw.vm_parm_len > 0)) { in ipl_block_get_ascii_vmparm() 19 len = min_t(size_t, size - 1, ipb->ccw.vm_parm_len); in ipl_block_get_ascii_vmparm() 20 memcpy(dest, ipb->ccw.vm_parm, len); in ipl_block_get_ascii_vmparm()
|
/openbmc/qemu/pc-bios/s390-ccw/ |
H A D | dasd-ipl.c | 34 static bool is_read_tic_ccw_chain(Ccw0 *ccw) in is_read_tic_ccw_chain() argument 36 Ccw0 *next_ccw = ccw + 1; in is_read_tic_ccw_chain() 38 return ((ccw->cmd_code == CCW_CMD_DASD_READ || in is_read_tic_ccw_chain() 39 ccw->cmd_code == CCW_CMD_DASD_READ_MT) && in is_read_tic_ccw_chain() 40 ccw->chain && next_ccw->cmd_code == CCW_CMD_TIC); in is_read_tic_ccw_chain() 134 Ccw0 *ccw = u32toptr(ipl2_addr); in check_ipl2() local 136 return (ipl2_addr != 0x00 && ccw->cmd_code != 0x00); in check_ipl2()
|
/openbmc/linux/drivers/crypto/nx/ |
H A D | nx-common-powernv.c | 461 u32 ccw; in nx842_exec_icswx() local 482 ccw = 0; in nx842_exec_icswx() 483 ccw = SET_FIELD(CCW_CT, ccw, nx842_ct); in nx842_exec_icswx() 484 ccw = SET_FIELD(CCW_CI_842, ccw, 0); /* use 0 for hw auto-selection */ in nx842_exec_icswx() 485 ccw = SET_FIELD(CCW_FC_842, ccw, fc); in nx842_exec_icswx() 490 ret = icswx(cpu_to_be32(ccw), crb); in nx842_exec_icswx() 493 (unsigned int)ccw, in nx842_exec_icswx() 494 (unsigned int)be32_to_cpu(crb->ccw)); in nx842_exec_icswx() 565 u32 ccw; in nx842_exec_vas() local 579 ccw = 0; in nx842_exec_vas() [all …]
|
/openbmc/qemu/docs/system/ |
H A D | target-s390x.rst | 8 ``s390-ccw-virtio``, is supported (with versioning for compatibility 20 z/VM; virtio devices (especially using virtio-ccw) make up the bulk of 21 the available devices. Passthrough of host devices via vfio-pci, vfio-ccw, 28 s390x/vfio-ccw
|
/openbmc/qemu/docs/system/s390x/ |
H A D | css.rst | 5 functionless) channel paths, and channel devices (virtio-ccw, 3270, and 6 devices passed via vfio-ccw). It supports multiple subchannel sets (MSS) and 40 -device virtio-net-ccw 51 -device virtio-rng-ccw,devno=fe.0.0042 61 -device virtio-gpu-ccw,devno=fe.2.1111 71 -device virtio-mouse-ccw,devno=2.0.2222 80 -device virtio-keyboard-ccw,devno=0.0.1234
|
/openbmc/linux/Documentation/arch/s390/ |
H A D | vfio-ccw.rst | 2 vfio-ccw: the basic infrastructure 9 Linux/s390. Motivation for vfio-ccw is to passthrough subchannels to a 43 Motivation of vfio-ccw 48 (virtio-ccw)" transport. This makes virtio devices discoverable via 86 Back to vfio-ccw, in short: 99 Physical vfio ccw device and its child mdev 102 As mentioned above, we realize vfio-ccw with a mdev implementation. 105 vfio-ccw device does not have an IOMMU level translation or isolation. 108 handling the I/O instruction interception, vfio-ccw has the software 127 - The vfio_mdev driver for the mediated vfio ccw device. [all …]
|