From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48191) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZeER9-0002UB-Qc for qemu-devel@nongnu.org; Mon, 21 Sep 2015 23:40:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZeER0-00023C-Ps for qemu-devel@nongnu.org; Mon, 21 Sep 2015 23:40:11 -0400 Received: from e28smtp06.in.ibm.com ([122.248.162.6]:49270) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZeER0-0001xp-2a for qemu-devel@nongnu.org; Mon, 21 Sep 2015 23:40:02 -0400 Received: from /spool/local by e28smtp06.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 22 Sep 2015 09:09:58 +0530 From: Bharata B Rao Date: Tue, 22 Sep 2015 09:09:48 +0530 Message-Id: <1442893189-5680-2-git-send-email-bharata@linux.vnet.ibm.com> In-Reply-To: <1442893189-5680-1-git-send-email-bharata@linux.vnet.ibm.com> References: <1442893189-5680-1-git-send-email-bharata@linux.vnet.ibm.com> Subject: [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: qemu-devel@nongnu.org Cc: nfont@linux.vnet.ibm.com, Bharata B Rao , qemu-ppc@nongnu.org, mdroth@linux.vnet.ibm.com, david@gibson.dropbear.id.au 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. Signed-off-by: Bharata B Rao --- hw/ppc/spapr.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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)) &= tswap64(~HPTE64_V_HPTE_DIRTY)) #define DIRTY_HPTE(_hpte) ((*(uint64_t *)(_hpte)) |= tswap64(HPTE64_V_HPTE_DIRTY)) -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 *spapr) 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); /* 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); /* Set up Interrupt Controller before we create the VCPUs */ spapr->icp = xics_system_init(machine, -- 2.1.0