From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46631) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZzLzX-0002n4-RX for qemu-devel@nongnu.org; Thu, 19 Nov 2015 04:59:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZzLzF-0006p6-1V for qemu-devel@nongnu.org; Thu, 19 Nov 2015 04:58:59 -0500 Date: Thu, 19 Nov 2015 17:11:40 +1100 From: David Gibson Message-ID: <20151119061140.GB10667@voom.redhat.com> References: <1447201710-10229-1-git-send-email-benh@kernel.crashing.org> <1447201710-10229-8-git-send-email-benh@kernel.crashing.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Yylu36WmvOXNoKYn" Content-Disposition: inline In-Reply-To: <1447201710-10229-8-git-send-email-benh@kernel.crashing.org> Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 07/77] ppc: Add a bunch of hypervisor SPRs to Book3s List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Benjamin Herrenschmidt Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org --Yylu36WmvOXNoKYn Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Nov 11, 2015 at 11:27:20AM +1100, Benjamin Herrenschmidt wrote: > We don't give them a KVM reg number yet as no current KVM version > supports HV mode. >=20 > Signed-off-by: Benjamin Herrenschmidt Looks sane, though I haven't explicitly checked each of the implementations against the architecture. > --- > target-ppc/translate_init.c | 140 ++++++++++++++++++++++++++++++++++++++= +++++- > 1 file changed, 137 insertions(+), 3 deletions(-) >=20 > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c > index 30a03ce..c743eb1 100644 > --- a/target-ppc/translate_init.c > +++ b/target-ppc/translate_init.c > @@ -1104,6 +1104,11 @@ static void gen_spr_amr (CPUPPCState *env) > SPR_NOACCESS, SPR_NOACCESS, > &spr_read_generic, &spr_write_generic, > KVM_REG_PPC_UAMOR, 0); > + spr_register_hv(env, SPR_AMOR, "AMOR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0); > #endif /* !CONFIG_USER_ONLY */ > } > #endif /* TARGET_PPC64 */ > @@ -7490,6 +7495,20 @@ static void gen_spr_book3s_dbg(CPUPPCState *env) > KVM_REG_PPC_DABRX, 0x00000000); > } > =20 > +static void gen_spr_book3s_207_dbg(CPUPPCState *env) > +{ > + spr_register_hv(env, SPR_DAWR, "DAWR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_DAWRX, "DAWRX", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > +} > + > static void gen_spr_970_dbg(CPUPPCState *env) > { > /* Breakpoints */ > @@ -7654,15 +7673,116 @@ static void gen_spr_power5p_lpar(CPUPPCState *en= v) > spr_register_kvm(env, SPR_LPCR, "LPCR", > SPR_NOACCESS, SPR_NOACCESS, > &spr_read_generic, &spr_write_generic, > - KVM_REG_PPC_LPCR, 0x00000000); > + KVM_REG_PPC_LPCR, LPCR_LPES0 | LPCR_LPES1); > } > =20 > +#if !defined(CONFIG_USER_ONLY) > +static void spr_write_hmer(DisasContext *ctx, int sprn, int gprn) > +{ > + TCGv hmer =3D tcg_temp_new(); > + > + gen_load_spr(hmer, sprn); > + tcg_gen_and_tl(hmer, cpu_gpr[gprn], hmer); > + gen_store_spr(sprn, hmer); > + spr_store_dump_spr(sprn); > + tcg_temp_free(hmer); > +} > +#endif > + > static void gen_spr_book3s_ids(CPUPPCState *env) > { > + /* FIXME: Will need to deal with thread vs core only SPRs */ > + > /* Processor identification */ > - spr_register(env, SPR_PIR, "PIR", > + spr_register_hv(env, SPR_PIR, "PIR", > SPR_NOACCESS, SPR_NOACCESS, > - &spr_read_generic, &spr_write_pir, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, NULL, > + 0x00000000); > + spr_register_hv(env, SPR_HID0, "HID0", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_TSCR, "TSCR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HMER, "HMER", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_hmer, > + 0x00000000); > + spr_register_hv(env, SPR_HMEER, "HMEER", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_TFMR, "TFMR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_LPIDR, "LPIDR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HFSCR, "HFSCR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_MMCRC, "MMCRC", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_MMCRH, "MMCRH", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HSPRG0, "HSPRG0", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HSPRG1, "HSPRG1", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HSRR0, "HSRR0", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HSRR1, "HSRR1", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HDAR, "HDAR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HDSISR, "HDSISR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_RMOR, "RMOR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000000); > + spr_register_hv(env, SPR_HRMOR, "HRMOR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > 0x00000000); > } > =20 > @@ -7868,6 +7988,17 @@ static void gen_spr_power8_fscr(CPUPPCState *env) > KVM_REG_PPC_FSCR, initval); > } > =20 > +static void gen_spr_power8_rpr(CPUPPCState *env) > +{ > +#if !defined(CONFIG_USER_ONLY) > + spr_register_hv(env, SPR_RPR, "RPR", > + SPR_NOACCESS, SPR_NOACCESS, > + SPR_NOACCESS, SPR_NOACCESS, > + &spr_read_generic, &spr_write_generic, > + 0x00000103070F1F3F); > +#endif > +} > + > static void init_proc_book3s_64(CPUPPCState *env, int version) > { > gen_spr_ne_601(env); > @@ -7919,9 +8050,12 @@ static void init_proc_book3s_64(CPUPPCState *env, = int version) > gen_spr_power8_pmu_user(env); > gen_spr_power8_tm(env); > gen_spr_vtb(env); > + gen_spr_power8_rpr(env); > } > if (version < BOOK3S_CPU_POWER8) { > gen_spr_book3s_dbg(env); > + } else { > + gen_spr_book3s_207_dbg(env); > } > #if !defined(CONFIG_USER_ONLY) > switch (version) { --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --Yylu36WmvOXNoKYn Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJWTWgcAAoJEGw4ysog2bOSV9QP/2ucOyoBBysJj9urk+8yadp2 FkX5j+PBKD5zqSEDxySfbb+pzrPCiVW2lyRJrcqY1pg0HIWbOTEp/ZSmZgxRVruH QGIYb5eGrQn4bmnLk/SFaIBAwFiYQLBMy9V9v0BuQ1+829nKZUvCGzqH0godbTHm JaTTGsDREA2HlxNKIWt/uncGmNPxe1L9X6gVEYjzsC0cgDyjfXX0+y21R71uYQ8i ZnKqC9lPG/yCCD+kYq1o/6DuLwaNTyLeUHNZFxSQxWx44zAl9HtZlCl2jRd33+Xn EJYFzvOWthCS4qnzXibMb97BkLssZB1WeqSRIowbVKID7yOOPT++pGNBE1eb7n2R /KlUlG4Gg8OmqWFjEG257WxLmsJxH+m0IngJ/TCmR/inEFwnojoVEgWx9qAhQvOP btNu7H+grXH3vkJ07FVMj4kcwtHc7jJ09LRNMpGW7H6WWSuE3qtiZ8DeA2Pl+C9I yLSc7fE7lxN5sla5L8Dzz8JpnwY1wVN07cDXjz1QRATlNzWg3F7EWB+4DIestaLR u5DGB8RoAxxJcxAS6ZPVKjYWN4WXOVZfADt7cuiuz+Zyttok4AEE48UTSrkiAteg l0hJ/zyfAop8bj7XSj8zyf4CITRCzKCWfw8aB9etCS3bH+vMMubtGlF7HM4nnDZr Lavsor4LnMnO9X5xkXm4 =tJ4z -----END PGP SIGNATURE----- --Yylu36WmvOXNoKYn--