From patchwork Fri Mar 14 13:13:11 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Aneesh Kumar K.V" X-Patchwork-Id: 330305 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id D7B682C00A6 for ; Sat, 15 Mar 2014 00:14:04 +1100 (EST) Received: from localhost ([::1]:44702 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WORw0-0006Ai-O6 for incoming@patchwork.ozlabs.org; Fri, 14 Mar 2014 09:14:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33259) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WORvZ-0005ul-68 for qemu-devel@nongnu.org; Fri, 14 Mar 2014 09:13:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WORvQ-0006OX-7M for qemu-devel@nongnu.org; Fri, 14 Mar 2014 09:13:33 -0400 Received: from e23smtp07.au.ibm.com ([202.81.31.140]:50421) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WORvP-0006Kn-EJ for qemu-devel@nongnu.org; Fri, 14 Mar 2014 09:13:24 -0400 Received: from /spool/local by e23smtp07.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 14 Mar 2014 23:13:19 +1000 Received: from d23dlp02.au.ibm.com (202.81.31.213) by e23smtp07.au.ibm.com (202.81.31.204) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 14 Mar 2014 23:13:18 +1000 Received: from d23relay05.au.ibm.com (d23relay05.au.ibm.com [9.190.235.152]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id E0E522BB0052; Sat, 15 Mar 2014 00:13:17 +1100 (EST) Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.234.96]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s2ECr3Hq57606362; Fri, 14 Mar 2014 23:53:04 +1100 Received: from d23av01.au.ibm.com (localhost [127.0.0.1]) by d23av01.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s2EDDGSL012030; Sat, 15 Mar 2014 00:13:16 +1100 Received: from skywalker.linux.vnet.ibm.com ([9.77.200.47]) by d23av01.au.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s2EDDC2Q011974 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sat, 15 Mar 2014 00:13:14 +1100 From: "Aneesh Kumar K.V" To: Paolo Bonzini , Alexander Graf , qemu-devel@nongnu.org In-Reply-To: <5322E783.5030604@redhat.com> References: <1394148857-19607-1-git-send-email-agraf@suse.de> <1394148857-19607-126-git-send-email-agraf@suse.de> <5322E783.5030604@redhat.com> User-Agent: Notmuch/0.17+7~gc734dd75344e (http://notmuchmail.org) Emacs/24.3.1 (x86_64-pc-linux-gnu) Date: Fri, 14 Mar 2014 18:43:11 +0530 Message-ID: <878usc7wk8.fsf@linux.vnet.ibm.com> MIME-Version: 1.0 X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14031413-0260-0000-0000-0000048A5CB2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] X-Received-From: 202.81.31.140 Cc: Alexey Kardashevskiy , Peter Maydell , qemu-ppc@nongnu.org, Greg Kurz Subject: Re: [Qemu-devel] [PULL 125/130] target-ppc: Fix page table lookup with kvm enabled X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Paolo Bonzini writes: > Il 07/03/2014 00:34, Alexander Graf ha scritto: >> @@ -105,30 +106,37 @@ static target_ulong h_enter(PowerPCCPU *cpu, sPAPREnvironment *spapr, >> if (!valid_pte_index(env, pte_index)) { >> return H_PARAMETER; >> } >> + >> + index = 0; >> + hpte = pte_index * HASH_PTE_SIZE_64; >> if (likely((flags & H_EXACT) == 0)) { >> pte_index &= ~7ULL; >> - hpte = pte_index * HASH_PTE_SIZE_64; >> - for (i = 0; ; ++i) { >> - if (i == 8) { >> + token = ppc_hash64_start_access(cpu, pte_index); >> + do { >> + if (index == 8) { >> + ppc_hash64_stop_access(token); >> return H_PTEG_FULL; >> } >> - if ((ppc_hash64_load_hpte0(env, hpte) & HPTE64_V_VALID) == 0) { >> + if ((ppc_hash64_load_hpte0(env, token, index) & HPTE64_V_VALID) == 0) { >> break; >> } >> - hpte += HASH_PTE_SIZE_64; >> - } >> + } while (index++); >> + ppc_hash64_stop_access(token); > > I'm afraid you have a bug here, as spotted by Coverity. The do...while > loop only loops once. I'm not sure what you meant, could you rewrite it > with a "for (index = 0; index < 8; i++)" instead? good find. how about -aneesh diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c index e999bbaea062..e079be050fc7 100644 --- a/hw/ppc/spapr_hcall.c +++ b/hw/ppc/spapr_hcall.c @@ -118,7 +118,8 @@ static target_ulong h_enter(PowerPCCPU *cpu, sPAPREnvironment *spapr, if ((ppc_hash64_load_hpte0(env, token, index) & HPTE64_V_VALID) == 0) { break; } - } while (index++); + index++; + } while (1); ppc_hash64_stop_access(token); } else { token = ppc_hash64_start_access(cpu, pte_index);