Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp4284842ybl; Mon, 3 Feb 2020 16:06:22 -0800 (PST) X-Google-Smtp-Source: APXvYqz8ZXAmoZ3r+RgCU/k3saHZT/sTcPV1uXeb1i2KEmXbTJ/o6vL4v2pDqPQv8RylUdmUWES5 X-Received: by 2002:aca:fcc1:: with SMTP id a184mr1307346oii.36.1580774781692; Mon, 03 Feb 2020 16:06:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580774781; cv=none; d=google.com; s=arc-20160816; b=hDwxJK5zyvQYTNUzXmud+mrUgpxwC5cg81vhwUPTGEO4AezfzVQA7Kb7rdE76eigy8 tbOxnGEE9mPLBFBn50ifOIm9DLr0HjmoQHIKr4dDOiA4afZ2GxXuL1jwnNV30chcvlY6 Gu1betANi2MrZjWBtVJz1RmHhsjgoda6vmYPxf7IMpOZTtdvxCcG9gwhZSTE6n2BoiSx 5ILad2f8WiyLF/cCg997XY+/gsWIgwJtlAhhE8sXkZOECknn4hGSeCixcZUIVTqgg6aG KOPtHYWfEM5RgWSJWJ9RBDqO3tBVQQk0U31FrxDrlAGSavucnV4Uve6GRVzYaw0wkJ4G 7feA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=aCFsspZR2IkcUZ6BM/Aqzw4nb1xMmTKX4E/XSHd9AX0=; b=c7nChNMAiKq6eYkFDXQ7dZHRL4mAz8PimuWWmM+N/+5BJ9A/diz/rQoZflFdr/tUO5 lUjVHEm49yvyx4Q3bj6r7s80qIGZzhC4Jmc3fWmD4QlQi6HkfNFRSWYt4H08FXvr19S7 uznOMGZx/PKFLQwCKeCxRqhvLbciH5Svw+0WbFBOpnCzblClo74kXN0Yv/feBgnxO6qO QUl203Es47LmpFSU+hCjIVYT5C+D7gaA0dAV04lqLweuOGfs8+PXmF7qkHrvqbGaNeBT gI7mlGuhQjfSHZwRDOuPja4x4ciNFU7hm4IRjQInOj3s8alc+eBxoEP0V+zqq6jE4bn+ 3L1g== 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k13si8625400oij.118.2020.02.03.16.06.08; Mon, 03 Feb 2020 16:06:21 -0800 (PST) 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727063AbgBDAEu (ORCPT + 99 others); Mon, 3 Feb 2020 19:04:50 -0500 Received: from mga12.intel.com ([192.55.52.136]:13095 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726331AbgBDAEu (ORCPT ); Mon, 3 Feb 2020 19:04:50 -0500 X-Amp-Result: UNSCANNABLE X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Feb 2020 16:04:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,398,1574150400"; d="scan'208";a="310876865" Received: from sjchrist-coffee.jf.intel.com (HELO linux.intel.com) ([10.54.74.202]) by orsmga001.jf.intel.com with ESMTP; 03 Feb 2020 16:04:49 -0800 Date: Mon, 3 Feb 2020 16:04:49 -0800 From: Sean Christopherson To: "Luck, Tony" Cc: Thomas Gleixner , Mark D Rustad , Arvind Sankar , Peter Zijlstra , Ingo Molnar , "Yu, Fenghua" , Ingo Molnar , Borislav Petkov , H Peter Anvin , "Raj, Ashok" , "Shankar, Ravi V" , linux-kernel , x86 Subject: Re: [PATCH v17] x86/split_lock: Enable split lock detection by kernel Message-ID: <20200204000449.GA28014@linux.intel.com> References: <4E95BFAA-A115-4159-AA4F-6AAB548C6E6C@gmail.com> <8CC9FBA7-D464-4E58-8912-3E14A751D243@gmail.com> <20200126200535.GB30377@agluck-desk2.amr.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200126200535.GB30377@agluck-desk2.amr.corp.intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jan 26, 2020 at 12:05:35PM -0800, Luck, Tony wrote: ... > +bool handle_user_split_lock(struct pt_regs *regs, long error_code) No reason to take the error code unless there's a plan to use it. > +{ > + if ((regs->flags & X86_EFLAGS_AC) || sld_state == sld_fatal) > + return false; Any objection to moving the EFLAGS.AC up to do_alignment_check()? And take "unsigned long rip" instead of @regs? That would allow KVM to reuse handle_user_split_lock() for guest faults without any changes (other than exporting). E.g. do_alignment_check() becomes: if (!(regs->flags & X86_EFLAGS_AC) && handle_user_split_lock(regs->ip)) return; > + > + pr_warn_ratelimited("#AC: %s/%d took a split_lock trap at address: 0x%lx\n", > + current->comm, current->pid, regs->ip); > + > + /* > + * Disable the split lock detection for this task so it can make > + * progress and set TIF_SLD so the detection is re-enabled via > + * switch_to_sld() when the task is scheduled out. > + */ > + __sld_msr_set(false); > + set_tsk_thread_flag(current, TIF_SLD); > + return true; > +} ... > +dotraplinkage void do_alignment_check(struct pt_regs *regs, long error_code) > +{ > + char *str = "alignment check"; > + > + RCU_LOCKDEP_WARN(!rcu_is_watching(), "entry code didn't wake RCU"); > + > + if (notify_die(DIE_TRAP, str, regs, error_code, X86_TRAP_AC, SIGBUS) == NOTIFY_STOP) > + return; > + > + if (!user_mode(regs)) > + die("Split lock detected\n", regs, error_code); > + > + local_irq_enable(); > + > + if (handle_user_split_lock(regs, error_code)) > + return; > + > + do_trap(X86_TRAP_AC, SIGBUS, "alignment check", regs, > + error_code, BUS_ADRALN, NULL); > +} > + > #ifdef CONFIG_VMAP_STACK > __visible void __noreturn handle_stack_overflow(const char *message, > struct pt_regs *regs, > -- > 2.21.1 >