Received: by 2002:a25:ef43:0:0:0:0:0 with SMTP id w3csp733436ybm; Fri, 29 May 2020 10:50:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJznnkVLFr4pvoAYRAMSiomjYHtiNs5etZXcwj34W1U3vVViPyZRTiHbC9BzdtA4WWqntXT+ X-Received: by 2002:a17:906:5590:: with SMTP id y16mr8960083ejp.228.1590774618296; Fri, 29 May 2020 10:50:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1590774618; cv=none; d=google.com; s=arc-20160816; b=bM5IyWjCRwSb/oAKkSSpvDAXXnsYLft10+EviN7CXDZ9pWzXoUqwxc4MjnLo5hGIQK 7EOBpQsRtjTrYAVCkE4K1iMDI5pu44sJfEBeFGkejosEFPauS/NMdliZFE1HYmy/MKt4 mG7JXOSxnIRuwI9TpTUPN0UD/hZMziiO5zTBymeco0Vp5rWwC4xMr9fdat5PBR4eV47H qLxMsciXDg1SsPGiolcxTnwuAURJPWbKbuaPT5qRCzb89SIwxSe5VR/eHRfs+mPCsAdU g4PxMoV+JXeYIP+6kUmqWwfHnPNHPZkMrjOfw1BIsDgHFsAUcnzPInZ8nEr1HvasV1zE Pigg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:from:references:cc:to:subject:dkim-signature; bh=8lnm7qM/haBeRxWiVuShWksV+NykCoRXwpyZMLOuvIU=; b=ZUcRZ9QrQ4W9Gza5gImSrtKQprMyxinBofBnp74NdEQz9sUipOCyN+65+5XG+Ikwxs 1R04pCuVe3oaqnOpEBSWpoUctuHDHql+DKx+vP9HlnqZOpTlAn6COTsVcigX7TvA5NON qOGxcNWuVWB76wDZ6E3tpDL0pKIVI4LR7uUG9ErqlgERV/aHVNJLfKWc2/OzdVzDUwBL KF9IfxFa4cr2/zG/XubyjfIMZGaqWVIgxgy/IPt1TcYN4Yj7VEU7cZIN9FiQVkHv009x nus0Xia/FmP22FRyH8EAG4vTcSuevHBt9aRnRO0cpCAMocBDKVd/Znt8J0TaSgWsCUjf gs5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=FlUT0fiX; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p11si3104315edq.151.2020.05.29.10.49.55; Fri, 29 May 2020 10:50:18 -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=@gmail.com header.s=20161025 header.b=FlUT0fiX; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727770AbgE2RqK (ORCPT + 99 others); Fri, 29 May 2020 13:46:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43040 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725601AbgE2RqF (ORCPT ); Fri, 29 May 2020 13:46:05 -0400 Received: from mail-io1-xd42.google.com (mail-io1-xd42.google.com [IPv6:2607:f8b0:4864:20::d42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25529C03E969; Fri, 29 May 2020 10:46:05 -0700 (PDT) Received: by mail-io1-xd42.google.com with SMTP id k18so274712ion.0; Fri, 29 May 2020 10:46:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:autocrypt:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=8lnm7qM/haBeRxWiVuShWksV+NykCoRXwpyZMLOuvIU=; b=FlUT0fiX3gqog2cWfag5EyHYK79m0KYsf6ODh9rId+4gBdjnWcePAZ1rzqusP+8HcO zAyzEndDcDI6qTpfiu3fITp8rSdzBTkKzVj+UVn4+CjY7kKpE7xwypDoUSfa2pLAlqg3 W1kl4dLxvSabUys8TYKU51TMG9AFlDR9fQ56n1aSNGPmylTL8xu9299eUoC2WpbDxsM/ FPE+lnk8d4DH9/fj5fJd9BZTOg7b0LktZgS9m/4kN1a5HnkqSRhyBEIaRT5/E/Yf1b6x ciICD3+z6bMVdnJCznEXgT8KSaNWTnpZ0NUVjN3r+Sw6HRRQnQbBSlVS9eOwM9MmO3Yf B5Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=8lnm7qM/haBeRxWiVuShWksV+NykCoRXwpyZMLOuvIU=; b=Rmovb+V/URMf884BqEoh6qfGhpuPEyOcledhJznNo5erPmWdrSAdPkf0cJgjTDPcug 5KCsPzdh77w5iF3+qGMBIj6kMCWY61MH9rvIjQp4W9/G4TSkj4ELws67tskUd9ee8zJq pCZw1KdOMJYRUMkNfRWz1f2TdP9XwK3HNRJnJwEjytfQGAkK/g4m6ytbYN7IjFxRBwqV 3m2X1mkXnqEQ4nZse4vk+2s4BUCc8kfHHv5EwsgLF7WS25s1gYNGnJG4zu46CDCfVxM4 tZecTmI0Qftc2kzKQkcRjaCkBtEh0DJAoIPKW4vcMWhDXH4hpj94rRDIBktUNn5WGz1V stVA== X-Gm-Message-State: AOAM533Sfp7zCj28+UkJmQ/c/tHbFl/5PB+1U3AZs68FaP6slTaL59v2 myWBY6P/VFIG5SDLVytrx7Q28IRD X-Received: by 2002:a6b:b489:: with SMTP id d131mr7681626iof.73.1590774364028; Fri, 29 May 2020 10:46:04 -0700 (PDT) Received: from [10.67.49.116] ([192.19.223.252]) by smtp.googlemail.com with ESMTPSA id k18sm4113941ioj.54.2020.05.29.10.46.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 29 May 2020 10:46:03 -0700 (PDT) Subject: Re: [PATCH] spi: bcm2835: Enable shared interrupt support To: Lukas Wunner , Nicolas Saenz Julienne Cc: Mark Brown , Ray Jui , Scott Branden , bcm-kernel-feedback-list@broadcom.com, Martin Sperl , linux-spi@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org References: <20200528185805.28991-1-nsaenzjulienne@suse.de> <20200529174358.som3snunfxch6phi@wunner.de> From: Florian Fainelli Autocrypt: addr=f.fainelli@gmail.com; prefer-encrypt=mutual; keydata= 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 G10n8gCguORqNGMsVRxrlLs7/himep7MrCc= Message-ID: <36dd65bb-18a9-9697-b9b6-76eaf8cbe45c@gmail.com> Date: Fri, 29 May 2020 10:46:01 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 MIME-Version: 1.0 In-Reply-To: <20200529174358.som3snunfxch6phi@wunner.de> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/29/20 10:43 AM, Lukas Wunner wrote: > On Thu, May 28, 2020 at 08:58:04PM +0200, Nicolas Saenz Julienne wrote: >> --- a/drivers/spi/spi-bcm2835.c >> +++ b/drivers/spi/spi-bcm2835.c >> @@ -379,6 +379,10 @@ static irqreturn_t bcm2835_spi_interrupt(int irq, void *dev_id) >> if (bs->tx_len && cs & BCM2835_SPI_CS_DONE) >> bcm2835_wr_fifo_blind(bs, BCM2835_SPI_FIFO_SIZE); >> >> + /* check if we got interrupt enabled */ >> + if (!(bcm2835_rd(bs, BCM2835_SPI_CS) & BCM2835_SPI_CS_INTR)) >> + return IRQ_NONE; >> + >> /* Read as many bytes as possible from FIFO */ >> bcm2835_rd_fifo(bs); >> /* Write as many bytes as possible to FIFO */ > > This definitely looks wrong. The check whether the interrupt is enabled > should be moved *before* the conditional calls to bcm2835_rd_fifo_blind() > and bcm2835_wr_fifo_blind(), i.e. to the top of the function. > > Otherwise if an interrupt is raised by another SPI controller, > this function may perform read/write accesses to the FIFO and > interfere with an ongoing transfer in DMA or poll mode. > > Also, instead of performing an MMIO read, just use the "cs" variable > which was assigned at the top of the function. > > The code comment should explain that the check is necessary because the > interrupt may be shared with other controllers on the BCM2711. > > Finally, it would be nice if the check would be optimized away when > compiling for pre-RasPi4 products, maybe something like: > > + if (IS_ENABLED(CONFIG_ARM_LPAE) && !(cs & BCM2835_SPI_CS_INTR)) > + return IRQ_NONE; Rather than keying this off ARM_LPAE or any other option, this should be keyed off a compatible string, that way we can even conditionally pass IRQF_SHARED to the interrupt handler if we care so much about performance. -- Florian