From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 44BBDC433EF for ; Fri, 21 Jan 2022 06:56:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=Itra2ciAVr6AjP2G4n6tS90wzjUMfUD2vW5qIE+lgEE=; b=w4WPKXedHn+jLg HI48MVfvSiGRVE89/gEU59hIESclbeOfgjdyg4qd0QRENTwRD4rEkFJaN7hXVP2vuztVRqHdBy/Ho Z+hHVjabVrR9CQH8yen72MvX1in3fx/zu8yuXq1Yt8jmlF7yhr6jIWm1VHNNq5wEhaT4SpDmYz1lm t2wzFZ6O7g5MPSgBCZzYrtjMV+yZLzCgavtaI3fwL6SnInwxs8IUoM3ImY4pSq97rabPSHFcaSqnL iBHjX9GbO8d2MZeBIjMhU3ZzE1QEHibe5J6Mk5DiQSQQCl2oUQDExwo04kBKBZdAzWiXqCTONAXA6 nkIcSv1m7OouHkM1xZGg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nAnpU-00E04G-JL; Fri, 21 Jan 2022 06:55:24 +0000 Received: from mail-qv1-xf29.google.com ([2607:f8b0:4864:20::f29]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nAnpQ-00E03p-Dg for linux-arm-kernel@lists.infradead.org; Fri, 21 Jan 2022 06:55:21 +0000 Received: by mail-qv1-xf29.google.com with SMTP id s6so2313189qvv.11 for ; Thu, 20 Jan 2022 22:55:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=pKxw+p7lB0nsRwM8MVWzboFXmLT34k0K03FPzwtxAHY=; b=CARe8ttmcxAQOg/zAxhzRGaZ49Ok+ddErNFqywbC2UesN8xubEII2GKJzptNYrw9Q9 1RjYToA/5rdw/9NPllBvCxFUKE4quqxeZNPJUXcg5eN4syETNoKJ6xIffwmS289mnF+/ 0Hxptkus69nAwIRtIskF5sR817fe8S310UPl56d7RN98E/ZATN9aktv7mVMq0v+eAOyn yo75tDM07jAfSf6ALHGVl8RmfPUUCHKMJGTfwzZEl7tmn+fd2eZ5I3YFMksT8Fr/IWhK rDaKNHOsAvOtFFds807V9qZTaOe8RGE+l14Ez8WMGGPwRf5T0R2tJIlYzJZOeS06ETZo MamQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=pKxw+p7lB0nsRwM8MVWzboFXmLT34k0K03FPzwtxAHY=; b=5wlMMms21T2Ygfv4u+bssIMI1IG1tuMVsAIBIezNPd5VgTiOBaL2tJuS93EvVKhjeH wj6TRhYzjcMdQoGLmrM+jdlr2DMNKXG6yNMzC+BcofAq8JmHVX4NIavEHaxnpKMXYRmQ fVsdNzldS8sCOmWW45SGG+ELurbxtCAKJQtb5kzNN4r40TG27BO7Rg8d68OvFeb+hD3g 2Yk4oudLu3+vW7xMkCxQ3mY5VTBOfxTeJk17U0rcsndgAq5o1f4zhoVz2ZCLNNu7U1EU gBDCOOOtdKpy5K23RDIVifaoPONGnqv5h9k9FqlCJCmdPNiThVj0wDtufGHrYpQQ5SLF qnvA== X-Gm-Message-State: AOAM530QKNaSzRpWFo9ETotRbkthlElzwrb6WAGXQAB/SDz4QOZN33FV BqHKA4ew9B5eojn6cG6uUy4= X-Google-Smtp-Source: ABdhPJxfWhr//zTGzRLC9EUH9zThXDmG4p7vGEXiC7o+NuZ73/RzmPJGpwGWGvbJz2HDJk0toGDw+w== X-Received: by 2002:a05:6214:62e:: with SMTP id a14mr2395922qvx.113.1642748118752; Thu, 20 Jan 2022 22:55:18 -0800 (PST) Received: from localhost.localdomain ([193.203.214.57]) by smtp.gmail.com with ESMTPSA id y16sm2888410qtw.4.2022.01.20.22.55.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jan 2022 22:55:18 -0800 (PST) From: cgel.zte@gmail.com X-Google-Original-From: si.hao@zte.com.cn To: catalin.marinas@arm.com, pasha.tatashin@soleen.com, si.hao@zte.com.cn, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: will@kernel.org, james.morse@arm.com Subject: [PATCH linux-next] arm64: kexec: Support the case of VA_BITS=39 in trans_pgd_idmap_page() Date: Fri, 21 Jan 2022 06:52:16 +0000 Message-Id: <20220121065216.1001021-1-si.hao@zte.com.cn> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220120_225520_498574_6700AE80 X-CRM114-Status: GOOD ( 14.77 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: sihao When the values of CONFIG_ARM64_VA_BITS and CONFIG_ARM64_PA_BITS are not equal, the following panic occurs when kexec is executed. This happens because trans_pgd_idmap_page() does not support VA_BITS=39. So the patch supports the case of VA_BITS=39. ->kexec -e [ 36.168728] 000: kexec_core: Starting new kernel [ 36.168735] 000: Disabling non-boot CPUs ... [ 36.168739] 000: Bye! [ 36.189457] 000: Unable to handle kernel paging request at virtual address 000000000fb3c000 [ 36.189460] 000: Mem abort info: [ 36.189462] 000: ESR = 0x86000006 [ 36.189463] 000: EC = 0x21: IABT (current EL), IL = 32 bits [ 36.189466] 000: SET = 0, FnV = 0 [ 36.189468] 000: EA = 0, S1PTW = 0 [ 36.189470] 000: user pgtable: 4k pages, 39-bit VAs, pgdp=000000000de68000 [ 36.189475] 000: [000000000fb3c000] pgd=000000000fb24003, pud=000000000fb24003, pmd=0000000000000000 [ 36.189482] 000: Internal error: Oops: 86000006 [#1] PREEMPT SMP [ 36.189488] 000: Modules linked in: [ 36.189493] 000: CPU: 0 PID: 825 Comm: kexec Not tainted XXX [ 36.189498] 000: Hardware name: XXX [ 36.189500] 000: pstate: 600003c5 (nZCv DAIF -PAN -UAO) [ 36.189503] 000: pc : 0xfb3c000 [ 36.189510] 000: lr : machine_kexec+0x2a4/0x300 [ 36.189520] 000: sp : ffffffc0111fbc90 [ 36.189523] 000: x29: ffffffc0111fbc90 x28: ffffff800fb66440 [ 36.189527] 000: x27: 0000000000000000 x26: 0000000000000000 [ 36.189531] 000: x25: 0000000056000000 x24: 0000000000000015 [ 36.189534] 000: x23: 000000000de64000 x22: 000000000fb3c000 [ 36.189538] 000: x21: ffffffc010699298 x20: ffffffc010752e90 [ 36.189542] 000: x19: ffffff800acc0400 x18: 0000000000000001 [ 36.189545] 000: x17: 0000000000000000 x16: 0000000000000000 [ 36.189549] 000: x15: ffffff800fb66838 x14: ffffffffffffffff [ 36.189552] 000: x13: ffffffc0108f0b48 x12: ffffffc0111fbba0 [ 36.189556] 000: x11: ffffffc01088d450 x10: ffffffc01088d468 [ 36.189559] 000: x9 : 0000000000000001 x8 : 0000000000024d30 [ 36.189563] 000: x7 : ffffffc0108f0738 x6 : ffffffc0108ebe18 [ 36.189566] 000: x5 : 0000000000024d30 x4 : 0000000000004920 [ 36.189570] 000: x3 : 0000000000000006 x2 : b9bb936edd96cd00 [ 36.189573] 000: x1 : 0000000000000000 x0 : ffffff800acc0400 [ 36.189576] 000: Call trace: [ 36.189578] 000: 0xfb3c000 [ 36.189580] 000: kernel_kexec+0x98/0xe8 [ 36.189586] 000: __do_sys_reboot+0x1d0/0x208 [ 36.189593] 000: __arm64_sys_reboot+0x2c/0x38 [ 36.189597] 000: el0_svc_common.constprop.0+0x74/0x168 [ 36.189603] 000: el0_svc_handler+0x80/0xa0 [ 36.189607] 000: el0_svc+0x8/0x204 [ 36.189616] 000: Code: bad PC value [ 36.189621] 000: ---[ end trace f930c021f9bf10a9 ]--- [ 36.189625] 000: Kernel panic - not syncing: Fatal exception Reported-by: sihao Signed-off-by: sihao --- arch/arm64/mm/trans_pgd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/mm/trans_pgd.c b/arch/arm64/mm/trans_pgd.c index d7da8ca40d2e..3d88185adcf5 100644 --- a/arch/arm64/mm/trans_pgd.c +++ b/arch/arm64/mm/trans_pgd.c @@ -232,7 +232,7 @@ int trans_pgd_idmap_page(struct trans_pgd_info *info, phys_addr_t *trans_ttbr0, { phys_addr_t dst_addr = virt_to_phys(page); unsigned long pfn = __phys_to_pfn(dst_addr); - int max_msb = (dst_addr & GENMASK(52, 48)) ? 51 : 47; + int max_msb = (dst_addr & GENMASK(52, VA_BITS)) ? 51 : (VA_BITS - 1); int bits_mapped = PAGE_SHIFT - 4; unsigned long level_mask, prev_level_entry, *levels[4]; int this_level, index, level_lsb, level_msb; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel