From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 70715C4332F for ; Fri, 23 Dec 2022 14:47:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CF886900003; Fri, 23 Dec 2022 09:47:41 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id C8233900002; Fri, 23 Dec 2022 09:47:41 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AFB06900003; Fri, 23 Dec 2022 09:47:41 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9BA07900002 for ; Fri, 23 Dec 2022 09:47:41 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 7747D1C5CE0 for ; Fri, 23 Dec 2022 14:47:41 +0000 (UTC) X-FDA: 80273849922.28.B00B56F Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by imf04.hostedemail.com (Postfix) with ESMTP id BD5014000E for ; Fri, 23 Dec 2022 14:47:38 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=h4v0UjN3; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf04.hostedemail.com: domain of manivannan.sadhasivam@linaro.org designates 209.85.216.51 as permitted sender) smtp.mailfrom=manivannan.sadhasivam@linaro.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1671806858; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jJM00YEPG1ZrW968XxjVUE7AX3Hq8AZNHgIKgxgW064=; b=fMrtZaYl6gy27EW9ZqViSaOcQK5m8e0VmWvjlMOLINwbUwjDe7MvPRY+jezATCDKEGdvjE /NVepHjBXCjTsBhhKpAkbYGjsh8Ud5vGmaTUnRudoG0Zom59f3bTABq0ab25JGKjegZfjo TIWqasE2l7iaoH16e2y8mK+sX35zq3w= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=linaro.org header.s=google header.b=h4v0UjN3; dmarc=pass (policy=none) header.from=linaro.org; spf=pass (imf04.hostedemail.com: domain of manivannan.sadhasivam@linaro.org designates 209.85.216.51 as permitted sender) smtp.mailfrom=manivannan.sadhasivam@linaro.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1671806858; a=rsa-sha256; cv=none; b=ip4QG7zFCB1IRNIbUqJwKsv8Bp7+3ABqzkrsArtBgraB+rJNhvxn7G/Nddl/d0csZ+jCSN Z9WZ1gkv/+FaZ26RudTlAxs+5vDZcRBlJB/QOqXlaNVrJvXDVjIPFLtpiA9fb/aPAp93Df qbWu5d8ar8ruDK/NDfGqO+5tn7zJ99M= Received: by mail-pj1-f51.google.com with SMTP id o8-20020a17090a9f8800b00223de0364beso9001515pjp.4 for ; Fri, 23 Dec 2022 06:47:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=jJM00YEPG1ZrW968XxjVUE7AX3Hq8AZNHgIKgxgW064=; b=h4v0UjN3sDVaAbgLQVJBvt5BqhmpXNaE+YVi+J42CA3NSUa2CtnA5QypC3zdPhinWm Ew8BcSkDxc/vy/jb1vo5JMq0knvKYDKa7BBzazcI+0ZXj6KnPS4OszH1/FRcr51Fu+7W tbYfsXqQa2Z3SM9RSp4jJNL0CSI9or4j62aFgPHU/9eLexfCMG2zv8oQdJ/Jh+PPAW28 vCO7zhi+ln1BwyC+TMXC2uoMJpEw4djJb1QCFuJvNGkRsySpRrS8CG5A1FviGX7oKWGv D1yaRi0OeM4tOvoXGUYE41PaP33iq9FsROXRuotay1is4PAWjMKrE0CVKWzxDY0gEEE0 6ggg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jJM00YEPG1ZrW968XxjVUE7AX3Hq8AZNHgIKgxgW064=; b=d0ds2zgqwANwFZxaBuwyeRe+dzLJpeu7XMqK9e8M/tX1rqP2PfUK0BO/4ysiiPEaTY 5Guwz1w+bUs3EagaBg6nOEpHQ9JfKnEbbgKnkMUYapTc1FbaLJwKo8uv2oZBEfyQrLU1 I5xUNGpQHRV3TEJhXdgpDcukf6J/HoR8AeZyBPamHQ2uiL6XyIoYr3A5twpsGPy7NGL3 XKXv0osbNM+2pe2J6LCmMrZjr809HI0TsSddunkNkUdbgMQBp99IGnlffokCwLTB9oi3 evzo1sq7HNZX4mKkQILSeRw4y0EzTjHmA50D1HoWT3MrckTisCS9X42XW2vUSl+t78Ph DqCg== X-Gm-Message-State: AFqh2kr5TMLMMxCQM99U7wN1nZWV/rzP4DWG2HKGaPD8P0tz+gNM1slm l4M9JOQHzttEO1mjiH4bS3rV X-Google-Smtp-Source: AMrXdXsjU622IO+mgehF4+9ivq19hzZRf6NBvr+d6kIyOVIcsFXYAOgNrdKUrLOtJXQxhyzCL0rBuQ== X-Received: by 2002:a17:902:ccd0:b0:189:6ab3:9e57 with SMTP id z16-20020a170902ccd000b001896ab39e57mr10742244ple.22.1671806857501; Fri, 23 Dec 2022 06:47:37 -0800 (PST) Received: from thinkpad ([27.111.75.82]) by smtp.gmail.com with ESMTPSA id t14-20020a1709027fce00b0019141c79b1dsm2436193plb.254.2022.12.23.06.47.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Dec 2022 06:47:36 -0800 (PST) Date: Fri, 23 Dec 2022 20:17:31 +0530 From: Manivannan Sadhasivam To: Christoph Hellwig Cc: Andy Gross , Bjorn Andersson , Konrad Dybcio , Mathieu Poirier , Andrew Morton , Uladzislau Rezki , linux-arm-msm@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, iommu@lists.linux.dev Subject: Re: [PATCH 1/2] Revert "remoteproc: qcom_q6v5_mss: map/unmap metadata region before/after use" Message-ID: <20221223144731.GA4587@thinkpad> References: <20221223092703.61927-1-hch@lst.de> <20221223092703.61927-2-hch@lst.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20221223092703.61927-2-hch@lst.de> X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: BD5014000E X-Stat-Signature: u9jcu61axzxt83co9fyx58pzc9jubs1i X-HE-Tag: 1671806858-360130 X-HE-Meta: U2FsdGVkX19NGNpd5tFPr0Mp9uUR8PhMfkTW2cVonytjuzS51tVD4Nyd2oVitw4uH11OJXmk3CnmjW+iIQ3yC3o5O6B1rVlpcOEsIrVqTgLzR6oZc76p+z0LaBS1CSQQTo7PIkyMyXL7IrIVD1/phmRjwQazwfUwZUdo+X2p+hoNP+Xk0o3haJIWSy2dH+wOzZjc3Y5OcVgrh+a03iYEZwruRPDAeex3Sx6uODXpq1xgtgNJG4hIg5huaXrnyALSPHNR63WOeyaCPmVaZlD30L7nJShC7ktqt38qJy8sBuV82YaVvqRA5VUVKI93Qd2n1uP9VYl7wcQBrSoPLLhLiR/VRFNPZPajNOH1Oo/NVWNUTJ1HSd7MNiR4L0ESE5LCI0h3uV8IceH0Wf7n+MRHEk77hl4x2HYhPZ3lW5k5GHrK1BbqhlImxbTFS0Kfo8JeHEQUXNRHmRyG5ftIKsNzLkD/WDBsRbcQFyR8DrrcyCjz5Zr2Qem9AGgjDhiFIKdBlVuqgEPZ0sqkLsyQTIqJ7B8ZBmW6lHK0ebyazivuQGn4DjhuOR70EYPWQvQ2qlr05Qm0BebSwLHQTOF7K2QyOqvy1ce2BRM2r2WENtjMj6R4WbGQ3GXytmjQ0Sc7eeBJX0FolxLJaG6sVBp2tOIwtn+t8d7DIk9+caupy/GRdz67+JdHvpNcCwfXvStfDJoly6OkDMG4iyDtc1IYLcP+z0XGZgLO0L6Ztj7DhrjrQW+fGmXnLxviSct63rEopUhLXuS4Tg25t4Hu5b02LcdLmImcNGvkkaoifVY+5D436HPOr+KytsdwScNZY+PjR0oQGQF9fmkEBNgLbt88bRcgNxwGEsW2W1/mgtfSWtIjZZz+IDIWV8LIBr1JmOOMz7i1CInuK6pXGR5YamG+K9AnDY3BdCamlCKgObe0OaCEcx9CvcGyaq2ix2vhAC00tG8qwqh6wburehgoqoQLFrv 4Yde+7mu ogdPX7HWmqJl013tjpv72wtAI3AJGcD+ltalgxTw40vlChx4BT/+tUCZzF66DU/aslSvhUzfZ3iG6pTS6aO7PG5QZ4/5KqKNdrKbyL4FYf8fA4L7JugMvknrRSrH8KKj+ZNcSJ4uu9Isey+0= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Fri, Dec 23, 2022 at 10:27:02AM +0100, Christoph Hellwig wrote: > This reverts commit fc156629b23a21181e473e60341e3a78af25a1d4. > > This commit manages to do three API violations at once: > > - dereference the return value of dma_alloc_attrs with the > DMA_ATTR_NO_KERNEL_MAPPING mapping, which is clearly forbidden and > will do the wrong thing on various dma mapping implementations. The > fact that dma-direct uses a struct page as a cookie is an undocumented > implementation detail > - include dma-map-ops.h and use pgprot_dmacoherent despite a clear > comment documenting that this is not acceptable > - use of the VM_DMA_COHERENT for something that is not the dma-mapping > code > - use of VM_FLUSH_RESET_PERMS for vmap, while it is only supported for > vmalloc > > Signed-off-by: Christoph Hellwig Acked-by: Manivannan Sadhasivam Thanks, Mani > --- > drivers/remoteproc/qcom_q6v5_mss.c | 38 +++++------------------------- > 1 file changed, 6 insertions(+), 32 deletions(-) > > diff --git a/drivers/remoteproc/qcom_q6v5_mss.c b/drivers/remoteproc/qcom_q6v5_mss.c > index fddb63cffee078..a8b141db4de63f 100644 > --- a/drivers/remoteproc/qcom_q6v5_mss.c > +++ b/drivers/remoteproc/qcom_q6v5_mss.c > @@ -10,7 +10,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -933,52 +932,27 @@ static void q6v5proc_halt_axi_port(struct q6v5 *qproc, > static int q6v5_mpss_init_image(struct q6v5 *qproc, const struct firmware *fw, > const char *fw_name) > { > - unsigned long dma_attrs = DMA_ATTR_FORCE_CONTIGUOUS | DMA_ATTR_NO_KERNEL_MAPPING; > - unsigned long flags = VM_DMA_COHERENT | VM_FLUSH_RESET_PERMS; > - struct page **pages; > - struct page *page; > + unsigned long dma_attrs = DMA_ATTR_FORCE_CONTIGUOUS; > dma_addr_t phys; > void *metadata; > int mdata_perm; > int xferop_ret; > size_t size; > - void *vaddr; > - int count; > + void *ptr; > int ret; > - int i; > > metadata = qcom_mdt_read_metadata(fw, &size, fw_name, qproc->dev); > if (IS_ERR(metadata)) > return PTR_ERR(metadata); > > - page = dma_alloc_attrs(qproc->dev, size, &phys, GFP_KERNEL, dma_attrs); > - if (!page) { > + ptr = dma_alloc_attrs(qproc->dev, size, &phys, GFP_KERNEL, dma_attrs); > + if (!ptr) { > kfree(metadata); > dev_err(qproc->dev, "failed to allocate mdt buffer\n"); > return -ENOMEM; > } > > - count = PAGE_ALIGN(size) >> PAGE_SHIFT; > - pages = kmalloc_array(count, sizeof(struct page *), GFP_KERNEL); > - if (!pages) { > - ret = -ENOMEM; > - goto free_dma_attrs; > - } > - > - for (i = 0; i < count; i++) > - pages[i] = nth_page(page, i); > - > - vaddr = vmap(pages, count, flags, pgprot_dmacoherent(PAGE_KERNEL)); > - kfree(pages); > - if (!vaddr) { > - dev_err(qproc->dev, "unable to map memory region: %pa+%zx\n", &phys, size); > - ret = -EBUSY; > - goto free_dma_attrs; > - } > - > - memcpy(vaddr, metadata, size); > - > - vunmap(vaddr); > + memcpy(ptr, metadata, size); > > /* Hypervisor mapping to access metadata by modem */ > mdata_perm = BIT(QCOM_SCM_VMID_HLOS); > @@ -1008,7 +982,7 @@ static int q6v5_mpss_init_image(struct q6v5 *qproc, const struct firmware *fw, > "mdt buffer not reclaimed system may become unstable\n"); > > free_dma_attrs: > - dma_free_attrs(qproc->dev, size, page, phys, dma_attrs); > + dma_free_attrs(qproc->dev, size, ptr, phys, dma_attrs); > kfree(metadata); > > return ret < 0 ? ret : 0; > -- > 2.35.1 > -- மணிவண்ணன் சதாசிவம்