Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp794955pxp; Fri, 11 Mar 2022 15:20:14 -0800 (PST) X-Google-Smtp-Source: ABdhPJwSFiyJrukWiLDWSHt02BvYZrrSgEy3uy30jIqT25q/mesEDxX6u+tRDnWvsTA1kfU3Xpkz X-Received: by 2002:a17:90b:4ac7:b0:1bf:2ef7:334a with SMTP id mh7-20020a17090b4ac700b001bf2ef7334amr24368535pjb.239.1647040814547; Fri, 11 Mar 2022 15:20:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1647040814; cv=none; d=google.com; s=arc-20160816; b=o8feEpAWsdRBb97cC5A88YzLet9SVHfB5ebOjBuXWhjNF8FLGJ6sSCCEi63dXwhEYJ VCNQnmldq87DrwB81kS/Zkc5w0AxtsxRg40LqO7K4HEGUTdCY0aQEMi0sLVVVXIZ2nnS Qadg5y+3nZfdhkVYQVLi4KFY9UcGG80QZVrqQZe/8m0irjox+r4q9WZfxE/lsvPXM6QW NffijA1kAEKxb8aH0U/BDHqf9gUT5MesfcM7WhFEJSaPdPH6CGEoic498o6iYXhQI4Aw IPD56Lb0iI4DvdkaLzKQYKmonXGUBHBxr7cWbBv6a30H6wHfrBsp6qbrenbm5CyOhgaX hnDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=sDJ/41RHMLJzc98gGAPcQbU38m8lJtFcZEeAQmDlWXg=; b=ss9Uy69P++zwfBpRUIzXc/eQKdwjgIkBS/KhEfV8oSXcir6uifJvJNWFTj8RVNO85O ExURVoOE/pK48brWPBFgX0DLmCcYVvpZ1PNy9AIWnCCSvy8UNosEXiEDPlRUBzuNdnYf sTevw60yGgxPuOVbORQqJZNXmHiWszE0ExjNSCOCMO8VUF915RhPbNg7pJ9d4SNOO4XU 1Tt5NCHGonCzNgvQuZMp8yyyl7Ksx0E8Xrnb7LV9dhGGqrUg/Xyj5opY1IuUYoVXZTlt Cz0tOWUTSCeuHBL5F8XBxuQSpQAaWM7OPYPovObFt9TTd0WS8Wa+ZP1NxtMvy5JPvo+z x+AQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=eB2fEtFz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id d19-20020a631d53000000b00372edd40f78si9463888pgm.386.2022.03.11.15.20.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Mar 2022 15:20:14 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=eB2fEtFz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 20DC139F427; Fri, 11 Mar 2022 14:06:36 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351038AbiCKTIL (ORCPT + 99 others); Fri, 11 Mar 2022 14:08:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351030AbiCKTII (ORCPT ); Fri, 11 Mar 2022 14:08:08 -0500 Received: from mail-pf1-x434.google.com (mail-pf1-x434.google.com [IPv6:2607:f8b0:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD8591AE650 for ; Fri, 11 Mar 2022 11:07:04 -0800 (PST) Received: by mail-pf1-x434.google.com with SMTP id s42so8672574pfg.0 for ; Fri, 11 Mar 2022 11:07:04 -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:in-reply-to:references :mime-version:content-transfer-encoding; bh=sDJ/41RHMLJzc98gGAPcQbU38m8lJtFcZEeAQmDlWXg=; b=eB2fEtFzdgN9cXc57alBRC4gluos4heUHZd/NkibI+iQkHVIgyj9X/N3a59R9POFfz FZAEGeEoGaP/DiE1VKnvbdnQHI9dsGk0DFE/1tJBP3Sg24jyuIIvJsZyw+uOYNNaDR5P 62e/plny9+qhehr27OSqyhSf3wCMDRZ8k+gXY2FT3fY2V9dgrCAExF8mufrS9LbOWuWG ZUrU5JjD8b6cLYG9WZwCfsop5Xvm/ntnuXh5WrZOXYdeHzkZypMKytBFZb4inGRjlDos e0K7M+qmuOJCczhU20fTRaMNq2L8nicOYYEVQJ0yt3APiBEMLeIJacTtxNqhnQWbHep3 AxFA== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=sDJ/41RHMLJzc98gGAPcQbU38m8lJtFcZEeAQmDlWXg=; b=L3hZr9W9YP+n4W3DcaOmibgeuX9q9xvHO2LEtC6mbFASqpZH+RV/wUzdughr0L+87v Fu826DUkkpS4V1KhrWplYa+sNIkCSWLH5C/uxn35nggS8i3uJf61b0nYpk30MfffNr75 RcgqL7diSA/qGWJdFs7AGDqfbxeAmxyUfSX3GIExlvfn1m0LydXeLa2ks86hbdHUefcG FWqxTDSy4jg2ODe3lciFcpe5QSY4PHemyWsgGHTFQw41HuIaizQHF/RhpNYZhv72n4v/ IycekCM4xlLoEuP5pzFE4Gd2hvVTYV/Bf/us5vdV8LTr55+lkwFXUQnUJEfeddrOCx4c 62Hg== X-Gm-Message-State: AOAM531VU2rcV5J0+a9Vc/4rYGE5xSJ5IPU6YmngwAUx09BMW+8KDVF4 FEpkJabhuxS0U2M9uJwiCgA= X-Received: by 2002:a63:f90b:0:b0:378:a292:3951 with SMTP id h11-20020a63f90b000000b00378a2923951mr9594408pgi.312.1647025624006; Fri, 11 Mar 2022 11:07:04 -0800 (PST) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id a5-20020a621a05000000b004f79f8f795fsm857329pfa.0.2022.03.11.11.07.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Mar 2022 11:07:03 -0800 (PST) From: Nadav Amit X-Google-Original-From: Nadav Amit To: linux-mm@kvack.org Cc: linux-kernel@vger.kernel.org, Andrew Morton , Nadav Amit , Andi Kleen , Andrea Arcangeli , Andrew Cooper , Andy Lutomirski , Dave Hansen , Peter Xu , Peter Zijlstra , Thomas Gleixner , Will Deacon , Yu Zhao , Nick Piggin , x86@kernel.org Subject: [RESEND PATCH v3 1/5] x86: Detection of Knights Landing A/D leak Date: Fri, 11 Mar 2022 11:07:45 -0800 Message-Id: <20220311190749.338281-2-namit@vmware.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220311190749.338281-1-namit@vmware.com> References: <20220311190749.338281-1-namit@vmware.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Nadav Amit Knights Landing has a issue that a thread setting A or D bits may not do so atomically against checking the present bit. A thread which is going to page fault may still set those bits, even though the present bit was already atomically cleared. This implies that when the kernel clears present atomically, some time later the supposed to be zero entry could be corrupted with stray A or D bits. Since the PTE could be already used for storing a swap index, or a NUMA migration index, this cannot be tolerated. Most of the time the kernel detects the problem, but in some rare cases it may not. This patch adds an interface to detect the bug, which will be used in a following patch. Cc: Andi Kleen Cc: Andrea Arcangeli Cc: Andrew Cooper Cc: Andrew Morton Cc: Andy Lutomirski Cc: Dave Hansen Cc: Peter Xu Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Will Deacon Cc: Yu Zhao Cc: Nick Piggin Cc: x86@kernel.org Link: https://lore.kernel.org/lkml/1465919919-2093-1-git-send-email-lukasz.anaczkowski@intel.com/ Signed-off-by: Nadav Amit --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kernel/cpu/intel.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h index 67ef0e81c7dc..184b299dbf12 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -442,5 +442,6 @@ #define X86_BUG_TAA X86_BUG(22) /* CPU is affected by TSX Async Abort(TAA) */ #define X86_BUG_ITLB_MULTIHIT X86_BUG(23) /* CPU may incur MCE during certain page attribute changes */ #define X86_BUG_SRBDS X86_BUG(24) /* CPU may leak RNG bits if not mitigated */ +#define X86_BUG_PTE_LEAK X86_BUG(25) /* PTE may leak A/D bits after clear */ #endif /* _ASM_X86_CPUFEATURES_H */ diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c index 8321c43554a1..74780fef3f12 100644 --- a/arch/x86/kernel/cpu/intel.c +++ b/arch/x86/kernel/cpu/intel.c @@ -296,6 +296,11 @@ static void early_init_intel(struct cpuinfo_x86 *c) } } + if (c->x86_model == INTEL_FAM6_XEON_PHI_KNL) { + pr_info_once("Enabling PTE leaking workaround\n"); + set_cpu_bug(c, X86_BUG_PTE_LEAK); + } + /* * Intel Quark Core DevMan_001.pdf section 6.4.11 * "The operating system also is required to invalidate (i.e., flush) -- 2.25.1