From nobody Wed May 1 16:21:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.66 as permitted sender) client-ip=209.85.221.66; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f66.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.66 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599154091; cv=none; d=zohomail.com; s=zohoarc; b=KUjdQkI+mQFPZym8egxnq8EOk3FD6tYlk4j314MA8Lf+I+C8lpP9DHVa9sOl+2p9jCcJ0F0sVZUfPhD/iq+VB+TTR+iGNvZs0wsFOMxFMxq2DyCVkrVGkCPppsPx5bVfNDGWcETVYQpt3R5fbHeqLE8vBfhfR9pdSzCAFXS7rg4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599154091; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=6z5cEfqbH1n61y/Qo9klXj1n02roLHb+s1zVQcoUGeE=; b=WKIIygmVbOzaxRYGEVtehBK9WXryN3+2Yv3U0Zzx6kZaFjYIkxc/Ukk7VSrWQB4df4yuy1uV8oM5iaCyqY2S+Eu+VBALwcO5r9lPbpk6plQ/jOfEWHHTRIufVYMeu1/GzNKBwDZwrEmle6xtWJc5ptFMI52cKPH9aMY9JsugE4Q= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.66 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by mx.zohomail.com with SMTPS id 159915409157021.375208601011877; Thu, 3 Sep 2020 10:28:11 -0700 (PDT) Received: by mail-wr1-f66.google.com with SMTP id a17so4080661wrn.6 for ; Thu, 03 Sep 2020 10:28:11 -0700 (PDT) Return-Path: Return-Path: Received: from localhost.localdomain (50.red-83-52-54.dynamicip.rima-tde.net. [83.52.54.50]) by smtp.gmail.com with ESMTPSA id b2sm5325802wmh.47.2020.09.03.10.28.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2020 10:28:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6z5cEfqbH1n61y/Qo9klXj1n02roLHb+s1zVQcoUGeE=; b=kuEn4HI/eIiIw6lgZwTJh9saJTpX75BsdeT4+L6VGY4SQe3RxZpgLMzlc7gJQrzuzL TTtdmBN9rxC64ys1T1eNBs1Nk4BXYzOKx+Xv//Qswigi61/dYTSdQnpiiraggeYlnHOQ Be1A3udTVluN9FHg8lBTnq2+m3syyzpJI7G7K3P0SX6sB5b7a4g3Jq2oscSSwAv9OjbP VeGBhkkKqz+YNr0mVi1ChCilGRZyx3LGJn7H4ayNgovsMZLVDJPeGpZqlCrUfW5I7pF5 mrXj0MEhhgGQH5SaI25xQnH80PJhvP8AzxvCqpn9rHNzDn4yyb8XkrtZLDoUC1gataQA 78aA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=6z5cEfqbH1n61y/Qo9klXj1n02roLHb+s1zVQcoUGeE=; b=bCmu6N+uX/TXG3nLU2Xs7xhyFfdRn6TXwgEnu/xpqQ/cOXnDuRLIjqeLSJJQ0OHzDJ 6Xh9rISBZkG9PFKIiMr4ZyWtgn8y0GLUvWHXa3cLFBLFHglfCoeveKG2XelbxhJ/pEin lQNIocvfKZhGXkA0i/PzwYttyIS2WBQkxTGqh/OhgenA7Xtx08RiawhG/2R6OXeUDIYK huncpqF7uQ4VmXClZeD6XiTrl8ZuDDQuzCZIkmXcRraC4Jx0VKXyzbdQ9JkOLx2rGgpe f3ZHMN4+4sTqqhglhiS2y/BB46hSW03WGH21nCQUN41Lsc+w23YUtYu+GADHdlgC43y/ RmCA== X-Gm-Message-State: AOAM533EwNMz4Yc2xFAdx42OCuhEwTH9b+i7P4bZ1lxlrLHBUaQ0xLqY ZiCK4FJ7IuM2v/olDrUUOBY= X-Google-Smtp-Source: ABdhPJycnzJCMF2kKhUHA9SdcOcbX2YQ6t4o4KVerMLwf+yB6rVQqE/z83B81PS9yilMH8MY8n/q5w== X-Received: by 2002:a5d:61c2:: with SMTP id q2mr3849942wrv.25.1599154090147; Thu, 03 Sep 2020 10:28:10 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Prasad J Pandit , qemu-arm@nongnu.org, Alexander Bulekov , qemu-block@nongnu.org, Ruhr-University , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 1/4] hw/sd/sdhci: Stop multiple transfers when block count is cleared Date: Thu, 3 Sep 2020 19:28:03 +0200 Message-Id: <20200903172806.489710-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200903172806.489710-1-f4bug@amsat.org> References: <20200903172806.489710-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) Clearing BlockCount stops multiple transfers. See "SD Host Controller Simplified Specification Version 2.00": - 2.2.3. Block Count Register (Offset 006h) - Table 2-8 : Determination of Transfer Type Signed-off-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alexander Bulekov --- hw/sd/sdhci.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index ecbf84e9d3f..703357e94a7 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -728,6 +728,12 @@ static void sdhci_do_adma(SDHCIState *s) ADMADescr dscr =3D {}; int i; =20 + if (s->trnmod & SDHC_TRNS_BLK_CNT_EN && !s->blkcnt) { + /* Stop Multiple Transfer */ + sdhci_end_transfer(s); + return; + } + for (i =3D 0; i < SDHC_ADMA_DESCS_PER_DELAY; ++i) { s->admaerr &=3D ~SDHC_ADMAERR_LENGTH_MISMATCH; =20 @@ -753,7 +759,6 @@ static void sdhci_do_adma(SDHCIState *s) =20 switch (dscr.attr & SDHC_ADMA_ATTR_ACT_MASK) { case SDHC_ADMA_ATTR_ACT_TRAN: /* data transfer */ - if (s->trnmod & SDHC_TRNS_READ) { while (length) { if (s->data_count =3D=3D 0) { --=20 2.26.2 From nobody Wed May 1 16:21:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) client-ip=209.85.221.68; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f68.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1599154093; cv=none; d=zohomail.com; s=zohoarc; b=NtOQms22hzwgez6MNyPBSod1Rlebn8NGILJ8xVYiko3/uFtAc89yd078eqRq1Rab/1nib2VCvOj3ixzqfBqzLFRsNVLywIfCfT6X+4XFG3xCArnP1mKx7JobyfVEjfw/0Yl0Zopq+nwlz8S7Z43WN16iUufUHPCfkWcgwUAhaD8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599154093; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oW6XvxZuE1zKD54bo18SFHuDRJFc1R7THevACoTqgkM=; b=Dln+Oy0wJlsLJEBd/BXMqKgu5VEDlHNHuD4YpDz8+bi2dWWNcKMvk0vaPlVi8K040tpZ/Ac+0dX3NtJJ03553RsR0s3Y3UHiE3D8GzxRPKfUI+g7bQRukvJYtlaBhbDub4e0E7a7k7GeFCH1X2Q7m2iwRIvC8Q8TlfM5OpQZNXY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.68 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by mx.zohomail.com with SMTPS id 1599154093245147.66389561101926; Thu, 3 Sep 2020 10:28:13 -0700 (PDT) Received: by mail-wr1-f68.google.com with SMTP id x14so4053468wrl.12 for ; Thu, 03 Sep 2020 10:28:12 -0700 (PDT) Return-Path: Return-Path: Received: from localhost.localdomain (50.red-83-52-54.dynamicip.rima-tde.net. [83.52.54.50]) by smtp.gmail.com with ESMTPSA id b2sm5325802wmh.47.2020.09.03.10.28.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2020 10:28:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oW6XvxZuE1zKD54bo18SFHuDRJFc1R7THevACoTqgkM=; b=UclCLAR7ukADVGhNA2HNAojA6SmIcNm9cl64vWhssP/TJgxEjb/Dre40PT6j1zRVJz b1jmNs+ajxvVpK/B3+M3YnDLeo2oN4W3O0NX5uLJSPXLrkd4Dn3JFAassBF2smNIs2N7 M+7Ne82EAHw7vtlwNfPC0kpMng65TwEpbMO4OtrcqOr0WBmBcsD9A/KsOW0sJ1t977bF KtWvXBN+hMHkBZBqVx2yCLzV6OFSgAGg5M07rJqBybgVM6ftJ/y2RfR0qML2XJUsapRj y6BUD74UFJJUHcuCeQhaPwMrhU2lOjf8VpWo6bkRwCO+ESTLbBA93f18yIT3Vz19tgW9 7eWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=oW6XvxZuE1zKD54bo18SFHuDRJFc1R7THevACoTqgkM=; b=OamoMhk5XLB+bOtL3DjBFluNenanlwvmFeUx784SAJXJe3HFM5q12iEqG0lcZZfPOr 0OX8n8mPvoXdMEDSSTvSEuoZulkRjMKDRlylHL8HOPNod5D0t3y++/Cl1GfvTJmsc5jI Rmr8hpGs4O1kZ54XohHLlyvovPPe9WwxRA8kkvevfzUZwTanoabyJMtw2hZ7Hgm3vzy5 UXYgz6QyQXrwW27zTpmxB/HOP3PYLGft+hB4MaOgTvQ3vhi7JKNzKmWR4qRLy28xT7+I 8FdegaAwMOR05Rh3BY8+WwEvZaV4tVe8OsgHA0cpoA8WK3U7wvTACCbAIxTA9+5NLtsp wlVA== X-Gm-Message-State: AOAM531CmEyzirFDkuIX07d+fzDMczZpbLldScIJiI5Newlp8fmyNZwO FINjb0xk2saAePcl6dOD3TzsKhbm/hw= X-Google-Smtp-Source: ABdhPJxD/eT6l2vFol7VZU2Jyo5/WQJgbylf3v9Kt/NGmTML055BK2l8qA9Um3yZQ8pwfkfEf9Uzlw== X-Received: by 2002:adf:8445:: with SMTP id 63mr3451049wrf.375.1599154091708; Thu, 03 Sep 2020 10:28:11 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Prasad J Pandit , qemu-arm@nongnu.org, Alexander Bulekov , qemu-block@nongnu.org, Ruhr-University , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 2/4] hw/sd/sdhci: Resume pending DMA transfers on MMIO accesses Date: Thu, 3 Sep 2020 19:28:04 +0200 Message-Id: <20200903172806.489710-3-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200903172806.489710-1-f4bug@amsat.org> References: <20200903172806.489710-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) If we have pending DMA requests scheduled, process them first. So far we don't need to implement a bottom half to process them. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alexander Bulekov --- hw/sd/sdhci.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 703357e94a7..2b197631870 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -945,11 +945,21 @@ sdhci_buff_access_is_sequential(SDHCIState *s, unsign= ed byte_num) return true; } =20 +static void sdhci_resume_pending_transfer(SDHCIState *s) +{ + timer_del(s->transfer_timer); + sdhci_data_transfer(s); +} + static uint64_t sdhci_read(void *opaque, hwaddr offset, unsigned size) { SDHCIState *s =3D (SDHCIState *)opaque; uint32_t ret =3D 0; =20 + if (timer_pending(s->transfer_timer)) { + sdhci_resume_pending_transfer(s); + } + switch (offset & ~0x3) { case SDHC_SYSAD: ret =3D s->sdmasysad; @@ -1093,6 +1103,10 @@ sdhci_write(void *opaque, hwaddr offset, uint64_t va= l, unsigned size) uint32_t value =3D val; value <<=3D shift; =20 + if (timer_pending(s->transfer_timer)) { + sdhci_resume_pending_transfer(s); + } + switch (offset & ~0x3) { case SDHC_SYSAD: s->sdmasysad =3D (s->sdmasysad & mask) | value; --=20 2.26.2 From nobody Wed May 1 16:21:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.65 as permitted sender) client-ip=209.85.128.65; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f65.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.65 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599154094; cv=none; d=zohomail.com; s=zohoarc; b=fi8Nc418ZajfxofOsUlDR8fcBQRPCyIsLseBwxn/sWSgYouRGfb6AjghhkkQmeBvEo/GmdAhH/XYRdofcKVhNumEQN1/Y6CzgC6b6W9OZG2Y4F/eCrw6Y72HjN8gSo+lzcbggainSze1/goUzoAHuiU8R3AWmet/W/dHnCw9z88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599154094; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=91f5lKKcpgYukroYyk+ZgX5AZVtjLWpe85jPZGy47cQ=; b=DS+bHzgo6iQha3lv9YCIAR0Kp2r3OLBb37exzeXOCauZGGCfRrDJCzBu4ceDragMBYKHZSM/jbK3zoIpue0CejhExr/N9kKGey/WKbPQiy1INJMjLjAtrVk5s4u+SB8pJhdfgra883LiKkrzg76aaP3r7joWvUgCkEL8+VTumao= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.65 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by mx.zohomail.com with SMTPS id 1599154094328439.4401884245956; Thu, 3 Sep 2020 10:28:14 -0700 (PDT) Received: by mail-wm1-f65.google.com with SMTP id s13so3664139wmh.4 for ; Thu, 03 Sep 2020 10:28:13 -0700 (PDT) Return-Path: Return-Path: Received: from localhost.localdomain (50.red-83-52-54.dynamicip.rima-tde.net. [83.52.54.50]) by smtp.gmail.com with ESMTPSA id b2sm5325802wmh.47.2020.09.03.10.28.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2020 10:28:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=91f5lKKcpgYukroYyk+ZgX5AZVtjLWpe85jPZGy47cQ=; b=LyC+W766N/SwxeuWQWdZT0GanuQ0dc5ctaDpI91uj2h7ZqfZa7yANoCBSVdqndSr68 S6zx4CtfamtXLOxPkLiMmCxtbcEEvSXqLBTE2fDIpXWXBR/6grDvpUHTLMZuOSo1jBET uYqLawQbCL4xH5ZFvWifVnQqE3d1ZHzqhe2v6WPJOZb0lzpmYb12xucEREg69PFPE9MH SnC4DVAH8pUlkl6Tr1QGKqTib/mj1fwYIuVnMHIlY5uSyQfc9+LfG/VPOM6nczxWGCxa bq1PlXmWZJ3hKzaql7SvzgVrHRgIfO1IbNKLPGXAfMxFW6tB7x4XG174loooTZrKfyo9 zXow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=91f5lKKcpgYukroYyk+ZgX5AZVtjLWpe85jPZGy47cQ=; b=dQsDQh3r0ScEq/9lo9EzIignNMmPirVctFaK8kOfBpElxw/+M8+AnIJIYK6f2rpqpf h4Qn1T+6r03cZQ1MQTsMcd5Ljh2nR3s19LDrGfuV2RXvtz99IT0gK+0dVd4nCvniBvVL IFdD3x648dHOs4t8xc9DdAAXg2GyMW0UnVH2N7NDSL0YQbNrgUaWTFEpsmLpvzuK4AtE Hef2LfkYbl2H16Lr48yx0mAXc58aFjTLJAZ8ss8mF0KKr/JnIOYvrBsmnk2cjBjOohFb /UrduwAfacdrQv7OI9HhW6DB3Gia3CU906px3H9/QM8X8rHtoNzxeXqsMvEOI62DSUWQ ZRDQ== X-Gm-Message-State: AOAM532alCGRkdHzYk6FsO9ioSiCQooQJFIuc2409JH36H+fY1G2cP2P mb8LIrFh5lj0KsqvpkewyIY= X-Google-Smtp-Source: ABdhPJwfftNG6J6/XNPMEoDaI4gmXsDzgz1Hq9VnvdZ78H87d5DMluA8RToDucGlDNCoK9YKMmaU+A== X-Received: by 2002:a1c:6a08:: with SMTP id f8mr1779631wmc.151.1599154092897; Thu, 03 Sep 2020 10:28:12 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Prasad J Pandit , qemu-arm@nongnu.org, Alexander Bulekov , qemu-block@nongnu.org, Ruhr-University , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 3/4] hw/sd/sdhci: Let sdhci_update_irq() return if IRQ was delivered Date: Thu, 3 Sep 2020 19:28:05 +0200 Message-Id: <20200903172806.489710-4-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200903172806.489710-1-f4bug@amsat.org> References: <20200903172806.489710-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) Signed-off-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alexander Bulekov --- hw/sd/sdhci.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 2b197631870..06cb098036c 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -215,9 +215,14 @@ static uint8_t sdhci_slotint(SDHCIState *s) ((s->norintsts & SDHC_NIS_REMOVE) && (s->wakcon & SDHC_WKUP_ON_RM= V)); } =20 -static inline void sdhci_update_irq(SDHCIState *s) +/* Return true if IRQ was pending and delivered */ +static bool sdhci_update_irq(SDHCIState *s) { - qemu_set_irq(s->irq, sdhci_slotint(s)); + bool pending =3D sdhci_slotint(s); + + qemu_set_irq(s->irq, pending); + + return pending; } =20 static void sdhci_raise_insertion_irq(void *opaque) --=20 2.26.2 From nobody Wed May 1 16:21:46 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.65 as permitted sender) client-ip=209.85.128.65; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f65.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.65 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1599154095; cv=none; d=zohomail.com; s=zohoarc; b=Ks1M6IiRyb47xX9BRp0fVaeQTV3ef1B5zmDx6MstN4TUgmZ9pG+ux5aLQfnuHGA4hgHW8cYbTEyxitd3emR29QLz19fyBHYtdkpdk1Kw7EQz+/G0jeJDhp4wInobr3/CVF96MbK80U4h0GDjrepreQtKtYsu2AjfSkxfyEuxv+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1599154095; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=h5iaQi3vWrr7M+kdi5/Gojkf+HOxBwaJDmXr+jv44dA=; b=aSiitIxgIzK4e+gTNPZ2+bQ4CykW1T/jpTG08qWuBr0We+1tAML/p2FDwiwuv6N18YEeF+a1BCdyuVL7zGunvcVfYmF0NyvhdAeMHnybzNXnHGVB3DzD188ObRwel1R1mabDKIGEZreDVPIxb1t7AQYekhrpF31IfcqpGyT+MBM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.65 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by mx.zohomail.com with SMTPS id 1599154095530890.9777839890883; Thu, 3 Sep 2020 10:28:15 -0700 (PDT) Received: by mail-wm1-f65.google.com with SMTP id u18so3672355wmc.3 for ; Thu, 03 Sep 2020 10:28:15 -0700 (PDT) Return-Path: Return-Path: Received: from localhost.localdomain (50.red-83-52-54.dynamicip.rima-tde.net. [83.52.54.50]) by smtp.gmail.com with ESMTPSA id b2sm5325802wmh.47.2020.09.03.10.28.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2020 10:28:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=h5iaQi3vWrr7M+kdi5/Gojkf+HOxBwaJDmXr+jv44dA=; b=dlseXbUPPWe78yt35GsXIDaRQ7iWXdV+Kjuns6hAGs8G9CuivxFz4Ohu+9joPCTdtJ dWRuPopDm5Su8N2femkKXQV0ghgfzUg4V5KlAB+1XFJNolm/N/jPhTLV0Ay1LpEOypW8 UClq4JZ+3sGbt0CuBJmrFIbSMTug0UUDw7pQL4r7flk1i6qu3b9ZTTX+fllC35+FwHLF DaGD5dMzrHMNm0UPnngtMENYnIlpajxhX7Bh/c8t5mNgJRz4WCfpmUeKYVri9sj2/KRm ZwP45wszHKmeLBAEiqzcCsHwMmAX9ikzy/irKvSiJAQoq3NSqRLqSIrvJpRjp+a88l9T 5JSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=h5iaQi3vWrr7M+kdi5/Gojkf+HOxBwaJDmXr+jv44dA=; b=GP9zXTxo/UYdPT59Eya9ipYjQKHPiDmLSjaEuP3olA7qfzXeAgRrXsAB+NGqtChz46 GlPGkNSR0fFu4iKjHraHPvTAtsrdtpzE3uzt0S5YSHwNH2tNto5yhC/CbQRNZ8j4jRTi 7kEpqQcrk3+eBfKvU9hQOisciThm57GxYtWqFN30ZOyOL1gPMStunH++jlDLRs/rYzpE LqaEiahVVAs/SuEkZKdy33ozuADf2/NovGrDwJkvk6Nla6W8bHoU+VBW3/P0AU576pLW I+mNsFhRGjPXS4RisjxPqxxr7sM5h8zhfjttjVB8Jb4SCmx19M+iLsejVhstI8IqbOg7 m6oA== X-Gm-Message-State: AOAM530sOnDf9FiTeDrR5Z3edfFxJKIDw6xBMm+g0X3CfHpYpjjJJx4T ocvV32tp8D6DSLYW3EY8rBM= X-Google-Smtp-Source: ABdhPJyhemRyOsLI9pWpEZQSs6hRzeM4cZOzNRA/oSJWtDsoJLui1dskwVNPAsICJPfo9SeDKsKgWg== X-Received: by 2002:a7b:c387:: with SMTP id s7mr3520582wmj.171.1599154094081; Thu, 03 Sep 2020 10:28:14 -0700 (PDT) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Prasad J Pandit , qemu-arm@nongnu.org, Alexander Bulekov , qemu-block@nongnu.org, Ruhr-University , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 4/4] hw/sd/sdhci: Yield if interrupt delivered during multiple transfer Date: Thu, 3 Sep 2020 19:28:06 +0200 Message-Id: <20200903172806.489710-5-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200903172806.489710-1-f4bug@amsat.org> References: <20200903172806.489710-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) The Descriptor Table has a bit to allow the DMA to generates Interrupt when the operation of the descriptor line is completed (see "1.13.4. Descriptor Table" of 'SD Host Controller Simplified Specification Version 2.00'). If we have pending interrupt and the descriptor requires it to be generated as soon as it is completed, reschedule pending transfers and yield to the CPU. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Tested-by: Alexander Bulekov --- hw/sd/sdhci.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 06cb098036c..74b0bf77103 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -834,7 +834,10 @@ static void sdhci_do_adma(SDHCIState *s) s->norintsts |=3D SDHC_NIS_DMA; } =20 - sdhci_update_irq(s); + if (sdhci_update_irq(s) && !(dscr.attr & SDHC_ADMA_ATTR_END)) { + /* IRQ delivered, reschedule current transfer */ + break; + } } =20 /* ADMA transfer terminates if blkcnt =3D=3D 0 or by END attribute= */ --=20 2.26.2