• Bibo Mao's avatar
    LoongArch: KVM: Add PV IPI support on guest side · 74c16b2e
    Bibo Mao authored
    PARAVIRT config option and PV IPI is added for the guest side, function
    pv_ipi_init() is used to add IPI sending and IPI receiving hooks. This
    function firstly checks whether system runs in VM mode, and if kernel
    runs in VM mode, it will call function kvm_para_available() to detect
    the current hypervirsor type (now only KVM type detection is supported).
    The paravirt functions can work only if current hypervisor type is KVM,
    since there is only KVM supported on LoongArch now.
    
    PV IPI uses virtual IPI sender and virtual IPI receiver functions. With
    virtual IPI sender, IPI message is stored in memory rather than emulated
    HW. IPI multicast is also supported, and 128 vcpus can received IPIs
    at the same time like X86 KVM method. Hypercall method is used for IPI
    sending.
    
    With virtual IPI receiver, HW SWI0 is used rather than real IPI HW.
    Since VCPU has separate HW SWI0 like HW timer, there is no trap in IPI
    interrupt acknowledge. Since IPI message is stored in memory, there is
    no trap in getting IPI message.
    Signed-off-by: default avatarBibo Mao <maobibo@loongson.cn>
    Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
    74c16b2e
Kconfig 20.1 KB