From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37605) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZecSe-0001Wo-LM for qemu-devel@nongnu.org; Wed, 23 Sep 2015 01:19:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZecSb-000864-J2 for qemu-devel@nongnu.org; Wed, 23 Sep 2015 01:19:20 -0400 Date: Wed, 23 Sep 2015 13:28:53 +1000 From: David Gibson Message-ID: <20150923032853.GU20331@voom.fritz.box> References: <1442893189-5680-1-git-send-email-bharata@linux.vnet.ibm.com> <1442893189-5680-2-git-send-email-bharata@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="z+AhoeLdLI498vdY" Content-Disposition: inline In-Reply-To: <1442893189-5680-2-git-send-email-bharata@linux.vnet.ibm.com> Subject: Re: [Qemu-devel] [RFC PATCH v0 1/2] spapr: Allocate HTAB from machine init List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Bharata B Rao Cc: nfont@linux.vnet.ibm.com, qemu-ppc@nongnu.org, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com --z+AhoeLdLI498vdY Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Sep 22, 2015 at 09:09:48AM +0530, Bharata B Rao wrote: > Allocate HTAB from ppc_spapr_init() so that we can abort the guest > if requested HTAB size is't allocated by the host. However retain the > htab reset call in spapr_reset_htab() so that HTAB gets reset (and > not allocated) during machine reset. I was briefly worried about this, because I recall there as a reason htab allocation got moved to the reset handler in the first place. Looking at the git history, however, I've convinced myself this is basically ok (because you preserve the call during reset to wipe clean the htab). > Signed-off-by: Bharata B Rao > --- > hw/ppc/spapr.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) >=20 > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 7f4f196..4692122 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -979,7 +979,7 @@ static void emulate_spapr_hypercall(PowerPCCPU *cpu) > #define CLEAN_HPTE(_hpte) ((*(uint64_t *)(_hpte)) &=3D tswap64(~HPTE64_= V_HPTE_DIRTY)) > #define DIRTY_HPTE(_hpte) ((*(uint64_t *)(_hpte)) |=3D tswap64(HPTE64_V= _HPTE_DIRTY)) > =20 > -static void spapr_reset_htab(sPAPRMachineState *spapr) > +static void spapr_alloc_htab(sPAPRMachineState *spapr) > { > long shift; > int index; > @@ -1012,6 +1012,16 @@ static void spapr_reset_htab(sPAPRMachineState *sp= apr) > DIRTY_HPTE(HPTE(spapr->htab, index)); > } > } > +} > + > +static void spapr_reset_htab(sPAPRMachineState *spapr) > +{ > + /* > + * We have already allocated the hash page table, this call will > + * not again allocate but only result in clearing of hash page > + * table entries. > + */ > + kvmppc_reset_htab(spapr->htab_shift); It's unlikely the kernel will give us less htab than we already have, but we really should at least check for that. Probably not much we can do except abort() but at least we can give a useful error message. > /* Update the RMA size if necessary */ > if (spapr->vrma_adjust) { > @@ -1709,6 +1719,7 @@ static void ppc_spapr_init(MachineState *machine) > } > spapr->htab_shift++; > } > + spapr_alloc_htab(spapr); > =20 > /* Set up Interrupt Controller before we create the VCPUs */ > spapr->icp =3D xics_system_init(machine, --=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 --z+AhoeLdLI498vdY Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJWAhx0AAoJEGw4ysog2bOSEmoP/jCxi3im6qzPCloyrsVP5Qvc 5LDtOhLGapFuwbqlyZ7nZmks02mRdjPsi0QO0pqEs8vrVch04dIyDyT2mPxkrUO0 SX2OL77ACt3Jos1fJTHYH5HK40uUjhBbNngYu5u5wrvKr6siKktn6MHFcmQif4xG qTvTJ5FWeuddFf7czvPmK4lEADHlR1VhUGShvWAYMn8UpT+FVZzNRnIKWhwvGh8i oA6Z9Y/ai+2jZpm+6w0e0lMCJLDxLSuRjFutQYWZbXK5W8NYpF3An6zbG3Nu5KaX CqioPtZzS/Vw7o49vC0dds8uccgeDLdnRq5tw5SxI+zcDwYiiCGrLpdDBm8Z8gfg OlPWeWchPviV0Ch61JjqeyRomUVW7g+Xvjo9knv1r8lj6rIaZ8szH+Q+hOJ9PV8s SpkPXiJHmyAQLikVJMzIzhhseCCp/SxdbGqgkqePlLEYufyy5sH1/XDFTEC5Z9Wm zHhI4OxE+zsIiPm/DuxIW7RjPJlvdvuzsupRRHyjXHDK/K/1SGai9lrJptQR6REj ZZ6jaogq9WZbMDpNziq2FiWWucmi+7b6xS0VznP2h0eQKxKLJno16haFDXVjmwgD Q9EU7RPe5yubQBa2FY1lipIjX830DpYeBdTAtJQcKI/mIqGhIdebwg17Yz8ApXu3 OtVnmzO5qQniCjd23jXd =g4nR -----END PGP SIGNATURE----- --z+AhoeLdLI498vdY--