Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp1029587rda; Sun, 22 Oct 2023 23:09:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGlYcmx1pL3agdi5sVy/tFhGDixXqWi2mKBVw+19CvO9n7C8Z0/s4CB2VDkLSi8Ws77WhUX X-Received: by 2002:a17:903:22c2:b0:1ca:2c3b:7744 with SMTP id y2-20020a17090322c200b001ca2c3b7744mr9335372plg.17.1698041342720; Sun, 22 Oct 2023 23:09:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698041342; cv=none; d=google.com; s=arc-20160816; b=Xbb9rKEfdl8/FWimKKR8bphWXF804XArw0m3OBi+F/DPDaEJZeyKaDvMWrmcpesqHJ hr27rQ5ZifRc0RvU30ecK9v4sbNl8YiUChUg/yiTewjNslt3DQZyrrF70LBn/FeT3GiO sE2OLxNnzkAy0kGpYxD14D7jr6j1OpliOpa0E7FpaACP3zJbX38X3NxBB1lST31Tc3Gb cQY30cJta9UXHYy+XuTvwbFwPB+VJxETenEbeTL1/U4o5QbBYx1BgdG85FKxJAl9YULh 49MpHgjKTe4XqTq+AjotQRFiaVKlgZ8zTJyacZfOjwlU4YCUDC+p9TLo2h9SorkqGZVv ZvhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=zmoUIHebLlO6dl3w2buukz5s6+xfL3PuIlOSnj1kNOE=; fh=hFTZ2nRIIEgqZtyri7xBzhhs0QxX1iOAyFjgvujArKo=; b=lXmN7bmpW1oFUTMFrRvTFbdMSXtoLPVOjMvevASWGTCBALyrCzKNPRTzyuO4+wdKAD yvC+sgawZq84qR4qDKqyzptO6Yewbr1oQInfQKDyNDCv5mmUby5Cil2eODZfcb/X9LvA gJa3MAWyA3Wzp/slYj3B8SiXIUQU+7VakVoD616RnPeEYIqgOZzMfnK12zv8NPhmrIAy Sb8lVpSXccmDd4EOsyjLMGJiM5jbkE1wV30rBQreTWF/XcQrssX3KsD7wEYU/njkT0ew asYHtofxxR7B9awsKXgcfA7D6rRX/Kq/S2tl8L/5vsvhzkbEbK7dkEWnHyUY8nnxecga /lVw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from pete.vger.email (pete.vger.email. [2620:137:e000::3:6]) by mx.google.com with ESMTPS id p7-20020a170902e74700b001c62cfff798si6354233plf.372.2023.10.22.23.09.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Oct 2023 23:09:02 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) client-ip=2620:137:e000::3:6; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:6 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by pete.vger.email (Postfix) with ESMTP id 2A0538065E3B; Sun, 22 Oct 2023 23:09:00 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at pete.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229607AbjJWGIv (ORCPT + 99 others); Mon, 23 Oct 2023 02:08:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229450AbjJWGIu (ORCPT ); Mon, 23 Oct 2023 02:08:50 -0400 Received: from verein.lst.de (verein.lst.de [213.95.11.211]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BAE1D65 for ; Sun, 22 Oct 2023 23:08:49 -0700 (PDT) Received: by verein.lst.de (Postfix, from userid 2407) id CC75468AA6; Mon, 23 Oct 2023 08:08:45 +0200 (CEST) Date: Mon, 23 Oct 2023 08:08:45 +0200 From: Christoph Hellwig To: Jia He Cc: Christoph Hellwig , Marek Szyprowski , Robin Murphy , iommu@lists.linux.dev, linux-kernel@vger.kernel.org, nd@arm.com Subject: Re: [PATCH v3 2/2] dma-mapping: fix dma_addressing_limited() if dma_range_map can't cover all system RAM Message-ID: <20231023060845.GA11907@lst.de> References: <20231016125254.1875-1-justin.he@arm.com> <20231016125254.1875-3-justin.he@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231016125254.1875-3-justin.he@arm.com> User-Agent: Mutt/1.5.17 (2007-11-01) X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on pete.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (pete.vger.email [0.0.0.0]); Sun, 22 Oct 2023 23:09:00 -0700 (PDT) > + */ > +static int check_ram_in_range_map(unsigned long start_pfn, > + unsigned long nr_pages, void *data) > +{ > + unsigned long end_pfn = start_pfn + nr_pages; > + struct device *dev = (struct device *)data; No need for the cast here. > + struct bus_dma_region *bdr = NULL; > + const struct bus_dma_region *m; > + > + while (start_pfn < end_pfn) { > + for (m = dev->dma_range_map; PFN_DOWN(m->size); m++) { > + unsigned long cpu_start_pfn = PFN_DOWN(m->cpu_start); > + > + if (start_pfn >= cpu_start_pfn > + && start_pfn - cpu_start_pfn < PFN_DOWN(m->size)) { Linux coding style keeps the && on the previous line. > + bdr = (struct bus_dma_region *)m; If you also declared bdr as const this should be able to do away with the cast. > bool dma_addressing_limited(struct device *dev) > { > - return min_not_zero(dma_get_mask(dev), dev->bus_dma_limit) < > - dma_get_required_mask(dev); > + if (min_not_zero(dma_get_mask(dev), dev->bus_dma_limit) < > + dma_get_required_mask(dev)) > + return true; > + > + return !all_ram_in_dma_range_map(dev); So, all the dma range map thing is really a dma-direct concept. So I think here in dma_addressing_limited we should just do a: if (likely(!ops)) return !dma_direct_all_ram_mapped(dev)); return false with dma_direct_all_ram_mapped move to dma-direct.c.