On 05/27/2014 08:37 PM, Alexey Kardashevskiy wrote:
> This enabled PMU SPRs migration by hooking hypv privileged versions with
> "KVM one reg" IDs.
>
> Signed-off-by: Alexey Kardashevskiy <[email protected]>
> ---
> target-ppc/translate_init.c | 104
> ++++++++++++++++++++++----------------------
> 1 file changed, 52 insertions(+), 52 deletions(-)
>
> diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
> index 21916dd..8e1b465 100644
> --- a/target-ppc/translate_init.c
> +++ b/target-ppc/translate_init.c
> @@ -7360,50 +7360,50 @@ static void gen_spr_970_dbg(CPUPPCState *env)
>
> static void gen_spr_book3s_pmu(CPUPPCState *env)
> {
> - spr_register(env, SPR_POWER_MMCR0, "MMCR0",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_MMCR1, "MMCR1",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_MMCRA, "MMCRA",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_PMC1, "PMC1",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_PMC2, "PMC2",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_PMC3, "PMC3",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_PMC4, "PMC4",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_PMC5, "PMC5",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_PMC6, "PMC6",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_POWER_SIAR, "SIAR",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, SPR_NOACCESS,
> - 0x00000000);
> - spr_register(env, SPR_POWER_SDAR, "SDAR",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, SPR_NOACCESS,
> - 0x00000000);
> + spr_register_kvm(env, SPR_POWER_MMCR0, "MMCR0",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_MMCR0, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_MMCR1, "MMCR1",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_MMCR1, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_MMCRA, "MMCRA",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_MMCRA, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_PMC1, "PMC1",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC1, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_PMC2, "PMC2",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC2, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_PMC3, "PMC3",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC3, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_PMC4, "PMC4",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC4, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_PMC5, "PMC5",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC5, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_PMC6, "PMC6",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC6, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_SIAR, "SIAR",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, SPR_NOACCESS,
> + KVM_REG_PPC_PMC5, 0x00000000);
> + spr_register_kvm(env, SPR_POWER_SDAR, "SDAR",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, SPR_NOACCESS,
> + KVM_REG_PPC_PMC6, 0x00000000);
Oops. KVM_REG_PPC_PMC6 for SPR_POWER_SDAR is wrong. Fixing...
> spr_register(env, SPR_POWER_UMMCR0, "UMMCR0",
> &spr_read_ureg, &spr_write_ureg,
> &spr_read_ureg, &spr_write_ureg,
> @@ -7452,14 +7452,14 @@ static void gen_spr_book3s_pmu(CPUPPCState *env)
>
> static void gen_spr_970_pmu(CPUPPCState *env)
> {
> - spr_register(env, SPR_970_PMC7, "PMC7",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> - spr_register(env, SPR_970_PMC8, "PMC8",
> - SPR_NOACCESS, SPR_NOACCESS,
> - &spr_read_generic, &spr_write_generic,
> - 0x00000000);
> + spr_register_kvm(env, SPR_970_PMC7, "PMC7",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC7, 0x00000000);
> + spr_register_kvm(env, SPR_970_PMC8, "PMC8",
> + SPR_NOACCESS, SPR_NOACCESS,
> + &spr_read_generic, &spr_write_generic,
> + KVM_REG_PPC_PMC8, 0x00000000);
> spr_register(env, SPR_970_UPMC7, "UPMC7",
> &spr_read_ureg, &spr_write_ureg,
> &spr_read_ureg, &spr_write_ureg,
>
--
Alexey