diff mbox

s390x/kvm: fix run_on_cpu sigp conversions

Message ID 20161102162103.66480-1-cornelia.huck@de.ibm.com (mailing list archive)
State New, archived
Headers show

Commit Message

Cornelia Huck Nov. 2, 2016, 4:21 p.m. UTC
Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
attempted to convert all users of run_on_cpu to use the new
run_on_cpu_data type. It missed to change the called sigp_* routines,
however. Fix that.

Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
---
Peter, Stefan: This fixes building for s390x which is currently
broken (at least with kvm enabled). Two questions:
- Will you pick this up as a build fix, or should I do a pull req?
- Can we do anything more to catch errors like this?
---
 target-s390x/kvm.c | 36 ++++++++++++++++++------------------
 1 file changed, 18 insertions(+), 18 deletions(-)

Comments

Christian Borntraeger Nov. 4, 2016, 8:23 a.m. UTC | #1
On 11/02/2016 05:21 PM, Cornelia Huck wrote:
> Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> attempted to convert all users of run_on_cpu to use the new
> run_on_cpu_data type. It missed to change the called sigp_* routines,
> however. Fix that.
> 
> Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> ---
> Peter, Stefan: This fixes building for s390x which is currently
> broken (at least with kvm enabled). Two questions:
> - Will you pick this up as a build fix, or should I do a pull req?
> - Can we do anything more to catch errors like this?

I think if Peter could apply this immediately this would help testing
the softfreeze code.
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>


> ---
>  target-s390x/kvm.c | 36 ++++++++++++++++++------------------
>  1 file changed, 18 insertions(+), 18 deletions(-)
> 
> diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
> index 36b4847..97afe02 100644
> --- a/target-s390x/kvm.c
> +++ b/target-s390x/kvm.c
> @@ -1401,10 +1401,10 @@ static void set_sigp_status(SigpInfo *si, uint64_t status)
>      si->cc = SIGP_CC_STATUS_STORED;
>  }
> 
> -static void sigp_start(CPUState *cs, void *arg)
> +static void sigp_start(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
> 
>      if (s390_cpu_get_state(cpu) != CPU_STATE_STOPPED) {
>          si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
> @@ -1415,10 +1415,10 @@ static void sigp_start(CPUState *cs, void *arg)
>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>  }
> 
> -static void sigp_stop(CPUState *cs, void *arg)
> +static void sigp_stop(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
>      struct kvm_s390_irq irq = {
>          .type = KVM_S390_SIGP_STOP,
>      };
> @@ -1501,10 +1501,10 @@ static int kvm_s390_store_status(S390CPU *cpu, hwaddr addr, bool store_arch)
>      return 0;
>  }
> 
> -static void sigp_stop_and_store_status(CPUState *cs, void *arg)
> +static void sigp_stop_and_store_status(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
>      struct kvm_s390_irq irq = {
>          .type = KVM_S390_SIGP_STOP,
>      };
> @@ -1529,10 +1529,10 @@ static void sigp_stop_and_store_status(CPUState *cs, void *arg)
>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>  }
> 
> -static void sigp_store_status_at_address(CPUState *cs, void *arg)
> +static void sigp_store_status_at_address(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
>      uint32_t address = si->param & 0x7ffffe00u;
> 
>      /* cpu has to be stopped */
> @@ -1550,10 +1550,10 @@ static void sigp_store_status_at_address(CPUState *cs, void *arg)
>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>  }
> 
> -static void sigp_store_adtl_status(CPUState *cs, void *arg)
> +static void sigp_store_adtl_status(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
> 
>      if (!s390_has_feat(S390_FEAT_VECTOR)) {
>          set_sigp_status(si, SIGP_STAT_INVALID_ORDER);
> @@ -1581,10 +1581,10 @@ static void sigp_store_adtl_status(CPUState *cs, void *arg)
>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>  }
> 
> -static void sigp_restart(CPUState *cs, void *arg)
> +static void sigp_restart(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
>      struct kvm_s390_irq irq = {
>          .type = KVM_S390_RESTART,
>      };
> @@ -1612,11 +1612,11 @@ int kvm_s390_cpu_restart(S390CPU *cpu)
>      return 0;
>  }
> 
> -static void sigp_initial_cpu_reset(CPUState *cs, void *arg)
> +static void sigp_initial_cpu_reset(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
>      S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
> 
>      cpu_synchronize_state(cs);
>      scc->initial_cpu_reset(cs);
> @@ -1624,11 +1624,11 @@ static void sigp_initial_cpu_reset(CPUState *cs, void *arg)
>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>  }
> 
> -static void sigp_cpu_reset(CPUState *cs, void *arg)
> +static void sigp_cpu_reset(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
>      S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
> 
>      cpu_synchronize_state(cs);
>      scc->cpu_reset(cs);
> @@ -1636,10 +1636,10 @@ static void sigp_cpu_reset(CPUState *cs, void *arg)
>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>  }
> 
> -static void sigp_set_prefix(CPUState *cs, void *arg)
> +static void sigp_set_prefix(CPUState *cs, run_on_cpu_data arg)
>  {
>      S390CPU *cpu = S390_CPU(cs);
> -    SigpInfo *si = arg;
> +    SigpInfo *si = arg.host_ptr;
>      uint32_t addr = si->param & 0x7fffe000u;
> 
>      cpu_synchronize_state(cs);
>
Christian Borntraeger Nov. 4, 2016, 8:25 a.m. UTC | #2
On 11/04/2016 09:23 AM, Christian Borntraeger wrote:
> On 11/02/2016 05:21 PM, Cornelia Huck wrote:
>> Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
>> attempted to convert all users of run_on_cpu to use the new
>> run_on_cpu_data type. It missed to change the called sigp_* routines,
>> however. Fix that.
>>
>> Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
>> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
>> ---
>> Peter, Stefan: This fixes building for s390x which is currently
>> broken (at least with kvm enabled). Two questions:
>> - Will you pick this up as a build fix, or should I do a pull req?
>> - Can we do anything more to catch errors like this?
> 
> I think if Peter could apply this immediately this would help testing
> the softfreeze code.
> Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
> 

s/Peter/Stefan/  of course.


> 
>> ---
>>  target-s390x/kvm.c | 36 ++++++++++++++++++------------------
>>  1 file changed, 18 insertions(+), 18 deletions(-)
>>
>> diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
>> index 36b4847..97afe02 100644
>> --- a/target-s390x/kvm.c
>> +++ b/target-s390x/kvm.c
>> @@ -1401,10 +1401,10 @@ static void set_sigp_status(SigpInfo *si, uint64_t status)
>>      si->cc = SIGP_CC_STATUS_STORED;
>>  }
>>
>> -static void sigp_start(CPUState *cs, void *arg)
>> +static void sigp_start(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>
>>      if (s390_cpu_get_state(cpu) != CPU_STATE_STOPPED) {
>>          si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>> @@ -1415,10 +1415,10 @@ static void sigp_start(CPUState *cs, void *arg)
>>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>>  }
>>
>> -static void sigp_stop(CPUState *cs, void *arg)
>> +static void sigp_stop(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>      struct kvm_s390_irq irq = {
>>          .type = KVM_S390_SIGP_STOP,
>>      };
>> @@ -1501,10 +1501,10 @@ static int kvm_s390_store_status(S390CPU *cpu, hwaddr addr, bool store_arch)
>>      return 0;
>>  }
>>
>> -static void sigp_stop_and_store_status(CPUState *cs, void *arg)
>> +static void sigp_stop_and_store_status(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>      struct kvm_s390_irq irq = {
>>          .type = KVM_S390_SIGP_STOP,
>>      };
>> @@ -1529,10 +1529,10 @@ static void sigp_stop_and_store_status(CPUState *cs, void *arg)
>>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>>  }
>>
>> -static void sigp_store_status_at_address(CPUState *cs, void *arg)
>> +static void sigp_store_status_at_address(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>      uint32_t address = si->param & 0x7ffffe00u;
>>
>>      /* cpu has to be stopped */
>> @@ -1550,10 +1550,10 @@ static void sigp_store_status_at_address(CPUState *cs, void *arg)
>>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>>  }
>>
>> -static void sigp_store_adtl_status(CPUState *cs, void *arg)
>> +static void sigp_store_adtl_status(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>
>>      if (!s390_has_feat(S390_FEAT_VECTOR)) {
>>          set_sigp_status(si, SIGP_STAT_INVALID_ORDER);
>> @@ -1581,10 +1581,10 @@ static void sigp_store_adtl_status(CPUState *cs, void *arg)
>>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>>  }
>>
>> -static void sigp_restart(CPUState *cs, void *arg)
>> +static void sigp_restart(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>      struct kvm_s390_irq irq = {
>>          .type = KVM_S390_RESTART,
>>      };
>> @@ -1612,11 +1612,11 @@ int kvm_s390_cpu_restart(S390CPU *cpu)
>>      return 0;
>>  }
>>
>> -static void sigp_initial_cpu_reset(CPUState *cs, void *arg)
>> +static void sigp_initial_cpu_reset(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>>      S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>
>>      cpu_synchronize_state(cs);
>>      scc->initial_cpu_reset(cs);
>> @@ -1624,11 +1624,11 @@ static void sigp_initial_cpu_reset(CPUState *cs, void *arg)
>>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>>  }
>>
>> -static void sigp_cpu_reset(CPUState *cs, void *arg)
>> +static void sigp_cpu_reset(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>>      S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>
>>      cpu_synchronize_state(cs);
>>      scc->cpu_reset(cs);
>> @@ -1636,10 +1636,10 @@ static void sigp_cpu_reset(CPUState *cs, void *arg)
>>      si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
>>  }
>>
>> -static void sigp_set_prefix(CPUState *cs, void *arg)
>> +static void sigp_set_prefix(CPUState *cs, run_on_cpu_data arg)
>>  {
>>      S390CPU *cpu = S390_CPU(cs);
>> -    SigpInfo *si = arg;
>> +    SigpInfo *si = arg.host_ptr;
>>      uint32_t addr = si->param & 0x7fffe000u;
>>
>>      cpu_synchronize_state(cs);
>>
>
Paolo Bonzini Nov. 4, 2016, 9:06 a.m. UTC | #3
On 02/11/2016 17:21, Cornelia Huck wrote:
> Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> attempted to convert all users of run_on_cpu to use the new
> run_on_cpu_data type. It missed to change the called sigp_* routines,
> however. Fix that.
> 
> Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> ---
> Peter, Stefan: This fixes building for s390x which is currently
> broken (at least with kvm enabled). Two questions:
> - Will you pick this up as a build fix, or should I do a pull req?
> - Can we do anything more to catch errors like this?

Fam, can we use the linux-user support in tests/docker to build QEMU
with KVM support on ARM/MIPS/s390?  It would be already much better,
even if it obviously cannot run with KVM.

Paolo
Fam Zheng Nov. 7, 2016, 7:36 a.m. UTC | #4
On Fri, 11/04 10:06, Paolo Bonzini wrote:
> 
> 
> On 02/11/2016 17:21, Cornelia Huck wrote:
> > Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> > attempted to convert all users of run_on_cpu to use the new
> > run_on_cpu_data type. It missed to change the called sigp_* routines,
> > however. Fix that.
> > 
> > Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> > Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> > ---
> > Peter, Stefan: This fixes building for s390x which is currently
> > broken (at least with kvm enabled). Two questions:
> > - Will you pick this up as a build fix, or should I do a pull req?
> > - Can we do anything more to catch errors like this?
> 
> Fam, can we use the linux-user support in tests/docker to build QEMU
> with KVM support on ARM/MIPS/s390?  It would be already much better,
> even if it obviously cannot run with KVM.

I suppose you are asking adding coverage to patchew? (If you are asking if
tests/docker can use linux-user to do that, the answer is yes, as long as there
is debootstrap support for that platform.)

I think patchew can test a few foreign configurations. The problem with that
sort of tasks is that each of them can take hours, which is probably too slow
for patchew, before we have more testers.  But If we're to add testers, it
probably is much easier if we can just add machines of different platforms
(either baremetal or virtualized), and build natively.

Fam
Paolo Bonzini Nov. 7, 2016, 8:34 a.m. UTC | #5
On 07/11/2016 08:36, Fam Zheng wrote:
> On Fri, 11/04 10:06, Paolo Bonzini wrote:
>>
>>
>> On 02/11/2016 17:21, Cornelia Huck wrote:
>>> Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
>>> attempted to convert all users of run_on_cpu to use the new
>>> run_on_cpu_data type. It missed to change the called sigp_* routines,
>>> however. Fix that.
>>>
>>> Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
>>> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
>>> ---
>>> Peter, Stefan: This fixes building for s390x which is currently
>>> broken (at least with kvm enabled). Two questions:
>>> - Will you pick this up as a build fix, or should I do a pull req?
>>> - Can we do anything more to catch errors like this?
>>
>> Fam, can we use the linux-user support in tests/docker to build QEMU
>> with KVM support on ARM/MIPS/s390?  It would be already much better,
>> even if it obviously cannot run with KVM.
> 
> I suppose you are asking adding coverage to patchew? (If you are asking if
> tests/docker can use linux-user to do that, the answer is yes, as long as there
> is debootstrap support for that platform.)

No, not necessarily---I use tests/docker myself before sending pull
requests, and these days Peter only rejects my pull request for macOS
problems. :)

Paolo

> I think patchew can test a few foreign configurations. The problem with that
> sort of tasks is that each of them can take hours, which is probably too slow
> for patchew, before we have more testers.  But If we're to add testers, it
> probably is much easier if we can just add machines of different platforms
> (either baremetal or virtualized), and build natively.
> 
> Fam
>
Fam Zheng Nov. 7, 2016, 9 a.m. UTC | #6
On Mon, 11/07 09:34, Paolo Bonzini wrote:
> 
> 
> On 07/11/2016 08:36, Fam Zheng wrote:
> > On Fri, 11/04 10:06, Paolo Bonzini wrote:
> >>
> >>
> >> On 02/11/2016 17:21, Cornelia Huck wrote:
> >>> Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> >>> attempted to convert all users of run_on_cpu to use the new
> >>> run_on_cpu_data type. It missed to change the called sigp_* routines,
> >>> however. Fix that.
> >>>
> >>> Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> >>> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> >>> ---
> >>> Peter, Stefan: This fixes building for s390x which is currently
> >>> broken (at least with kvm enabled). Two questions:
> >>> - Will you pick this up as a build fix, or should I do a pull req?
> >>> - Can we do anything more to catch errors like this?
> >>
> >> Fam, can we use the linux-user support in tests/docker to build QEMU
> >> with KVM support on ARM/MIPS/s390?  It would be already much better,
> >> even if it obviously cannot run with KVM.
> > 
> > I suppose you are asking adding coverage to patchew? (If you are asking if
> > tests/docker can use linux-user to do that, the answer is yes, as long as there
> > is debootstrap support for that platform.)
> 
> No, not necessarily---I use tests/docker myself before sending pull
> requests, and these days Peter only rejects my pull request for macOS
> problems. :)

OK. The command is something along:

    $ arch=mips
    $ make docker-test-quick@debian-bootstrap \
        DEB_ARCH=$arch DEB_TYPE=stable \
        EXECUTABLE=/usr/bin/qemu-$arch \
        V=1 J=8

(FWIW, to avoid ld.so collision with the $arch binaries in the image, I only use
statically compiled qemu-user.)

Fam
Stefan Hajnoczi Nov. 7, 2016, 11:34 a.m. UTC | #7
On Wed, Nov 02, 2016 at 05:21:03PM +0100, Cornelia Huck wrote:
> Commit 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> attempted to convert all users of run_on_cpu to use the new
> run_on_cpu_data type. It missed to change the called sigp_* routines,
> however. Fix that.
> 
> Fixes: 14e6fe12a ("*_run_on_cpu: introduce run_on_cpu_data type")
> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
> ---
> Peter, Stefan: This fixes building for s390x which is currently
> broken (at least with kvm enabled). Two questions:
> - Will you pick this up as a build fix, or should I do a pull req?
> - Can we do anything more to catch errors like this?
> ---
>  target-s390x/kvm.c | 36 ++++++++++++++++++------------------
>  1 file changed, 18 insertions(+), 18 deletions(-)

Thanks, applied!

Stefan
diff mbox

Patch

diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c
index 36b4847..97afe02 100644
--- a/target-s390x/kvm.c
+++ b/target-s390x/kvm.c
@@ -1401,10 +1401,10 @@  static void set_sigp_status(SigpInfo *si, uint64_t status)
     si->cc = SIGP_CC_STATUS_STORED;
 }
 
-static void sigp_start(CPUState *cs, void *arg)
+static void sigp_start(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
 
     if (s390_cpu_get_state(cpu) != CPU_STATE_STOPPED) {
         si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
@@ -1415,10 +1415,10 @@  static void sigp_start(CPUState *cs, void *arg)
     si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
 }
 
-static void sigp_stop(CPUState *cs, void *arg)
+static void sigp_stop(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
     struct kvm_s390_irq irq = {
         .type = KVM_S390_SIGP_STOP,
     };
@@ -1501,10 +1501,10 @@  static int kvm_s390_store_status(S390CPU *cpu, hwaddr addr, bool store_arch)
     return 0;
 }
 
-static void sigp_stop_and_store_status(CPUState *cs, void *arg)
+static void sigp_stop_and_store_status(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
     struct kvm_s390_irq irq = {
         .type = KVM_S390_SIGP_STOP,
     };
@@ -1529,10 +1529,10 @@  static void sigp_stop_and_store_status(CPUState *cs, void *arg)
     si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
 }
 
-static void sigp_store_status_at_address(CPUState *cs, void *arg)
+static void sigp_store_status_at_address(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
     uint32_t address = si->param & 0x7ffffe00u;
 
     /* cpu has to be stopped */
@@ -1550,10 +1550,10 @@  static void sigp_store_status_at_address(CPUState *cs, void *arg)
     si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
 }
 
-static void sigp_store_adtl_status(CPUState *cs, void *arg)
+static void sigp_store_adtl_status(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
 
     if (!s390_has_feat(S390_FEAT_VECTOR)) {
         set_sigp_status(si, SIGP_STAT_INVALID_ORDER);
@@ -1581,10 +1581,10 @@  static void sigp_store_adtl_status(CPUState *cs, void *arg)
     si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
 }
 
-static void sigp_restart(CPUState *cs, void *arg)
+static void sigp_restart(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
     struct kvm_s390_irq irq = {
         .type = KVM_S390_RESTART,
     };
@@ -1612,11 +1612,11 @@  int kvm_s390_cpu_restart(S390CPU *cpu)
     return 0;
 }
 
-static void sigp_initial_cpu_reset(CPUState *cs, void *arg)
+static void sigp_initial_cpu_reset(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
     S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
 
     cpu_synchronize_state(cs);
     scc->initial_cpu_reset(cs);
@@ -1624,11 +1624,11 @@  static void sigp_initial_cpu_reset(CPUState *cs, void *arg)
     si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
 }
 
-static void sigp_cpu_reset(CPUState *cs, void *arg)
+static void sigp_cpu_reset(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
     S390CPUClass *scc = S390_CPU_GET_CLASS(cpu);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
 
     cpu_synchronize_state(cs);
     scc->cpu_reset(cs);
@@ -1636,10 +1636,10 @@  static void sigp_cpu_reset(CPUState *cs, void *arg)
     si->cc = SIGP_CC_ORDER_CODE_ACCEPTED;
 }
 
-static void sigp_set_prefix(CPUState *cs, void *arg)
+static void sigp_set_prefix(CPUState *cs, run_on_cpu_data arg)
 {
     S390CPU *cpu = S390_CPU(cs);
-    SigpInfo *si = arg;
+    SigpInfo *si = arg.host_ptr;
     uint32_t addr = si->param & 0x7fffe000u;
 
     cpu_synchronize_state(cs);