• D
    s390x: refactor reset/reipl handling · a30fb811
    David Hildenbrand 提交于
    Calling pause_all_vcpus()/resume_all_vcpus() from a VCPU thread might
    not be the best idea. As pause_all_vcpus() temporarily drops the qemu
    mutex, two parallel calls to pause_all_vcpus() can be active at a time,
    resulting in a deadlock. (either by two VCPUs or by the main thread and a
    VCPU)
    
    Let's handle it via the main loop instead, as suggested by Paolo. If we
    would have two parallel reset requests by two different VCPUs at the
    same time, the last one would win.
    
    We use the existing ipl device to handle it. The nice side effect is
    that we can get rid of reipl_requested.
    
    This change implies that all reset handling now goes via the common
    path, so "no-reboot" handling is now active for all kinds of reboots.
    
    Let's execute any CPU initialization code on the target CPU using
    run_on_cpu.
    Signed-off-by: NDavid Hildenbrand <david@redhat.com>
    Message-Id: <20180424101859.10239-1-david@redhat.com>
    Acked-by: NThomas Huth <thuth@redhat.com>
    Signed-off-by: NCornelia Huck <cohuck@redhat.com>
    a30fb811
internal.h 16.4 KB