Philippe Mathieu-Daudé
fa6d4d7137
hw/intc/loongson_ipi: Remove unused headers
...
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240718133312.10324-19-philmd@linaro.org >
2024-09-13 20:10:49 +02:00
Bibo Mao
3fad6db79e
hw/intc/loongson_ipi: Restrict to MIPS
...
Now than LoongArch target can use the TYPE_LOONGARCH_IPI
model, restrict TYPE_LOONGSON_IPI to MIPS.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-15-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
ec8595578f
hw/intc/loongson_ipi: Move common code to loongson_ipi_common.c
...
Move the common code from loongson_ipi.c to loongson_ipi_common.c,
call parent_realize() instead of loongson_ipi_common_realize() in
loongson_ipi_realize().
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-12-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
2aca564e67
hw/intc/loongson_ipi: Expose loongson_ipi_core_read/write helpers
...
In order to access loongson_ipi_core_read/write helpers
from loongson_ipi_common.c in the next commit, make their
prototype declaration public.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-11-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
8f4f38fd2a
hw/intc/loongson_ipi: Add LoongsonIPICommonClass::cpu_by_arch_id handler
...
Allow Loongson IPI implementations to have their own
cpu_by_arch_id() handler.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-10-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
a81cd679d7
hw/intc/loongson_ipi: Add LoongsonIPICommonClass::get_iocsr_as handler
...
Allow Loongson IPI implementations to have their own get_iocsr_as()
handler.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-9-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
ed722e0ec4
hw/intc/loongson_ipi: Pass LoongsonIPICommonState to send_ipi_data()
...
In order to get LoongsonIPICommonClass in send_ipi_data()
in the next commit, propagate LoongsonIPICommonState.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-8-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
6c8698a5e4
hw/intc/loongson_ipi: Move IPICore structure to loongson_ipi_common.h
...
Move the IPICore structure and corresponding common fields
of LoongsonIPICommonState to "hw/intc/loongson_ipi_common.h".
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-7-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
a022e0de53
hw/intc/loongson_ipi: Move IPICore::mmio_mem to LoongsonIPIState
...
It is easier to manage one array of MMIO MR rather
than one per vCPU.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-6-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
7e555781e4
hw/intc/loongson_ipi: Add TYPE_LOONGSON_IPI_COMMON stub
...
Introduce LOONGSON_IPI_COMMON stubs, QDev parent of LOONGSON_IPI.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-4-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
530e6daf74
hw/intc/loongson_ipi: Extract loongson_ipi_common_realize()
...
In preparation to extract common IPI code in few commits,
extract loongson_ipi_common_realize().
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-3-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Bibo Mao
40a0815e31
hw/intc/loongson_ipi: Rename LoongsonIPI -> LoongsonIPIState
...
We'll have to add LoongsonIPIClass in few commits,
so rename LoongsonIPI as LoongsonIPIState for clarity.
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240805180622.21001-2-philmd@linaro.org >
2024-08-06 10:22:52 +02:00
Philippe Mathieu-Daudé
13e8ec6cf3
hw/intc/loongson_ipi: Declare QOM types using DEFINE_TYPES() macro
...
When multiple QOM types are registered in the same file,
it is simpler to use the the DEFINE_TYPES() macro. Replace
the type_init() / type_register_static() combination.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240718133312.10324-2-philmd@linaro.org >
2024-07-23 20:30:36 +02:00
Philippe Mathieu-Daudé
0c2086bc73
hw/intc/loongson_ipi: Fix resource leak
...
Once initialised, QOM objects can be realized and
unrealized multiple times before being finalized.
Resources allocated in REALIZE must be deallocated
in an equivalent UNREALIZE handler.
Free the CPU array in loongson_ipi_unrealize()
instead of loongson_ipi_finalize().
Cc: qemu-stable@nongnu.org
Fixes: 5e90b8db38
("hw/loongarch: Set iocsr address space per-board rather than percpu")
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Song Gao <gaosong@loongson.cn >
Message-Id: <20240723111405.14208-3-philmd@linaro.org >
2024-07-23 20:30:36 +02:00
Bibo Mao
2465c89fb9
hw/intc/loongson_ipi: Access memory in little endian
...
Loongson IPI is only available in little-endian,
so use that to access the guest memory (in case
we run on a big-endian host).
Cc: qemu-stable@nongnu.org
Signed-off-by: Bibo Mao <maobibo@loongson.cn >
Fixes: f6783e3438
("hw/loongarch: Add LoongArch ipi interrupt support")
[PMD: Extracted from bigger commit, added commit description]
Co-Developed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Bibo Mao <maobibo@loongson.cn >
Tested-by: Bibo Mao <maobibo@loongson.cn >
Acked-by: Song Gao <gaosong@loongson.cn >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Tested-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-Id: <20240718133312.10324-3-philmd@linaro.org >
2024-07-23 20:30:30 +02:00
Jiaxun Yang
03ca348b6b
hw/intc/loongson_ipi: Replace ipi_getcpu with cpu_by_arch_id
...
cpu_by_arch_id is doing the same thing as our ipi_getcpu logic.
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Reviewed-by: Song Gao <gaosong@loongson.cn >
Message-ID: <20240605-loongson3-ipi-v3-4-ddd2c0e03fa3@flygoat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-06-19 12:42:03 +02:00
Jiaxun Yang
49eba52a52
hw/intc/loongson_ipi: Provide per core MMIO address spaces
...
The real IPI hardware have dedicated MMIO registers mapped into
memory address space for every core. This is not used by LoongArch
guest software but it is essential for CPU without IOCSR such as
Loongson-3A1000.
Implement it with existing infrastructure.
Acked-by: Song Gao <gaosong@loongson.cn >
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Message-ID: <20240605-loongson3-ipi-v3-2-ddd2c0e03fa3@flygoat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-06-19 12:42:03 +02:00
Jiaxun Yang
91d0b151de
hw/intc/loongson_ipi: Implement IOCSR address space for MIPS
...
Implement IOCSR address space get functions for MIPS/Loongson CPUs.
For MIPS/Loongson without IOCSR (i.e. Loongson-3A1000), get_cpu_iocsr_as
will return as null, and send_ipi_data will fail with MEMTX_DECODE_ERROR,
which matches expected behavior on hardware.
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20240508-loongson3-ipi-v1-3-1a7b67704664@flygoat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-09 00:07:21 +02:00
Jiaxun Yang
b4a12dfc21
hw/intc/loongarch_ipi: Rename as loongson_ipi
...
This device will be shared among LoongArch and MIPS
based Loongson machine, rename it as loongson_ipi
to reflect this nature.
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20240508-loongson3-ipi-v1-2-1a7b67704664@flygoat.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-09 00:07:21 +02:00