Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1678802imm; Fri, 7 Sep 2018 04:31:08 -0700 (PDT) X-Google-Smtp-Source: ANB0Vda453ioMLpEGh5DoARw9DdPrxUIc3JljMnHWfnnuRRlc4UOsRM41DldOIWesYGGJZHpcuL/ X-Received: by 2002:a63:8648:: with SMTP id x69-v6mr7808727pgd.268.1536319867938; Fri, 07 Sep 2018 04:31:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536319867; cv=none; d=google.com; s=arc-20160816; b=B13+diRWYW9+MhnQK3FYxCO3fECGrHEWXmmYJ5lHwMaL507eOSsreK6libZVabmRWC /2NddHYRoLkR7ZUIPHxgAZQBGJaDHPJm3npJBda1oSkx652qgi67ltYlEGSWUqFhsz1Y XeeMa3lgvm/Pynav31aPq2nVwSsjnH/zth6qybaMCKPlBAgdm5xnkFpxa2e6JUtQOINO YowFwiRqxz3/GGLt210ORNaGNQXkkSnfTjoq8XDaQU6nOztjI2YCAZJ0dtnOCj9/sfFk zH2mi0T6sqOP2nWuEeThs8GO+tBpKdSXhTskvhxa/r+3A6X/rIEClI51h0Fe6wALx9yV Wdyw== 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; bh=Vez20QTKv8aLL9SnxBll09TdDW8S83k4zVAwQLJF07w=; b=cww8OAIzauU5cQGrS3AXQMURJhKxAuNObNS3A1yzfT0U3JtQ3LjF7U05mR8V6WEjma PZ1Y64KB5C7J3gYbNmWEtiQ9QQSOnEMWLm6uzovVGwh1Up0wPfC2CMzLsGJdqAYYzxpY ZqIFb9786+nsXlKKCG1MksMLWihEZf/2jLORzPheP2Rv6PMvmdMKNixyDmtQtQ1YEIpa B/2J1hOG1j4SAumoiemJtWM/IdVU8nEi5NM2fVMi12X4IswF2hvPeEB3gMrhtPuXEZuD nLlPpBCq1WOeK4gNldvxSBMQs8Jj3XjGnUCLYbzb4NviCfiOE0XBzpV/wB3YrBBUJk07 yRAg== 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 11-v6si7913396plb.383.2018.09.07.04.30.51; Fri, 07 Sep 2018 04:31:07 -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 S1728224AbeIGM6l (ORCPT + 99 others); Fri, 7 Sep 2018 08:58:41 -0400 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:45692 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727670AbeIGM6l (ORCPT ); Fri, 7 Sep 2018 08:58:41 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C0E5E401EF27; Fri, 7 Sep 2018 08:18:52 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-12-85.pek2.redhat.com [10.72.12.85]) by smtp.corp.redhat.com (Postfix) with ESMTP id D0E1710F1C09; Fri, 7 Sep 2018 08:18:43 +0000 (UTC) From: Lianbo Jiang To: linux-kernel@vger.kernel.org Cc: mingo@redhat.com, tglx@linutronix.de, hpa@zytor.com, ebiederm@xmission.com, joro@8bytes.org, thomas.lendacky@amd.com, dyoung@redhat.com, kexec@lists.infradead.org, iommu@lists.linux-foundation.org, bhe@redhat.com Subject: [PATCH 3/4 v7] amd_iommu: remap the device table of IOMMU with the memory encryption mask for kdump Date: Fri, 7 Sep 2018 16:18:04 +0800 Message-Id: <20180907081805.368-4-lijiang@redhat.com> In-Reply-To: <20180907081805.368-1-lijiang@redhat.com> References: <20180907081805.368-1-lijiang@redhat.com> X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 07 Sep 2018 08:18:52 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 07 Sep 2018 08:18:52 +0000 (UTC) for IP:'10.11.54.3' DOMAIN:'int-mx03.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 kernel, 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 have to remap the old device table with the memory encryption mask. Signed-off-by: Lianbo Jiang --- drivers/iommu/amd_iommu_init.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 84b3e4445d46..3931c7de7c69 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -902,12 +902,22 @@ static bool copy_device_table(void) } } - old_devtb_phys = entry & PAGE_MASK; + /* + * When SME is enabled in the first kernel, the entry includes the + * memory encryption mask(sme_me_mask), we must remove the memory + * encryption mask to obtain the true physical address in kdump kernel. + */ + old_devtb_phys = __sme_clr(entry) & PAGE_MASK; + 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 = (sme_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.17.1