On 2024/7/1 下午4:29, Jiaxun Yang wrote:
在2024年7月1日七月 上午8:22,maobibo写道:
On 2024/7/1 下午3:01, Jiaxun Yang wrote:
在2024年7月1日七月 上午7:44,maobibo写道:
Also this patch is problematic on LoongArch.
The original patch is to search physical cpuid rather than logic cpuid.
We want to make ipi module better and better, however now it comes back
to initial state at the beginning :(
Isn't arch_id the "physical id" you want? "cs->cpu_index" is the logical ID
for QEMU.
arch_id is setup by arch code, like APIC ID for x86.
I had come across the old ipi_getcpu implementation, and I'm sure we were
looking at arch_id as well.
So, where is implementation code for function get_arch_id() looking for
vcpu with physical index?
Hi Bibo,
cpu_by_arch_id will be redirected to:
```
CPUState *cpu_by_arch_id(int64_t id)
{
CPUState *cpu;
CPU_FOREACH(cpu) {
CPUClass *cc = CPU_GET_CLASS(cpu);
if (cc->get_arch_id(cpu) == id) {
return cpu;
}
}
return NULL;
}
```
It iterates over all vcpus and return CPUStates with corresponding arch_id.
Whereas, for LoongArch's get_arch_id implementation:
```
static int64_t loongarch_cpu_get_arch_id(CPUState *cs)
{
LoongArchCPU *cpu = LOONGARCH_CPU(cs);
return cpu->phy_id;
}
```
I believe it matches our intension here.
yes, you are right.
Got it, I miss the architecture specific implementation, and thanks for
pointing it out with patience.
Regards
Thanks
Regards
Bibo Mao
Thanks
- Jiaxun
commit 03ca348b6b9038ce284916b36c19f700ac0ce7a6
Author: Jiaxun Yang <jiaxun.y...@flygoat.com>
Date: Wed Jun 5 10:04:27 2024
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.y...@flygoat.com>
Reviewed-by: Song Gao <gaos...@loongson.cn>
Message-ID: <20240605-loongson3-ipi-v3-4-ddd2c0e03...@flygoat.com>
Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org>
Regards
Bibo Mao