ccw->count = sizeof(struct dasd_psf_prssd_data);
        ccw->flags |= CCW_FLAG_CC;
        ccw->flags |= CCW_FLAG_SLI;
-       ccw->cda = (__u32)(addr_t)prssdp;
+       ccw->cda = (__u32)virt_to_phys(prssdp);
 
        /* Read Subsystem Data - query host access */
        ccw++;
        ccw->cmd_code = DASD_ECKD_CCW_RSSD;
        ccw->count = sizeof(*pprc_data);
        ccw->flags |= CCW_FLAG_SLI;
-       ccw->cda = (__u32)(addr_t)pprc_data;
+       ccw->cda = (__u32)virt_to_phys(pprc_data);
 
        cqr->buildclk = get_tod_clock();
        cqr->status = DASD_CQR_FILLED;
 
                for (count = 0; count < 32 && count < act->count;
                     count += sizeof(int))
                        len += sprintf(page + len, " %08X",
-                                      ((int *) (addr_t) act->cda)
+                                      ((int *)phys_to_virt(act->cda))
                                       [(count>>2)]);
                len += sprintf(page + len, "\n");
                act++;
 
        /* print failing CCW area */
        len = 0;
-       if (act <  ((struct ccw1 *)(addr_t) irb->scsw.cmd.cpa) - 2) {
-               act = ((struct ccw1 *)(addr_t) irb->scsw.cmd.cpa) - 2;
+       if (act < ((struct ccw1 *)phys_to_virt(irb->scsw.cmd.cpa)) - 2) {
+               act = ((struct ccw1 *)phys_to_virt(irb->scsw.cmd.cpa)) - 2;
                len += sprintf(page + len, "......\n");
        }
-       end = min((struct ccw1 *)(addr_t) irb->scsw.cmd.cpa + 2, last);
+       end = min((struct ccw1 *)phys_to_virt(irb->scsw.cmd.cpa) + 2, last);
        while (act <= end) {
                len += sprintf(page + len, "CCW %px: %08X %08X DAT:",
                               act, ((int *) act)[0], ((int *) act)[1]);
                for (count = 0; count < 32 && count < act->count;
                     count += sizeof(int))
                        len += sprintf(page + len, " %08X",
-                                      ((int *) (addr_t) act->cda)
+                                      ((int *)phys_to_virt(act->cda))
                                       [(count>>2)]);
                len += sprintf(page + len, "\n");
                act++;
                for (count = 0; count < 32 && count < act->count;
                     count += sizeof(int))
                        len += sprintf(page + len, " %08X",
-                                      ((int *) (addr_t) act->cda)
+                                      ((int *)phys_to_virt(act->cda))
                                       [(count>>2)]);
                len += sprintf(page + len, "\n");
                act++;