s390/cio: use new address translation helpers
authorHeiko Carstens <hca@linux.ibm.com>
Thu, 7 Mar 2024 12:28:15 +0000 (13:28 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Wed, 13 Mar 2024 08:23:47 +0000 (09:23 +0100)
Use virt_to_dma32() and friends to properly convert virtual to physical and
physical to virtual addresses so that "make C=1" does not generate any
warnings anymore.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
13 files changed:
drivers/s390/cio/chsc.c
drivers/s390/cio/chsc.h
drivers/s390/cio/cio.c
drivers/s390/cio/device_fsm.c
drivers/s390/cio/device_id.c
drivers/s390/cio/device_pgid.c
drivers/s390/cio/device_status.c
drivers/s390/cio/eadm_sch.c
drivers/s390/cio/fcx.c
drivers/s390/cio/qdio_main.c
drivers/s390/cio/qdio_setup.c
drivers/s390/cio/qdio_thinint.c
drivers/s390/net/qeth_core_main.c

index 3d88899dff7cfcf4da1d68c939fc73bd3937ba1f..722ad623c729f87f93825340bca46318bb7b2230 100644 (file)
@@ -191,7 +191,7 @@ EXPORT_SYMBOL_GPL(chsc_ssqd);
  * Returns 0 on success.
  */
 int chsc_sadc(struct subchannel_id schid, struct chsc_scssc_area *scssc,
-             u64 summary_indicator_addr, u64 subchannel_indicator_addr, u8 isc)
+             dma64_t summary_indicator_addr, dma64_t subchannel_indicator_addr, u8 isc)
 {
        memset(scssc, 0, sizeof(*scssc));
        scssc->request.length = 0x0fe0;
@@ -861,9 +861,9 @@ int __chsc_do_secm(struct channel_subsystem *css, int enable)
                u32 key : 4;
                u32 : 28;
                u32 zeroes1;
-               u32 cub_addr1;
+               dma32_t cub_addr1;
                u32 zeroes2;
-               u32 cub_addr2;
+               dma32_t cub_addr2;
                u32 reserved[13];
                struct chsc_header response;
                u32 status : 8;
@@ -881,8 +881,8 @@ int __chsc_do_secm(struct channel_subsystem *css, int enable)
        secm_area->request.code = 0x0016;
 
        secm_area->key = PAGE_DEFAULT_KEY >> 4;
-       secm_area->cub_addr1 = virt_to_phys(css->cub_addr1);
-       secm_area->cub_addr2 = virt_to_phys(css->cub_addr2);
+       secm_area->cub_addr1 = virt_to_dma32(css->cub_addr1);
+       secm_area->cub_addr2 = virt_to_dma32(css->cub_addr2);
 
        secm_area->operation_code = enable ? 0 : 1;
 
index 5d51c3f41f203ca65dd1a69104ad681bd78294aa..03602295f33503ed20a8dc521053be2e51d33d8d 100644 (file)
@@ -164,7 +164,7 @@ void chsc_chp_offline(struct chp_id chpid);
 int chsc_get_channel_measurement_chars(struct channel_path *chp);
 int chsc_ssqd(struct subchannel_id schid, struct chsc_ssqd_area *ssqd);
 int chsc_sadc(struct subchannel_id schid, struct chsc_scssc_area *scssc,
-             u64 summary_indicator_addr, u64 subchannel_indicator_addr,
+             dma64_t summary_indicator_addr, dma64_t subchannel_indicator_addr,
              u8 isc);
 int chsc_sgib(u32 origin);
 int chsc_error_from_response(int response);
index a5736b7357b2825fa90acfc58d7f397553e23ec7..7e759c21480e73031f468635f404d002ec463305 100644 (file)
@@ -148,7 +148,7 @@ cio_start_key (struct subchannel *sch,      /* subchannel structure */
        orb->cmd.i2k = 0;
        orb->cmd.key = key >> 4;
        /* issue "Start Subchannel" */
-       orb->cmd.cpa = (u32)virt_to_phys(cpa);
+       orb->cmd.cpa = virt_to_dma32(cpa);
        ccode = ssch(sch->schid, orb);
 
        /* process condition code */
@@ -717,7 +717,7 @@ int cio_tm_start_key(struct subchannel *sch, struct tcw *tcw, u8 lpm, u8 key)
        orb->tm.key = key >> 4;
        orb->tm.b = 1;
        orb->tm.lpm = lpm ? lpm : sch->lpm;
-       orb->tm.tcw = (u32)virt_to_phys(tcw);
+       orb->tm.tcw = virt_to_dma32(tcw);
        cc = ssch(sch->schid, orb);
        switch (cc) {
        case 0:
index e14a491700ec9fdd7bdd9e33b6cc15ff0e812c9a..65d8b2cfd6262d53a03bf10295d5d6c59f518c5d 100644 (file)
@@ -64,13 +64,13 @@ static void ccw_timeout_log(struct ccw_device *cdev)
                printk(KERN_WARNING "cio: orb indicates transport mode\n");
                printk(KERN_WARNING "cio: last tcw:\n");
                print_hex_dump(KERN_WARNING, "cio:  ", DUMP_PREFIX_NONE, 16, 1,
-                              phys_to_virt(orb->tm.tcw),
+                              dma32_to_virt(orb->tm.tcw),
                               sizeof(struct tcw), 0);
        } else {
                printk(KERN_WARNING "cio: orb indicates command mode\n");
-               if (phys_to_virt(orb->cmd.cpa) ==
+               if (dma32_to_virt(orb->cmd.cpa) ==
                    &private->dma_area->sense_ccw ||
-                   phys_to_virt(orb->cmd.cpa) ==
+                   dma32_to_virt(orb->cmd.cpa) ==
                    cdev->private->dma_area->iccws)
                        printk(KERN_WARNING "cio: last channel program "
                               "(intern):\n");
@@ -78,7 +78,7 @@ static void ccw_timeout_log(struct ccw_device *cdev)
                        printk(KERN_WARNING "cio: last channel program:\n");
 
                print_hex_dump(KERN_WARNING, "cio:  ", DUMP_PREFIX_NONE, 16, 1,
-                              phys_to_virt(orb->cmd.cpa),
+                              dma32_to_virt(orb->cmd.cpa),
                               sizeof(struct ccw1), 0);
        }
        printk(KERN_WARNING "cio: ccw device state: %d\n",
index ce99ee2457e6e8669346fdee588cd05e0783b93f..a512eac8348529edcc033bdf9f977e1bbe3eae7f 100644 (file)
@@ -210,7 +210,7 @@ void ccw_device_sense_id_start(struct ccw_device *cdev)
        snsid_init(cdev);
        /* Channel program setup. */
        cp->cmd_code    = CCW_CMD_SENSE_ID;
-       cp->cda         = (u32)virt_to_phys(&cdev->private->dma_area->senseid);
+       cp->cda         = virt_to_dma32(&cdev->private->dma_area->senseid);
        cp->count       = sizeof(struct senseid);
        cp->flags       = CCW_FLAG_SLI;
        /* Request setup. */
index ad90045873e25a3e4e8f26c6baa566841d902af3..b3afe283cc1033f678e6729c164c485b4ecbce32 100644 (file)
@@ -141,7 +141,7 @@ static void spid_build_cp(struct ccw_device *cdev, u8 fn)
 
        pgid->inf.fc    = fn;
        cp->cmd_code    = CCW_CMD_SET_PGID;
-       cp->cda         = (u32)virt_to_phys(pgid);
+       cp->cda         = virt_to_dma32(pgid);
        cp->count       = sizeof(*pgid);
        cp->flags       = CCW_FLAG_SLI;
        req->cp         = cp;
@@ -442,7 +442,7 @@ static void snid_build_cp(struct ccw_device *cdev)
 
        /* Channel program setup. */
        cp->cmd_code    = CCW_CMD_SENSE_PGID;
-       cp->cda         = (u32)virt_to_phys(&cdev->private->dma_area->pgid[i]);
+       cp->cda         = virt_to_dma32(&cdev->private->dma_area->pgid[i]);
        cp->count       = sizeof(struct pgid);
        cp->flags       = CCW_FLAG_SLI;
        req->cp         = cp;
@@ -632,11 +632,11 @@ static void stlck_build_cp(struct ccw_device *cdev, void *buf1, void *buf2)
        struct ccw1 *cp = cdev->private->dma_area->iccws;
 
        cp[0].cmd_code = CCW_CMD_STLCK;
-       cp[0].cda = (u32)virt_to_phys(buf1);
+       cp[0].cda = virt_to_dma32(buf1);
        cp[0].count = 32;
        cp[0].flags = CCW_FLAG_CC;
        cp[1].cmd_code = CCW_CMD_RELEASE;
-       cp[1].cda = (u32)virt_to_phys(buf2);
+       cp[1].cda = virt_to_dma32(buf2);
        cp[1].count = 32;
        cp[1].flags = 0;
        req->cp = cp;
index 6c2e35065fec3e9376a08e5375cd583420321b09..0ff8482a7b155ef878e44b5dcd7bd995f86be740 100644 (file)
@@ -332,7 +332,7 @@ ccw_device_do_sense(struct ccw_device *cdev, struct irb *irb)
         */
        sense_ccw = &to_io_private(sch)->dma_area->sense_ccw;
        sense_ccw->cmd_code = CCW_CMD_BASIC_SENSE;
-       sense_ccw->cda = virt_to_phys(cdev->private->dma_area->irb.ecw);
+       sense_ccw->cda = virt_to_dma32(cdev->private->dma_area->irb.ecw);
        sense_ccw->count = SENSE_MAX_COUNT;
        sense_ccw->flags = CCW_FLAG_SLI;
 
index 1caedf931a5f00e89966bd2189ea26511e92d9d6..165de15523016c758ba8972b0c0d59b4d2aca5b4 100644 (file)
@@ -63,7 +63,7 @@ static int eadm_subchannel_start(struct subchannel *sch, struct aob *aob)
        int cc;
 
        orb_init(orb);
-       orb->eadm.aob = (u32)virt_to_phys(aob);
+       orb->eadm.aob = virt_to_dma32(aob);
        orb->eadm.intparm = (u32)virt_to_phys(sch);
        orb->eadm.key = PAGE_DEFAULT_KEY >> 4;
 
@@ -147,7 +147,7 @@ static void eadm_subchannel_irq(struct subchannel *sch)
                css_sched_sch_todo(sch, SCH_TODO_EVAL);
                return;
        }
-       scm_irq_handler(phys_to_virt(scsw->aob), error);
+       scm_irq_handler(dma32_to_virt(scsw->aob), error);
        private->state = EADM_IDLE;
 
        if (private->completion)
index 84f24a2f46e4a0ae48f34ac8ddbe664c5f396a8b..ba35b64949d3a35a8d4e28488227c615072e90c4 100644 (file)
@@ -25,7 +25,7 @@
  */
 struct tcw *tcw_get_intrg(struct tcw *tcw)
 {
-       return phys_to_virt(tcw->intrg);
+       return dma32_to_virt(tcw->intrg);
 }
 EXPORT_SYMBOL(tcw_get_intrg);
 
@@ -40,9 +40,9 @@ EXPORT_SYMBOL(tcw_get_intrg);
 void *tcw_get_data(struct tcw *tcw)
 {
        if (tcw->r)
-               return phys_to_virt(tcw->input);
+               return dma64_to_virt(tcw->input);
        if (tcw->w)
-               return phys_to_virt(tcw->output);
+               return dma64_to_virt(tcw->output);
        return NULL;
 }
 EXPORT_SYMBOL(tcw_get_data);
@@ -55,7 +55,7 @@ EXPORT_SYMBOL(tcw_get_data);
  */
 struct tccb *tcw_get_tccb(struct tcw *tcw)
 {
-       return phys_to_virt(tcw->tccb);
+       return dma64_to_virt(tcw->tccb);
 }
 EXPORT_SYMBOL(tcw_get_tccb);
 
@@ -67,7 +67,7 @@ EXPORT_SYMBOL(tcw_get_tccb);
  */
 struct tsb *tcw_get_tsb(struct tcw *tcw)
 {
-       return phys_to_virt(tcw->tsb);
+       return dma64_to_virt(tcw->tsb);
 }
 EXPORT_SYMBOL(tcw_get_tsb);
 
@@ -190,7 +190,7 @@ EXPORT_SYMBOL(tcw_finalize);
  */
 void tcw_set_intrg(struct tcw *tcw, struct tcw *intrg_tcw)
 {
-       tcw->intrg = (u32)virt_to_phys(intrg_tcw);
+       tcw->intrg = virt_to_dma32(intrg_tcw);
 }
 EXPORT_SYMBOL(tcw_set_intrg);
 
@@ -208,11 +208,11 @@ EXPORT_SYMBOL(tcw_set_intrg);
 void tcw_set_data(struct tcw *tcw, void *data, int use_tidal)
 {
        if (tcw->r) {
-               tcw->input = virt_to_phys(data);
+               tcw->input = virt_to_dma64(data);
                if (use_tidal)
                        tcw->flags |= TCW_FLAGS_INPUT_TIDA;
        } else if (tcw->w) {
-               tcw->output = virt_to_phys(data);
+               tcw->output = virt_to_dma64(data);
                if (use_tidal)
                        tcw->flags |= TCW_FLAGS_OUTPUT_TIDA;
        }
@@ -228,7 +228,7 @@ EXPORT_SYMBOL(tcw_set_data);
  */
 void tcw_set_tccb(struct tcw *tcw, struct tccb *tccb)
 {
-       tcw->tccb = virt_to_phys(tccb);
+       tcw->tccb = virt_to_dma64(tccb);
 }
 EXPORT_SYMBOL(tcw_set_tccb);
 
@@ -241,7 +241,7 @@ EXPORT_SYMBOL(tcw_set_tccb);
  */
 void tcw_set_tsb(struct tcw *tcw, struct tsb *tsb)
 {
-       tcw->tsb = virt_to_phys(tsb);
+       tcw->tsb = virt_to_dma64(tsb);
 }
 EXPORT_SYMBOL(tcw_set_tsb);
 
@@ -346,7 +346,7 @@ struct tidaw *tcw_add_tidaw(struct tcw *tcw, int num_tidaws, u8 flags,
        memset(tidaw, 0, sizeof(struct tidaw));
        tidaw->flags = flags;
        tidaw->count = count;
-       tidaw->addr = virt_to_phys(addr);
+       tidaw->addr = virt_to_dma64(addr);
        return tidaw;
 }
 EXPORT_SYMBOL(tcw_add_tidaw);
index 9cde55730b65a733b5d1cb9977c83750392e6312..3d9f0834c78bf1e6a55c17a21218b29bacbd1dce 100644 (file)
@@ -82,7 +82,7 @@ static inline int do_siga_input(unsigned long schid, unsigned long mask,
  */
 static inline int do_siga_output(unsigned long schid, unsigned long mask,
                                 unsigned int *bb, unsigned long fc,
-                                unsigned long aob)
+                                dma64_t aob)
 {
        int cc;
 
@@ -321,7 +321,7 @@ static inline int qdio_siga_sync_q(struct qdio_q *q)
 }
 
 static int qdio_siga_output(struct qdio_q *q, unsigned int count,
-                           unsigned int *busy_bit, unsigned long aob)
+                           unsigned int *busy_bit, dma64_t aob)
 {
        unsigned long schid = *((u32 *) &q->irq_ptr->schid);
        unsigned int fc = QDIO_SIGA_WRITE;
@@ -628,7 +628,7 @@ int qdio_inspect_output_queue(struct ccw_device *cdev, unsigned int nr,
 EXPORT_SYMBOL_GPL(qdio_inspect_output_queue);
 
 static int qdio_kick_outbound_q(struct qdio_q *q, unsigned int count,
-                               unsigned long aob)
+                               dma64_t aob)
 {
        int retries = 0, cc;
        unsigned int busy_bit;
@@ -1070,7 +1070,7 @@ int qdio_establish(struct ccw_device *cdev,
        irq_ptr->ccw->cmd_code = ciw->cmd;
        irq_ptr->ccw->flags = CCW_FLAG_SLI;
        irq_ptr->ccw->count = ciw->count;
-       irq_ptr->ccw->cda = (u32) virt_to_phys(irq_ptr->qdr);
+       irq_ptr->ccw->cda = virt_to_dma32(irq_ptr->qdr);
 
        spin_lock_irq(get_ccwdev_lock(cdev));
        ccw_device_set_options_mask(cdev, 0);
@@ -1263,9 +1263,9 @@ static int handle_outbound(struct qdio_q *q, unsigned int bufnr, unsigned int co
                qperf_inc(q, outbound_queue_full);
 
        if (queue_type(q) == QDIO_IQDIO_QFMT) {
-               unsigned long phys_aob = aob ? virt_to_phys(aob) : 0;
+               dma64_t phys_aob = aob ? virt_to_dma64(aob) : 0;
 
-               WARN_ON_ONCE(!IS_ALIGNED(phys_aob, 256));
+               WARN_ON_ONCE(!IS_ALIGNED(dma64_to_u64(phys_aob), 256));
                rc = qdio_kick_outbound_q(q, count, phys_aob);
        } else if (qdio_need_siga_sync(q->irq_ptr)) {
                rc = qdio_sync_output_queue(q);
index 714878e2acc4d907f94a7f4c1f2384e1a131413e..99c0fd23022de3f2c8d97366ab705a07ad2d846d 100644 (file)
@@ -179,7 +179,7 @@ static void setup_storage_lists(struct qdio_q *q, struct qdio_irq *irq_ptr,
 
        /* fill in sl */
        for (j = 0; j < QDIO_MAX_BUFFERS_PER_Q; j++)
-               q->sl->element[j].sbal = virt_to_phys(q->sbal[j]);
+               q->sl->element[j].sbal = virt_to_dma64(q->sbal[j]);
 }
 
 static void setup_queues(struct qdio_irq *irq_ptr,
@@ -291,9 +291,9 @@ void qdio_setup_ssqd_info(struct qdio_irq *irq_ptr)
 
 static void qdio_fill_qdr_desc(struct qdesfmt0 *desc, struct qdio_q *queue)
 {
-       desc->sliba = virt_to_phys(queue->slib);
-       desc->sla = virt_to_phys(queue->sl);
-       desc->slsba = virt_to_phys(&queue->slsb);
+       desc->sliba = virt_to_dma64(queue->slib);
+       desc->sla = virt_to_dma64(queue->sl);
+       desc->slsba = virt_to_dma64(&queue->slsb);
 
        desc->akey = PAGE_DEFAULT_KEY >> 4;
        desc->bkey = PAGE_DEFAULT_KEY >> 4;
@@ -315,7 +315,7 @@ static void setup_qdr(struct qdio_irq *irq_ptr,
        irq_ptr->qdr->oqdcnt = qdio_init->no_output_qs;
        irq_ptr->qdr->iqdsz = sizeof(struct qdesfmt0) / 4; /* size in words */
        irq_ptr->qdr->oqdsz = sizeof(struct qdesfmt0) / 4;
-       irq_ptr->qdr->qiba = virt_to_phys(&irq_ptr->qib);
+       irq_ptr->qdr->qiba = virt_to_dma64(&irq_ptr->qib);
        irq_ptr->qdr->qkey = PAGE_DEFAULT_KEY >> 4;
 
        for (i = 0; i < qdio_init->no_input_qs; i++)
index 9b9335dd06db6cbe149b8897d6e9d5a645d512f6..ccd4ed93bd92ddacdafc4f28393fde530ad88fbe 100644 (file)
@@ -137,15 +137,15 @@ static struct airq_struct tiqdio_airq = {
 static int set_subchannel_ind(struct qdio_irq *irq_ptr, int reset)
 {
        struct chsc_scssc_area *scssc = (void *)irq_ptr->chsc_page;
-       u64 summary_indicator_addr, subchannel_indicator_addr;
+       dma64_t summary_indicator_addr, subchannel_indicator_addr;
        int rc;
 
        if (reset) {
                summary_indicator_addr = 0;
                subchannel_indicator_addr = 0;
        } else {
-               summary_indicator_addr = virt_to_phys(tiqdio_airq.lsi_ptr);
-               subchannel_indicator_addr = virt_to_phys(irq_ptr->dsci);
+               summary_indicator_addr = virt_to_dma64(tiqdio_airq.lsi_ptr);
+               subchannel_indicator_addr = virt_to_dma64(irq_ptr->dsci);
        }
 
        rc = chsc_sadc(irq_ptr->schid, scssc, summary_indicator_addr,
index cf8506d0f185c0bd6b921cbc6ed507c1be38088b..b210e666d0c0ff07ded8b416e1557014011ef463 100644 (file)
@@ -1404,7 +1404,7 @@ static void qeth_tx_complete_pending_bufs(struct qeth_card *card,
                        for (i = 0;
                             i < aob->sb_count && i < queue->max_elements;
                             i++) {
-                               void *data = phys_to_virt(aob->sba[i]);
+                               void *data = dma64_to_virt(aob->sba[i]);
 
                                if (test_bit(i, buf->from_kmem_cache) && data)
                                        kmem_cache_free(qeth_core_header_cache,