Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1066276imm; Fri, 29 Jun 2018 10:47:00 -0700 (PDT) X-Google-Smtp-Source: AAOMgpdLurAXOPAeV/2RQ2Ci0RJbwAdSrFYbRboPOIwZ8pZcEeVRjxk9ALVMo44+yFiZG2kNXJ8C X-Received: by 2002:a65:5185:: with SMTP id h5-v6mr13741053pgq.0.1530294420376; Fri, 29 Jun 2018 10:47:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530294420; cv=none; d=google.com; s=arc-20160816; b=ej6qxPFBmVkqwMbhu6n+Oeue0l5h5af5oYwHDYfXSVjoFUaapgPwjDWwLabCDzCqjn TSVgouutrDRfI1uNrVjQ6tqjyeHwOqBX3L3mxHu1vNffpXc4LPW14aRCzXKNk/3maIJZ 2FXqSLFWlyqifYRVYagUHJVA4FRta5Lbsgx5WPs0ZGSpPQumikrinGPOPnpO1uTyYskD dU3UhdhszTKfaPQtsh7Ds09zVlbXHMsg3VubfZKer+j//wa3tmLFLk2KpoxTB8cluSP2 igSWis67CFhtZp8pTSKVfg5UxkNmeWF+vio0fzxAx4ZWGDhiHIuo2/33SRJr2CZWPIU7 Iqxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:openpgp:from:references:cc:to:subject :dkim-signature:arc-authentication-results; bh=fVZJlL8nognX3vCjCXgpy7DKcRZKTCzbPp8bWfHrpWE=; b=KmEBP4DRjF/4ADbtzJAT7xhIM12HAh38IUvnsVOfW1xhxea91kxsAZ5Z/RmpD9jTMd v6nD7QvrNeAVL7DPfmmKZnhlh7nBuUZmexudTS4czsOGpaSf+rrdtA7u9Wl1WWy1UiQ6 cHSiEgOTuGwj4ySapb6iOFkT463o6hDTDohsgEUw9g/u9S+0L6bq/FhUecyg/AsEvb+c hMFejoXAv17udIPXqsapubTgy9sbWxiYg8RVtOqEld7TzAM8RHvWXfxRSWoGEaUF5D+x lYJZEZmXa7SBldX9Li0+rnmkXBtr+noh95k5gecHD1S0bn8SNLtDW9HMgT0vmIFXZbNc Wm6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synopsys.com header.s=mail header.b=ZKsHzCot; 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=synopsys.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y40-v6si9611146pla.470.2018.06.29.10.46.46; Fri, 29 Jun 2018 10:47:00 -0700 (PDT) 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=@synopsys.com header.s=mail header.b=ZKsHzCot; 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=synopsys.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933157AbeF2Rp1 (ORCPT + 99 others); Fri, 29 Jun 2018 13:45:27 -0400 Received: from smtprelay4.synopsys.com ([198.182.47.9]:52501 "EHLO smtprelay.synopsys.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750965AbeF2RpZ (ORCPT ); Fri, 29 Jun 2018 13:45:25 -0400 Received: from mailhost.synopsys.com (mailhost2.synopsys.com [10.13.184.66]) by smtprelay.synopsys.com (Postfix) with ESMTP id 8421524E0ACB; Fri, 29 Jun 2018 10:45:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1530294324; bh=PspeCdG/jkofNuwPyuOxFa10P6W/W017Yd9unGIKeIA=; h=Subject:To:CC:References:From:Date:In-Reply-To:From; b=ZKsHzCote1RAXtlFeJyRpzwbrfnvYL3zGiDchFLg2LBxKEnchJ5abj/iVB9geSegx nNUJGsJuQ9kP67N8Ah4OAMWArwm356lHJiDSlj3EaCHCfCLygD0G7JsuTjUtVkWR5x stW0e2/NIMkTLnghVJ2JVbe+0syvbqPqwJ6e/E089BT/kdJL3/Xj5DGDyq8wNwY/zi 4v5n0G1l6M4r2JuJVOb4VbYbxX3lxF6XGL2x/rDmiyRBwWTYmW1RMy/nQDhA95uH46 hHnFJmnHArG93m6YKAz97rAnDiGLBbl9mm1zHIGUHkZJHO/KCCvUDdTh3onuyVcjgv Yvp/umYquFTag== Received: from US01WXQAHTC1.internal.synopsys.com (us01wxqahtc1.internal.synopsys.com [10.12.238.230]) by mailhost.synopsys.com (Postfix) with ESMTP id 271CA32A3; Fri, 29 Jun 2018 10:45:24 -0700 (PDT) Received: from IN01WEHTCB.internal.synopsys.com (10.144.199.106) by US01WXQAHTC1.internal.synopsys.com (10.12.238.230) with Microsoft SMTP Server (TLS) id 14.3.361.1; Fri, 29 Jun 2018 10:45:23 -0700 Received: from IN01WEHTCA.internal.synopsys.com (10.144.199.103) by IN01WEHTCB.internal.synopsys.com (10.144.199.105) with Microsoft SMTP Server (TLS) id 14.3.361.1; Fri, 29 Jun 2018 23:15:21 +0530 Received: from [10.10.161.98] (10.10.161.98) by IN01WEHTCA.internal.synopsys.com (10.144.199.243) with Microsoft SMTP Server (TLS) id 14.3.361.1; Fri, 29 Jun 2018 23:15:20 +0530 Subject: Re: [RFC v2] ARC: allow to use IOC and non-IOC DMA devices simultaneously To: Eugeniy Paltsev , "linux-snps-arc@lists.infradead.org" CC: "linux-kernel@vger.kernel.org" , "linux-arch@vger.kernel.org" , Alexey Brodkin , "hch@lst.de" References: <20180628141452.3585-1-Eugeniy.Paltsev@synopsys.com> From: Vineet Gupta Openpgp: preference=signencrypt Autocrypt: addr=vgupta@synopsys.com; keydata= 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 i91ThhqBJlyU6MVUa6vZNv8E Message-ID: <4010dc7c-7046-eddd-11cc-30099c29d640@synopsys.com> Date: Fri, 29 Jun 2018 10:45:13 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180628141452.3585-1-Eugeniy.Paltsev@synopsys.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Language: en-US X-Originating-IP: [10.10.161.98] Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/28/2018 07:14 AM, Eugeniy Paltsev wrote: > The ARC HS processor provides an IOC port (I/O coherency bus > interface) that allows external devices such as DMA devices > to access memory through the cache hierarchy, providing > coherency between I/O transactions and the complete memory > hierarchy. You mention IOC port in first line, but the change has nothing to do with it - this is confusing. Make this less verbose and just expand on the subject you have - global vs. per device dma settings, without going into all the internal details. And again going back to my original point, you are changing the semantics (ioc and non ioc to co-exist) but everything still goes thru IOC port. That is different that what we had before - everything goes through IOC port and ioc dma ops ONLY if IOC existed. I understand the need to isolate the 2 things and that is fine. But then what you should do is 1a. introduce the per ioc dma settings in ARC - and not touch the DTBs. 1b. introduce the IO port settings in platform code 2. Now switch the DT binding to use the per device ioc And any panic etc for IOC + highmem etc should be a separate patch - so we can easily revert it when time is right ! > > Some recent SoC with ARC HS (like HSDK) allow to select bus > port (IOC or non-IOC port) for connecting DMA devices in runtime. > > With this patch we can use both HW-coherent and regular DMA > peripherals simultaneously. > > For example we can connect USB and SDIO controllers through IOC port > (so we don't need to need to maintain cache coherency for these > devices manualy. All cache sync ops will be nop) > And we can connect Ethernet directly to RAM port (so we had to > maintain cache coherency manualy. Cache sync ops will be real > flush/invalidate operations) I presume this has been tested with some stress testing bonie++ etc. > +void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, > + const struct iommu_ops *iommu, bool coherent) > +{ > + /* > + * IOC hardware snoops all DMA traffic keeping the caches consistent > + * with memory - eliding need for any explicit cache maintenance of > + * DMA buffers - so we can use dma_direct cache ops. > + */ > + if (is_isa_arcv2() && ioc_enable && coherent) { > + set_dma_ops(dev, &dma_direct_ops); > + dev_info(dev, "use dma_direct_ops cache ops\n"); > + } else { > + set_dma_ops(dev, &dma_noncoherent_ops); > + dev_info(dev, "use dma_noncoherent_ops cache ops\n"); > + } > +} And further to Christoph's comment, if we decide to skip the branch, please add a comment that it is already set in generic code etc.