On Wed, Nov 30, 2016 at 10:29 PM, Peter Maydell <peter.mayd...@linaro.org> wrote: > On 30 November 2016 at 16:23, Vijay Kilari <vijay.kil...@gmail.com> wrote: >> On Mon, Nov 28, 2016 at 10:05 PM, Peter Maydell >> <peter.mayd...@linaro.org> wrote: >>> Still I would prefer it if we did this with the same >>> mechanism for both TCG and KVM. A generic mechanism for >>> "let the CPU reset trigger reset of many other devices in the >>> system" isn't widely useful because real hardware doesn't >>> have that kind of action-at-a-distance behaviour. >> >> To make direct call from arm_cpu_reset() to reset CPUIF, >> I could not find a way to get GICv3CPUState from CPUARMState or >> ARMCPU struct. > > You don't want to directly call from arm_cpu_reset(). > Coprocessor regs registered via cpregs can have > reset functions, which get called automatically. > This is what the TCG gicv3 code already does to reset > the CPU i/f, the relevant code just needs to be > arranged so it's used for KVM too.
Yes, the reset functions of cpregs get CPUARMState as parameter and still we cannot fetch GICv3CPUState from it. The TCG code in arm_gicv3_cpuif.c is rely on el_hook to get GICv3CPUState. > >> Any idea how to get GICv3CPUState? >> >> In hw/intc/arm_gicv3_cpuif.c implementation, >> el_hook function is registered to fetch GICv3CPUState >> from CPUARMState struct, but it is for TCG > > Yes, you don't need the el hook. Without this is there a way to get GICv3CPUState for KVM? I am not familiar with this code. > > thanks > -- PMM