[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 3/3] hw/loongarch/virt: Set max 256 cpus support on loongarch
|
From: |
Philippe Mathieu-Daudé |
|
Subject: |
Re: [PATCH 3/3] hw/loongarch/virt: Set max 256 cpus support on loongarch virt machine |
|
Date: |
Thu, 11 May 2023 21:07:33 +0200 |
|
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 |
On 6/4/23 12:00, Song Gao wrote:
Add separate macro EXTIOI_CPUS for extioi interrupt controller, extioi
only supports 4 cpu. And set macro LOONGARCH_MAX_CPUS as 256 so that
loongarch virt machine supports more cpus.
Interrupts from external devices can only be routed cpu 0-3 because
of extioi limits, cpu internal interrupt such as timer/ipi can be
triggered on all cpus.
Signed-off-by: Song Gao <gaosong@loongson.cn>
---
hw/intc/loongarch_extioi.c | 4 ++--
hw/loongarch/virt.c | 21 ++++++++++++++-------
include/hw/intc/loongarch_extioi.h | 10 ++++++----
include/hw/loongarch/virt.h | 2 +-
4 files changed, 23 insertions(+), 14 deletions(-)
@@ -618,10 +623,12 @@ static void loongarch_irq_init(LoongArchMachineState
*lams)
* cpu_pin[9:2] <= intc_pin[7:0]
*/
for (cpu = 0; cpu < ms->smp.cpus; cpu++) {
- cpudev = DEVICE(qemu_get_cpu(cpu));
- for (pin = 0; pin < LS3A_INTC_IP; pin++) {
- qdev_connect_gpio_out(extioi, (cpu * 8 + pin),
- qdev_get_gpio_in(cpudev, pin + 2));
+ if (cpu < EXTIOI_CPUS) {
Alternatively:
for (cpu = 0; cpu < MIN(ms->smp.cpus, EXTIOI_CPUS); cpu++) {
+ cpudev = DEVICE(qemu_get_cpu(cpu));
+ for (pin = 0; pin < LS3A_INTC_IP; pin++) {
+ qdev_connect_gpio_out(extioi, (cpu * 8 + pin),
+ qdev_get_gpio_in(cpudev, pin + 2));
+ }
}
}
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>