Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1720058imm; Sat, 16 Jun 2018 01:28:50 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJEDfDAH3gvdA9Jj8Gk8Gn27gYRR77myHvUDbtRvacz7wtnsD1g/OgcqzQ6LNKVq2NjnVO6 X-Received: by 2002:a17:902:8b86:: with SMTP id ay6-v6mr5756181plb.295.1529137730267; Sat, 16 Jun 2018 01:28:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529137730; cv=none; d=google.com; s=arc-20160816; b=zrbOpXvVeeYqOXlUCOh+ot7lWxkH+9gfSsHw6EK00FfUsL8RcjTF0ZRSrYyRJ3jqsD RWJZIiXMMgRg0WNbkI+KuKPUvEanAzsNWlCdsy9dpTUCyWCCm0c0leQGY/fW/mh6cpbN oTXrzBOjl5AlAb4AoetVnRmHusJNQNEIpXAfWEEIkMcj0Vrdt0uABROHn3/xo9TrNYTB vo0AN84FINdsKPIwkWxmWhiG24Zzz04xqRQ+v7g9u2AcLloQnjD5AEd1HI1qveZX8P1+ 6ZUITLNo/ugpOsmD/VuSuIGAFBU3Y9qbsa+1uXIv02VOurD5/9PzrIXKOjT1QONre2kT roeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=yoJWN8P74PYzJJvJp7pue+PDLdZWflAiUOr7+fUvgFo=; b=Nlz/SvW9htw+L1AiauY9oB6FW7aOPW49V0TnaQ+27c7OoqN0nweZuzfe2G0adFW7wJ EbD+MK/jzRSS1lp3lgERXYKAIwMKNoDXrZTMJgPnzyFJzXjlHm1hznrdbjydHXDq26kk 2fBHfP9CFYnobbcwpmPlMj2f6gqzJmOV03eUYtGBz2bZB9ff7LAOMm8PElCJLVYSK2FR mWEy9ejCak+qyj7q2dCGthFqF5XnjIIDRZDV0jbywg7u3auMGrNUkBNcGf7J4IWStmgV U19bw0Jn2b+yRZAvH0t/0FUvD1b5e6y2l/ebU13QsvlUQQoVNoeyOFTZRckFIKvMqcPv XRPA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e2-v6si7994786pgq.382.2018.06.16.01.28.35; Sat, 16 Jun 2018 01:28:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934312AbeFPI1h (ORCPT + 99 others); Sat, 16 Jun 2018 04:27:37 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:45226 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933454AbeFPI1b (ORCPT ); Sat, 16 Jun 2018 04:27:31 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DB27940704BC; Sat, 16 Jun 2018 08:27:30 +0000 (UTC) Received: from 192.168.1.112 (ovpn-12-46.pek2.redhat.com [10.72.12.46]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0BE6D20244E0; Sat, 16 Jun 2018 08:27:27 +0000 (UTC) From: Lianbo Jiang To: linux-kernel@vger.kernel.org Cc: iommu@lists.linux-foundation.org, kexec@lists.infradead.org, thomas.lendacky@amd.com, dyoung@redhat.com Subject: [PATCH 3/4 V3] Remap the device table of IOMMU in encrypted manner for kdump Date: Sat, 16 Jun 2018 16:27:13 +0800 Message-Id: <20180616082714.32035-4-lijiang@redhat.com> In-Reply-To: <20180616082714.32035-1-lijiang@redhat.com> References: <20180616082714.32035-1-lijiang@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Sat, 16 Jun 2018 08:27:30 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.7]); Sat, 16 Jun 2018 08:27:30 +0000 (UTC) for IP:'10.11.54.4' DOMAIN:'int-mx04.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'lijiang@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In kdump mode, it will copy the device table of IOMMU from the old device table, which is encrypted when SME is enabled in the first kernel. So we must remap it in encrypted manner in order to be automatically decrypted when we read. Signed-off-by: Lianbo Jiang --- Some changes: 1. add some comments 2. clean compile warning. drivers/iommu/amd_iommu_init.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 904c575..a20af4c 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -889,11 +889,24 @@ static bool copy_device_table(void) } old_devtb_phys = entry & PAGE_MASK; + + /* + * When sme enable in the first kernel, old_devtb_phys includes the + * memory encryption mask(sme_me_mask), we must remove the memory + * encryption mask to obtain the true physical address in kdump mode. + */ + if (mem_encrypt_active() && is_kdump_kernel()) + old_devtb_phys = __sme_clr(old_devtb_phys); + if (old_devtb_phys >= 0x100000000ULL) { pr_err("The address of old device table is above 4G, not trustworthy!\n"); return false; } - old_devtb = memremap(old_devtb_phys, dev_table_size, MEMREMAP_WB); + old_devtb = (mem_encrypt_active() && is_kdump_kernel()) + ? (__force void *)ioremap_encrypted(old_devtb_phys, + dev_table_size) + : memremap(old_devtb_phys, dev_table_size, MEMREMAP_WB); + if (!old_devtb) return false; -- 2.9.5