mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
hw/loongarch/virt: Modify ipi as percpu device
ipi is used to communicate between cpus, this patch modified loongarch ipi device as percpu device, so that there are 2 MemoryRegions with ipi device, rather than 2*cpus MemoryRegions, which may be large than QDEV_MAX_MMIO if more cpus are added on loongarch virt machine. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Song Gao <gaosong@loongson.cn> Message-Id: <20230512100421.1867848-2-gaosong@loongson.cn>
This commit is contained in:
parent
7318c62215
commit
78464f023b
4 changed files with 26 additions and 41 deletions
|
@ -28,9 +28,6 @@
|
|||
#define MAIL_SEND_OFFSET 0
|
||||
#define ANY_SEND_OFFSET (IOCSR_ANY_SEND - IOCSR_MAIL_SEND)
|
||||
|
||||
#define MAX_IPI_CORE_NUM 4
|
||||
#define MAX_IPI_MBX_NUM 4
|
||||
|
||||
#define TYPE_LOONGARCH_IPI "loongarch_ipi"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(LoongArchIPI, LOONGARCH_IPI)
|
||||
|
||||
|
@ -40,14 +37,15 @@ typedef struct IPICore {
|
|||
uint32_t set;
|
||||
uint32_t clear;
|
||||
/* 64bit buf divide into 2 32bit buf */
|
||||
uint32_t buf[MAX_IPI_MBX_NUM * 2];
|
||||
uint32_t buf[2];
|
||||
qemu_irq irq;
|
||||
} IPICore;
|
||||
|
||||
struct LoongArchIPI {
|
||||
SysBusDevice parent_obj;
|
||||
MemoryRegion ipi_iocsr_mem[MAX_IPI_CORE_NUM];
|
||||
MemoryRegion ipi64_iocsr_mem[MAX_IPI_CORE_NUM];
|
||||
MemoryRegion ipi_iocsr_mem;
|
||||
MemoryRegion ipi64_iocsr_mem;
|
||||
IPICore ipi_core;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -36,7 +36,6 @@ struct LoongArchMachineState {
|
|||
/*< private >*/
|
||||
MachineState parent_obj;
|
||||
|
||||
IPICore ipi_core[MAX_IPI_CORE_NUM];
|
||||
MemoryRegion lowmem;
|
||||
MemoryRegion highmem;
|
||||
MemoryRegion isa_io;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue