Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp4268536ybz; Tue, 28 Apr 2020 08:28:06 -0700 (PDT) X-Google-Smtp-Source: APiQypII2YDgXUatwHeepTzrJSK2jMT4zpvTXx9VDI4Q8MvLPkTKTWAyLqPPn9x4s36I89Cc+HnU X-Received: by 2002:aa7:d5d4:: with SMTP id d20mr23641546eds.369.1588087686493; Tue, 28 Apr 2020 08:28:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588087686; cv=none; d=google.com; s=arc-20160816; b=TrzwcgEx019nizA0c9i5ScoJ8q5R1b4DFFAZHIkJ0c4l/WK5yGeZXBzeG5xybcp306 +1lcXAjnn+XxtjGCdOzTGGH1B/YGBOQu4TClW6MVHD5GQycF/N8hQfyulv3rY8C0APwJ E/rQa65K95H3yV+Q/MMM2f77rM4qbrxdpg/4LlU3C8ZuLb3yKcWi8bDPAw0TWlSI5gQA zW1UXiQyuP4kkSLcEDGOdsU11O6hTLslnlQqkonFM/SpcdiNsnR8osb/9SdV0tRutWC6 vTe7ofmcHvJB4RQoxongkC59NGYN126kEoZZgvkWt3FeUISSyPZoQ7Da9EPRqEUvEA/q PyWA== 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=O3U4aYW8LKTRINZaFrzy2GRZlAeeJztJp+XLOyC1Hw8=; b=izwNlryFHIngVtIS1oVYwFTMEYmekPruhSsty20QNcJtgba6srCPdoxR/GTcuIITcz 3wXixJKp+7LLYmgu7hLXz3kQ8ydMwXwE2c/IwWyYW1dfJQHnv1JucCfRhdmpy1B9WwgY IaQ9D1ouVBPpS0amlzI4d9CHkpd0cZlKr8E48GNvMEIq9eD7iJ2+NJ6qEpTiMLw2ZRTq TKR7h7Rr1ZHQs2m4q8MoIggewCG5snZMah1lN1yzVexbXEGwX8LFmGG6e5aGqDorqxB4 6iHNNt1jMj8DSrhwGUbVUJowVMIZ6jC2C92YQX171nsHSHIuYPrU3QbXi/qNJIJYDQtg pYrA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i14si1838015edt.120.2020.04.28.08.27.37; Tue, 28 Apr 2020 08:28:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=8bytes.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728637AbgD1PWt (ORCPT + 99 others); Tue, 28 Apr 2020 11:22:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41654 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1728262AbgD1PSD (ORCPT ); Tue, 28 Apr 2020 11:18:03 -0400 Received: from theia.8bytes.org (8bytes.org [IPv6:2a01:238:4383:600:38bc:a715:4b6d:a889]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 97391C03C1AB; Tue, 28 Apr 2020 08:18:02 -0700 (PDT) Received: by theia.8bytes.org (Postfix, from userid 1000) id 7C59DF09; Tue, 28 Apr 2020 17:17:47 +0200 (CEST) From: Joerg Roedel To: x86@kernel.org Cc: hpa@zytor.com, Andy Lutomirski , Dave Hansen , Peter Zijlstra , Thomas Hellstrom , Jiri Slaby , Dan Williams , Tom Lendacky , Juergen Gross , Kees Cook , David Rientjes , Cfir Cohen , Erdem Aktas , Masami Hiramatsu , Mike Stunes , Joerg Roedel , Joerg Roedel , linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org Subject: [PATCH v3 28/75] x86/idt: Move IDT to data segment Date: Tue, 28 Apr 2020 17:16:38 +0200 Message-Id: <20200428151725.31091-29-joro@8bytes.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200428151725.31091-1-joro@8bytes.org> References: <20200428151725.31091-1-joro@8bytes.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Joerg Roedel With SEV-ES, exception handling is needed very early, even before the kernel has cleared the bss segment. In order to prevent clearing the currently used IDT, move the IDT to the data segment. Signed-off-by: Joerg Roedel --- arch/x86/kernel/idt.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/arch/x86/kernel/idt.c b/arch/x86/kernel/idt.c index 87ef69a72c52..a8fc01ea602a 100644 --- a/arch/x86/kernel/idt.c +++ b/arch/x86/kernel/idt.c @@ -165,8 +165,12 @@ static const __initconst struct idt_data dbg_idts[] = { }; #endif -/* Must be page-aligned because the real IDT is used in a fixmap. */ -gate_desc idt_table[IDT_ENTRIES] __page_aligned_bss; +/* + * Must be page-aligned because the real IDT is used in a fixmap. + * Also needs to be in the .data segment, because the idt_table is + * needed before the kernel clears the .bss segment. + */ +gate_desc idt_table[IDT_ENTRIES] __page_aligned_data; struct desc_ptr idt_descr __ro_after_init = { .size = (IDT_ENTRIES * 2 * sizeof(unsigned long)) - 1, -- 2.17.1