xref: /qemu/hw/intc/loongarch_ipi_kvm.c (revision 412f655566bfadfe85d6f52a7e4420b418f261c3)
1*412f6555SBibo Mao /* SPDX-License-Identifier: GPL-2.0-or-later */
2*412f6555SBibo Mao /*
3*412f6555SBibo Mao  * LoongArch IPI interrupt KVM support
4*412f6555SBibo Mao  *
5*412f6555SBibo Mao  * Copyright (C) 2025 Loongson Technology Corporation Limited
6*412f6555SBibo Mao  */
7*412f6555SBibo Mao 
8*412f6555SBibo Mao #include "qemu/osdep.h"
9*412f6555SBibo Mao #include "qapi/error.h"
10*412f6555SBibo Mao #include "hw/intc/loongarch_ipi.h"
11*412f6555SBibo Mao #include "system/kvm.h"
12*412f6555SBibo Mao #include "target/loongarch/cpu.h"
13*412f6555SBibo Mao 
14*412f6555SBibo Mao void kvm_ipi_realize(DeviceState *dev, Error **errp)
15*412f6555SBibo Mao {
16*412f6555SBibo Mao     LoongarchIPIState *lis = LOONGARCH_IPI(dev);
17*412f6555SBibo Mao     int ret;
18*412f6555SBibo Mao 
19*412f6555SBibo Mao     ret = kvm_create_device(kvm_state, KVM_DEV_TYPE_LOONGARCH_IPI, false);
20*412f6555SBibo Mao     if (ret < 0) {
21*412f6555SBibo Mao         fprintf(stderr, "IPI KVM_CREATE_DEVICE failed: %s\n",
22*412f6555SBibo Mao                 strerror(-ret));
23*412f6555SBibo Mao         abort();
24*412f6555SBibo Mao     }
25*412f6555SBibo Mao 
26*412f6555SBibo Mao     lis->dev_fd = ret;
27*412f6555SBibo Mao }
28