On 8. 8. 25. 17:52, Philippe Mathieu-Daudé wrote:

> CAUTION: This email originated from outside of the organization. Do 
> not click links or open attachments unless you recognize the sender 
> and know the content is safe.
>
>
> On 17/7/25 11:38, Djordje Todorovic wrote:
>> This is needed for riscv based CPUs by MIPS since those may have
>> sparse hart-ID layouts. ACLINT and APLIC still assume a dense
>> range, and if a hart is missing, this causes NULL derefs.
>>
>> Signed-off-by: Chao-ying Fu <c...@mips.com>
>> Signed-off-by: Djordje Todorovic <djordje.todoro...@htecgroup.com>
>> ---
>>   hw/intc/riscv_aclint.c | 21 +++++++++++++++++++--
>>   hw/intc/riscv_aplic.c  | 11 ++++++++---
>>   2 files changed, 27 insertions(+), 5 deletions(-)
>>
>> diff --git a/hw/intc/riscv_aclint.c b/hw/intc/riscv_aclint.c
>> index b0139f03f5..22ac4133d5 100644
>> --- a/hw/intc/riscv_aclint.c
>> +++ b/hw/intc/riscv_aclint.c
>> @@ -292,7 +292,13 @@ static void 
>> riscv_aclint_mtimer_realize(DeviceState *dev, Error **errp)
>>       s->timecmp = g_new0(uint64_t, s->num_harts);
>>       /* Claim timer interrupt bits */
>>       for (i = 0; i < s->num_harts; i++) {
>> -        RISCVCPU *cpu = RISCV_CPU(cpu_by_arch_id(s->hartid_base + i));
>> +        CPUState *cpu_by_hartid = cpu_by_arch_id(s->hartid_base + i);
>> +        if (cpu_by_hartid == NULL) {
>> +            qemu_log_mask(LOG_GUEST_ERROR, "aclint-mtimer: invalid 
>> hartid: %u",
>> +                          s->hartid_base + i);
>
> DeviceRealize() handlers are part of machine modelling, not guest uses.
>
> IOW, triggering this is a programming mistake, so we should just
> abort() here.

Well, if we do it that way, our Boston board target for P8700 cannot run.

Reply via email to