Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp1077982ybj; Thu, 7 May 2020 14:22:43 -0700 (PDT) X-Google-Smtp-Source: APiQypJ8/Ugm7FbfSw+K3sNBcKBU5Zj/BR3kQa9HEa4YVvBvlUxNogL65G0DrIKmq+rYIs5BgVwD X-Received: by 2002:a17:906:cf8a:: with SMTP id um10mr13746862ejb.60.1588886563478; Thu, 07 May 2020 14:22:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588886563; cv=none; d=google.com; s=arc-20160816; b=tNlOkzXRRphR0iRBmThLYww/zujxqVqESrn9bGs6lnU4kSRetAMk9u685FvLnfNmfy 2lXQuJ30/3we3DXy8eJMvjUPFLXRte0BuFgfgv9wOPTUsAZb/v2abDa9/x72eMPV+c3O V3+9RihxBt6qao0yGohvIp+tvQTyE8anXbW5+N7xvjux5sZPLHYCzFPuHq24webS4+Wj DnasJw5tZ4NLWcrwzDol2bZfru33l99gMaW9wWdQuxjGGMuDXl/IbIHWh/qoVfUYlK8B 2qS2j2xd4hQiHW/CUmgYJrLw4Hosk76xJdVm0PikewxfgRceDuVSepUOvonLP8dN6grT IUYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=PHG6yTghcibf497dWa0jTcy5wb1cOxvUkXcsCAAAnu0=; b=x9gBx2qFd4R6gsgcyerhI1hi04j6BOUbCSALoqhiCTfS38XylMoZnVYTqIOr6fJ/g1 RE+Dvlfji4fXOJiz9BL/jby83ATaXWryxJbWqDH2JosVoePzY84NNUVMQov9RCO93Eay RUGwkraIgztgsQ6uxUWBKELREIaT5VOOxCSnSakJ0bzqoTKku7OkIEe0Zad2Of6e5m0G BO2+CdIqKvGhTvHf8xB0bxINONS+Q2OjsngB9xGnohco9e+xfi4EeEL4Ggvoz8lEvjkF mqhKRKRWMohmPENh/9TdXJzBdpvQeBM7mafO8acwMH7C3hwKSjbIcSbLG1eKNsbl8ohI Fdtw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b=hhdJwocm; 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=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l25si3759910edw.288.2020.05.07.14.22.20; Thu, 07 May 2020 14:22:43 -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; dkim=pass header.i=@intel-com.20150623.gappssmtp.com header.s=20150623 header.b=hhdJwocm; 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726926AbgEGVUn (ORCPT + 99 others); Thu, 7 May 2020 17:20:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726437AbgEGVUn (ORCPT ); Thu, 7 May 2020 17:20:43 -0400 Received: from mail-ed1-x543.google.com (mail-ed1-x543.google.com [IPv6:2a00:1450:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DB3E3C05BD43 for ; Thu, 7 May 2020 14:20:42 -0700 (PDT) Received: by mail-ed1-x543.google.com with SMTP id p16so6675241edm.10 for ; Thu, 07 May 2020 14:20:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=PHG6yTghcibf497dWa0jTcy5wb1cOxvUkXcsCAAAnu0=; b=hhdJwocmiOmhRbStlbTJF+p2HOJLzKjtHBW7/pWc2QtLmrhNBExIXrUO2uQY5aJFic NPqwRqO/FhcKBHF/m/7sj8CrG7BnmqViC07cpNI3aHZjYqvifvmstOVxRyhtVNXzcaw/ odCvKvCvH1ts+K/benGuSU6XoYNbAe9XYRePBEsMfRJi35r79vMwY/Cf/d9exGoIO/cM i0K74AdGR8TY4T7Qk9WwZjhxA1Y5OmygaBA8PACbgoOiEb3IK8NwuA9XAFhB6Kl4J0w5 r81WRBbrVsb5OZs5KYgcZZylE6FCNIL9AkQr2yo6e9K3nuwFOmCkxlf5SdIXs7sUpoAI LMRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PHG6yTghcibf497dWa0jTcy5wb1cOxvUkXcsCAAAnu0=; b=jXP+1URpSI70vPixC0HPa4KHw6DYSUscZe+EDqV5oJ5IelzEBnQcsDUWHsZEES1ikh esJvEbevgQMkpn86Dm9Q2XIQyf/w7yCZZcSyTS7SG5O1zv2PfxTu0leTHnbpVvWd8CoL mJ7Zu35Rmh0iOgdkWFsuc8/q0YXhyP2n6ERb0NFP2cAQ3l07R7d7AP/NIiKr0xG57pHr N+IKU2t5L2J5pTMa2YtwovE1MMUEFUg9lDA4bYII92aKPZXp9Vl2154zONKEUqnhm6aA Va3yHQH46al/TGEGqi2UTLqqklewrgKoAk43W/DqWGaAJ52XzJ5Sc8Bn6VoseSXM34Kk lffw== X-Gm-Message-State: AGi0PuaKt7maTREeNo7ycODobzPjY4CnEbSlNeG4MQbWRSuA7ZNommWN 4FWpcHH3GZfbfBx4IA2vf7YX1zLx6b9XM4Sqq0XxiQ== X-Received: by 2002:aa7:c643:: with SMTP id z3mr13702521edr.154.1588886441435; Thu, 07 May 2020 14:20:41 -0700 (PDT) MIME-Version: 1.0 References: <158880834905.2183490.15616329469420234017.stgit@dwillia2-desk3.amr.corp.intel.com> In-Reply-To: From: Dan Williams Date: Thu, 7 May 2020 14:20:30 -0700 Message-ID: Subject: Re: [PATCH] ACPI: Drop rcu usage for MMIO mappings To: "Rafael J. Wysocki" Cc: stable , Len Brown , Borislav Petkov , Ira Weiny , James Morse , Erik Kaneda , Myron Stowe , "Rafael J. Wysocki" , Andy Shevchenko , Linux Kernel Mailing List , linux-nvdimm Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, May 7, 2020 at 9:43 AM Rafael J. Wysocki wrote: > > On 5/7/2020 1:39 AM, Dan Williams wrote: > > Recently a performance problem was reported for a process invoking a > > non-trival ASL program. The method call in this case ends up > > repetitively triggering a call path like: > > > > acpi_ex_store > > acpi_ex_store_object_to_node > > acpi_ex_write_data_to_field > > acpi_ex_insert_into_field > > acpi_ex_write_with_update_rule > > acpi_ex_field_datum_io > > acpi_ex_access_region > > acpi_ev_address_space_dispatch > > acpi_ex_system_memory_space_handler > > acpi_os_map_cleanup.part.14 > > _synchronize_rcu_expedited.constprop.89 > > schedule > > > > The end result of frequent synchronize_rcu_expedited() invocation is > > tiny sub-millisecond spurts of execution where the scheduler freely > > migrates this apparently sleepy task. The overhead of frequent scheduler > > invocation multiplies the execution time by a factor of 2-3X. > > > > For example, performance improves from 16 minutes to 7 minutes for a > > firmware update procedure across 24 devices. > > > > Perhaps the rcu usage was intended to allow for not taking a sleeping > > lock in the acpi_os_{read,write}_memory() path which ostensibly could be > > called from an APEI NMI error interrupt? Neither rcu_read_lock() nor > > ioremap() are interrupt safe, so add a WARN_ONCE() to validate that rcu > > was not serving as a mechanism to avoid direct calls to ioremap(). Even > > the original implementation had a spin_lock_irqsave(), but that is not > > NMI safe. > > > > APEI itself already has some concept of avoiding ioremap() from > > interrupt context (see erst_exec_move_data()), if the new warning > > triggers it means that APEI either needs more instrumentation like that > > to pre-emptively fail, or more infrastructure to arrange for pre-mapping > > the resources it needs in NMI context. > > > > Cc: > > Fixes: 620242ae8c3d ("ACPI: Maintain a list of ACPI memory mapped I/O remappings") > > Cc: Len Brown > > Cc: Borislav Petkov > > Cc: Ira Weiny > > Cc: James Morse > > Cc: Erik Kaneda > > Cc: Myron Stowe > > Cc: "Rafael J. Wysocki" > > Cc: Andy Shevchenko > > Signed-off-by: Dan Williams > > linux-acpi is kind of relevant for this too, so please CC it. Whoops, my bad. Will resend with some of Andy's cleanup suggestions.