qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Richard Henderson <richard.henderson@linaro.org>
To: yangxiaojuan <yangxiaojuan@loongson.cn>, qemu-devel@nongnu.org
Cc: gaosong@loongson.cn, mark.cave-ayland@ilande.co.uk,
	Peter Maydell <peter.maydell@linaro.org>
Subject: Re: [PATCH v3 34/43] hw/intc: Add LoongArch extioi interrupt controller(EIOINTC)
Date: Mon, 9 May 2022 10:56:38 -0700	[thread overview]
Message-ID: <e514e333-b458-517f-66f7-f3fd0a0c5bad@linaro.org> (raw)
In-Reply-To: <707db6c2-49f2-2ca2-7025-0cf401f11c60@loongson.cn>

On 5/9/22 04:38, yangxiaojuan wrote:
>> You are not considering CSR[0x420][49], which changes the format of this mapping.
>>
> Thanks very much, I will consider the mapping format by read iocsr[0x420][49] like this:
> static uint64_t map_format(void)
> {
>      LoongArchCPU *cpu;
>      CPULoongArchState *env;
>      uint64_t val;
> 
>      cpu = LOONGARCH_CPU(current_cpu);
>      env = &(cpu->env);
> 
>      val = address_space_ldq(&env->address_space_iocsr, 0x420,
>                               MEMTXATTRS_UNSPECIFIED, NULL);
>      val &= 1 << 49;
>      return val;
> }

I'm not 100% sure how this "Other configuration control register" should be handled, but 
definitely not like this.

I see you're putting control of this register into loongarch_qemu_read in 
target/loongarch/cpu.c.  Which, I suppose is fair, because this is documented as part of 
the 3A5000 cpu documentation.  But then you split out all of the devices which are *also* 
documented as part of the cpu into the board configuration.

This reminds me of the memory-mapped interface that the armv7m cpu has with its own 
registers.  I believe that you need to model this similarly, where you will have a device 
that represents the cpu, and then instantiates all of the devices that are listed in the 
Loongson 3A5000 TRM -- call this ls3a to match the ls7a name you have for the 7A1000 
bridge device.

When there is a write to the ls3a "Other function configuration register", the ls3a will 
need to communicate the changes to the various bits to its various sub-devices.  I do not 
think it unreasonable to have direct function calls between the components.

Peter, do you have any advice from the armv7m side?


>>> +    case EXTIOI_IPMAP_START ... EXTIOI_IPMAP_END - 1:
>>> +        index = (offset - EXTIOI_IPMAP_START) >> 2;
>>> +        s->ipmap[index] = val;
>>> +        break;
>>
>> Do you need to recompute the entire interrupt map when ipmap changes?
>>
> Sorry, could you explain it in more detail? i can not understand the meanning of 'the 
> entire interrupt map'?

I mean, ipmap[*] and coremap[*] controls how isr[*] maps to the various cpus, as 
coreisr[*].  If either ipmap or coremap changes, do you need to re-compute coreisr[*] from 
the input isr[*]?


r~


  reply	other threads:[~2022-05-09 17:58 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-29 10:06 [PATCH v3 00/43] Add LoongArch softmmu support Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 01/43] target/loongarch: Add README Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 02/43] target/loongarch: Add core definition Xiaojuan Yang
2022-05-09 20:29   ` Richard Henderson
2022-05-10 12:01     ` yangxiaojuan
2022-04-29 10:06 ` [PATCH v3 03/43] target/loongarch: Add main translation routines Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 04/43] target/loongarch: Add fixed point arithmetic instruction translation Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 05/43] target/loongarch: Add fixed point shift " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 06/43] target/loongarch: Add fixed point bit " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 07/43] target/loongarch: Add fixed point load/store " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 08/43] target/loongarch: Add fixed point atomic " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 09/43] target/loongarch: Add fixed point extra " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 10/43] target/loongarch: Add floating point arithmetic " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 11/43] target/loongarch: Add floating point comparison " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 12/43] target/loongarch: Add floating point conversion " Xiaojuan Yang
2022-04-29 10:06 ` [PATCH v3 13/43] target/loongarch: Add floating point move " Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 14/43] target/loongarch: Add floating point load/store " Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 15/43] target/loongarch: Add branch " Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 16/43] target/loongarch: Add disassembler Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 17/43] target/loongarch: Add target build suport Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 18/43] target/loongarch: Add system emulation introduction Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 19/43] target/loongarch: Add CSRs definition Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 20/43] target/loongarch: Add basic vmstate description of CPU Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 21/43] target/loongarch: Implement qmp_query_cpu_definitions() Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 22/43] target/loongarch: Add MMU support for LoongArch CPU Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 23/43] target/loongarch: Add LoongArch interrupt and exception handle Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 24/43] target/loongarch: Add constant timer support Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 25/43] target/loongarch: Add LoongArch CSR instruction Xiaojuan Yang
2022-04-30 17:22   ` Richard Henderson
2022-05-05  7:22     ` yangxiaojuan
2022-04-29 10:07 ` [PATCH v3 26/43] target/loongarch: Add LoongArch IOCSR instruction Xiaojuan Yang
2022-04-30 17:35   ` Richard Henderson
2022-04-29 10:07 ` [PATCH v3 27/43] target/loongarch: Add TLB instruction support Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 28/43] target/loongarch: Add other core instructions support Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 29/43] target/loongarch: Add timer related " Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 30/43] hw/loongarch: Add support loongson3 virt machine type Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 31/43] hw/loongarch: Add LoongArch ipi interrupt support(IPI) Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 32/43] hw/intc: Add LoongArch ls7a interrupt controller support(PCH-PIC) Xiaojuan Yang
2022-04-30 17:41   ` Richard Henderson
2022-04-29 10:07 ` [PATCH v3 33/43] hw/intc: Add LoongArch ls7a msi interrupt controller support(PCH-MSI) Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 34/43] hw/intc: Add LoongArch extioi interrupt controller(EIOINTC) Xiaojuan Yang
2022-05-07 15:31   ` Richard Henderson
2022-05-09  9:38     ` yangxiaojuan
2022-05-09 17:56       ` Richard Henderson [this message]
2022-05-09 18:04         ` Peter Maydell
2022-05-09 18:25           ` Richard Henderson
2022-05-10  2:54             ` maobibo
2022-05-10  3:11               ` maobibo
2022-05-10  3:56               ` Richard Henderson
2022-05-10  9:13                 ` maobibo
2022-05-11  9:54         ` yangxiaojuan
2022-05-11 14:14           ` Richard Henderson
2022-05-12  1:58             ` maobibo
2022-05-13  8:41               ` yangxiaojuan
2022-05-13  8:27         ` yangxiaojuan
2022-05-09 10:14     ` yangxiaojuan
2022-04-29 10:07 ` [PATCH v3 35/43] hw/loongarch: Add irq hierarchy for the system Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 36/43] Enable common virtio pci support for LoongArch Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 37/43] hw/loongarch: Add some devices support for 3A5000 Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 38/43] hw/loongarch: Add LoongArch ls7a rtc device support Xiaojuan Yang
2022-05-07 21:55   ` Richard Henderson
2022-05-10  9:11     ` yangxiaojuan
2022-05-10 15:09       ` Richard Henderson
2022-04-29 10:07 ` [PATCH v3 39/43] hw/loongarch: Add LoongArch load elf function Xiaojuan Yang
2022-05-07 22:08   ` Richard Henderson
2022-04-29 10:07 ` [PATCH v3 40/43] hw/loongarch: Add LoongArch ls7a acpi device support Xiaojuan Yang
2022-05-09 18:01   ` Richard Henderson
2022-04-29 10:07 ` [PATCH v3 41/43] target/loongarch: Add gdb support Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 42/43] tests/tcg/loongarch64: Add hello/memory test in loongarch64 system Xiaojuan Yang
2022-04-29 10:07 ` [PATCH v3 43/43] target/loongarch: 'make check-tcg' support Xiaojuan Yang
2022-05-05  7:32 ` [PATCH v3 00/43] Add LoongArch softmmu support yangxiaojuan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e514e333-b458-517f-66f7-f3fd0a0c5bad@linaro.org \
    --to=richard.henderson@linaro.org \
    --cc=gaosong@loongson.cn \
    --cc=mark.cave-ayland@ilande.co.uk \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=yangxiaojuan@loongson.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).