[{"id":1780286,"web_url":"http://patchwork.ozlabs.org/comment/1780286/","msgid":"<b2c72b55-fa9f-f50e-da70-225fbe01db45@amsat.org>","list_archive_url":null,"date":"2017-10-05T04:46:33","subject":"Re: [Qemu-devel] [Qemu-arm] [PATCH 15/20] target/arm: Fix\n\tcalculation of secure mm_idx values","submitter":{"id":70924,"url":"http://patchwork.ozlabs.org/api/people/70924/","name":"Philippe Mathieu-Daudé","email":"f4bug@amsat.org"},"content":"On 09/22/2017 12:00 PM, Peter Maydell wrote:\n> In cpu_mmu_index() we try to do this:\n>         if (env->v7m.secure) {\n>             mmu_idx += ARMMMUIdx_MSUser;\n>         }\n> but it will give the wrong answer, because ARMMMUIdx_MSUser\n> includes the 0x40 ARM_MMU_IDX_M field, and so does the\n> mmu_idx we're adding to, and we'll end up with 0x8n rather\n> than 0x4n. This error is then nullified by the call to\n> arm_to_core_mmu_idx() which masks out the high part, but\n> we're about to factor out the code that calculates the\n> ARMMMUIdx values so it can be used without passing it through\n> arm_to_core_mmu_idx(), so fix this bug first.\n> \n> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>\n\nReviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>\n\n> ---\n>  target/arm/cpu.h | 12 +++++++-----\n>  1 file changed, 7 insertions(+), 5 deletions(-)\n> \n> diff --git a/target/arm/cpu.h b/target/arm/cpu.h\n> index 441e584..70c1f85 100644\n> --- a/target/arm/cpu.h\n> +++ b/target/arm/cpu.h\n> @@ -2335,14 +2335,16 @@ static inline int cpu_mmu_index(CPUARMState *env, bool ifetch)\n>      int el = arm_current_el(env);\n>  \n>      if (arm_feature(env, ARM_FEATURE_M)) {\n> -        ARMMMUIdx mmu_idx = el == 0 ? ARMMMUIdx_MUser : ARMMMUIdx_MPriv;\n> +        ARMMMUIdx mmu_idx;\n>  \n> -        if (armv7m_nvic_neg_prio_requested(env->nvic, env->v7m.secure)) {\n> -            mmu_idx = ARMMMUIdx_MNegPri;\n> +        if (el == 0) {\n> +            mmu_idx = env->v7m.secure ? ARMMMUIdx_MSUser : ARMMMUIdx_MUser;\n> +        } else {\n> +            mmu_idx = env->v7m.secure ? ARMMMUIdx_MSPriv : ARMMMUIdx_MPriv;\n>          }\n>  \n> -        if (env->v7m.secure) {\n> -            mmu_idx += ARMMMUIdx_MSUser;\n> +        if (armv7m_nvic_neg_prio_requested(env->nvic, env->v7m.secure)) {\n> +            mmu_idx = env->v7m.secure ? ARMMMUIdx_MSNegPri : ARMMMUIdx_MNegPri;\n>          }\n>  \n>          return arm_to_core_mmu_idx(mmu_idx);\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"LTZSQKCe\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y70cB4pJcz9t44\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  5 Oct 2017 15:47:05 +1100 (AEDT)","from localhost ([::1]:37776 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dzy3q-0001Ud-WA\n\tfor incoming@patchwork.ozlabs.org; Thu, 05 Oct 2017 00:47:03 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:54695)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dzy3V-0001UV-BU\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 00:46:42 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dzy3S-00012I-81\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 00:46:41 -0400","from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:36105)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dzy3S-00011e-3h; Thu, 05 Oct 2017 00:46:38 -0400","by mail-qk0-x242.google.com with SMTP id z14so9337127qkg.3;\n\tWed, 04 Oct 2017 21:46:37 -0700 (PDT)","from [192.168.1.240] ([181.93.89.178])\n\tby smtp.gmail.com with ESMTPSA id\n\tm6sm11367509qkh.90.2017.10.04.21.46.35\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tWed, 04 Oct 2017 21:46:36 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=sender:subject:to:cc:references:from:openpgp:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=oT52yvXyU8P5T7QtPD6kOrUWBjAcQsYh3V6MI7/3oiQ=;\n\tb=LTZSQKCetsTdJmMytXJaArc53PrYSFW3xP+3Tpb/4JbkNnyZubwkvSbjKOw0NbABoP\n\tffRiDsNiB1e/QKndFjO28bAPDiCE7CDBkfBRgn1fUBILaxBFKz7utUn7mWy45IUYChxJ\n\tBzXVIV+RdlwVMCCReCQZh261U5zBpxUKdzgPO8mv5GtMfaVjwMu7PCurUt7habUDtc7g\n\tMOoGgHMPBqb40xSk1OuUZD3KqCTF1CPJqpv+vPUXE3R0m4L4DNCJh9M5BAPZN+jZ1QRP\n\tKf5QjM4YVWPEZ9m0+niRDpvyCd5ekvd94t0JbQ6Jc4/YF1Eu31Q9ZJhAG8GPuhfpfRcn\n\tLNGQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:sender:subject:to:cc:references:from:openpgp\n\t:message-id:date:user-agent:mime-version:in-reply-to\n\t:content-language:content-transfer-encoding;\n\tbh=oT52yvXyU8P5T7QtPD6kOrUWBjAcQsYh3V6MI7/3oiQ=;\n\tb=ZGSNaEew/8uGx4I4a+0xVyIpZqa8+7Q4njD8QWM78VeCCc/nlcJuxE1gxpDzwLmurD\n\tXv8lRQtHyEDWUEegxm5JDUqYQlbho6nu2c+6T/J9P6LU9wrKIbWHR7B7FWdP6mtwsFut\n\tFyrSK0gf/k7AMqgksGVM2uIENAgO2oinwHZhdECyqqQMCvI7VHd64vBs1RPdGHCoAjCT\n\tEQhKeKqTSA+5CFCNS9gsQvl32yroDqbEUFcvOFmbQzYG3Em+EN+xYlLdE2WmPWomxKLz\n\t0c2Z3NiFBqrRuTLJlv8c5F07tKRmu2mJrzzh7rIJBXBinUIKYTDD2QVd3YnsM1OxAKkA\n\tRQTA==","X-Gm-Message-State":"AMCzsaVfQrQGZqRe2QEMHhOztKJCFf7AJUchlGbE5KAifJK2GZy3bmyY\n\tTjbeZrDfLXkfFG8R0tvGYAU=","X-Google-Smtp-Source":"AOwi7QA9TMkMjPf1DpkjA5icUGlgp1LwmBSoAaxWdvG8GPsKpaa77rrFsN7YZcF0Lq+gwccF0Kkn2g==","X-Received":"by 10.55.164.215 with SMTP id n206mr14218811qke.85.1507178797513;\n\tWed, 04 Oct 2017 21:46:37 -0700 (PDT)","To":"Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n\tqemu-devel@nongnu.org","References":"<1506092407-26985-1-git-send-email-peter.maydell@linaro.org>\n\t<1506092407-26985-16-git-send-email-peter.maydell@linaro.org>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <f4bug@amsat.org>","Openpgp":"id=FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE;\n\turl=http://pgp.mit.edu/pks/lookup?op=get&search=0xE3E32C2CDEADC0DE","Message-ID":"<b2c72b55-fa9f-f50e-da70-225fbe01db45@amsat.org>","Date":"Thu, 5 Oct 2017 01:46:33 -0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<1506092407-26985-16-git-send-email-peter.maydell@linaro.org>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"8bit","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2607:f8b0:400d:c09::242","Subject":"Re: [Qemu-devel] [Qemu-arm] [PATCH 15/20] target/arm: Fix\n\tcalculation of secure mm_idx values","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"patches@linaro.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1780902,"web_url":"http://patchwork.ozlabs.org/comment/1780902/","msgid":"<440f5fa0-9c35-63f7-400d-2504a6e63483@linaro.org>","list_archive_url":null,"date":"2017-10-05T18:41:02","subject":"Re: [Qemu-devel] [PATCH 15/20] target/arm: Fix calculation of\n\tsecure mm_idx values","submitter":{"id":72104,"url":"http://patchwork.ozlabs.org/api/people/72104/","name":"Richard Henderson","email":"richard.henderson@linaro.org"},"content":"On 09/22/2017 11:00 AM, Peter Maydell wrote:\n> In cpu_mmu_index() we try to do this:\n>         if (env->v7m.secure) {\n>             mmu_idx += ARMMMUIdx_MSUser;\n>         }\n> but it will give the wrong answer, because ARMMMUIdx_MSUser\n> includes the 0x40 ARM_MMU_IDX_M field, and so does the\n> mmu_idx we're adding to, and we'll end up with 0x8n rather\n> than 0x4n. This error is then nullified by the call to\n> arm_to_core_mmu_idx() which masks out the high part, but\n> we're about to factor out the code that calculates the\n> ARMMMUIdx values so it can be used without passing it through\n> arm_to_core_mmu_idx(), so fix this bug first.\n> \n> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>\n> ---\n>  target/arm/cpu.h | 12 +++++++-----\n>  1 file changed, 7 insertions(+), 5 deletions(-)\n\nReviewed-by: Richard Henderson <richard.henderson@linaro.org>\n\n\nr~","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=linaro.org header.i=@linaro.org\n\theader.b=\"DsO9hFae\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3y7M8z4YKxz9t2V\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri,  6 Oct 2017 05:43:15 +1100 (AEDT)","from localhost ([::1]:41544 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1e0B73-0006bA-Pe\n\tfor incoming@patchwork.ozlabs.org; Thu, 05 Oct 2017 14:43:13 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:45347)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <richard.henderson@linaro.org>) id 1e0B50-0005O5-MO\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 14:41:07 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <richard.henderson@linaro.org>) id 1e0B4z-0002su-Ts\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 14:41:06 -0400","from mail-qt0-x232.google.com ([2607:f8b0:400d:c0d::232]:52431)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <richard.henderson@linaro.org>)\n\tid 1e0B4z-0002sW-Pm\n\tfor qemu-devel@nongnu.org; Thu, 05 Oct 2017 14:41:05 -0400","by mail-qt0-x232.google.com with SMTP id o52so27178239qtc.9\n\tfor <qemu-devel@nongnu.org>; Thu, 05 Oct 2017 11:41:05 -0700 (PDT)","from bigtime.twiddle.net ([2606:a000:7a4a:b100::1b])\n\tby smtp.gmail.com with ESMTPSA id\n\tr10sm5075019ywl.39.2017.10.05.11.41.04\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tThu, 05 Oct 2017 11:41:04 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;\n\th=subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=fmBpAkvldfNCOKU2cOGlLethne9hGjo4kM8XR9gg8Ok=;\n\tb=DsO9hFae75NwighosiJagdHAStRk250hAbcE0c/0EWGbQ61/sr54ZnXOyUDBJ0TIJ9\n\tXwvnQm3df0rv8TVgMG0XVR4R2z6LtqjVFsgztvHRxawjrUbcwWFyoUL4l49jg8cD0sae\n\tAOZtLnkm1NbtS0C/N8/Lgv3T5yoMSq/+GSaPc=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:subject:to:cc:references:from:message-id:date\n\t:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=fmBpAkvldfNCOKU2cOGlLethne9hGjo4kM8XR9gg8Ok=;\n\tb=ApvHXYC5K1f9hMotk5U9MLVdr7f/HW8PLGHu8hmQ3rD8MCxtke6h1IJbTnO+ohJ9b8\n\tAyCGo81OyhWBWf4HbOjOVz/y0NJ2BOyhNQxljuWUU5klAYqnTZB5SvreX0ys76aHLE+8\n\t4QK2k7kCih2N+dIuPqExnCWVR865I4X7c3QNHqBExzZ3+OiLckd71SNF5FO2RY9gVSye\n\tLgvJmhyyUhBOyywhDknuQfYa+0c5SkUw1rWMq41yVklKI/+G4ZjC+2xyPhDsuWiOI4c7\n\tEad3kR77JXr3WhWV/JH/FznJ4E9d0x+Az79dZ/o25VnSQFSpzz+FHIPCq1ZaTpFOB5Ms\n\trK2w==","X-Gm-Message-State":"AMCzsaUokbNC5ztdLJZ/7wq4CfkKMYnCVLD5T0JNeUMAywhU8leRf2TB\n\tSpW+TmbItImHpsr+uyMgf2St1w==","X-Google-Smtp-Source":"AOwi7QD0c+cLyRmKTIwhw4UcdGTPhhW+c90lmUFCVKk2LANTrWHyVB0kgeZY5lmmW4VTDqTdqQWakA==","X-Received":"by 10.37.9.71 with SMTP id u7mr7460748ybm.283.1507228865250;\n\tThu, 05 Oct 2017 11:41:05 -0700 (PDT)","To":"Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n\tqemu-devel@nongnu.org","References":"<1506092407-26985-1-git-send-email-peter.maydell@linaro.org>\n\t<1506092407-26985-16-git-send-email-peter.maydell@linaro.org>","From":"Richard Henderson <richard.henderson@linaro.org>","Message-ID":"<440f5fa0-9c35-63f7-400d-2504a6e63483@linaro.org>","Date":"Thu, 5 Oct 2017 14:41:02 -0400","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<1506092407-26985-16-git-send-email-peter.maydell@linaro.org>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2607:f8b0:400d:c0d::232","Subject":"Re: [Qemu-devel] [PATCH 15/20] target/arm: Fix calculation of\n\tsecure mm_idx values","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"patches@linaro.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]