From patchwork Fri Jan 28 18:39:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Walker X-Patchwork-Id: 12728934 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 77B79C433EF for ; Fri, 28 Jan 2022 18:40:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245524AbiA1Skd (ORCPT ); Fri, 28 Jan 2022 13:40:33 -0500 Received: from mga12.intel.com ([192.55.52.136]:31193 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235580AbiA1Skd (ORCPT ); Fri, 28 Jan 2022 13:40:33 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643395233; x=1674931233; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=WGphTqgdpn5bECb5wH31J5bZnYGSDtzPbP50IDkJSpU=; b=iHP1u7kGW9bntcgFj2zvEeSTEMwhTlWQA0taar/XRiMFJ2MxZFl4NG0y V1pY/1m5BMjpQZUNWadsYWg5lDU/osyOHh9MyYjSCYjexL/z2T5M/6hyD CLt6Qw7ZX4bhxOVZkU32keCegv/s1xEdaYbqQT4hh8IP6KhLcKpBx7lNG cFLDVPaLJ/EbXFMoRTFMVOIpnLHpIBEREsUAWtgrSRuSujVwQCFhGMylO Nd6A71xNA1Q/AU/dApB8Rna8RFqN+yKM6yskGNc607IY+J7oB2+HgRKg6 3nGW5nPfbgpL42D8mg/xOGfrfVX8EpmWGPbeD4PmCzLVB+/4gRqGwGXcx Q==; X-IronPort-AV: E=McAfee;i="6200,9189,10240"; a="227152768" X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="227152768" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2022 10:40:33 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="618802058" Received: from bwalker-desk.ch.intel.com ([143.182.137.151]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jan 2022 10:40:32 -0800 From: Ben Walker To: vkoul@kernel.org Cc: dmaengine@vger.kernel.org, ludovic.desroches@microchip.com, okaya@kernel.org, dave.jiang@intel.com, Ben Walker Subject: [RFC PATCH 1/4] dmaengine: Document dmaengine_prep_dma_memset Date: Fri, 28 Jan 2022 11:39:45 -0700 Message-Id: <20220128183948.3924558-2-benjamin.walker@intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220128183948.3924558-1-benjamin.walker@intel.com> References: <20220128183948.3924558-1-benjamin.walker@intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org Document this function to make clear the expected behavior of the 'value' parameter. It was intended to match the behavior of POSIX memset as laid out here: https://lore.kernel.org/dmaengine/YejrA5ZWZ3lTRO%2F1@matsya/ Signed-off-by: Ben Walker --- include/linux/dmaengine.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 842d4f7ca752d..3d3e663e17ac7 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -1031,6 +1031,14 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_interleaved_dma( return chan->device->device_prep_interleaved_dma(chan, xt, flags); } +/** + * dmaengine_prep_dma_memset() - Prepare a DMA memset descriptor. + * @chan: The channel to be used for this descriptor + * @dest: Address of buffer to be set + * @value: Treated as a single byte value that fills the destination buffer + * @len: The total size of dest + * @flags: DMA engine flags + */ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memset( struct dma_chan *chan, dma_addr_t dest, int value, size_t len, unsigned long flags) From patchwork Fri Jan 28 18:39:46 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Walker X-Patchwork-Id: 12728935 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E0D9AC433F5 for ; Fri, 28 Jan 2022 18:41:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343557AbiA1SlD (ORCPT ); Fri, 28 Jan 2022 13:41:03 -0500 Received: from mga05.intel.com ([192.55.52.43]:22378 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235580AbiA1SlD (ORCPT ); Fri, 28 Jan 2022 13:41:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643395263; x=1674931263; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pAOQRZyMiTjxfKjDX5AUUy5de+fQawB2WbVaitH/eOA=; b=e3scWVd1hD0njrOmX6llM6gpdBPh6M1yfgGxYSyGLc75rKW+iI9V64BH Xad6uj877MNGCnUiOXzcdID2P8q68uN5gife9FJKFr1Y4jZcyRAeoKJzb HtY4KFEl/xLRAxcYuzUDLJW6fwYoZR1m1TyxS+FJd/bzsWJPyPJC0BgXr nqA5QNDfZyECMMDPVpStTAei8IEymJH3Vm50YeEWiPXoaVS6yj+DLGgsn kJW5TToRjyy5GBds35P830wIld2iHBvcRKSvKEv7Vw2NMz/JG4n9hTCzS rbOSkoL1Ueqql+cjSL8nKYzzgStkNWNtDCId7RPryDOtT8kTJxy/+ScL9 w==; X-IronPort-AV: E=McAfee;i="6200,9189,10240"; a="333528317" X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="333528317" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2022 10:41:01 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="618802115" Received: from bwalker-desk.ch.intel.com ([143.182.137.151]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jan 2022 10:41:00 -0800 From: Ben Walker To: vkoul@kernel.org Cc: dmaengine@vger.kernel.org, ludovic.desroches@microchip.com, okaya@kernel.org, dave.jiang@intel.com, Ben Walker , Tudor Ambarus Subject: [RFC PATCH 2/4] dmaengine: at_hdmac: In atc_prep_dma_memset, treat value as a single byte Date: Fri, 28 Jan 2022 11:39:46 -0700 Message-Id: <20220128183948.3924558-3-benjamin.walker@intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220128183948.3924558-1-benjamin.walker@intel.com> References: <20220128183948.3924558-1-benjamin.walker@intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org The value passed in to .prep_dma_memset is to be treated as a single byte repeating pattern. Signed-off-by: Ben Walker Cc: Ludovic Desroches Cc: Tudor Ambarus --- drivers/dma/at_hdmac.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/dma/at_hdmac.c b/drivers/dma/at_hdmac.c index 30ae36124b1db..6defca514a614 100644 --- a/drivers/dma/at_hdmac.c +++ b/drivers/dma/at_hdmac.c @@ -942,6 +942,7 @@ atc_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value, struct at_desc *desc; void __iomem *vaddr; dma_addr_t paddr; + unsigned char fill_pattern; dev_vdbg(chan2dev(chan), "%s: d%pad v0x%x l0x%zx f0x%lx\n", __func__, &dest, value, len, flags); @@ -963,7 +964,14 @@ atc_prep_dma_memset(struct dma_chan *chan, dma_addr_t dest, int value, __func__); return NULL; } - *(u32*)vaddr = value; + + /* Only the first byte of value is to be used according to dmaengine */ + fill_pattern = (unsigned char)value; + + *(u32*)vaddr = (fill_pattern << 24) | + (fill_pattern << 16) | + (fill_pattern << 8) | + fill_pattern; desc = atc_create_memset_desc(chan, paddr, dest, len); if (!desc) { From patchwork Fri Jan 28 18:39:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Walker X-Patchwork-Id: 12728936 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3771C433F5 for ; Fri, 28 Jan 2022 18:41:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235580AbiA1SlJ (ORCPT ); Fri, 28 Jan 2022 13:41:09 -0500 Received: from mga02.intel.com ([134.134.136.20]:53454 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343585AbiA1SlJ (ORCPT ); Fri, 28 Jan 2022 13:41:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643395269; x=1674931269; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tFz5exw/Q8BYBVPJtqsAJmTppihvI1zL1DDjfonh8LQ=; b=OdT3/+sDmjdrizRTAisTJJSirPbcV2ZxnB1c5XLY81HlXEaUM1tBeQn6 sqLliYClcE1BFlT15ltLzjzD3won5gEgnhv5igE4KJRaEKKnNfpf3kbQ/ mBmG/JS/CtJJ/wjVENwsbg5WHO1QerpK0gQZhNk45H47ikqqn7oOzsNwp DigGMAZA7yJ1Zrzt8o6lGcKnlBsdS8lEGBEcqWS/f4ESeSYTyET00hUb5 juC7y/BpO6kv4v/HOALfXLc10FKplGi2STdt86rsSu6t1huRQ1vncPsgf Y9e/0VIr8gPZJ+MAhCg+6UIwXqt6No3WoxnxK749tC0IH66g0pylbXZc9 w==; X-IronPort-AV: E=McAfee;i="6200,9189,10240"; a="234559899" X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="234559899" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2022 10:41:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="618802153" Received: from bwalker-desk.ch.intel.com ([143.182.137.151]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jan 2022 10:41:08 -0800 From: Ben Walker To: vkoul@kernel.org Cc: dmaengine@vger.kernel.org, ludovic.desroches@microchip.com, okaya@kernel.org, dave.jiang@intel.com, Ben Walker , Tudor Ambarus Subject: [RFC PATCH 3/4] dmaengine: at_xdmac: In at_xdmac_prep_dma_memset, treat value as a single byte Date: Fri, 28 Jan 2022 11:39:47 -0700 Message-Id: <20220128183948.3924558-4-benjamin.walker@intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220128183948.3924558-1-benjamin.walker@intel.com> References: <20220128183948.3924558-1-benjamin.walker@intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org The value passed in to .prep_dma_memset is to be treated as a single byte repeating pattern. Signed-off-by: Ben Walker Cc: Ludovic Desroches Cc: Tudor Ambarus --- drivers/dma/at_xdmac.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/dma/at_xdmac.c b/drivers/dma/at_xdmac.c index a1da2b4b6d732..547778fc6445b 100644 --- a/drivers/dma/at_xdmac.c +++ b/drivers/dma/at_xdmac.c @@ -1202,6 +1202,7 @@ static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan, unsigned long flags; size_t ublen; u32 dwidth; + unsigned char pattern; /* * WARNING: The channel configuration is set here since there is no * dmaengine_slave_config call in this case. Moreover we don't know the @@ -1244,10 +1245,16 @@ static struct at_xdmac_desc *at_xdmac_memset_create_desc(struct dma_chan *chan, chan_cc |= AT_XDMAC_CC_DWIDTH(dwidth); + /* Only the first byte of value is to be used according to dmaengine */ + pattern = (unsigned char)value; + ublen = len >> dwidth; desc->lld.mbr_da = dst_addr; - desc->lld.mbr_ds = value; + desc->lld.mbr_ds = (pattern << 24) | + (pattern << 16) | + (pattern << 8) | + pattern; desc->lld.mbr_ubc = AT_XDMAC_MBR_UBC_NDV3 | AT_XDMAC_MBR_UBC_NDEN | AT_XDMAC_MBR_UBC_NSEN From patchwork Fri Jan 28 18:39:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Walker X-Patchwork-Id: 12728937 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA0A2C433EF for ; Fri, 28 Jan 2022 18:41:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343590AbiA1SlS (ORCPT ); Fri, 28 Jan 2022 13:41:18 -0500 Received: from mga06.intel.com ([134.134.136.31]:22587 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343585AbiA1SlS (ORCPT ); Fri, 28 Jan 2022 13:41:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1643395278; x=1674931278; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ye5S5Fhti5NDHBTOu0VS5+fU2jdSdbDIiMwIOSV02UY=; b=Bp2ypCD1V95iuGJDXeL9Z/clRDsvzIgBx8fs2ewEIVKZQadStz4COzIb qbBgyuv5SgfYkWMW0K+ZyrcdJ16hpOAfXiMrkgnWaYa0mvy+YZtKXlABY fwHmxlQ//t1lTkOc5js6mS76l2O0gmKJ5Kz5r/85l7Os4MyZe9pQpEwcZ QgMvKjYfKdMtzKs4qd3e7ppsGs8neW0eZcitC95sm1i3A/cxSLKmaKHYR fcs7MjvTRx8HGjSBnNUQWOj/6V0PbsOeyEBXZj1hsHWO0HlfL53o+l5vR Cj8tHxzbgHctg96tgfeIRG/KtuI8+YpaQE/bW39fbCcrwVcAYQIlexIzC g==; X-IronPort-AV: E=McAfee;i="6200,9189,10240"; a="307905172" X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="307905172" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jan 2022 10:41:17 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.88,324,1635231600"; d="scan'208";a="618802156" Received: from bwalker-desk.ch.intel.com ([143.182.137.151]) by FMSMGA003.fm.intel.com with ESMTP; 28 Jan 2022 10:41:17 -0800 From: Ben Walker To: vkoul@kernel.org Cc: dmaengine@vger.kernel.org, ludovic.desroches@microchip.com, okaya@kernel.org, dave.jiang@intel.com, Ben Walker Subject: [RFC PATCH 4/4] dmaengine: hidma: In hidma_prep_dma_memset treat value as a single byte Date: Fri, 28 Jan 2022 11:39:48 -0700 Message-Id: <20220128183948.3924558-5-benjamin.walker@intel.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220128183948.3924558-1-benjamin.walker@intel.com> References: <20220128183948.3924558-1-benjamin.walker@intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org The value parameter is a single byte, so duplicate it to the 8 byte range that is used as the pattern. Signed-off-by: Ben Walker Cc: Sinan Kaya --- drivers/dma/qcom/hidma.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c index 65d054bb11aaa..d8aa6c0abe126 100644 --- a/drivers/dma/qcom/hidma.c +++ b/drivers/dma/qcom/hidma.c @@ -431,6 +431,7 @@ hidma_prep_dma_memset(struct dma_chan *dmach, dma_addr_t dest, int value, struct hidma_desc *mdesc = NULL; struct hidma_dev *mdma = mchan->dmadev; unsigned long irqflags; + u64 pattern; /* Get free descriptor */ spin_lock_irqsave(&mchan->lock, irqflags); @@ -443,9 +444,19 @@ hidma_prep_dma_memset(struct dma_chan *dmach, dma_addr_t dest, int value, if (!mdesc) return NULL; + pattern = (unsigned char)value; + pattern = (pattern << 56) | + (pattern << 48) | + (pattern << 40) | + (pattern << 32) | + (pattern << 24) | + (pattern << 16) | + (pattern << 8) | + pattern; + mdesc->desc.flags = flags; hidma_ll_set_transfer_params(mdma->lldev, mdesc->tre_ch, - value, dest, len, flags, + pattern, dest, len, flags, HIDMA_TRE_MEMSET); /* Place descriptor in prepared list */