@@ -286,6 +286,7 @@ static union iucv_param *iucv_param_irq[NR_CPUS];
286
286
*/
287
287
static inline int __iucv_call_b2f0 (int command , union iucv_param * parm )
288
288
{
289
+ unsigned long reg1 = virt_to_phys (parm );
289
290
int cc ;
290
291
291
292
asm volatile (
@@ -296,7 +297,7 @@ static inline int __iucv_call_b2f0(int command, union iucv_param *parm)
296
297
" srl %[cc],28\n"
297
298
: [cc ] "=&d" (cc ), "+m" (* parm )
298
299
: [reg0 ] "d" ((unsigned long )command ),
299
- [reg1 ] "d" (( unsigned long ) parm )
300
+ [reg1 ] "d" (reg1 )
300
301
: "cc" , "0" , "1" );
301
302
return cc ;
302
303
}
@@ -1123,7 +1124,7 @@ int __iucv_message_receive(struct iucv_path *path, struct iucv_message *msg,
1123
1124
1124
1125
parm = iucv_param [smp_processor_id ()];
1125
1126
memset (parm , 0 , sizeof (union iucv_param ));
1126
- parm -> db .ipbfadr1 = (u32 )( addr_t ) buffer ;
1127
+ parm -> db .ipbfadr1 = (u32 )virt_to_phys ( buffer ) ;
1127
1128
parm -> db .ipbfln1f = (u32 ) size ;
1128
1129
parm -> db .ipmsgid = msg -> id ;
1129
1130
parm -> db .ippathid = path -> pathid ;
@@ -1241,7 +1242,7 @@ int iucv_message_reply(struct iucv_path *path, struct iucv_message *msg,
1241
1242
parm -> dpl .iptrgcls = msg -> class ;
1242
1243
memcpy (parm -> dpl .iprmmsg , reply , min_t (size_t , size , 8 ));
1243
1244
} else {
1244
- parm -> db .ipbfadr1 = (u32 )( addr_t ) reply ;
1245
+ parm -> db .ipbfadr1 = (u32 )virt_to_phys ( reply ) ;
1245
1246
parm -> db .ipbfln1f = (u32 ) size ;
1246
1247
parm -> db .ippathid = path -> pathid ;
1247
1248
parm -> db .ipflags1 = flags ;
@@ -1293,7 +1294,7 @@ int __iucv_message_send(struct iucv_path *path, struct iucv_message *msg,
1293
1294
parm -> dpl .ipmsgtag = msg -> tag ;
1294
1295
memcpy (parm -> dpl .iprmmsg , buffer , 8 );
1295
1296
} else {
1296
- parm -> db .ipbfadr1 = (u32 )( addr_t ) buffer ;
1297
+ parm -> db .ipbfadr1 = (u32 )virt_to_phys ( buffer ) ;
1297
1298
parm -> db .ipbfln1f = (u32 ) size ;
1298
1299
parm -> db .ippathid = path -> pathid ;
1299
1300
parm -> db .ipflags1 = flags | IUCV_IPNORPY ;
@@ -1378,7 +1379,7 @@ int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
1378
1379
parm -> dpl .iptrgcls = msg -> class ;
1379
1380
parm -> dpl .ipsrccls = srccls ;
1380
1381
parm -> dpl .ipmsgtag = msg -> tag ;
1381
- parm -> dpl .ipbfadr2 = (u32 )( addr_t ) answer ;
1382
+ parm -> dpl .ipbfadr2 = (u32 )virt_to_phys ( answer ) ;
1382
1383
parm -> dpl .ipbfln2f = (u32 ) asize ;
1383
1384
memcpy (parm -> dpl .iprmmsg , buffer , 8 );
1384
1385
} else {
@@ -1387,9 +1388,9 @@ int iucv_message_send2way(struct iucv_path *path, struct iucv_message *msg,
1387
1388
parm -> db .iptrgcls = msg -> class ;
1388
1389
parm -> db .ipsrccls = srccls ;
1389
1390
parm -> db .ipmsgtag = msg -> tag ;
1390
- parm -> db .ipbfadr1 = (u32 )( addr_t ) buffer ;
1391
+ parm -> db .ipbfadr1 = (u32 )virt_to_phys ( buffer ) ;
1391
1392
parm -> db .ipbfln1f = (u32 ) size ;
1392
- parm -> db .ipbfadr2 = (u32 )( addr_t ) answer ;
1393
+ parm -> db .ipbfadr2 = (u32 )virt_to_phys ( answer ) ;
1393
1394
parm -> db .ipbfln2f = (u32 ) asize ;
1394
1395
}
1395
1396
rc = iucv_call_b2f0 (IUCV_SEND , parm );
0 commit comments