Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753427AbbGQBxi (ORCPT ); Thu, 16 Jul 2015 21:53:38 -0400 Received: from mail-la0-f50.google.com ([209.85.215.50]:35820 "EHLO mail-la0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752312AbbGQBxg (ORCPT ); Thu, 16 Jul 2015 21:53:36 -0400 MIME-Version: 1.0 From: Andy Lutomirski Date: Thu, 16 Jul 2015 18:53:15 -0700 Message-ID: Subject: Reconciling rcu_irq_enter()/rcu_nmi_enter() with context tracking To: Sasha Levin , =?UTF-8?B?RnLDqWTDqXJpYyBXZWlzYmVja2Vy?= , Paul McKenney , "linux-kernel@vger.kernel.org" , Peter Zijlstra , X86 ML , Rik van Riel Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1692 Lines: 40 For reasons that mystify me a bit, we currently track context tracking state separately from rcu's watching state. This results in strange artifacts: nothing generic cause IRQs to enter CONTEXT_KERNEL, and we can nest exceptions inside the IRQ handler (an example would be wrmsr_safe failing), and, in -next, we splat a warning: https://gist.github.com/sashalevin/a006a44989312f6835e7 I'm trying to make context tracking more exact, which will fix this issue (the particular splat that Sasha hit shouldn't be possible when I'm done), but I think it would be nice to unify all of this stuff. Would it be plausible for us to guarantee that RCU state is always in sync with context tracking state? If so, we could maybe simplify things and have fewer state variables. Doing this for NMIs might be weird. Would it make sense to have a CONTEXT_NMI that's somehow valid even if the NMI happened while changing context tracking state. Thoughts? As it stands, I think we might already be broken for real: Syscall -> user_exit. Perf NMI hits *during* user_exit. Perf does copy_from_user_nmi, which can fault, causing do_page_fault to get called, which calls exception_enter(), which can't be a good thing. RCU is okay (sort of) because of rcu_nmi_enter, but this seems very fragile. Thoughts? As it stands, I need to do something because -tip and thus -next spews occasional warnings. --Andy -- Andy Lutomirski AMA Capital Management, LLC -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/