From nobody Tue Feb 10 20:06:05 2026 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 9AC08C7618B for ; Fri, 17 Mar 2023 11:32:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230011AbjCQLcy (ORCPT ); Fri, 17 Mar 2023 07:32:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229967AbjCQLcu (ORCPT ); Fri, 17 Mar 2023 07:32:50 -0400 Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B3874D626 for ; Fri, 17 Mar 2023 04:32:49 -0700 (PDT) Received: by mail-pj1-x1035.google.com with SMTP id d13so4802095pjh.0 for ; Fri, 17 Mar 2023 04:32:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Bus/9rIf8WxfzN8ER9bYpWlzeg5Ck6oeY/WJO+0UvIw=; b=wjLLMPk3hLo+Z7RximKbN65/Qady7mVgH6NFCzRlaAFKfTTMXOleyIvUVgDUKtNTHW XkBRWU7Yv9qFYCjmMhymhPnGqU1Gnxb5CiMDgbMrJvjlzuGrIPrvsvwR5cxtlJugLZGV co+zUqq+4zivVXMhJQ2eAFvwU4LHD885bXe52uZW8+19bCkFrebHPaAmhHxnPmSw5ORZ bL3ahR5FRhuZLlebHQMI3fMZLylXZL56GdcJq+T1u6lLJNPggZr8uyQK9tYtqblglhnr ZtxRU4ZWLbCj+mVhFVJasDUeXkNzesGWDZYsWOnVXjG2T9Z0Fvu9UVtr0ESVenGwOKqz 5eTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Bus/9rIf8WxfzN8ER9bYpWlzeg5Ck6oeY/WJO+0UvIw=; b=uEqo50pl4vnPempHsjAwKC/nytXlO9QkycSP0IV99fQGAx39BSlajlGtelnpVSPUDC Lqf/qTV9D3kdzHhZxx18tvd5duHxGxxrV4bbVz9CXSxVI/E3MMdxV58d6qa8BxEvqGZh fMpX0Prbx50tDWSbm+PI3+2H1e+nwtyetu8r8bY/3PZIPgeOWEjhkO7e0OdLWegVIn7A 0fARDpWlywPeTQFAL5Lp31cTII5iVopfQoX3M4hXNKAbkGyOXqjA9xGhDIIm5iA/0xve LpjFYyLxx/Slf9p04f8dGl+980E2H5gNdZBAxIbhP/ZUjxufi/g3/N2ckcukoZgjduh1 xmcA== X-Gm-Message-State: AO0yUKUSqV8PoJNIUcRsRZSbsNs9XDIy6Y7hojUZfCvqq01tnEMVLxh1 pBNd43Y67oDttYWIP5sqFBEgvg== X-Google-Smtp-Source: AK7set9ZWKEJMSeTL9s9Yx06FwGSd6i3KWMaGnzaDbwh0J+zPH2o47HFBT8jsfkU9nOpQ6sNvFqkcA== X-Received: by 2002:a17:902:d10c:b0:19c:a9bc:ce57 with SMTP id w12-20020a170902d10c00b0019ca9bcce57mr5454248plw.64.1679052768772; Fri, 17 Mar 2023 04:32:48 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.32.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:32:48 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 01/11] misc: pci_endpoint_test: Aggregate irq_type checking Date: Fri, 17 Mar 2023 20:32:28 +0900 Message-Id: <20230317113238.142970-2-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" There are the same checkings in each test, so merge the redundant checks. Signed-off-by: Shunsuke Mie --- drivers/misc/pci_endpoint_test.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_t= est.c index 1d8f72b42c0a..22e0cc0b75d3 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c @@ -347,6 +347,11 @@ static int pci_endpoint_test_validate_xfer_params(stru= ct device *dev, return -EINVAL; } =20 + if (irq_type < IRQ_TYPE_LEGACY || irq_type > IRQ_TYPE_MSIX) { + dev_dbg(dev, "Invalid IRQ type option\n"); + return -EINVAL; + } + return 0; } =20 @@ -391,11 +396,6 @@ static bool pci_endpoint_test_copy(struct pci_endpoint= _test *test, if (use_dma) flags |=3D FLAG_USE_DMA; =20 - if (irq_type < IRQ_TYPE_LEGACY || irq_type > IRQ_TYPE_MSIX) { - dev_err(dev, "Invalid IRQ type option\n"); - goto err; - } - orig_src_addr =3D kzalloc(size + alignment, GFP_KERNEL); if (!orig_src_addr) { dev_err(dev, "Failed to allocate source buffer\n"); @@ -527,11 +527,6 @@ static bool pci_endpoint_test_write(struct pci_endpoin= t_test *test, if (use_dma) flags |=3D FLAG_USE_DMA; =20 - if (irq_type < IRQ_TYPE_LEGACY || irq_type > IRQ_TYPE_MSIX) { - dev_err(dev, "Invalid IRQ type option\n"); - goto err; - } - orig_addr =3D kzalloc(size + alignment, GFP_KERNEL); if (!orig_addr) { dev_err(dev, "Failed to allocate address\n"); @@ -627,11 +622,6 @@ static bool pci_endpoint_test_read(struct pci_endpoint= _test *test, if (use_dma) flags |=3D FLAG_USE_DMA; =20 - if (irq_type < IRQ_TYPE_LEGACY || irq_type > IRQ_TYPE_MSIX) { - dev_err(dev, "Invalid IRQ type option\n"); - goto err; - } - orig_addr =3D kzalloc(size + alignment, GFP_KERNEL); if (!orig_addr) { dev_err(dev, "Failed to allocate destination address\n"); --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 00EF8C7618B for ; Fri, 17 Mar 2023 11:33:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230076AbjCQLdJ (ORCPT ); Fri, 17 Mar 2023 07:33:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229967AbjCQLc5 (ORCPT ); Fri, 17 Mar 2023 07:32:57 -0400 Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E033D9CFE5 for ; Fri, 17 Mar 2023 04:32:52 -0700 (PDT) Received: by mail-pj1-x102d.google.com with SMTP id y2so4769124pjg.3 for ; Fri, 17 Mar 2023 04:32:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052772; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8V+IWdBYw8MK5GfswCmGJSJSTT+akxzrw5rFlMbMC5w=; b=bTcKJztfGLfF3k9V/x7Kf+eP+33U7Lt8fKhkDY/tDXyqM0TKfAiuG6wZ+1Z9fcCMfV 21ZZchq+pkv5liRAR6nUWh0EmPeYqWykedKEgNBTKT/IaM/hqy1zewPwJQKZU9WTOhzn R3bcw82HmGvgtogR41uCE35FhpJs6vHAzNR0rnaCrDsntjDQidDNhiSwWEUQn3wIWE5G 4EIIxOJuw9LA5j++Y0ZojyoKDTPv/8Nqr/4uF0QTWV1LP49rxGG9nBLBNtzKe9YCFTGu KWV5fBjZbVinApKxbDQSfuCWkjCMaecnx9dm8G4Sw/4kfS+LrLaYKXKs+VrCDoIl8jsW 6FMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052772; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8V+IWdBYw8MK5GfswCmGJSJSTT+akxzrw5rFlMbMC5w=; b=4kJw1YeyPYxIdQgQCp3O31arI8r05UDRa/lhExC7OwNLGVr2CiPZPK2dhDuYW25gxL WiQAli0LfnsVokQgJIC7PV0oH0ab1cb23K8rC8c+UkY9DIWPJ1VqPTgMfldI5XwtZBnj SBrql8Ba70PeIq9xvJ6B/8ruL2cvsgSvdpMja7QGb5nDFg5iiLjJ7Ctzmc5wH4doRLtW rUWMyYKMrd6hA9Cc6pkBHfaTOjomN/ajjTULAVcS21admlkM1eqro6Ady+E8PNvrR4AZ vHZYpHsQ0t95N1bL++UJmo8NSLDFzk9QDAIwG/5AU7srJezjQZtIyvw/sEsqisDFQYKk TKxQ== X-Gm-Message-State: AO0yUKWEVK5KefC7YRlY1tKVZ3qizDfKQAvMOGYlNUpWPqfyBycYDtXk dre7tPe/sLYGDT0IEKWE6xYmUQ== X-Google-Smtp-Source: AK7set/RsZ3jc36gVmZD1kXoGolfdpW64pTkClw1HV091sT81ILy2HuyUrQUXlWMsLw6vkCmt8xlMA== X-Received: by 2002:a17:90a:1d1:b0:23d:3878:781e with SMTP id 17-20020a17090a01d100b0023d3878781emr2634120pjd.21.1679052772372; Fri, 17 Mar 2023 04:32:52 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.32.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:32:52 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 02/11] misc: pci_endpoint_test: Remove an unused variable Date: Fri, 17 Mar 2023 20:32:29 +0900 Message-Id: <20230317113238.142970-3-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The use_dma variables are used only once. Remove those. Signed-off-by: Shunsuke Mie --- drivers/misc/pci_endpoint_test.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_t= est.c index 22e0cc0b75d3..55733dee95ad 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c @@ -363,7 +363,6 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_= test *test, void *src_addr; void *dst_addr; u32 flags =3D 0; - bool use_dma; size_t size; dma_addr_t src_phys_addr; dma_addr_t dst_phys_addr; @@ -392,8 +391,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_= test *test, =20 size =3D param.size; =20 - use_dma =3D !!(param.flags & PCITEST_FLAGS_USE_DMA); - if (use_dma) + if (param.flags & PCITEST_FLAGS_USE_DMA) flags |=3D FLAG_USE_DMA; =20 orig_src_addr =3D kzalloc(size + alignment, GFP_KERNEL); @@ -496,7 +494,6 @@ static bool pci_endpoint_test_write(struct pci_endpoint= _test *test, struct pci_endpoint_test_xfer_param param; bool ret =3D false; u32 flags =3D 0; - bool use_dma; u32 reg; void *addr; dma_addr_t phys_addr; @@ -523,8 +520,7 @@ static bool pci_endpoint_test_write(struct pci_endpoint= _test *test, =20 size =3D param.size; =20 - use_dma =3D !!(param.flags & PCITEST_FLAGS_USE_DMA); - if (use_dma) + if (param.flags & PCITEST_FLAGS_USE_DMA) flags |=3D FLAG_USE_DMA; =20 orig_addr =3D kzalloc(size + alignment, GFP_KERNEL); @@ -592,7 +588,6 @@ static bool pci_endpoint_test_read(struct pci_endpoint_= test *test, struct pci_endpoint_test_xfer_param param; bool ret =3D false; u32 flags =3D 0; - bool use_dma; size_t size; void *addr; dma_addr_t phys_addr; @@ -618,8 +613,7 @@ static bool pci_endpoint_test_read(struct pci_endpoint_= test *test, =20 size =3D param.size; =20 - use_dma =3D !!(param.flags & PCITEST_FLAGS_USE_DMA); - if (use_dma) + if (param.flags & PCITEST_FLAGS_USE_DMA) flags |=3D FLAG_USE_DMA; =20 orig_addr =3D kzalloc(size + alignment, GFP_KERNEL); --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 C0151C7618B for ; Fri, 17 Mar 2023 11:33:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230039AbjCQLdM (ORCPT ); Fri, 17 Mar 2023 07:33:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230040AbjCQLdG (ORCPT ); Fri, 17 Mar 2023 07:33:06 -0400 Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 698D2A6746 for ; Fri, 17 Mar 2023 04:32:56 -0700 (PDT) Received: by mail-pl1-x632.google.com with SMTP id le6so4955260plb.12 for ; Fri, 17 Mar 2023 04:32:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052776; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5sI1q8FeCzoYjS80FmoBFGlXkDMRicrucbVZQV9c508=; b=wtuEZ6mlE8yg3VIJrKgHJ8dxGzj9nc/+1LNPpzE/t7m7nzMWHIbgWeb86J9hRAi91l 72XaVrh9ZwfvmMuoJ8toT+QOBHeTUOVbQY7e59rUy4gqx4UhUHBvwkAel4ljh4iPwMcI lnXvt8iO39tYxEYzMfMEGf8tCqLJ2RMovRACyBYEug7De+x3HnSlu9cDdu952iVB1Rmk Dw9SW3Vmdp1BveJfi2a2FplQyfknon1qcXKBKcyybzVKeumW/kLaxyhj5MiZwHkG29an hbAHQItpw41sOAjdNuHGr6CeItUEFHQxF/o0248m1qTbpxOT6k5YoZhDVo9/A8L9rxZY vJ9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052776; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5sI1q8FeCzoYjS80FmoBFGlXkDMRicrucbVZQV9c508=; b=jUO98SAFnCT38BXYlYcLjKPMY9niGES/E9x1TrJt1aXf7eSPBy2+Gr9K680O/3IDq3 mepnZnich2tcYm7pwsP+dWwrGTSyg5cuExCZ5R9wMPshqAME/iODC8p9AJ7+OhnBNMK/ FOiKNQG0NPCj14ixjqZn0UfqjJ6n/KlwLE3l8iqKRDESbHS/lv0lfhxYE6R7QKU06EjB N2piz5ooh2bV+jtMurcHGgTV//MaDDu9mbju4KvApMLDG29Pb0lGCwsUSqw+ZoDaYNeC KZ0H46W1JryzKbz2cn6gSiYZoY3lagEhe8Jj7WZAtmFRksWXpZWEtRR7wsLfHvCkZ9lr /5qw== X-Gm-Message-State: AO0yUKXj1HZlsCENaGnkwCU1J61iadjIzia9QsUfMeIpAQ/C/psFm8rZ CDt5kUngDY8/IGFnlhJkwmlmCA== X-Google-Smtp-Source: AK7set8HF6l0jo84zLOB7MX/fRtN4brKhFNLhH2+J96cVLUVYh0wHNh/ZygV2azN5x17QV/AqFWT6w== X-Received: by 2002:a17:90b:3b4d:b0:233:ee50:d28b with SMTP id ot13-20020a17090b3b4d00b00233ee50d28bmr8170087pjb.16.1679052776174; Fri, 17 Mar 2023 04:32:56 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.32.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:32:55 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 03/11] pci: endpoint: function/pci-epf-test: Unify a range of time measurement Date: Fri, 17 Mar 2023 20:32:30 +0900 Message-Id: <20230317113238.142970-4-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This test code measures a time of data transfer. Some measurements include print, preparation and error checking. Change to measure during data tansfer. Signed-off-by: Shunsuke Mie --- drivers/pci/endpoint/functions/pci-epf-test.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/en= dpoint/functions/pci-epf-test.c index 172e5ac0bd96..6955a3d2eb7e 100644 --- a/drivers/pci/endpoint/functions/pci-epf-test.c +++ b/drivers/pci/endpoint/functions/pci-epf-test.c @@ -356,7 +356,6 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_t= est) goto err_dst_addr; } =20 - ktime_get_ts64(&start); use_dma =3D !!(reg->flags & FLAG_USE_DMA); if (use_dma) { if (!epf_test->dma_supported) { @@ -371,9 +370,11 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_= test) goto err_map_addr; } =20 + ktime_get_ts64(&start); ret =3D pci_epf_test_data_transfer(epf_test, dst_phys_addr, src_phys_addr, reg->size, 0, DMA_MEM_TO_MEM); + ktime_get_ts64(&end); if (ret) dev_err(dev, "Data transfer failed\n"); } else { @@ -385,11 +386,13 @@ static int pci_epf_test_copy(struct pci_epf_test *epf= _test) goto err_map_addr; } =20 + ktime_get_ts64(&start); memcpy_fromio(buf, src_addr, reg->size); memcpy_toio(dst_addr, buf, reg->size); + ktime_get_ts64(&end); kfree(buf); } - ktime_get_ts64(&end); + pci_epf_test_print_rate("COPY", reg->size, &start, &end, use_dma); =20 err_map_addr: @@ -467,9 +470,9 @@ static int pci_epf_test_read(struct pci_epf_test *epf_t= est) ret =3D pci_epf_test_data_transfer(epf_test, dst_phys_addr, phys_addr, reg->size, reg->src_addr, DMA_DEV_TO_MEM); + ktime_get_ts64(&end); if (ret) dev_err(dev, "Data transfer failed\n"); - ktime_get_ts64(&end); =20 dma_unmap_single(dma_dev, dst_phys_addr, reg->size, DMA_FROM_DEVICE); @@ -556,14 +559,13 @@ static int pci_epf_test_write(struct pci_epf_test *ep= f_test) } =20 ktime_get_ts64(&start); - ret =3D pci_epf_test_data_transfer(epf_test, phys_addr, src_phys_addr, reg->size, reg->dst_addr, DMA_MEM_TO_DEV); + ktime_get_ts64(&end); if (ret) dev_err(dev, "Data transfer failed\n"); - ktime_get_ts64(&end); =20 dma_unmap_single(dma_dev, src_phys_addr, reg->size, DMA_TO_DEVICE); --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 A1469C7618B for ; Fri, 17 Mar 2023 11:33:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230032AbjCQLdT (ORCPT ); Fri, 17 Mar 2023 07:33:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49446 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230061AbjCQLdI (ORCPT ); Fri, 17 Mar 2023 07:33:08 -0400 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34341A8C55 for ; Fri, 17 Mar 2023 04:33:00 -0700 (PDT) Received: by mail-pl1-x631.google.com with SMTP id ix20so4987477plb.3 for ; Fri, 17 Mar 2023 04:33:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=02xUqfEugvmsV40WG30Qa2tXUYlhWNLWy8/nr55CGig=; b=4P4Ag5T9O6UF2JNgzQOd/XqYteXdWN+gFSUKQfREV6+na/dzjZVvbtd7t75wSjkLRz sfU1y6//aC0sRcbKwiErqhP47Kmig9CO7GRffsItnE6N8g2uSH85vX0htlJYkWwRhqiV 750xt0J/CkT6CpRIR9AsM9BxJ5aemjO/m6GuwYGupnSG509fpD4R7n9wdJJ/YElw20I6 c66wi5hzNT0t0/Jb/ATPCTm9XBpQwqOlli87yEKbNyOcJeoDECZg0D3GY2CS8SJciqIQ eb4JnVfDE/pvvt8VRz6KvGDn5NYE3kjgCubYAMslqcvqzt2LM8gM8MUZNe9I2F0ohubi 08DQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=02xUqfEugvmsV40WG30Qa2tXUYlhWNLWy8/nr55CGig=; b=oIfx1d60i6oPK3NOuk9EFLmjoEErxk6H4Sic1j9DReiVuA6LhcWkUx30TnXCo/phb2 lwz4ZyGuAW/mHm+/0eNsbz51+DlaoSyK/+t/NFp4MgWFFoR3cDCcioR6G85ZM0uzdC3k tjvcqeSx028EPOnvis30IZG7wW3oR5mmtidilnCiFBQUNPAFHLkuinyuini5g9aGl1UO mCVwRQZVpTwT95Kzsastw/55CtWFv8JZhu0yYSeqpPuCBmOOHAoPF+ju+lVViGBjTGzA twwGvZGAunPFqv+svd1BZAUODQlcZ6wzozKnicGCMKrnLvTrMX5bIEuUhEXR4ZPUkLkX BUpg== X-Gm-Message-State: AO0yUKWtfDUDrreXtYmzPZ1ygFIuygTxhkL8w+DFbvo59xRvKVVD1djb yFnYQmhLc8Ruy6D32Kp/MKI2lg== X-Google-Smtp-Source: AK7set8YHzFZhlF4nGvlioh0immV7c7RJw5smiE65VQhF7yAnNjifH85xfnz7kikkGdWtEdESDV8iQ== X-Received: by 2002:a17:903:110d:b0:1a1:93d0:e807 with SMTP id n13-20020a170903110d00b001a193d0e807mr7608803plh.36.1679052779764; Fri, 17 Mar 2023 04:32:59 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.32.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:32:59 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 04/11] PCI: endpoint: functions/pci-epf-test: Move common difinitions to header file Date: Fri, 17 Mar 2023 20:32:31 +0900 Message-Id: <20230317113238.142970-5-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The pci-epf-test and pci_endpoint_test drivers communicate by registers on PCIe BAR. The register details are duplicated in their code respectively. Move a common part to an introduced header file from pci-epf-test. Signed-off-by: Shunsuke Mie --- drivers/pci/endpoint/functions/pci-epf-test.c | 37 +--------- include/linux/pci-epf-test.h | 67 +++++++++++++++++++ 2 files changed, 68 insertions(+), 36 deletions(-) create mode 100644 include/linux/pci-epf-test.h diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/en= dpoint/functions/pci-epf-test.c index 6955a3d2eb7e..99d8a05b8507 100644 --- a/drivers/pci/endpoint/functions/pci-epf-test.c +++ b/drivers/pci/endpoint/functions/pci-epf-test.c @@ -17,31 +17,9 @@ =20 #include #include +#include #include =20 -#define IRQ_TYPE_LEGACY 0 -#define IRQ_TYPE_MSI 1 -#define IRQ_TYPE_MSIX 2 - -#define COMMAND_RAISE_LEGACY_IRQ BIT(0) -#define COMMAND_RAISE_MSI_IRQ BIT(1) -#define COMMAND_RAISE_MSIX_IRQ BIT(2) -#define COMMAND_READ BIT(3) -#define COMMAND_WRITE BIT(4) -#define COMMAND_COPY BIT(5) - -#define STATUS_READ_SUCCESS BIT(0) -#define STATUS_READ_FAIL BIT(1) -#define STATUS_WRITE_SUCCESS BIT(2) -#define STATUS_WRITE_FAIL BIT(3) -#define STATUS_COPY_SUCCESS BIT(4) -#define STATUS_COPY_FAIL BIT(5) -#define STATUS_IRQ_RAISED BIT(6) -#define STATUS_SRC_ADDR_INVALID BIT(7) -#define STATUS_DST_ADDR_INVALID BIT(8) - -#define FLAG_USE_DMA BIT(0) - #define TIMER_RESOLUTION 1 =20 static struct workqueue_struct *kpcitest_workqueue; @@ -60,19 +38,6 @@ struct pci_epf_test { const struct pci_epc_features *epc_features; }; =20 -struct pci_epf_test_reg { - u32 magic; - u32 command; - u32 status; - u64 src_addr; - u64 dst_addr; - u32 size; - u32 checksum; - u32 irq_type; - u32 irq_number; - u32 flags; -} __packed; - static struct pci_epf_header test_header =3D { .vendorid =3D PCI_ANY_ID, .deviceid =3D PCI_ANY_ID, diff --git a/include/linux/pci-epf-test.h b/include/linux/pci-epf-test.h new file mode 100644 index 000000000000..636057c3377f --- /dev/null +++ b/include/linux/pci-epf-test.h @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef __PCI_EPF_TEST_H +#define __PCI_EPF_TEST_H + +struct pci_epf_test_reg { +#define PCI_ENDPOINT_TEST_MAGIC offsetof(struct pci_epf_test_reg, magic) + u32 magic; +#define PCI_ENDPOINT_TEST_COMMAND offsetof(struct pci_epf_test_reg, comman= d) +#define COMMAND_RAISE_LEGACY_IRQ BIT(0) +#define COMMAND_RAISE_MSI_IRQ BIT(1) +#define COMMAND_RAISE_MSIX_IRQ BIT(2) +#define COMMAND_READ BIT(3) +#define COMMAND_WRITE BIT(4) +#define COMMAND_COPY BIT(5) + u32 command; +#define STATUS_READ_SUCCESS BIT(0) +#define STATUS_READ_FAIL BIT(1) +#define STATUS_WRITE_SUCCESS BIT(2) +#define STATUS_WRITE_FAIL BIT(3) +#define STATUS_COPY_SUCCESS BIT(4) +#define STATUS_COPY_FAIL BIT(5) +#define STATUS_IRQ_RAISED BIT(6) +#define STATUS_SRC_ADDR_INVALID BIT(7) +#define STATUS_DST_ADDR_INVALID BIT(8) +#define PCI_ENDPOINT_TEST_STATUS offsetof(struct pci_epf_test_reg, status) + u32 status; + union { +#define PCI_ENDPOINT_TEST_SRC_ADDR offsetof(struct pci_epf_test_reg, src_a= ddr) + u64 src_addr; + struct { +#define PCI_ENDPOINT_TEST_LOWER_SRC_ADDR offsetof(struct pci_epf_test_reg,= src_low) + u32 src_low; +#define PCI_ENDPOINT_TEST_UPPER_SRC_ADDR offsetof(struct pci_epf_test_reg,= src_high) + u32 src_high; + } __packed; + }; + union { +#define PCI_ENDPOINT_TEST_DST_ADDR offsetof(struct pci_epf_test_reg, dst_a= ddr) + u64 dst_addr; + struct { +#define PCI_ENDPOINT_TEST_LOWER_DST_ADDR offsetof(struct pci_epf_test_reg,= dst_low) + u32 dst_low; +#define PCI_ENDPOINT_TEST_UPPER_DST_ADDR offsetof(struct pci_epf_test_reg,= dst_high) + u32 dst_high; + } __packed; + }; +#define PCI_ENDPOINT_TEST_SIZE offsetof(struct pci_epf_test_reg, size) + u32 size; +#define PCI_ENDPOINT_TEST_COUNT offsetof(struct pci_epf_test_reg, count) + u32 count; +#define PCI_ENDPOINT_TEST_CHECKSUM offsetof(struct pci_epf_test_reg, check= sum) + u32 checksum; +#define PCI_ENDPOINT_TEST_IRQ_TYPE offsetof(struct pci_epf_test_reg, irq_t= ype) +#define IRQ_TYPE_UNDEFINED -1 +#define IRQ_TYPE_LEGACY 0 +#define IRQ_TYPE_MSI 1 +#define IRQ_TYPE_MSIX 2 + u32 irq_type; +#define PCI_ENDPOINT_TEST_IRQ_NUMBER offsetof(struct pci_epf_test_reg, irq= _number) + u32 irq_number; +#define PCI_ENDPOINT_TEST_FLAGS offsetof(struct pci_epf_test_reg, flags) +#define FLAG_USE_DMA BIT(0) + u32 flags; +} __packed; + +#endif /* __PCI_EPF_TEST_H */ --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 E2663C7618B for ; Fri, 17 Mar 2023 11:33:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229838AbjCQLd1 (ORCPT ); Fri, 17 Mar 2023 07:33:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49880 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230043AbjCQLdW (ORCPT ); Fri, 17 Mar 2023 07:33:22 -0400 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7BAE8A8EA6 for ; Fri, 17 Mar 2023 04:33:04 -0700 (PDT) Received: by mail-pl1-x629.google.com with SMTP id ix20so4987620plb.3 for ; Fri, 17 Mar 2023 04:33:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052783; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4iadPnAZmhsjWHxwMakcLwCHZfPYJGTmA/4ZcjoDKLE=; b=cNxNwaDBvRQmJinsBZUY5SpY/BRLnT3sn/ZuYenOqjV8bNs9gzBJiP8XDNNipnex/d SSAxhnm9/x33lz7Ci6LsaOyUrcsVsqeVAlSvpj93Dhv0BrS3/tQajdxU+ThT0QLf1QhT 01l1nQFqaS3kyaRht0ChqovhYp9DmbW6DWyC0zNMk6AwnA3fuqmrP/EwTnN4fFJ2MFyj NW8slonzbP2p9sfvse/Kgj5gTlxWFONglv5lUsMAzS7ort8BTaACKPwbX9u0aErVTvy5 Kotlud6lIbgckHk7othS57WotvkRtLyG0heCxiFJZsOai8nFdAKFqRaDV8bV73dOo9o8 72EQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052783; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4iadPnAZmhsjWHxwMakcLwCHZfPYJGTmA/4ZcjoDKLE=; b=7EdPdnyDpNNGaULPj75jAkGx/p03RHxaK0VlorggsNPaxAOY5f4F++XdDDEKETCxPT W4U7r+uMZLTjfSl8sZykL0/caL0BmsFsN+d8EfmRotm6ecD/L5gH0vMMYJKPGRW/+Oe0 gRQ1A6CdPkcGiMMb+23fJaw9Omicx3Yh+Sq6SdJpehM8NNAFcaM7V0XXpFdfNHOUxeZ+ LzN0KlWk1FU9qf5lKlX56Zsz5vn2YGQUJFDYAm3iik4jp4FPnJI/euc6oHGkGWBgM3Tl CXYpU49uYuStNkKVMfVU+NkEEhJX+UaOE6rTIuj6RLn6QMJiFBzcCeOTKYAtdBBBctXK KJoQ== X-Gm-Message-State: AO0yUKWfBIEfY3X7wn2nUzObHWOle10caXn64LkWN+RrPRpbrv+4wM33 ZbK4FHOM+IJA8LNWzvOKFJ0IZw== X-Google-Smtp-Source: AK7set/qCnGBA0p9szajAWdSwnN3dFOPj1OdZtTeBXVH2xSXJIPYItlJH9avlXDIJ2Wli9AmPHquFQ== X-Received: by 2002:a17:90a:1a03:b0:237:2f3c:a1cd with SMTP id 3-20020a17090a1a0300b002372f3ca1cdmr8508780pjk.19.1679052783445; Fri, 17 Mar 2023 04:33:03 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.33.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:33:03 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 05/11] MAINTAINERS: Add a header file for pci-epf-test Date: Fri, 17 Mar 2023 20:32:32 +0900 Message-Id: <20230317113238.142970-6-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Common definitions between pci-epf-test and pci_endpoint_test drivers moves into the new header file. Signed-off-by: Shunsuke Mie --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 092f9500e0e7..440a7d0d4ac4 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -16131,6 +16131,7 @@ F: Documentation/misc-devices/pci-endpoint-test.rst F: drivers/misc/pci_endpoint_test.c F: drivers/pci/endpoint/ F: tools/pci/ +F: include/linux/pci-epf-test.h =20 PCI ENHANCED ERROR HANDLING (EEH) FOR POWERPC M: Mahesh J Salgaonkar --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 9865BC74A5B for ; Fri, 17 Mar 2023 11:33:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230061AbjCQLdm (ORCPT ); Fri, 17 Mar 2023 07:33:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229989AbjCQLdi (ORCPT ); Fri, 17 Mar 2023 07:33:38 -0400 Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 34E6AA21A0 for ; Fri, 17 Mar 2023 04:33:08 -0700 (PDT) Received: by mail-pj1-x102b.google.com with SMTP id l9-20020a17090a3f0900b0023d32684e7fso7910872pjc.1 for ; Fri, 17 Mar 2023 04:33:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052787; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ob+dv03gMiw66cBwoU+hYD2Vt8Qv5SEsoU9zMOVBkuQ=; b=v0OVgL+DK0/1OLwNt1hvzurF9AgD0O2q65xQcB7iRde3gkzixBT/sZf5kAoAc6NM8n jNrxQKU2uVJ95IlWvsLGe9xQq/YJ3Pp0UGKMKFxzddpvDy9xSC15QsTeUNKJ5QbiQqa9 PSMNxlmk0HnYn6fAMswlbTqW/4ewcMn1GF8BwZN/bKF8nF0PO+5JkIc4JZb9tKsdgrd9 KdpZqxj4joy6mL0urr8Zyswjk0VO9NzvZmf41sEfhphLTVwt4AyyedBJjwzbR+TN0EmJ 3wBTUjByYqhE3ty4Mfe/Yk7LCEb/MYdZj3no50Ru+nhtOpUnQLJkkpVy+IsCD1I7t8sc l/3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052787; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ob+dv03gMiw66cBwoU+hYD2Vt8Qv5SEsoU9zMOVBkuQ=; b=Iod22CWEbWvW6MCdc0w1Ofazfvz9YysZxsKXJg3ew3egEHt2VhYjDR9PFVhij3Hmpj doMgEMpxLgNs5+01kFsJGGYJ6LLo51NsgicNztPpebhh28DTtR9bHHU+UPNP4xRt+NoM RQ+L/Wsyk5Xg6tlPOzo8lBuic2KkcsM4oCrLjoqjV4PDuhsO5LaQTqYDJeLJX1f3XE5H AMBsC54Je1H7Q/nIiDSPfKbBY4KxO2BhfvIEqvkjgdjLlx5d8iQfbWnztHtiYzdu5DwR mPctAPLA5ilj7toARj9oYpe8+impk+lONyiUWBsFaPMtDcvAiGns/9k8yUixj9b3q0Ar /UCQ== X-Gm-Message-State: AO0yUKUmDYUdl3U/SgSsc808rsfbtYqgDu+UJMNmit5AqMWHohc2JeOe LTRdDT+eomOmJc7EvFNvWWZipQ== X-Google-Smtp-Source: AK7set/4cQfdbVb01q3i9EBygum5/NcOwZKrEbddz29AigoY+K4DZYp+9xpVs6i+I7fm8qg6riVLPw== X-Received: by 2002:a17:90b:3881:b0:23f:618a:6bed with SMTP id mu1-20020a17090b388100b0023f618a6bedmr1406906pjb.47.1679052787033; Fri, 17 Mar 2023 04:33:07 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.33.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:33:06 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 06/11] misc: pci_endpoint_test: Use a common header file between endpoint driver Date: Fri, 17 Mar 2023 20:32:33 +0900 Message-Id: <20230317113238.142970-7-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Duplicated definitions between pci-epf-test and pci_endpoint_test are already moved to a header file. Remove the common definitions and include the header file. In addition, the separate register address writes were combined into a single write. Signed-off-by: Shunsuke Mie --- drivers/misc/pci_endpoint_test.c | 42 +------------------------------- 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_t= est.c index 55733dee95ad..d4a42e9ab86a 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c @@ -22,52 +22,12 @@ #include =20 #include +#include =20 #include =20 #define DRV_MODULE_NAME "pci-endpoint-test" =20 -#define IRQ_TYPE_UNDEFINED -1 -#define IRQ_TYPE_LEGACY 0 -#define IRQ_TYPE_MSI 1 -#define IRQ_TYPE_MSIX 2 - -#define PCI_ENDPOINT_TEST_MAGIC 0x0 - -#define PCI_ENDPOINT_TEST_COMMAND 0x4 -#define COMMAND_RAISE_LEGACY_IRQ BIT(0) -#define COMMAND_RAISE_MSI_IRQ BIT(1) -#define COMMAND_RAISE_MSIX_IRQ BIT(2) -#define COMMAND_READ BIT(3) -#define COMMAND_WRITE BIT(4) -#define COMMAND_COPY BIT(5) - -#define PCI_ENDPOINT_TEST_STATUS 0x8 -#define STATUS_READ_SUCCESS BIT(0) -#define STATUS_READ_FAIL BIT(1) -#define STATUS_WRITE_SUCCESS BIT(2) -#define STATUS_WRITE_FAIL BIT(3) -#define STATUS_COPY_SUCCESS BIT(4) -#define STATUS_COPY_FAIL BIT(5) -#define STATUS_IRQ_RAISED BIT(6) -#define STATUS_SRC_ADDR_INVALID BIT(7) -#define STATUS_DST_ADDR_INVALID BIT(8) - -#define PCI_ENDPOINT_TEST_LOWER_SRC_ADDR 0x0c -#define PCI_ENDPOINT_TEST_UPPER_SRC_ADDR 0x10 - -#define PCI_ENDPOINT_TEST_LOWER_DST_ADDR 0x14 -#define PCI_ENDPOINT_TEST_UPPER_DST_ADDR 0x18 - -#define PCI_ENDPOINT_TEST_SIZE 0x1c -#define PCI_ENDPOINT_TEST_CHECKSUM 0x20 - -#define PCI_ENDPOINT_TEST_IRQ_TYPE 0x24 -#define PCI_ENDPOINT_TEST_IRQ_NUMBER 0x28 - -#define PCI_ENDPOINT_TEST_FLAGS 0x2c -#define FLAG_USE_DMA BIT(0) - #define PCI_DEVICE_ID_TI_AM654 0xb00c #define PCI_DEVICE_ID_TI_J7200 0xb00f #define PCI_DEVICE_ID_TI_AM64 0xb010 --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 44595C76195 for ; Fri, 17 Mar 2023 11:33:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230087AbjCQLdu (ORCPT ); Fri, 17 Mar 2023 07:33:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50486 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230082AbjCQLdr (ORCPT ); Fri, 17 Mar 2023 07:33:47 -0400 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EA83AAA734 for ; Fri, 17 Mar 2023 04:33:11 -0700 (PDT) Received: by mail-pl1-x634.google.com with SMTP id a2so4992464plm.4 for ; Fri, 17 Mar 2023 04:33:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052791; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XsdH0oLvA5PMhdbh6lug1hHlRUTM7D8rYh/xwgUFb5s=; b=mvu65/QfRfRZArhG2eSvUbIHdoFY4+XUZwAOfwXTe1cLvSbmcJMG1Kmiu6dWv5m+sV N7H2LviIzAS9sDn5AjrkYhybo0WDWwXYNfIzD/FaBPa3FtdWnklkMXUOLLlXJP47u7PV 2RSnZ24DTlFUNYaFwq8oq6qbiqtMOkwC9ILG7FGV+6u/iV21JyUVsT02+cTdERsgX/qX A6zj7Wkl1PpAup8r0VYcA85bsYauBVIq6sNO9QzpRJUISg6nSFLGCdjCcLZMxIthqssR Urfue+pE2rMnHktmFhN953n1+V0rUOZrCt4mUGc3MTzdrqPy1n8oeheLEkWk4fh9jURc tegA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052791; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XsdH0oLvA5PMhdbh6lug1hHlRUTM7D8rYh/xwgUFb5s=; b=Cmcjt5oIttcjtx8WdVGUi0hu4nlEQhYZTHiuWnVsDpdVfrFEaPESAXbhwbU/DaDue1 +8wbL1n7P6uJracIWbMrb3QbSf/oKU4+slfrt9Q40WqfCCmkeMpnoGfYdAtJN3+HEjs9 u5bc/Isn6QupF3S3NAFxkUwjDmcqbBuOoSaFSSHZ+gk0V+JdpsPGchLrVVgy9FIy2tb7 M8Gh1R2TJvf9TqXMVKTV5FAIhrhyAY60orGqSS/zDPApqdmWaBx4ifigb+J5yi0xkiCT NQlI8AnlCNAClbW1MHs81rHs6Sfd7i4MuUWI5VogvZbldx6gv320zvViNj5rMWYH5MY+ QvZA== X-Gm-Message-State: AO0yUKV8mkdsrCO48tTBCyraE8evgGdeJ+L9mozEBpbKaODoITeXcm0b HxRaccvCGlCm0iId4KuDvUvRgw== X-Google-Smtp-Source: AK7set/uRUgDY2cX8naSHuM20nfNZ9dM/YY+xJQJECgmJbS3+imJdlIRZMryd8zO2HdBEbhtsUlhqA== X-Received: by 2002:a17:90b:1646:b0:23d:3aa5:5ff3 with SMTP id il6-20020a17090b164600b0023d3aa55ff3mr2791934pjb.14.1679052790713; Fri, 17 Mar 2023 04:33:10 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.33.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:33:10 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 07/11] PCI: endpoint: functions/pci-epf-test: Extend the test for continuous transfers Date: Fri, 17 Mar 2023 20:32:34 +0900 Message-Id: <20230317113238.142970-8-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The test could not test continuous DMAs because it was only synchronously issuing a single DMA and waiting for it to complete. Add a new parameter, `count` and extend the test for continuous transfers to improve the test coverage. Signed-off-by: Shunsuke Mie --- drivers/pci/endpoint/functions/pci-epf-test.c | 152 ++++++++++-------- 1 file changed, 84 insertions(+), 68 deletions(-) diff --git a/drivers/pci/endpoint/functions/pci-epf-test.c b/drivers/pci/en= dpoint/functions/pci-epf-test.c index 99d8a05b8507..7898dfd956db 100644 --- a/drivers/pci/endpoint/functions/pci-epf-test.c +++ b/drivers/pci/endpoint/functions/pci-epf-test.c @@ -63,6 +63,7 @@ static void pci_epf_test_dma_callback(void *param) * @dma_src: The source address of the data transfer. It can be a physical * address given by pci_epc_mem_alloc_addr or DMA mapping APIs. * @len: The size of the data transfer + * @count: The number of DMAs issuing in consecutive * @dma_remote: remote RC physical address * @dir: DMA transfer direction * @@ -74,7 +75,7 @@ static void pci_epf_test_dma_callback(void *param) */ static int pci_epf_test_data_transfer(struct pci_epf_test *epf_test, dma_addr_t dma_dst, dma_addr_t dma_src, - size_t len, dma_addr_t dma_remote, + size_t len, size_t count, dma_addr_t dma_remote, enum dma_transfer_direction dir) { struct dma_chan *chan =3D (dir =3D=3D DMA_MEM_TO_DEV) ? @@ -87,47 +88,56 @@ static int pci_epf_test_data_transfer(struct pci_epf_te= st *epf_test, struct device *dev =3D &epf->dev; dma_cookie_t cookie; int ret; + int i; + size_t offset; =20 if (IS_ERR_OR_NULL(chan)) { dev_err(dev, "Invalid DMA memcpy channel\n"); return -EINVAL; } =20 - if (epf_test->dma_private) { - sconf.direction =3D dir; - if (dir =3D=3D DMA_MEM_TO_DEV) - sconf.dst_addr =3D dma_remote; - else - sconf.src_addr =3D dma_remote; + for (i =3D 0, offset =3D 0; i < count; i++, offset +=3D len) { + if (epf_test->dma_private) { + sconf.direction =3D dir; + if (dir =3D=3D DMA_MEM_TO_DEV) + sconf.dst_addr =3D dma_remote + offset; + else + sconf.src_addr =3D dma_remote + offset; + + if (dmaengine_slave_config(chan, &sconf)) { + dev_err(dev, "DMA slave config fail\n"); + return -EIO; + } + tx =3D dmaengine_prep_slave_single( + chan, dma_local + offset, len, dir, flags); + } else { + tx =3D dmaengine_prep_dma_memcpy(chan, dma_dst + offset, + dma_src + offset, len, + flags); + } =20 - if (dmaengine_slave_config(chan, &sconf)) { - dev_err(dev, "DMA slave config fail\n"); + if (!tx) { + dev_err(dev, "Failed to prepare DMA memcpy\n"); return -EIO; } - tx =3D dmaengine_prep_slave_single(chan, dma_local, len, dir, - flags); - } else { - tx =3D dmaengine_prep_dma_memcpy(chan, dma_dst, dma_src, len, - flags); - } =20 - if (!tx) { - dev_err(dev, "Failed to prepare DMA memcpy\n"); - return -EIO; - } + if (i =3D=3D count - 1) { + tx->callback =3D pci_epf_test_dma_callback; + tx->callback_param =3D epf_test; + reinit_completion(&epf_test->transfer_complete); + } =20 - tx->callback =3D pci_epf_test_dma_callback; - tx->callback_param =3D epf_test; - cookie =3D tx->tx_submit(tx); - reinit_completion(&epf_test->transfer_complete); + cookie =3D tx->tx_submit(tx); =20 - ret =3D dma_submit_error(cookie); - if (ret) { - dev_err(dev, "Failed to do DMA tx_submit %d\n", cookie); - return -EIO; + ret =3D dma_submit_error(cookie); + if (ret) { + dev_err(dev, "Failed to do DMA tx_submit %d\n", cookie); + return -EIO; + } + + dma_async_issue_pending(chan); } =20 - dma_async_issue_pending(chan); ret =3D wait_for_completion_interruptible(&epf_test->transfer_complete); if (ret < 0) { dmaengine_terminate_sync(chan); @@ -244,7 +254,7 @@ static void pci_epf_test_clean_dma_chan(struct pci_epf_= test *epf_test) return; } =20 -static void pci_epf_test_print_rate(const char *ops, u64 size, +static void pci_epf_test_print_rate(const char *ops, u64 size, u32 count, struct timespec64 *start, struct timespec64 *end, bool dma) { @@ -255,7 +265,7 @@ static void pci_epf_test_print_rate(const char *ops, u6= 4 size, =20 /* convert both size (stored in 'rate') and time in terms of 'ns' */ ns =3D timespec64_to_ns(&ts); - rate =3D size * NSEC_PER_SEC; + rate =3D size * count * NSEC_PER_SEC; =20 /* Divide both size (stored in 'rate') and ns by a common factor */ while (ns > UINT_MAX) { @@ -269,14 +279,14 @@ static void pci_epf_test_print_rate(const char *ops, = u64 size, /* calculate the rate */ do_div(rate, (uint32_t)ns); =20 - pr_info("\n%s =3D> Size: %llu bytes\t DMA: %s\t Time: %llu.%09u seconds\t" - "Rate: %llu KB/s\n", ops, size, dma ? "YES" : "NO", + pr_info("\n%s =3D> Size: %llu bytes\tcount %d\t DMA: %s\t Time: %llu.%09u= seconds\t" + "Rate: %llu KB/s\n", ops, size, count, dma ? "YES" : "NO", (u64)ts.tv_sec, (u32)ts.tv_nsec, rate / 1024); } =20 static int pci_epf_test_copy(struct pci_epf_test *epf_test) { - int ret; + int ret, i; bool use_dma; void __iomem *src_addr; void __iomem *dst_addr; @@ -288,8 +298,9 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_t= est) struct pci_epc *epc =3D epf->epc; enum pci_barno test_reg_bar =3D epf_test->test_reg_bar; struct pci_epf_test_reg *reg =3D epf_test->reg[test_reg_bar]; + size_t offset; =20 - src_addr =3D pci_epc_mem_alloc_addr(epc, &src_phys_addr, reg->size); + src_addr =3D pci_epc_mem_alloc_addr(epc, &src_phys_addr, reg->size * reg-= >count); if (!src_addr) { dev_err(dev, "Failed to allocate source address\n"); reg->status =3D STATUS_SRC_ADDR_INVALID; @@ -298,14 +309,14 @@ static int pci_epf_test_copy(struct pci_epf_test *epf= _test) } =20 ret =3D pci_epc_map_addr(epc, epf->func_no, epf->vfunc_no, src_phys_addr, - reg->src_addr, reg->size); + reg->src_addr, reg->size * reg->count); if (ret) { dev_err(dev, "Failed to map source address\n"); reg->status =3D STATUS_SRC_ADDR_INVALID; goto err_src_addr; } =20 - dst_addr =3D pci_epc_mem_alloc_addr(epc, &dst_phys_addr, reg->size); + dst_addr =3D pci_epc_mem_alloc_addr(epc, &dst_phys_addr, reg->size * reg-= >count); if (!dst_addr) { dev_err(dev, "Failed to allocate destination address\n"); reg->status =3D STATUS_DST_ADDR_INVALID; @@ -314,7 +325,7 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_t= est) } =20 ret =3D pci_epc_map_addr(epc, epf->func_no, epf->vfunc_no, dst_phys_addr, - reg->dst_addr, reg->size); + reg->dst_addr, reg->size * reg->count); if (ret) { dev_err(dev, "Failed to map destination address\n"); reg->status =3D STATUS_DST_ADDR_INVALID; @@ -337,7 +348,7 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_t= est) =20 ktime_get_ts64(&start); ret =3D pci_epf_test_data_transfer(epf_test, dst_phys_addr, - src_phys_addr, reg->size, 0, + src_phys_addr, reg->size, reg->count, 0, DMA_MEM_TO_MEM); ktime_get_ts64(&end); if (ret) @@ -345,32 +356,33 @@ static int pci_epf_test_copy(struct pci_epf_test *epf= _test) } else { void *buf; =20 - buf =3D kzalloc(reg->size, GFP_KERNEL); + buf =3D kzalloc(reg->size * reg->count, GFP_KERNEL); if (!buf) { ret =3D -ENOMEM; goto err_map_addr; } =20 ktime_get_ts64(&start); - memcpy_fromio(buf, src_addr, reg->size); - memcpy_toio(dst_addr, buf, reg->size); + for (i =3D 0, offset =3D 0; i < reg->count; i++, offset +=3D reg->size) { + memcpy_fromio(buf + offset, src_addr + offset, reg->size); + memcpy_toio(dst_addr + offset, buf + offset, reg->size); + } ktime_get_ts64(&end); kfree(buf); } - - pci_epf_test_print_rate("COPY", reg->size, &start, &end, use_dma); + pci_epf_test_print_rate("COPY", reg->size, reg->count, &start, &end, use_= dma); =20 err_map_addr: pci_epc_unmap_addr(epc, epf->func_no, epf->vfunc_no, dst_phys_addr); =20 err_dst_addr: - pci_epc_mem_free_addr(epc, dst_phys_addr, dst_addr, reg->size); + pci_epc_mem_free_addr(epc, dst_phys_addr, dst_addr, reg->size * reg->coun= t); =20 err_src_map_addr: pci_epc_unmap_addr(epc, epf->func_no, epf->vfunc_no, src_phys_addr); =20 err_src_addr: - pci_epc_mem_free_addr(epc, src_phys_addr, src_addr, reg->size); + pci_epc_mem_free_addr(epc, src_phys_addr, src_addr, reg->size * reg->coun= t); =20 err: return ret; @@ -378,7 +390,7 @@ static int pci_epf_test_copy(struct pci_epf_test *epf_t= est) =20 static int pci_epf_test_read(struct pci_epf_test *epf_test) { - int ret; + int ret, i; void __iomem *src_addr; void *buf; u32 crc32; @@ -392,8 +404,9 @@ static int pci_epf_test_read(struct pci_epf_test *epf_t= est) struct device *dma_dev =3D epf->epc->dev.parent; enum pci_barno test_reg_bar =3D epf_test->test_reg_bar; struct pci_epf_test_reg *reg =3D epf_test->reg[test_reg_bar]; + size_t offset; =20 - src_addr =3D pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size); + src_addr =3D pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size * reg->cou= nt); if (!src_addr) { dev_err(dev, "Failed to allocate address\n"); reg->status =3D STATUS_SRC_ADDR_INVALID; @@ -402,14 +415,14 @@ static int pci_epf_test_read(struct pci_epf_test *epf= _test) } =20 ret =3D pci_epc_map_addr(epc, epf->func_no, epf->vfunc_no, phys_addr, - reg->src_addr, reg->size); + reg->src_addr, reg->size * reg->count); if (ret) { dev_err(dev, "Failed to map address\n"); reg->status =3D STATUS_SRC_ADDR_INVALID; goto err_addr; } =20 - buf =3D kzalloc(reg->size, GFP_KERNEL); + buf =3D kzalloc(reg->size * reg->count, GFP_KERNEL); if (!buf) { ret =3D -ENOMEM; goto err_map_addr; @@ -423,7 +436,7 @@ static int pci_epf_test_read(struct pci_epf_test *epf_t= est) goto err_dma_map; } =20 - dst_phys_addr =3D dma_map_single(dma_dev, buf, reg->size, + dst_phys_addr =3D dma_map_single(dma_dev, buf, reg->size * reg->count, DMA_FROM_DEVICE); if (dma_mapping_error(dma_dev, dst_phys_addr)) { dev_err(dev, "Failed to map destination buffer addr\n"); @@ -433,23 +446,24 @@ static int pci_epf_test_read(struct pci_epf_test *epf= _test) =20 ktime_get_ts64(&start); ret =3D pci_epf_test_data_transfer(epf_test, dst_phys_addr, - phys_addr, reg->size, + phys_addr, reg->size, reg->count, reg->src_addr, DMA_DEV_TO_MEM); ktime_get_ts64(&end); if (ret) dev_err(dev, "Data transfer failed\n"); =20 - dma_unmap_single(dma_dev, dst_phys_addr, reg->size, + dma_unmap_single(dma_dev, dst_phys_addr, reg->size * reg->count, DMA_FROM_DEVICE); } else { ktime_get_ts64(&start); - memcpy_fromio(buf, src_addr, reg->size); + for (i =3D 0, offset =3D 0; i < reg->count; i++, offset +=3D reg->size) + memcpy_fromio(buf + offset, src_addr + offset, reg->size); ktime_get_ts64(&end); } =20 - pci_epf_test_print_rate("READ", reg->size, &start, &end, use_dma); + pci_epf_test_print_rate("READ", reg->size, reg->count, &start, &end, use_= dma); =20 - crc32 =3D crc32_le(~0, buf, reg->size); + crc32 =3D crc32_le(~0, buf, reg->size * reg->count); if (crc32 !=3D reg->checksum) ret =3D -EIO; =20 @@ -460,7 +474,7 @@ static int pci_epf_test_read(struct pci_epf_test *epf_t= est) pci_epc_unmap_addr(epc, epf->func_no, epf->vfunc_no, phys_addr); =20 err_addr: - pci_epc_mem_free_addr(epc, phys_addr, src_addr, reg->size); + pci_epc_mem_free_addr(epc, phys_addr, src_addr, reg->size * reg->count); =20 err: return ret; @@ -468,7 +482,7 @@ static int pci_epf_test_read(struct pci_epf_test *epf_t= est) =20 static int pci_epf_test_write(struct pci_epf_test *epf_test) { - int ret; + int ret, i; void __iomem *dst_addr; void *buf; bool use_dma; @@ -481,8 +495,9 @@ static int pci_epf_test_write(struct pci_epf_test *epf_= test) struct device *dma_dev =3D epf->epc->dev.parent; enum pci_barno test_reg_bar =3D epf_test->test_reg_bar; struct pci_epf_test_reg *reg =3D epf_test->reg[test_reg_bar]; + size_t offset; =20 - dst_addr =3D pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size); + dst_addr =3D pci_epc_mem_alloc_addr(epc, &phys_addr, reg->size * reg->cou= nt); if (!dst_addr) { dev_err(dev, "Failed to allocate address\n"); reg->status =3D STATUS_DST_ADDR_INVALID; @@ -491,21 +506,21 @@ static int pci_epf_test_write(struct pci_epf_test *ep= f_test) } =20 ret =3D pci_epc_map_addr(epc, epf->func_no, epf->vfunc_no, phys_addr, - reg->dst_addr, reg->size); + reg->dst_addr, reg->size * reg->count); if (ret) { dev_err(dev, "Failed to map address\n"); reg->status =3D STATUS_DST_ADDR_INVALID; goto err_addr; } =20 - buf =3D kzalloc(reg->size, GFP_KERNEL); + buf =3D kzalloc(reg->size * reg->count, GFP_KERNEL); if (!buf) { ret =3D -ENOMEM; goto err_map_addr; } =20 - get_random_bytes(buf, reg->size); - reg->checksum =3D crc32_le(~0, buf, reg->size); + get_random_bytes(buf, reg->size * reg->count); + reg->checksum =3D crc32_le(~0, buf, reg->size * reg->count); =20 use_dma =3D !!(reg->flags & FLAG_USE_DMA); if (use_dma) { @@ -515,7 +530,7 @@ static int pci_epf_test_write(struct pci_epf_test *epf_= test) goto err_dma_map; } =20 - src_phys_addr =3D dma_map_single(dma_dev, buf, reg->size, + src_phys_addr =3D dma_map_single(dma_dev, buf, reg->size * reg->count, DMA_TO_DEVICE); if (dma_mapping_error(dma_dev, src_phys_addr)) { dev_err(dev, "Failed to map source buffer addr\n"); @@ -525,22 +540,23 @@ static int pci_epf_test_write(struct pci_epf_test *ep= f_test) =20 ktime_get_ts64(&start); ret =3D pci_epf_test_data_transfer(epf_test, phys_addr, - src_phys_addr, reg->size, + src_phys_addr, reg->size, reg->count, reg->dst_addr, DMA_MEM_TO_DEV); ktime_get_ts64(&end); if (ret) dev_err(dev, "Data transfer failed\n"); =20 - dma_unmap_single(dma_dev, src_phys_addr, reg->size, + dma_unmap_single(dma_dev, src_phys_addr, reg->size * reg->count, DMA_TO_DEVICE); } else { ktime_get_ts64(&start); - memcpy_toio(dst_addr, buf, reg->size); + for (i =3D 0, offset =3D 0; i < reg->count; i++, offset +=3D reg->size) + memcpy_toio(dst_addr + offset, buf + offset, reg->size); ktime_get_ts64(&end); } =20 - pci_epf_test_print_rate("WRITE", reg->size, &start, &end, use_dma); + pci_epf_test_print_rate("WRITE", reg->size, reg->count, &start, &end, use= _dma); =20 /* * wait 1ms inorder for the write to complete. Without this delay L3 @@ -555,7 +571,7 @@ static int pci_epf_test_write(struct pci_epf_test *epf_= test) pci_epc_unmap_addr(epc, epf->func_no, epf->vfunc_no, phys_addr); =20 err_addr: - pci_epc_mem_free_addr(epc, phys_addr, dst_addr, reg->size); + pci_epc_mem_free_addr(epc, phys_addr, dst_addr, reg->size * reg->count); =20 err: return ret; --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 9E5A3C74A5B for ; Fri, 17 Mar 2023 11:34:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230098AbjCQLd7 (ORCPT ); Fri, 17 Mar 2023 07:33:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230075AbjCQLd4 (ORCPT ); Fri, 17 Mar 2023 07:33:56 -0400 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 149612686A for ; Fri, 17 Mar 2023 04:33:14 -0700 (PDT) Received: by mail-pl1-x62f.google.com with SMTP id bc12so4374335plb.0 for ; Fri, 17 Mar 2023 04:33:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FeG3wRBDmKNCCUZ5fz5gWcA/vZS940xFTGQw0n7HN+E=; b=O6SXGDuUKlQ+9oQOkCmvU04ck+RyNmL8hdU9s6Nvyza/sjnC2hq+lrJ9WuLhWElkb3 H6nH2JAjDt+A244Vi+2jSnJwNmdXNoe06nDr6Buxuui+5GUDvNxTeHtW0kF8rupLT6yv k/g6AHHcoxIXZVxEQ+JC3ebI6vI33WynceSPnNbAm0WhNp+rKo2H56Z+4xP6BGJ50yRh cLDex5tzITakt+e7nJwbUniSCYNydjTm2Au706qpmhGfgNs+oCaIGTYYenpQ2M4KxzLY XqVZPXqsav7oT6hhUsohmbzC/l4HWG51jCW4qvFFpFJ6Etv0POdkma8qEasDCWdv4o4i d5tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FeG3wRBDmKNCCUZ5fz5gWcA/vZS940xFTGQw0n7HN+E=; b=rPOW9C67ifaJFeqaeRj8+TMjJ3lMicJMuUhuQfQ73h/KLKNIbPz8nk6Pmn9R+S5wax apUKyB30S6/DOIoNOl72kSEF4zkyeq8qk+5qx4u0um6PwVfceFlE6SQZkoKtskwzZkib Ze3PNJJFDelqMfFZzQ25+rnl0U75kOayBAJaBb3+P3qrkrBX27qde1xIf9ciZLlln0Ks GN8W3SxzMDtZVUg7DZHdSvzaTGkzzBRiawsCoFmXjkhhaCeOoJ2DjgvwyuwuLg4F7hdE PvbZespxJbD3+x1jmeYSPSVCozAjxaauJKucqeNaMGXBYIY9R/2ni22z5SkkYNWEm44I z0Hg== X-Gm-Message-State: AO0yUKXj2AA2lF6qWBBGtKw1OlzQmXQGFr2htzZh2z0ipMzM1i7W7Lm8 qgtPwZveAkY799S8r9+xSghmoA== X-Google-Smtp-Source: AK7set+NQnSKYe8rjJOnq8VGzJNvTIqjYGfSG9K3yeXxMJf6U4NYDvg9R2U3W1W0s4+0B9RWCEeMgA== X-Received: by 2002:a17:90a:e7cc:b0:237:c52f:a54d with SMTP id kb12-20020a17090ae7cc00b00237c52fa54dmr2618477pjb.21.1679052794296; Fri, 17 Mar 2023 04:33:14 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.33.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:33:14 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 08/11] misc: pci_endpoint_test: Support a test of continuous transfer Date: Fri, 17 Mar 2023 20:32:35 +0900 Message-Id: <20230317113238.142970-9-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add a `count` parameter that indicates a number of transfer continuously in a test. Buffers for the test will be allocated with a size equal to size * count, and passed address of the buffer to epf-test. Signed-off-by: Shunsuke Mie --- drivers/misc/pci_endpoint_test.c | 60 +++++++++++++++++--------------- include/uapi/linux/pcitest.h | 1 + 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/drivers/misc/pci_endpoint_test.c b/drivers/misc/pci_endpoint_t= est.c index d4a42e9ab86a..a49303f8c987 100644 --- a/drivers/misc/pci_endpoint_test.c +++ b/drivers/misc/pci_endpoint_test.c @@ -302,7 +302,7 @@ static int pci_endpoint_test_validate_xfer_params(struc= t device *dev, return -EINVAL; } =20 - if (param->size > SIZE_MAX - alignment) { + if (param->size * param->count > SIZE_MAX - alignment) { dev_dbg(dev, "Maximum transfer data size exceeded\n"); return -EINVAL; } @@ -323,7 +323,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_= test *test, void *src_addr; void *dst_addr; u32 flags =3D 0; - size_t size; + size_t xfer_size; dma_addr_t src_phys_addr; dma_addr_t dst_phys_addr; struct pci_dev *pdev =3D test->pdev; @@ -349,21 +349,22 @@ static bool pci_endpoint_test_copy(struct pci_endpoin= t_test *test, if (err) return false; =20 - size =3D param.size; + xfer_size =3D param.size * param.count; =20 if (param.flags & PCITEST_FLAGS_USE_DMA) flags |=3D FLAG_USE_DMA; =20 - orig_src_addr =3D kzalloc(size + alignment, GFP_KERNEL); + + orig_src_addr =3D kzalloc(xfer_size + alignment, GFP_KERNEL); if (!orig_src_addr) { dev_err(dev, "Failed to allocate source buffer\n"); ret =3D false; goto err; } =20 - get_random_bytes(orig_src_addr, size + alignment); + get_random_bytes(orig_src_addr, xfer_size + alignment); orig_src_phys_addr =3D dma_map_single(dev, orig_src_addr, - size + alignment, DMA_TO_DEVICE); + xfer_size + alignment, DMA_TO_DEVICE); if (dma_mapping_error(dev, orig_src_phys_addr)) { dev_err(dev, "failed to map source buffer address\n"); ret =3D false; @@ -385,9 +386,9 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_= test *test, pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_UPPER_SRC_ADDR, upper_32_bits(src_phys_addr)); =20 - src_crc32 =3D crc32_le(~0, src_addr, size); + src_crc32 =3D crc32_le(~0, src_addr, xfer_size); =20 - orig_dst_addr =3D kzalloc(size + alignment, GFP_KERNEL); + orig_dst_addr =3D kzalloc(xfer_size + alignment, GFP_KERNEL); if (!orig_dst_addr) { dev_err(dev, "Failed to allocate destination address\n"); ret =3D false; @@ -395,7 +396,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_= test *test, } =20 orig_dst_phys_addr =3D dma_map_single(dev, orig_dst_addr, - size + alignment, DMA_FROM_DEVICE); + xfer_size + alignment, DMA_FROM_DEVICE); if (dma_mapping_error(dev, orig_dst_phys_addr)) { dev_err(dev, "failed to map destination buffer address\n"); ret =3D false; @@ -417,7 +418,8 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_= test *test, upper_32_bits(dst_phys_addr)); =20 pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, - size); + param.size); + pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_COUNT, param.count); =20 pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_FLAGS, flags); pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_IRQ_TYPE, irq_type); @@ -427,10 +429,10 @@ static bool pci_endpoint_test_copy(struct pci_endpoin= t_test *test, =20 wait_for_completion(&test->irq_raised); =20 - dma_unmap_single(dev, orig_dst_phys_addr, size + alignment, + dma_unmap_single(dev, orig_dst_phys_addr, xfer_size + alignment, DMA_FROM_DEVICE); =20 - dst_crc32 =3D crc32_le(~0, dst_addr, size); + dst_crc32 =3D crc32_le(~0, dst_addr, xfer_size); if (dst_crc32 =3D=3D src_crc32) ret =3D true; =20 @@ -438,7 +440,7 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_= test *test, kfree(orig_dst_addr); =20 err_dst_addr: - dma_unmap_single(dev, orig_src_phys_addr, size + alignment, + dma_unmap_single(dev, orig_src_phys_addr, xfer_size + alignment, DMA_TO_DEVICE); =20 err_src_phys_addr: @@ -464,7 +466,7 @@ static bool pci_endpoint_test_write(struct pci_endpoint= _test *test, size_t offset; size_t alignment =3D test->alignment; int irq_type =3D test->irq_type; - size_t size; + size_t xfer_size; u32 crc32; int err; =20 @@ -478,21 +480,21 @@ static bool pci_endpoint_test_write(struct pci_endpoi= nt_test *test, if (err) return false; =20 - size =3D param.size; + xfer_size =3D param.size * param.count; =20 if (param.flags & PCITEST_FLAGS_USE_DMA) flags |=3D FLAG_USE_DMA; =20 - orig_addr =3D kzalloc(size + alignment, GFP_KERNEL); + orig_addr =3D kzalloc(xfer_size + alignment, GFP_KERNEL); if (!orig_addr) { dev_err(dev, "Failed to allocate address\n"); ret =3D false; goto err; } =20 - get_random_bytes(orig_addr, size + alignment); + get_random_bytes(orig_addr, xfer_size + alignment); =20 - orig_phys_addr =3D dma_map_single(dev, orig_addr, size + alignment, + orig_phys_addr =3D dma_map_single(dev, orig_addr, xfer_size + alignment, DMA_TO_DEVICE); if (dma_mapping_error(dev, orig_phys_addr)) { dev_err(dev, "failed to map source buffer address\n"); @@ -509,7 +511,7 @@ static bool pci_endpoint_test_write(struct pci_endpoint= _test *test, addr =3D orig_addr; } =20 - crc32 =3D crc32_le(~0, addr, size); + crc32 =3D crc32_le(~0, addr, xfer_size); pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_CHECKSUM, crc32); =20 @@ -518,7 +520,8 @@ static bool pci_endpoint_test_write(struct pci_endpoint= _test *test, pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_UPPER_SRC_ADDR, upper_32_bits(phys_addr)); =20 - pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, size); + pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, param.size); + pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_COUNT, param.count); =20 pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_FLAGS, flags); pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_IRQ_TYPE, irq_type); @@ -532,7 +535,7 @@ static bool pci_endpoint_test_write(struct pci_endpoint= _test *test, if (reg & STATUS_READ_SUCCESS) ret =3D true; =20 - dma_unmap_single(dev, orig_phys_addr, size + alignment, + dma_unmap_single(dev, orig_phys_addr, xfer_size + alignment, DMA_TO_DEVICE); =20 err_phys_addr: @@ -548,7 +551,7 @@ static bool pci_endpoint_test_read(struct pci_endpoint_= test *test, struct pci_endpoint_test_xfer_param param; bool ret =3D false; u32 flags =3D 0; - size_t size; + size_t xfer_size; void *addr; dma_addr_t phys_addr; struct pci_dev *pdev =3D test->pdev; @@ -571,19 +574,19 @@ static bool pci_endpoint_test_read(struct pci_endpoin= t_test *test, if (err) return false; =20 - size =3D param.size; + xfer_size =3D param.size * param.count; =20 if (param.flags & PCITEST_FLAGS_USE_DMA) flags |=3D FLAG_USE_DMA; =20 - orig_addr =3D kzalloc(size + alignment, GFP_KERNEL); + orig_addr =3D kzalloc(xfer_size + alignment, GFP_KERNEL); if (!orig_addr) { dev_err(dev, "Failed to allocate destination address\n"); ret =3D false; goto err; } =20 - orig_phys_addr =3D dma_map_single(dev, orig_addr, size + alignment, + orig_phys_addr =3D dma_map_single(dev, orig_addr, xfer_size + alignment, DMA_FROM_DEVICE); if (dma_mapping_error(dev, orig_phys_addr)) { dev_err(dev, "failed to map source buffer address\n"); @@ -605,7 +608,8 @@ static bool pci_endpoint_test_read(struct pci_endpoint_= test *test, pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_UPPER_DST_ADDR, upper_32_bits(phys_addr)); =20 - pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, size); + pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_SIZE, param.size); + pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_COUNT, param.count); =20 pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_FLAGS, flags); pci_endpoint_test_writel(test, PCI_ENDPOINT_TEST_IRQ_TYPE, irq_type); @@ -615,10 +619,10 @@ static bool pci_endpoint_test_read(struct pci_endpoin= t_test *test, =20 wait_for_completion(&test->irq_raised); =20 - dma_unmap_single(dev, orig_phys_addr, size + alignment, + dma_unmap_single(dev, orig_phys_addr, xfer_size + alignment, DMA_FROM_DEVICE); =20 - crc32 =3D crc32_le(~0, addr, size); + crc32 =3D crc32_le(~0, addr, xfer_size); if (crc32 =3D=3D pci_endpoint_test_readl(test, PCI_ENDPOINT_TEST_CHECKSUM= )) ret =3D true; =20 diff --git a/include/uapi/linux/pcitest.h b/include/uapi/linux/pcitest.h index f9c1af8d141b..8f05df4f95a6 100644 --- a/include/uapi/linux/pcitest.h +++ b/include/uapi/linux/pcitest.h @@ -25,6 +25,7 @@ =20 struct pci_endpoint_test_xfer_param { unsigned long size; + unsigned long count; unsigned char flags; }; =20 --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 B4D8BC74A5B for ; Fri, 17 Mar 2023 11:34:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229708AbjCQLeD (ORCPT ); Fri, 17 Mar 2023 07:34:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50800 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230102AbjCQLeA (ORCPT ); Fri, 17 Mar 2023 07:34:00 -0400 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6910BA8C55 for ; Fri, 17 Mar 2023 04:33:18 -0700 (PDT) Received: by mail-pj1-x1032.google.com with SMTP id f6-20020a17090ac28600b0023b9bf9eb63so4861236pjt.5 for ; Fri, 17 Mar 2023 04:33:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=znKfKtHV6TgFWLrDIG0H6CwhrMa6Sg0ibY+beHEykvU=; b=ueqNZvZn+HPM/j87SWRqQzkqDAM75u9n1eh0Ej8ZqQ5w4ZsnWheJsDzwp60Jtezhyo OC4CifyjKZYzPQM7wNV4Lez3j5u55SR2ZzclpJBDyp0CYKTJ2SwQXtWvlWj2cvmdY97a +STY2TuVveQdjgZTYR1ozzT1wSJccym7hxbInqTZlbtbmTDETsP6cnPm7y4Z8BH/WsTo n85euSBP3Bf1kLhUjXNKrY9E3kX0IqwZIP1yui7quTzz4weWt/s2YF0Y86AITyuz8EuJ at6v903i3AEidzNB3kh0mHbQHIBiDUF6bp2xZE/poJuVJBHDeeaZukQHOhzD6JZHJmDH t7uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=znKfKtHV6TgFWLrDIG0H6CwhrMa6Sg0ibY+beHEykvU=; b=Jc1VRqaGjQTlhQpFp4yITSXcokloameEpgSYEFWpbw1VCvDdSofLav5H0yVu0xefmo tQ66ppWt9w+51fN1q6+JMZURJu5DMxpyuOwHY0fGv7RUV5mIKMBt+1aZSidfrXYNPGn3 LRGi7PI+i8PiXSh61F4Aeq167LtR+tLsoqvYGtfrijpacYsuURMkyZ+19HzSRhmz+rpO 7t7q1ylnUVLLi3OJFrsce2TM6BQD9hHvPEJP5pEA6mFaqadyslcTqOehn57MPuShDS9s uB4tRn+xS3BcwGiDFTx9DaM77yCH3Zvh444zH5+9g1s/AQA/jupZGVRd1FtDAV2PsLtH hxdA== X-Gm-Message-State: AO0yUKU1Dm0k5dbSNPMqod6MSSSxklpVAMOHP6URYhVXoMO+nZKkyfRs VNauRUfkXKnq0nh4JRhSHKP4dA== X-Google-Smtp-Source: AK7set/LgrS1REaYSHbX7wy9zHzuHqlQGfTkMV7xpn0Bgj4jZ+J0GnfpGtRwL4MisMzUmi3zDFRDKg== X-Received: by 2002:a17:90b:17cb:b0:23d:3057:12a3 with SMTP id me11-20020a17090b17cb00b0023d305712a3mr7729422pjb.27.1679052797846; Fri, 17 Mar 2023 04:33:17 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.33.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:33:17 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 09/11] tools: PCI: Add 'C' option to support continuous transfer Date: Fri, 17 Mar 2023 20:32:36 +0900 Message-Id: <20230317113238.142970-10-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Add a new command line option 'C' to specify the number of transfers to perform continuously. This option helps to detect problem of DMAC in DMA transfers. By default, the number is set to 1. Signed-off-by: Shunsuke Mie --- tools/pci/pcitest.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/pci/pcitest.c b/tools/pci/pcitest.c index 441b54234635..a66b28e1e65e 100644 --- a/tools/pci/pcitest.c +++ b/tools/pci/pcitest.c @@ -35,6 +35,7 @@ struct pci_test { bool write; bool copy; unsigned long size; + unsigned long count; bool use_dma; }; =20 @@ -115,6 +116,7 @@ static int run_test(struct pci_test *test) =20 if (test->write) { param.size =3D test->size; + param.count =3D test->count; if (test->use_dma) param.flags =3D PCITEST_FLAGS_USE_DMA; ret =3D ioctl(fd, PCITEST_WRITE, ¶m); @@ -127,6 +129,7 @@ static int run_test(struct pci_test *test) =20 if (test->read) { param.size =3D test->size; + param.count =3D test->count; if (test->use_dma) param.flags =3D PCITEST_FLAGS_USE_DMA; ret =3D ioctl(fd, PCITEST_READ, ¶m); @@ -139,6 +142,7 @@ static int run_test(struct pci_test *test) =20 if (test->copy) { param.size =3D test->size; + param.count =3D test->count; if (test->use_dma) param.flags =3D PCITEST_FLAGS_USE_DMA; ret =3D ioctl(fd, PCITEST_COPY, ¶m); @@ -171,10 +175,13 @@ int main(int argc, char **argv) /* set default size as 100KB */ test->size =3D 0x19000; =20 + /* set default transfer count */ + test->count =3D 1; + /* set default endpoint device */ test->device =3D "/dev/pci-endpoint-test.0"; =20 - while ((c =3D getopt(argc, argv, "D:b:m:x:i:deIlhrwcs:")) !=3D EOF) + while ((c =3D getopt(argc, argv, "D:b:m:x:i:deIlhrwcs:C:")) !=3D EOF) switch (c) { case 'D': test->device =3D optarg; @@ -221,6 +228,9 @@ int main(int argc, char **argv) case 's': test->size =3D strtoul(optarg, NULL, 0); continue; + case 'C': + test->count =3D strtoul(optarg, NULL, 0); + continue; case 'd': test->use_dma =3D true; continue; @@ -243,6 +253,7 @@ int main(int argc, char **argv) "\t-w Write buffer test\n" "\t-c Copy buffer test\n" "\t-s Size of buffer {default: 100KB}\n" + "\t-C Number of The continuous data transfers {default: 1}\n" "\t-h Print this help message\n", argv[0]); return -EINVAL; --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 E9CECC7618B for ; Fri, 17 Mar 2023 11:34:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230102AbjCQLeK (ORCPT ); Fri, 17 Mar 2023 07:34:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51048 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230110AbjCQLeG (ORCPT ); Fri, 17 Mar 2023 07:34:06 -0400 Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF6569B2CD for ; Fri, 17 Mar 2023 04:33:24 -0700 (PDT) Received: by mail-pj1-x102e.google.com with SMTP id a16so428533pjs.4 for ; Fri, 17 Mar 2023 04:33:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052801; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dEWvzeZcqK871MfRmlZTSC0+Rvvt2fdWWI9+tB+ygs8=; b=A9d6Me/U+38g8tYFkHJboHIB24mipqPLRwBsFdf8QUZKGyqMVI3+7nJy7pjnKEW1cz 7tyAc9Ar6ITDWVM3La5oW1UclxYpTBwGApriRVy/0QPOn9vPXrbBuLzv0CjvsznaqOPB zIz9Z2KSkNrX7wt/LUthw8aR8Xpib389ogzxBC99Jq41y5+GzBO0aw6O52qtv18dh4wO nKg6MOih323wL5HenFkvYjNokMPR/aZPQwe2+zKFM/XHWhbwKtkj7XM7JYMIRSzlxV14 5EIKlT43jK7fnSN/cOFw2Hhtjpr3T2BdAOFqX7R/F+qzwjGTOHmcMWLXs/kp9ctvbqJj BDnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052801; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dEWvzeZcqK871MfRmlZTSC0+Rvvt2fdWWI9+tB+ygs8=; b=bFOHZ0nDDcq8HAHnG2Bt296eCHcYb9qbQ4OJBoPS613hXhMrDVJz+kugyfVwsPZWkU jkkBZJ8CrMAqb7kR3+NxmmLCxACRmKJKphhSu4V5Bi6Lrw9ESLdzG+K05enFzQljEVfY tspVin36gc+gfNTc7ToGi8rzpn1sCigAyYDSptL+4HbDFP/AdUvgllW3IZQeAL2VdQcG BROx86luXzyYPKD0kRYPkvZXVGvxPobBdk1y7KRmplZofqFzyTxKQzgaXr78jRNFEDVG vfF71Y2OdncQQq1fU6V77C6wiMHUHS9twGm/OA6Qi4aOkkVbQ/TIyN2tQiMfXTu/JXNp +8yg== X-Gm-Message-State: AO0yUKXhJPJPultJU6I8BX6unX0r7sSzgMq9hlIsGw3KutnipLFFXOT2 +TwzrJ6uFtxLQN9+wXSHNJfoZg== X-Google-Smtp-Source: AK7set+TPpYwApi7RqjbM4INqbH8WoK4AaTlrq4ktuIO2IWD/jWG8Ua248P+wQDOKsbMN7p5EOdeRw== X-Received: by 2002:a17:90b:17cb:b0:236:73d5:82cf with SMTP id me11-20020a17090b17cb00b0023673d582cfmr7715034pjb.9.1679052801454; Fri, 17 Mar 2023 04:33:21 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.33.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:33:21 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 10/11] dmaengine: dw-edma: Fix to change for continuous transfer Date: Fri, 17 Mar 2023 20:32:37 +0900 Message-Id: <20230317113238.142970-11-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The dw-edma driver stops after processing a DMA request even if a request remains in the issued queue, which is not the expected behavior. The DMA engine API requires continuous processing. Add a trigger to start after one processing finished if there are requests remain. Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver") Signed-off-by: Shunsuke Mie --- drivers/dma/dw-edma/dw-edma-core.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index 1906a836f0aa..c527af00ff4e 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -181,7 +181,7 @@ static void vchan_free_desc(struct virt_dma_desc *vdesc) dw_edma_free_desc(vd2dw_edma_desc(vdesc)); } =20 -static void dw_edma_start_transfer(struct dw_edma_chan *chan) +static int dw_edma_start_transfer(struct dw_edma_chan *chan) { struct dw_edma_chunk *child; struct dw_edma_desc *desc; @@ -189,16 +189,16 @@ static void dw_edma_start_transfer(struct dw_edma_cha= n *chan) =20 vd =3D vchan_next_desc(&chan->vc); if (!vd) - return; + return 0; =20 desc =3D vd2dw_edma_desc(vd); if (!desc) - return; + return 0; =20 child =3D list_first_entry_or_null(&desc->chunk->list, struct dw_edma_chunk, list); if (!child) - return; + return 0; =20 dw_edma_v0_core_start(child, !desc->xfer_sz); desc->xfer_sz +=3D child->ll_region.sz; @@ -206,6 +206,8 @@ static void dw_edma_start_transfer(struct dw_edma_chan = *chan) list_del(&child->list); kfree(child); desc->chunks_alloc--; + + return 1; } =20 static void dw_edma_device_caps(struct dma_chan *dchan, @@ -602,14 +604,17 @@ static void dw_edma_done_interrupt(struct dw_edma_cha= n *chan) switch (chan->request) { case EDMA_REQ_NONE: desc =3D vd2dw_edma_desc(vd); - if (desc->chunks_alloc) { - chan->status =3D EDMA_ST_BUSY; - dw_edma_start_transfer(chan); - } else { + if (!desc->chunks_alloc) { list_del(&vd->node); vchan_cookie_complete(vd); - chan->status =3D EDMA_ST_IDLE; } + + /* Continue to transfer in case of there are rest chunks, or issued + * requests remain. + */ + chan->status =3D EDMA_ST_BUSY; + if (!dw_edma_start_transfer(chan)) + chan->status =3D EDMA_ST_IDLE; break; =20 case EDMA_REQ_STOP: --=20 2.25.1 From nobody Tue Feb 10 20:06:05 2026 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 9151CC6FD1D for ; Fri, 17 Mar 2023 11:34:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229659AbjCQLeW (ORCPT ); Fri, 17 Mar 2023 07:34:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51274 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229608AbjCQLeM (ORCPT ); Fri, 17 Mar 2023 07:34:12 -0400 Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3665EA8EAA for ; Fri, 17 Mar 2023 04:33:36 -0700 (PDT) Received: by mail-pj1-x102c.google.com with SMTP id qe8-20020a17090b4f8800b0023f07253a2cso4871852pjb.3 for ; Fri, 17 Mar 2023 04:33:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=igel-co-jp.20210112.gappssmtp.com; s=20210112; t=1679052805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UBJ3jXvxXCld7rCbYIUA76P7q/tR6ahC8o8afEyFSeg=; b=SSqnByrqrr+3VcUDTYBw+VNwigK0LKtbr3MEmUWTApLPk2vh3j2tzaOsn1hq0KcVR6 6aivcKsqqMiMH9mvfQuEqYm0O3UlMzJZljBHtbwxrnu6mnC1tGsnMLZbXPpgxD9p+Ffp nYOXAWx+D3hwVjMftozRbucnIv5txD2FWVxIdqrst32Fi0o9zO5GKthRuetbfB/fVbgo WBNH7cRghUYZPLtkP27Cl7zlIJ9zANuuY6QLfMq/5gAdWra9LpfVDIrVEMATdFii7LhJ U4BrqaJR9u41RGSTvx7+bF/VSMvwLLvXVgrLa2caxXfPMckKLRNMsZmAoOWbBPH8pAeW mvtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679052805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UBJ3jXvxXCld7rCbYIUA76P7q/tR6ahC8o8afEyFSeg=; b=t1dOx9O8+Ih0xoylHgvXQULVPhBe01CICr2vSAopnzYEt6A1g5xbC0aonH9O8+3Rb4 P29wxlZnE+tLp70oxd37MvnRnzUSWdTymEity0UdsWy/H2dnDPCatKHL0y4S5YHB8ino GgtHyWOtaEoLOXvNA7i4TTAo4nuDAs/7BrfYi2qF/1j5Re3lTIDLW4tN/w6fu6dpgBYJ A9Et99sEPiPEAah8DU3PnlNyOxogX71LMCyQoefnq/5DpME3WFIufPxcSlEtrzb1QsVO LhEwpScinVIzQYygjJoENeIS9ejeHhXxGbla2mV3auY0ar/9xQgLiKgEGvcyNI6yhwJr k4MA== X-Gm-Message-State: AO0yUKUe6j0pUbAtncE6NdwYIcO8UNTcCPwFH8NPZM4CWPdOvE7Hzaq9 HwEJ/wkUFF8YTJMu+RxvaVdcdA== X-Google-Smtp-Source: AK7set8mw4eu8SWp80RS17+P5NFx2EppFu4x7YobwRde2GI2yhM4sarU4Jk2ey0NmwtFezyvF659YQ== X-Received: by 2002:a17:90b:1b07:b0:23f:5247:3334 with SMTP id nu7-20020a17090b1b0700b0023f52473334mr3353989pjb.19.1679052804978; Fri, 17 Mar 2023 04:33:24 -0700 (PDT) Received: from tyrell.hq.igel.co.jp (napt.igel.co.jp. [219.106.231.132]) by smtp.gmail.com with ESMTPSA id e3-20020a17090a818300b00233aacab89esm1182904pjn.48.2023.03.17.04.33.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 17 Mar 2023 04:33:24 -0700 (PDT) From: Shunsuke Mie To: Gustavo Pimentel Cc: Vinod Koul , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Manivannan Sadhasivam , Kishon Vijay Abraham I , Arnd Bergmann , Greg Kroah-Hartman , Bjorn Helgaas , Shunsuke Mie , Kunihiko Hayashi , Yoshihiro Shimoda , Frank Li , linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, linux-pci@vger.kernel.org Subject: [RFC PATCH 11/11] dmaengine: dw-edma: Fix to enable to issue dma request on DMA processing Date: Fri, 17 Mar 2023 20:32:38 +0900 Message-Id: <20230317113238.142970-12-mie@igel.co.jp> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230317113238.142970-1-mie@igel.co.jp> References: <20230317113238.142970-1-mie@igel.co.jp> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The issue_pending request is ignored while driver is processing a DMA request. Fix to issue the pending requests on any dma channel status. Fixes: e63d79d1ffcd ("dmaengine: Add Synopsys eDMA IP core driver") Signed-off-by: Shunsuke Mie --- drivers/dma/dw-edma/dw-edma-core.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/dma/dw-edma/dw-edma-core.c b/drivers/dma/dw-edma/dw-ed= ma-core.c index c527af00ff4e..430f9ee0d9e8 100644 --- a/drivers/dma/dw-edma/dw-edma-core.c +++ b/drivers/dma/dw-edma/dw-edma-core.c @@ -308,9 +308,12 @@ static void dw_edma_device_issue_pending(struct dma_ch= an *dchan) struct dw_edma_chan *chan =3D dchan2dw_edma_chan(dchan); unsigned long flags; =20 + if (!chan->configured) + return; + spin_lock_irqsave(&chan->vc.lock, flags); - if (chan->configured && chan->request =3D=3D EDMA_REQ_NONE && - chan->status =3D=3D EDMA_ST_IDLE && vchan_issue_pending(&chan->vc)) { + if (vchan_issue_pending(&chan->vc) && chan->request =3D=3D EDMA_REQ_NONE = && + chan->status =3D=3D EDMA_ST_IDLE) { chan->status =3D EDMA_ST_BUSY; dw_edma_start_transfer(chan); } --=20 2.25.1