From nobody Sat May 4 00:44:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631452207681892.7891852050228; Sun, 12 Sep 2021 06:10:07 -0700 (PDT) Received: from localhost ([::1]:58990 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mPPFG-0000gA-N0 for importer@patchew.org; Sun, 12 Sep 2021 09:10:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47250) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPPBT-0002wY-Tr for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:14 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]:46780) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mPPBR-0005NB-Da for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:11 -0400 Received: by mail-pf1-x434.google.com with SMTP id y17so6277177pfl.13 for ; Sun, 12 Sep 2021 06:06:09 -0700 (PDT) Received: from localhost.localdomain (123-193-74-252.dynamic.kbronet.com.tw. [123.193.74.252]) by smtp.gmail.com with ESMTPSA id qe17sm3849565pjb.39.2021.09.12.06.06.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Sep 2021 06:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FTkGFyg/YtaZMgVSbfKunIm+4d8G4FPBLUSS439AHQY=; b=MRSd9EOmcrNGVpV26K6zTpvz/57Ssg+tvJt/nQrhD0jm++ksg5PLTGGfIn2Mo4hUK0 yywuRuYJoDeWYSbPeMI+d0pNMuW6Q9PMGsyCcA6uLxqRaqv72gGloWEF3mwBGVc57yMJ QlgKfVlD8ryenRoQPIc5pa78XS3GpvsJCcWfHtu3o8+z+ah+p5WF16E3IVrxaWU0yZta rH+OOAyBJPJ8xwbfiG/qBUoAngNrMuynPjpknqS5eyJuKorbFfYe5eioCBl7xt2mjm/B xgZTHJouBU3DJoCOllgIc64YfjfwkIS9BIcRdMA8ibRplZJ6zGaoOzmkowZKgO7WGvq4 d78Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FTkGFyg/YtaZMgVSbfKunIm+4d8G4FPBLUSS439AHQY=; b=HO36kPBYX6hW0nVNx+fEMTkNjx1Q8M5bOu+Kj2NzhO6MnkLxkk6TszHvUNVXc+FKbo CpqgVrB4qVhNCDAUWPiMvBpgpTeV6Cz2JPaH+HkLVM8UvQI8KhHYRxLlFOsIk8gqm5UK MLB14KCo4HmgubQ+hNZbp7mhwFU23M/k+UJBad4fE/RDXWkDQ8dfmg2Zyrl+CulNKJ5c mldIP6cxCdD+Bsa1aR3YyX+ATICorC8dJasba3dAqKDGbA1+Bk3Vg1SnQKqOwtXj8Hju RlLjdf7MI+3RhrO68uRQg7tPGQRbcNBY9Y1PMGmtAFGKY+rZSGPejH4mgtsPfKssa80k Dm/w== X-Gm-Message-State: AOAM5311tifX6y6DrC9KsFhY4wvUaaZVrG7FkDUE6Or2/A7WIYWaz14b FY2KXb9Tql6oj6BIVPKClostTAwVObJXi5Ev X-Google-Smtp-Source: ABdhPJyhh4lSw+pdpuWXNIWoy6GXmHOdNYzV0CXm4P0rxf3HGFi4D2OubYJMTJoZPbwzpX4W3Q/eiQ== X-Received: by 2002:a62:e117:0:b0:416:3900:6220 with SMTP id q23-20020a62e117000000b0041639006220mr6457920pfh.24.1631451967879; Sun, 12 Sep 2021 06:06:07 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH RESEND v2 1/4] hw/dma: sifive_pdma: reset Next* registers when Control.claim is set Date: Sun, 12 Sep 2021 21:05:45 +0800 Message-Id: <20210912130553.179501-2-frank.chang@sifive.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210912130553.179501-1-frank.chang@sifive.com> References: <20210912130553.179501-1-frank.chang@sifive.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=frank.chang@sifive.com; helo=mail-pf1-x434.google.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Frank Chang , Bin Meng , Max Hsu , Palmer Dabbelt , Alistair Francis , Bin Meng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631452208457100001 Content-Type: text/plain; charset="utf-8" From: Frank Chang Setting Control.claim clears all of the chanel's Next registers. This is effective only when Control.claim is set from 0 to 1. Signed-off-by: Frank Chang Tested-by: Max Hsu Reviewed-by: Bin Meng Tested-by: Bin Meng --- hw/dma/sifive_pdma.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index 9b2ac2017d9..d92e27dfdc4 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -54,6 +54,13 @@ #define DMA_EXEC_DST 0x110 #define DMA_EXEC_SRC 0x118 =20 +/* + * FU540/FU740 docs are incorrect with NextConfig.wsize/rsize reset values. + * The reset values tested on Unleashed/Unmatched boards are 6 instead of = 0. + */ +#define CONFIG_WRSZ_DEFAULT 6 +#define CONFIG_RDSZ_DEFAULT 6 + enum dma_chan_state { DMA_CHAN_STATE_IDLE, DMA_CHAN_STATE_STARTED, @@ -221,6 +228,7 @@ static void sifive_pdma_write(void *opaque, hwaddr offs= et, { SiFivePDMAState *s =3D opaque; int ch =3D SIFIVE_PDMA_CHAN_NO(offset); + bool claimed; =20 if (ch >=3D SIFIVE_PDMA_CHANS) { qemu_log_mask(LOG_GUEST_ERROR, "%s: Invalid channel no %d\n", @@ -231,6 +239,17 @@ static void sifive_pdma_write(void *opaque, hwaddr off= set, offset &=3D 0xfff; switch (offset) { case DMA_CONTROL: + claimed =3D !!s->chan[ch].control & CONTROL_CLAIM; + + if (!claimed && (value & CONTROL_CLAIM)) { + /* reset Next* registers */ + s->chan[ch].next_config =3D (CONFIG_RDSZ_DEFAULT << CONFIG_RDS= Z_SHIFT) | + (CONFIG_WRSZ_DEFAULT << CONFIG_WRSZ_= SHIFT); + s->chan[ch].next_bytes =3D 0; + s->chan[ch].next_dst =3D 0; + s->chan[ch].next_src =3D 0; + } + s->chan[ch].control =3D value; =20 if (value & CONTROL_RUN) { --=20 2.25.1 From nobody Sat May 4 00:44:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1631452399243948.6188527186156; Sun, 12 Sep 2021 06:13:19 -0700 (PDT) Received: from localhost ([::1]:36522 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mPPIG-0004ZW-SL for importer@patchew.org; Sun, 12 Sep 2021 09:13:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47300) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPPBY-00033s-C4 for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:16 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]:33429) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mPPBW-0005Ow-8z for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:16 -0400 Received: by mail-pg1-x531.google.com with SMTP id u18so6768911pgf.0 for ; Sun, 12 Sep 2021 06:06:12 -0700 (PDT) Received: from localhost.localdomain (123-193-74-252.dynamic.kbronet.com.tw. [123.193.74.252]) by smtp.gmail.com with ESMTPSA id qe17sm3849565pjb.39.2021.09.12.06.06.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Sep 2021 06:06:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oHlfkVnmB566xqPvLmY6le/BJxWxcQU2xChDQj5zOog=; b=GssmL1jlJPVPp+Bzh2jICwuyo3b4DeShpvKnYJRe/RfzQgUBrA1AXaCVg3TKH0IqLM T2+R5JWX21/Vdl99sD8vZWnidiVzTcYN+i67oAePLCu4uKBbk4wlQO/aHEyVf84EcX0e SXm0bxdkUjjVIPzAZgxfnrkzRRbR2TrLTRKhmzaau/PQsM52Lhz35fPf9BTgPaEQ36tg udLX+JVdEzjz2hAYpcIBOGJrByQ7cXTOT/8vVT578MlxjROstwJakNg+7xP5OXBGfHDZ O+zbLo0mwXMJwVleQLPhcZvUecFj/fSjbOBW9AblTywkN4REaCLQ9t6QziWjHtJdoFpm w6eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oHlfkVnmB566xqPvLmY6le/BJxWxcQU2xChDQj5zOog=; b=ln2EEv04J9AYuPfvETYy1dfGrSuVUpsOTnCXZSvrZl7F8R7qKkyt8dxO9SzenauSad uDepEPlX+uuKnsLo3k0L0SuSNs4Eh9ZqsUJu3olERtnx5BsPhXm4KzrQQ5hgAflL9xFn pGibxq3AFMgUYPmqYpNty/0dCiherpQwub4oJM+ex1B7R0jNgCsi0R9jV+TsTjHChSd7 42MdtS8yPAukEjkdVgtic4Na3b5P1qHR/PC0qXcR043n+r/EyeZtGUaqJQL3EprWqQ6a jWckOh52vUGL6mHF755MdWZx4JuRHF6QCzI7qyuaSszn3Sr4rZMNcZ9C9m0NEQhchDGl dmAQ== X-Gm-Message-State: AOAM5308GlUe3npx08v8Ff1zCZgow7IUXZMKJ0pHdliAyrAXw/WJuIHO tnfB2ZqKRTGnrm1OIRESDIMJzALZO7pOKqEV X-Google-Smtp-Source: ABdhPJx6lVctQSSSnSqIl2UgnqI5tqb+sinsfbTC9qX6WGEI4zOqzHeQAhAOFnaSyeR+mGS1ZegnTA== X-Received: by 2002:a63:798f:: with SMTP id u137mr6579337pgc.321.1631451971289; Sun, 12 Sep 2021 06:06:11 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH RESEND v2 2/4] hw/dma: sifive_pdma: claim bit must be set before DMA transactions Date: Sun, 12 Sep 2021 21:05:46 +0800 Message-Id: <20210912130553.179501-3-frank.chang@sifive.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210912130553.179501-1-frank.chang@sifive.com> References: <20210912130553.179501-1-frank.chang@sifive.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::531; envelope-from=frank.chang@sifive.com; helo=mail-pg1-x531.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Frank Chang , Bin Meng , Max Hsu , Palmer Dabbelt , Alistair Francis , Bin Meng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631452400079100001 Content-Type: text/plain; charset="utf-8" From: Frank Chang Real PDMA must have Control.claim bit to be set before Control.run bit is set to start any DMA transactions. Otherwise nothing will be transferred. The following result is PDMA tested in U-Boot on Unmatched board: =3D> mw.l 0x3000000 0x0 <=3D Disclaim channel 0 (Channel 0 is not claimed) =3D> mw.l 0x3000004 0x55000000 <=3D wsize =3D rsize =3D 5 (2^= 5 =3D 32 bytes) =3D> mw.q 0x3000008 0x2 <=3D NextBytes =3D 2 =3D> mw.q 0x3000010 0x84000000 <=3D NextDestination =3D 0x840= 00000 =3D> mw.q 0x3000018 0x84001000 <=3D NextSource =3D 0x84001000 =3D> mw.l 0x84000000 0x87654321 <=3D Fill test data to dst =3D> mw.l 0x84001000 0x12345678 <=3D Fill test data to src =3D> md.l 0x84000000 1; md.l 0x84001000 1 <=3D Dump src/dst memory conte= nts 84000000: 87654321 !Ce. 84001000: 12345678 xV4. =3D> md.l 0x3000000 8 <=3D Dump PDMA status 03000000: 00000000 55000000 00000002 00000000 .......U........ 03000010: 84000000 00000000 84001000 00000000 ................ =3D> mw.l 0x3000000 0x3 <=3D Set channel 0 run and cla= im bits =3D> md.l 0x3000000 8 <=3D Dump PDMA status 03000000: 00000001 66000000 00000000 00000000 .......f........ 03000010: 00000000 00000000 00000000 00000000 ................ =3D> md.l 0x84000000 1; md.l 0x84001000 1 <=3D Dump src/dst memory conte= nts 84000000: 87654321 !Ce. 84001000: 12345678 xV4. Signed-off-by: Frank Chang Tested-by: Max Hsu Reviewed-by: Bin Meng Tested-by: Bin Meng --- hw/dma/sifive_pdma.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index d92e27dfdc4..a8ce3e6699a 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -252,6 +252,15 @@ static void sifive_pdma_write(void *opaque, hwaddr off= set, =20 s->chan[ch].control =3D value; =20 + /* + * If channel was not claimed before run bit is set, + * DMA won't run. + */ + if (!claimed) { + s->chan[ch].control &=3D ~CONTROL_RUN; + return; + } + if (value & CONTROL_RUN) { sifive_pdma_run(s, ch); } --=20 2.25.1 From nobody Sat May 4 00:44:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163145217572640.75766207241156; Sun, 12 Sep 2021 06:09:35 -0700 (PDT) Received: from localhost ([::1]:56546 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mPPEk-0007TP-Pp for importer@patchew.org; Sun, 12 Sep 2021 09:09:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47328) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPPBZ-00037i-TN for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:17 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]:37651) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mPPBY-0005RP-4Z for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:17 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 17so6733055pgp.4 for ; Sun, 12 Sep 2021 06:06:15 -0700 (PDT) Received: from localhost.localdomain (123-193-74-252.dynamic.kbronet.com.tw. [123.193.74.252]) by smtp.gmail.com with ESMTPSA id qe17sm3849565pjb.39.2021.09.12.06.06.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Sep 2021 06:06:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=JWfizEhB3tOuiDeD+/29bwrR367pDrjjWjMQQj6tggg=; b=FkX8g2UR+8OpoJz52jHrD8e0f/3Wk36rdKQjBTrOfqNTR0VMJeBpLrA5hGomrhag6Y tsFbkc+cdxeNZXLtrd6UliZBUG5xGldwIykiS6DOn8w/H1zYzGWNYl1FlL2uqISoGFH0 6QOi9e5O2qHN8kv/w64qNLldJvsVUUJ/txQB87i9M0n6CQmFoepn0C4M3/7bIdyPPtr6 OSwnMbwIZ9YQJnDUFTvy+osIYQ8c/1UV0SmASspY8ezbp+h1KDlvEPtOBb0kKt4NlTkk 6jiibeOSXq4ZH5ovl8HJlTpuxVHoAcnxdgXV1L7l0DU2vv6xhyaYCoY5dMK+VraDpvBD MkNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=JWfizEhB3tOuiDeD+/29bwrR367pDrjjWjMQQj6tggg=; b=04Npw8M30IP1h6W4q3QV7Coni+m7tjHJls7cXMMDGMB3djzQ1h6v8NDQouzGUptNgZ TV1naj8ZPGc/l/XbNaykd6UW65vAeSEh7ri1iAB4sG6x6NO91jJ1TDvPdELIgZIEd1Cr +VMXq5yVpYuseky3pHBGzqgxg96K5S+HruxVznj5hpFOS4z3GpbWwMhIOPjAcJSz2XqA VqCUp7Us02HVeIf0TtthV5FfLeuH6itLfLxdvYn/rqg2QBhNb2eVDfmpnXm0NWH1vhOj tBiDWJ2RPwUlANSWcbIgY0lWumbdZ1xa8Eo3Ox8Aku3NAIt+ZYFourAggtyO6h8v36tv oHGw== X-Gm-Message-State: AOAM533dzgBaWVivypP1xNhr9JCwgeLxxbxc+Movr3oSWkFWW2HnqerM ovhx1dwqbyWPSIbOICxJ6ea2fR3kByfts6yw X-Google-Smtp-Source: ABdhPJyp1QlUFIPZTYi8eL/TC/1hvmfW9jqIfR0xHW0P1Fj6dequbuDu1TZ6GhzGyRyx4FYa2sk1AQ== X-Received: by 2002:a63:555c:: with SMTP id f28mr6658519pgm.340.1631451974747; Sun, 12 Sep 2021 06:06:14 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH RESEND v2 3/4] hw/dma: sifive_pdma: allow non-multiple transaction size transactions Date: Sun, 12 Sep 2021 21:05:47 +0800 Message-Id: <20210912130553.179501-4-frank.chang@sifive.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210912130553.179501-1-frank.chang@sifive.com> References: <20210912130553.179501-1-frank.chang@sifive.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=frank.chang@sifive.com; helo=mail-pg1-x52f.google.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.2 / 5.0 requ) DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Frank Chang , Bin Meng , Green Wan , Max Hsu , Alistair Francis , Palmer Dabbelt , Bin Meng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631452178049100001 Content-Type: text/plain; charset="utf-8" From: Green Wan Real PDMA is able to deal with non-multiple transaction size transactions. The following result is PDMA tested in U-Boot on Unmatched board: =3D> mw.l 0x3000000 0x0 <=3D Disclaim channel 0 =3D> mw.l 0x3000000 0x1 <=3D Claim channel 0 =3D> mw.l 0x3000004 0x11000000 <=3D wsize =3D rsize =3D 1 (2^= 1 =3D 2 bytes) =3D> mw.q 0x3000008 0x3 <=3D NextBytes =3D 3 =3D> mw.q 0x3000010 0x84000000 <=3D NextDestination =3D 0x840= 00000 =3D> mw.q 0x3000018 0x84001000 <=3D NextSource =3D 0x84001000 =3D> mw.l 0x84000000 0x87654321 <=3D Fill test data to dst =3D> mw.l 0x84001000 0x12345678 <=3D Fill test data to src =3D> md.l 0x84000000 1; md.l 0x84001000 1 <=3D Dump src/dst memory conte= nts 84000000: 87654321 !Ce. 84001000: 12345678 xV4. =3D> md.l 0x3000000 8 <=3D Dump PDMA status 03000000: 00000001 11000000 00000003 00000000 ................ 03000010: 84000000 00000000 84001000 00000000 ................ =3D> mw.l 0x3000000 0x3 <=3D Set channel 0 run and cla= im bits =3D> md.l 0x3000000 8 <=3D Dump PDMA status 03000000: 40000001 11000000 00000003 00000000 ...@............ 03000010: 84000000 00000000 84001000 00000000 ................ =3D> md.l 0x84000000 1; md.l 0x84001000 1 <=3D Dump src/dst memory conte= nts 84000000: 87345678 xV4. 84001000: 12345678 xV4. Signed-off-by: Green Wan Reviewed-by: Frank Chang Tested-by: Max Hsu Reviewed-by: Bin Meng Tested-by: Bin Meng Signed-off-by: Frank Chang --- hw/dma/sifive_pdma.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index a8ce3e6699a..d7d2c53e97e 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -74,7 +74,7 @@ static void sifive_pdma_run(SiFivePDMAState *s, int ch) uint64_t dst =3D s->chan[ch].next_dst; uint64_t src =3D s->chan[ch].next_src; uint32_t config =3D s->chan[ch].next_config; - int wsize, rsize, size; + int wsize, rsize, size, remainder; uint8_t buf[64]; int n; =20 @@ -106,11 +106,7 @@ static void sifive_pdma_run(SiFivePDMAState *s, int ch) size =3D 6; } size =3D 1 << size; - - /* the bytes to transfer should be multiple of transaction size */ - if (bytes % size) { - goto error; - } + remainder =3D bytes % size; =20 /* indicate a DMA transfer is started */ s->chan[ch].state =3D DMA_CHAN_STATE_STARTED; @@ -131,6 +127,14 @@ static void sifive_pdma_run(SiFivePDMAState *s, int ch) s->chan[ch].exec_bytes -=3D size; } =20 + if (remainder) { + cpu_physical_memory_read(s->chan[ch].exec_src, buf, remainder); + cpu_physical_memory_write(s->chan[ch].exec_dst, buf, remainder); + s->chan[ch].exec_src +=3D remainder; + s->chan[ch].exec_dst +=3D remainder; + s->chan[ch].exec_bytes -=3D remainder; + } + /* indicate a DMA transfer is done */ s->chan[ch].state =3D DMA_CHAN_STATE_DONE; s->chan[ch].control &=3D ~CONTROL_RUN; --=20 2.25.1 From nobody Sat May 4 00:44:52 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 163145232060267.61435943041545; Sun, 12 Sep 2021 06:12:00 -0700 (PDT) Received: from localhost ([::1]:34190 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mPPH5-0002xV-Hh for importer@patchew.org; Sun, 12 Sep 2021 09:11:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:47362) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mPPBd-0003J3-If for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:21 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]:53992) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mPPBb-0005TI-Uv for qemu-devel@nongnu.org; Sun, 12 Sep 2021 09:06:21 -0400 Received: by mail-pj1-x102a.google.com with SMTP id j1so4425020pjv.3 for ; Sun, 12 Sep 2021 06:06:19 -0700 (PDT) Received: from localhost.localdomain (123-193-74-252.dynamic.kbronet.com.tw. [123.193.74.252]) by smtp.gmail.com with ESMTPSA id qe17sm3849565pjb.39.2021.09.12.06.06.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 12 Sep 2021 06:06:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5ng6bxLr/CEDfg4qWZ+9iIXZdvuZu2KqsMTpKiIZfBw=; b=WXuMXxssniiviagfWbxof8pU/TftIMBEUEFjgqd6gTRWwhgkNzVCkuLLPL45gEZiRo mi6tGDH86uS86farpunedI8nXq/pt6KMtrG3zBa+aAsypJvZTv0maPDcrrdpyE4PMjDX axjTuF4LQ9xaajg4CRjXqmPDyIzt3mHb43xPq+uwfrLfkZta77B3SY04i8LUYCMhmkXL hqXZu4yxUZAhGyNHrhtrxREbKx/nKwEgZbc5BlUFXsWPIrXUheQH0ehgi0TPTKPkd4FO +5hDs3pOdSAVxzOc7t9ffpgoK/Y7BBXQU9FJZJOjOr7rhJWfXZCP2Ne1/ImgoEg5Adkk gdVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5ng6bxLr/CEDfg4qWZ+9iIXZdvuZu2KqsMTpKiIZfBw=; b=H3HeVQc9ixcXXV5h0IKfban8vsJdYqV6cKDT5YYX/uqZW9QCQSkUstqupGhTRCNRYg mYs/XN+FWK3kulKBPAQ0k2MvwcnOzr0KQsRtxKSPz7YULa1AZQrRNb2mk5n7jvtb75qN lMCdTwuPi04XoJEsTyrklTMFf3kbZW9UiEDRF2NVmk6G9EE66nllaw3AsY2i8i9PtU7m jnlsW+J+rol2WjLXhNeqCHTNQvhz6aOeczz/vnISOrKniF3y+DSQ4+7tk64Wg3wer2b6 TcBxoC2OPtXMc0Vf8A8FTyPscfI7gZ6zBe/+DfhvIIKW1CfdKQTHHwoNoWditYMVsgjo eR9w== X-Gm-Message-State: AOAM532rZ5njLwPqFqPmK2vAAC7vTNhrNWu+vOOKKe0GeW7ujt7OVsem 5lZW+A8rOT2p9r9762wzxSZP7IzJBM6DCOwx X-Google-Smtp-Source: ABdhPJxyZEHUyCjB2amPdBkwIdfJWUslJoPsuf0+n3OUSjHtcuQVBIZFd/cp/fbiG6ZVriUHr2hC+g== X-Received: by 2002:a17:90a:294f:: with SMTP id x15mr6804915pjf.36.1631451978398; Sun, 12 Sep 2021 06:06:18 -0700 (PDT) From: frank.chang@sifive.com To: qemu-devel@nongnu.org, qemu-riscv@nongnu.org Subject: [PATCH RESEND v2 4/4] hw/dma: sifive_pdma: don't set Control.error if 0 bytes to transfer Date: Sun, 12 Sep 2021 21:05:48 +0800 Message-Id: <20210912130553.179501-5-frank.chang@sifive.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210912130553.179501-1-frank.chang@sifive.com> References: <20210912130553.179501-1-frank.chang@sifive.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=frank.chang@sifive.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Frank Chang , Bin Meng , Max Hsu , Palmer Dabbelt , Alistair Francis , Bin Meng Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1631452321696100001 Content-Type: text/plain; charset="utf-8" From: Frank Chang Real PDMA doesn't set Control.error if there are 0 bytes to be transferred. The DMA transfer is still success. The following result is PDMA tested in U-Boot on Unmatched board: =3D> mw.l 0x3000000 0x0 <=3D Disclaim channel 0 =3D> mw.l 0x3000000 0x1 <=3D Claim channel 0 =3D> mw.l 0x3000004 0x55000000 <=3D wsize =3D rsize =3D 5 (2^= 5 =3D 32 bytes) =3D> mw.q 0x3000008 0x0 <=3D NextBytes =3D 0 =3D> mw.q 0x3000010 0x84000000 <=3D NextDestination =3D 0x840= 00000 =3D> mw.q 0x3000018 0x84001000 <=3D NextSource =3D 0x84001000 =3D> mw.l 0x84000000 0x87654321 <=3D Fill test data to dst =3D> mw.l 0x84001000 0x12345678 <=3D Fill test data to src =3D> md.l 0x84000000 1; md.l 0x84001000 1 <=3D Dump src/dst memory conte= nts 84000000: 87654321 !Ce. 84001000: 12345678 xV4. =3D> md.l 0x3000000 8 <=3D Dump PDMA status 03000000: 00000001 55000000 00000000 00000000 .......U........ 03000010: 84000000 00000000 84001000 00000000 ................ =3D> mw.l 0x3000000 0x3 <=3D Set channel 0 run and cla= im bits =3D> md.l 0x3000000 8 <=3D Dump PDMA status 03000000: 40000001 55000000 00000000 00000000 ...@...U........ 03000010: 84000000 00000000 84001000 00000000 ................ =3D> md.l 0x84000000 1; md.l 0x84001000 1 <=3D Dump src/dst memory conte= nts 84000000: 87654321 !Ce. 84001000: 12345678 xV4. Signed-off-by: Frank Chang Tested-by: Max Hsu Reviewed-by: Bin Meng Tested-by: Bin Meng --- hw/dma/sifive_pdma.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/hw/dma/sifive_pdma.c b/hw/dma/sifive_pdma.c index d7d2c53e97e..b4fd40573a5 100644 --- a/hw/dma/sifive_pdma.c +++ b/hw/dma/sifive_pdma.c @@ -80,7 +80,7 @@ static void sifive_pdma_run(SiFivePDMAState *s, int ch) =20 /* do nothing if bytes to transfer is zero */ if (!bytes) { - goto error; + goto done; } =20 /* @@ -135,11 +135,6 @@ static void sifive_pdma_run(SiFivePDMAState *s, int ch) s->chan[ch].exec_bytes -=3D remainder; } =20 - /* indicate a DMA transfer is done */ - s->chan[ch].state =3D DMA_CHAN_STATE_DONE; - s->chan[ch].control &=3D ~CONTROL_RUN; - s->chan[ch].control |=3D CONTROL_DONE; - /* reload exec_ registers if repeat is required */ if (s->chan[ch].next_config & CONFIG_REPEAT) { s->chan[ch].exec_bytes =3D bytes; @@ -147,6 +142,11 @@ static void sifive_pdma_run(SiFivePDMAState *s, int ch) s->chan[ch].exec_src =3D src; } =20 +done: + /* indicate a DMA transfer is done */ + s->chan[ch].state =3D DMA_CHAN_STATE_DONE; + s->chan[ch].control &=3D ~CONTROL_RUN; + s->chan[ch].control |=3D CONTROL_DONE; return; =20 error: --=20 2.25.1