From nobody Thu Jan 20 10:13:23 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 64EB919658B7; Thu, 20 Jan 2022 10:13:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Jfdcz1qQRz4WKM; Thu, 20 Jan 2022 10:13:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642673603; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jZlK0ArHbDjpxsZDf753rk1jSfHx79ZCqTA3hmFg8hc=; b=h5HnEHAH5bAsNPe/pj0kW+heqKHPB956rIv8SvQ6l3/gDTxUzNLgT6DwAehYscQMqMtExO NqckIj2WH/cfsuDPpHfw4DoM8JlvSlmS8iKYnSSUQ2/12XpOjTiWBQSypTr0kRuxN5yWWP DT42ZW4KUGkQnzHTfo/+DQWDISETVucSH5ATRQcwXlX+1TloeoKWQ2eRS84butE/f5NOeV ZqbuLrvR8SacZ3dZYdjwpQStR+Tc3s95LlDPmDmWUb/NByMXiR6EbpJ9u9bf5IrbQVtt/Q +xjq6001MObn0L6C6x0yIvSNd1hEcow0ImVbpFezC5z0ONysjKIrfkyX41d6rQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1AEC42680D; Thu, 20 Jan 2022 10:13:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 20KADNU4004803; Thu, 20 Jan 2022 10:13:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 20KADNSR004802; Thu, 20 Jan 2022 10:13:23 GMT (envelope-from git) Date: Thu, 20 Jan 2022 10:13:23 GMT Message-Id: <202201201013.20KADNSR004802@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Michal Meloun Subject: git: a5e76683b2de - stable/13 - dwmmc: Calculate the maximum transaction length correctly. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mmel X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a5e76683b2deb568381e4468fd5927c7edb401b4 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1642673603; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jZlK0ArHbDjpxsZDf753rk1jSfHx79ZCqTA3hmFg8hc=; b=mQwqS/GN4W0+b8YpKuruYCmFfb4kBKV94KcYbryUMrNOQWpDbAiQpO4p/sM6UqtP5FSIMX Qiakq//KP1dAeei3f6aAI3srvJgoN5ohy6gdhGg8O/h8qfEnd56zyAqv8VXg/x2HR+HlXH J1b0XA76hDzuR0sY6xXwPxDDGIU914jusN6pz5ztliWnqEFsZc69jcJV672rtJi/emDyD1 X6OW/3ULzufX8VgfpCFU7I4gd9uQR+QsHyEpRmVW8fQFwagW6ScmM6IF0yvfOO4v5pvMHZ wu23HoWS7Dbh6ncvoRbcXOFw62wNEs51AnMhKq+vNJJCYnrcsS/hqetOZnqM/Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1642673603; a=rsa-sha256; cv=none; b=agFo61OzA/nHjipCdRy7eh6JQBlV1vMrlAHXBgaAT3ph0DnLNZTPNozUwsZDXcKSnMKMid A/0BezVZiUQSS6QA7PsA8Xc0154KHfA7oNBviu00STz1EAAG4teuDqzCMixSXVJBrFAnik 4T1FxAMb66XDUGgTSCNGUTqc4oKZAgiOoXytV4cRAq1KW0KuPEORRvYT9EZrCffrkZrtSq FD9wvDZb/ETsQMBJ8kUd7SKSapQ9PAYmbmD1Ue3DRlx3pDz5Gqqv4li4tcitTa5OPlQyL1 IuxUVMQLBdKy0/PSJNNyiO9Z/DHWMZ3HNlXlkGHMPxu7fg7O8398o6iYcoUNKw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by mmel: URL: https://cgit.FreeBSD.org/src/commit/?id=a5e76683b2deb568381e4468fd5927c7edb401b4 commit a5e76683b2deb568381e4468fd5927c7edb401b4 Author: Michal Meloun AuthorDate: 2021-10-07 18:42:56 +0000 Commit: Michal Meloun CommitDate: 2022-01-20 10:11:17 +0000 dwmmc: Calculate the maximum transaction length correctly. We should reserve two descriptors (not MMC_SECTORS) for potentially unaligned (so bounced) buffer fragments, one for the starting fragment and one for the ending fragment. Submitted by: kjopek@gmail.com MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D30387 (cherry picked from commit dfb7360222856e7e4f5e0e5564281a25af63319c) --- sys/dev/mmc/host/dwmmc.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/sys/dev/mmc/host/dwmmc.c b/sys/dev/mmc/host/dwmmc.c index 22cbf647cfa0..f12a03e1c7aa 100644 --- a/sys/dev/mmc/host/dwmmc.c +++ b/sys/dev/mmc/host/dwmmc.c @@ -145,6 +145,11 @@ struct idmac_desc { * second half of page */ #define IDMAC_MAX_SIZE 2048 +/* + * Busdma may bounce buffers, so we must reserve 2 descriptors + * (on start and on end) for bounced fragments. + */ +#define DWMMC_MAX_DATA (IDMAC_MAX_SIZE * (IDMAC_DESC_SEGS - 2)) / MMC_SECTOR_SIZE static void dwmmc_next_operation(struct dwmmc_softc *); static int dwmmc_setup_bus(struct dwmmc_softc *, int); @@ -1350,13 +1355,7 @@ dwmmc_read_ivar(device_t bus, device_t child, int which, uintptr_t *result) *(int *)result = sc->host.caps; break; case MMCBR_IVAR_MAX_DATA: - /* - * Busdma may bounce buffers, so we must reserve 2 descriptors - * (on start and on end) for bounced fragments. - * - */ - *(int *)result = (IDMAC_MAX_SIZE * IDMAC_DESC_SEGS) / - MMC_SECTOR_SIZE - 3; + *(int *)result = DWMMC_MAX_DATA; break; case MMCBR_IVAR_TIMING: *(int *)result = sc->host.ios.timing; @@ -1436,7 +1435,7 @@ dwmmc_get_tran_settings(device_t dev, struct ccb_trans_settings_mmc *cts) cts->host_f_min = sc->host.f_min; cts->host_f_max = sc->host.f_max; cts->host_caps = sc->host.caps; - cts->host_max_data = (IDMAC_MAX_SIZE * IDMAC_DESC_SEGS) / MMC_SECTOR_SIZE; + cts->host_max_data = DWMMC_MAX_DATA; memcpy(&cts->ios, &sc->host.ios, sizeof(struct mmc_ios)); return (0);