Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp193652imu; Wed, 12 Dec 2018 14:53:13 -0800 (PST) X-Google-Smtp-Source: AFSGD/XtiPqnbpp51ou/AMfz/XTiI7vGORLUeH1VJE5ll8NOCuvcTzDOmB3bVsG15SyjotHsPXdW X-Received: by 2002:aa7:810c:: with SMTP id b12mr21720035pfi.44.1544655193707; Wed, 12 Dec 2018 14:53:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544655193; cv=none; d=google.com; s=arc-20160816; b=e6dbYy+GTVSBcSV5rq6R/WVppRV6UiTtR1JEKRH9nTsXfw+PkSk0Gsr7BDUHv/fVBZ hGr1kPHJ1MOKKwT2dF8jnaQi2Ro7MY9DDejUWyQSheffcreHX8qDxMC8E1UmvqdIxFWY UYngCELPAfRR1nTNLNa8qtIGwsp+VO8F6a+bZJZ7I8A6a+ToxA+w5mUgQZiWwolqZ92y AOULEMu5arCKvecI+IIzxKodVpaVmObnrdQ7F7mhKTdfLburrWI58MMZmGm1UBNeV9tc Ex61DsFWFIYyKSwYF4u5DRZ34DjxdRQywsgWwV0I34XsIAgagpgeWrXRMrr8Fyc7NNPV NVwQ== 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:dkim-signature; bh=jkpKVPFLhwMvmekgNqIZpmCfxrAXRw0W/am8Ogw1fnc=; b=OSBXUeCny/bKuqTupznoNUyygXPTUf0wT8t0JJnEtdeNJs368x8AV6RigAwGAukjjz +FrL3ixJUiDqPdRy3x0Ec9MjVFQYl+K+XHIJ5nsFD017aQRGbu5pXOXigRVmUxRlT5Gi Prvqu1wCj15jAlIIDjn7KYbzotn7vpP9wqoMB1bPUPj0fl2mDmRR7+2QG/waH/DgwBI4 Qaxlx+xzGotWoIUdx5EzgFyL+mCV0LthTlx0yrYSH+or6DlTV4Rv3U+PDNIr9BADfZSh ipSRfXtm7eGdrtxR5/N4SZpywRA52yEzWealcLs8QqNsW6lZmpcwxi/G2UEvvdKfUkIX FLSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=zFgb4W4F; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 27si62509pgp.135.2018.12.12.14.52.58; Wed, 12 Dec 2018 14:53:13 -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; dkim=pass header.i=@kernel.org header.s=default header.b=zFgb4W4F; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726994AbeLLWwE (ORCPT + 99 others); Wed, 12 Dec 2018 17:52:04 -0500 Received: from mail.kernel.org ([198.145.29.99]:59986 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726214AbeLLWwE (ORCPT ); Wed, 12 Dec 2018 17:52:04 -0500 Received: from localhost (unknown [69.71.4.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C5E2D20851; Wed, 12 Dec 2018 22:52:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544655123; bh=trZ22U3D7b7sWDZJG9KhRvMX2v9Gex2HXhF0Y9cZKp0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=zFgb4W4Fjl3AnPdHDoNscIFwPxWC47rjGtxuUeIhPo84ez7gN8SNjJniMhpIuiwbi sJtLKYipjHzDCz+P9tbXOjRGGnexVlbOHmsIOc2f2F7U/joUwEzSPjsDkOCiUAzbvv LjssoqQqF8zTbLbI5LHREmbdEpPxrzBVIWjRNCNw= Date: Wed, 12 Dec 2018 16:52:01 -0600 From: Bjorn Helgaas To: Wesley Sheng Cc: kurt.schwemmer@microsemi.com, logang@deltatee.com, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, wesleyshenggit@sina.com Subject: Re: [PATCH 5/5] switchtec: MRPC DMA mode implementation Message-ID: <20181212225201.GL99796@google.com> References: <1544433144-7563-1-git-send-email-wesley.sheng@microchip.com> <1544433144-7563-6-git-send-email-wesley.sheng@microchip.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1544433144-7563-6-git-send-email-wesley.sheng@microchip.com> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Dec 10, 2018 at 05:12:24PM +0800, Wesley Sheng wrote: > MRPC normal mode requires the host to read the MRPC command status and > output data from BAR. This results in high latency responses from the > Memory Read TLP and potential Completion Timeout (CTO). > > MRPC DMA mode implementation includes: > Macro definitions for registers and data structures corresponding to > MRPC DMA mode. > > Add module parameter use_dma_mrpc to select between MRPC DMA mode and > MRPC normal mode. > > Add MRPC mode functionality to: > * Retrieve MRPC DMA mode version > * Allocate DMA buffer, ISR registration, and enable DMA function during > initialization > * Check MRPC execution status and collect execution results from DMA buffer > * Release DMA buffer and disable DMA function when unloading module > > MRPC DMA mode is a new feature of firmware and the driver will fall back > to MRPC normal mode if there is no support in the legacy firmware. > > Include so that readq/writeq is replaced > by two readl/writel on systems that do not support it. > > Signed-off-by: Wesley Sheng > Reviewed-by: Logan Gunthorpe > --- > drivers/pci/switch/switchtec.c | 108 +++++++++++++++++++++++++++++++++++++---- > include/linux/switchtec.h | 16 ++++++ > 2 files changed, 114 insertions(+), 10 deletions(-) > > diff --git a/drivers/pci/switch/switchtec.c b/drivers/pci/switch/switchtec.c > index 0b8862b..6b726cb 100644 > --- a/drivers/pci/switch/switchtec.c > +++ b/drivers/pci/switch/switchtec.c > @@ -13,7 +13,7 @@ > #include > #include > #include > - > +#include > #include > > MODULE_DESCRIPTION("Microsemi Switchtec(tm) PCIe Management Driver"); > @@ -25,6 +25,11 @@ static int max_devices = 16; > module_param(max_devices, int, 0644); > MODULE_PARM_DESC(max_devices, "max number of switchtec device instances"); > > +static bool use_dma_mrpc = 1; > +module_param(use_dma_mrpc, bool, 0644); > +MODULE_PARM_DESC(use_dma_mrpc, > + "Enable the use of the DMA MRPC feature"); What's the purpose of the module parameter? Can't you automatically figure out whether the firmware supports DMA mode? Module parameters make life difficult for users and lead to code that's rarely used and poorly tested, so I think we should avoid them whenever we can. If you *can't* automatically figure out when to use DMA, please make it clear in the changelog that the "use_dma_mrpc" parameter is required with legacy firmware. And in that case, it seems like it should be named "disable_dma" or similar, since it defaults to being enabled. Bjorn