From nobody Sun Jul 26 10:59:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1782883230; cv=none; d=zohomail.com; s=zohoarc; b=MXXhPTyVpUkmbgGHX/69sa+OMuYe9TlIZxKDEI8gDqN9o9BRbM3LZOX+SYvNGOQHgEftZrvhacz10rPKjTUeDjg/twakXcJn+L8zNsm3xI+JfL8kYhi9UyAidIe9EZJNLsqp5JZ4Bxrf3H04oa9jZysezjyy2mJL/YACexUIDCc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782883230; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=E7DgfKtIIuZN/S4bX6pSCHG12N0udvrO3Ki9DWUDg40=; b=m5au+2eOSSQsUhGd5bcOMxmyuz7yGUhDNZCwJr/aYrbQ7L99vL7izvfmL92efiWeDAP28dTARnVXxjmP+Q3jLq7WcZnPESS07vC5CE16gdD7LH37FZk37Kshtyuvoyhl0SifKUE0TZPtjAcDDQW+z64rGfXx4U/9sOVIO9Sm5ZY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1782883230059157.6519278197526; Tue, 30 Jun 2026 22:20:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wenMk-0003KV-Pw; Wed, 01 Jul 2026 01:20:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wenMj-0003JE-2Z for qemu-devel@nongnu.org; Wed, 01 Jul 2026 01:20:05 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wenMh-0005kp-Co for qemu-devel@nongnu.org; Wed, 01 Jul 2026 01:20:04 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-37ff436a048so110898a91.1 for ; Tue, 30 Jun 2026 22:20:03 -0700 (PDT) Received: from jeuk-MS-7D42.. ([211.226.54.223]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38095d4c263sm1098157a91.3.2026.06.30.22.20.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jun 2026 22:20:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782883202; x=1783488002; darn=nongnu.org; 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=E7DgfKtIIuZN/S4bX6pSCHG12N0udvrO3Ki9DWUDg40=; b=KTC3+O8VljqxszUzq8OGv1PaebnDMr8gpoTpF+ys+ULXgmJko5zkEY58h+tqOiiS+r Cu7ERAhlI4TC689AtZvr3hEwDh/8VRHbN/fSadcBj+VO7b9YeIUwXN+nk1OnrCOC/Zm+ 1ZC37n3Tkl7c+1ULMzES0mb65tFr/i5V6UQsCUZMP7Uh6vakhQlmWT6w1fiClw5bnZi+ o0IMvhg5mfWEKaaktkQlS3kjLrO0dWb/JqSohfF5QYruAl4pAO57kDrQPwVwqwpf9Ud+ zowzc4nlhqL6Cg+vYxBaStjIN7mi/TmsOxzPP0sPPlAh34ZMjDP9qdPLJC7VrCNkdE73 8+NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782883202; x=1783488002; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=E7DgfKtIIuZN/S4bX6pSCHG12N0udvrO3Ki9DWUDg40=; b=G/E7Itpuj/lgq0iXm0guRqUqBVFOYvvdPaB5wP9n699YPvzU7QKv1UC7jBMJ3GdEGD j3B3KD/H2Z4KP3YVcjblsU6ulHMWun82wIGUo3MQI7KiYt9IF4LqPKgOj6HIvKpWgK3b Plnl02xUonyl1YTeZw2KRPxggsAcr5LSrgkRU64+Ow6sBXdR7qDJh6DgJsRcH6cMii4D 2NEll55Ruw2A7+wMMi8Nx7iu+fVtqLpD/x2IS4Z8EuO7JxLd4AaesE39eiJIxiYe+97C CwQ1oWHZimp+GIECAehxHohY0B4cZtEf9M4Th0mE8YEJGHoEQfI2rlkNGPed/0xe4VmN 61cg== X-Gm-Message-State: AOJu0Yyfzfb+ixMy9wnDk3GSMBQbrF96tUlqjuvVIvn6GTPKVXmpJiFb k4qCHIMkuVnWvYQCeYZjd/LT2MgTGED8fBPuKTQQmYtLFxQKsc09SN+Pi+39Lg== X-Gm-Gg: AfdE7ckeIESq5x/XMKMTLjKFBIgLV93vsmA7LsyNS3BhxwPXFVfeFHv6fAtqroip6ae aK4tCSoJWI8WbTKRbNFscGJraFm1Z1rXFBrO8G4yX37eO8wVCIAZtE6RErJOVisf6iJHBrRCbJG HhaNtf02+cJtA/fsAPYiW1KHQJwsqnqTVkuerqDWRKFQ7ki95QzPoW6zF4/XJcXFgRYGrC6fkG3 8cXdd5gd3sxB8AoHih54bYJeuiZXIGk7jigB9WchRk91qjR0vf5bUShDKk7NaT/KcJ1sNhY8trd kDB0CNkbpGZLyZkKuI5q5ctey5nMAEt2ltP4YCTod9TTI+sQC2tQXLhGylyD7gCdMDNIiD77bqt ElYQfaio9JeqU++MbvuHlKQorqcTMw1hZEnd/Gcl78cQ2DTHi92uZ9COoxAoUPNPZolt6ZVOIeI bkw5DV89kzwVVJf+IwI/YlCYdTnVY6 X-Received: by 2002:a17:90b:224c:b0:37f:9ce1:736b with SMTP id 98e67ed59e1d1-380aa21f261mr200576a91.33.1782883201857; Tue, 30 Jun 2026 22:20:01 -0700 (PDT) From: Jeuk Kim To: qemu-devel@nongnu.org, stefanha@redhat.com Cc: kwolf@redhat.com, hreitz@redhat.com, qemu-block@nongnu.org, jeuk20.kim@samsung.com, j-young.choi@samsung.com Subject: [PULL 1/2] hw/ufs: Emulate DME_GET/SET for PA layer attributes Date: Wed, 1 Jul 2026 14:19:46 +0900 Message-ID: X-Mailer: git-send-email 2.43.0 In-Reply-To: References: 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=jeuk20.kim@gmail.com; helo=mail-pj1-x1032.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, FREEMAIL_FROM=0.001, 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1782883232485158500 Content-Type: text/plain; charset="utf-8" From: Jeuk Kim After DME_LINK_STARTUP a UFSHCI host typically negotiates the link power mode: it reads PA layer attributes (connected RX/TX data lanes, max RX HS/PWM gears) via DME_GET and then issues DME_SET(PA_PWRMODE), waiting for the UIC power-mode-change completion (IS.UPMS / HCS.UPMCRS). The device only handled DME_LINK_STARTUP and DME_HIBER_{ENTER,EXIT} and returned FAILURE for every other DME command, so a host that performs power-mode change could never complete it. Return canned PA attribute values (1 lane, HS-G4, FAST_MODE) on DME_GET/PEER_GET and acknowledge DME_SET/PEER_SET. For DME_SET(PA_PWRMODE) also raise IS.UPMS and set HCS.UPMCRS=3DPWR_LOCAL so the power-mode change completes. The emulated link has no PHY, so no state is persisted. For example, the Linux ufshcd driver reads these attributes during probe and otherwise aborts with "invalid connected lanes value". Signed-off-by: Jeuk Kim --- hw/ufs/ufs.c | 40 ++++++++++++++++++++++++++++++++++++++++ include/block/ufs.h | 12 ++++++++++++ 2 files changed, 52 insertions(+) diff --git a/hw/ufs/ufs.c b/hw/ufs/ufs.c index 35c2444385..ee7eba6793 100644 --- a/hw/ufs/ufs.c +++ b/hw/ufs/ufs.c @@ -363,8 +363,32 @@ static void ufs_process_db(UfsHc *u, uint32_t val) qemu_bh_schedule(u->doorbell_bh); } =20 +/* + * Return canned PA layer attribute values. The emulated link has no PHY, + * so these are purely declarative: a single lane in HS-Gear 4, FAST_MODE. + */ +static uint32_t ufs_uic_dme_get_value(uint16_t attr_id) +{ + switch (attr_id) { + case UFS_ATTR_PA_AVAILTXDATALANES: + case UFS_ATTR_PA_AVAILRXDATALANES: + case UFS_ATTR_PA_CONNECTEDTXDATALANES: + case UFS_ATTR_PA_CONNECTEDRXDATALANES: + return 1; + case UFS_ATTR_PA_MAXRXHSGEAR: + case UFS_ATTR_PA_MAXRXPWMGEAR: + return 4; + case UFS_ATTR_PA_PWRMODE: + return (1 << 4) | 1; + default: + return 0; + } +} + static void ufs_process_uiccmd(UfsHc *u, uint32_t val) { + uint16_t attr_id; + trace_ufs_process_uiccmd(val, u->reg.ucmdarg1, u->reg.ucmdarg2, u->reg.ucmdarg3); /* @@ -378,6 +402,22 @@ static void ufs_process_uiccmd(UfsHc *u, uint32_t val) u->reg.hcs =3D FIELD_DP32(u->reg.hcs, HCS, UTMRLRDY, 1); u->reg.ucmdarg2 =3D UFS_UIC_CMD_RESULT_SUCCESS; break; + case UFS_UIC_CMD_DME_GET: + case UFS_UIC_CMD_DME_PEER_GET: + attr_id =3D (u->reg.ucmdarg1 >> 16) & 0xFFFF; + u->reg.ucmdarg3 =3D ufs_uic_dme_get_value(attr_id); + u->reg.ucmdarg2 =3D UFS_UIC_CMD_RESULT_SUCCESS; + break; + case UFS_UIC_CMD_DME_SET: + case UFS_UIC_CMD_DME_PEER_SET: + attr_id =3D (u->reg.ucmdarg1 >> 16) & 0xFFFF; + u->reg.ucmdarg2 =3D UFS_UIC_CMD_RESULT_SUCCESS; + /* DME_SET(PA_PWRMODE) is a power-mode-change trigger. */ + if (val =3D=3D UFS_UIC_CMD_DME_SET && attr_id =3D=3D UFS_ATTR_PA_P= WRMODE) { + u->reg.is =3D FIELD_DP32(u->reg.is, IS, UPMS, 1); + u->reg.hcs =3D FIELD_DP32(u->reg.hcs, HCS, UPMCRS, UFS_PWR_LOC= AL); + } + break; /* * TODO: Revisit after PM implementation * Power Management is not supported in current QEMU-UFS, diff --git a/include/block/ufs.h b/include/block/ufs.h index 6dd91181e5..66e8f35c0e 100644 --- a/include/block/ufs.h +++ b/include/block/ufs.h @@ -628,6 +628,18 @@ enum { =20 #define UFS_MASK_UIC_COMMAND_RESULT 0xFF =20 +/* + * MIPI UniPro PHY Adapter (PA) layer attribute IDs accessed via + * DME_GET / DME_SET / DME_PEER_{GET,SET} UIC commands. + */ +#define UFS_ATTR_PA_AVAILTXDATALANES 0x1520 +#define UFS_ATTR_PA_AVAILRXDATALANES 0x1540 +#define UFS_ATTR_PA_CONNECTEDTXDATALANES 0x1561 +#define UFS_ATTR_PA_PWRMODE 0x1571 +#define UFS_ATTR_PA_CONNECTEDRXDATALANES 0x1581 +#define UFS_ATTR_PA_MAXRXPWMGEAR 0x1586 +#define UFS_ATTR_PA_MAXRXHSGEAR 0x1587 + /* * Request Descriptor Definitions */ --=20 2.43.0 From nobody Sun Jul 26 10:59:30 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1782883247; cv=none; d=zohomail.com; s=zohoarc; b=ZI66d8fPL9Nx5An3tZNHSZHY4hor8jh4kU8cIffwA1J4xWWXOQmp/SOWe1nUgaayMwvJ0EJkZNnYIU4G9NbMFijPkcxmi53kY48TeOFKQ5Q3Nlm2gBe5I+Ah+fR2YvBP3zJdHjgPpumdjuXsOTOOx4I4HR7hsmJ2TDF60LZIETo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1782883247; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pxxUFPOzE8l9ZSDN3CNthmxb/jce1JnhohMY6NH66MM=; b=IXjYK8KdXDSrYBoAqK7DlR1qbJU8oVVFuCjuqTEZPklKIfMSwObmopKwsESIcSi8snSry2ObSyjXOX6ZsN9wcJjGxZ0hPMLAGlPR/ndjN14sdRSyQNbmymVKfGZwxmhWtXYL8bH2HO6Ql0SuTUQJwdENnnB2IZDRsYfItPT1Kh0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1782883247758979.1954895189322; Tue, 30 Jun 2026 22:20:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wenMp-0003UR-LZ; Wed, 01 Jul 2026 01:20:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wenMl-0003Ko-7f for qemu-devel@nongnu.org; Wed, 01 Jul 2026 01:20:07 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wenMj-0005w6-OH for qemu-devel@nongnu.org; Wed, 01 Jul 2026 01:20:06 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-37dedd62b90so107519a91.1 for ; Tue, 30 Jun 2026 22:20:05 -0700 (PDT) Received: from jeuk-MS-7D42.. ([211.226.54.223]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38095d4c263sm1098157a91.3.2026.06.30.22.20.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jun 2026 22:20:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782883204; x=1783488004; darn=nongnu.org; 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=pxxUFPOzE8l9ZSDN3CNthmxb/jce1JnhohMY6NH66MM=; b=oL5m1w0PdQOTHSS2DEscLQ0a17wtt04/nWguDaqPjitK9bmeXwuYgUdxu0KkMJcjOb yOFtNYtXxBrvgDR+C3Pjexmh706irYAPuyd32d+v0e9EnIx40o8EOM+hcsVD9dgCL5vy /070gbvCiSym2NErzJ9E4jiXDd8b6CK8Go8XMK2tJAeiGB4iwLio1fjO1e1DpOKcpulN 9qd2ylJanGk/Qi0sACu4kNh5y/SfVhrTeGLVrWwOm1TGLa3eAFy95GVPYVeN1QrQ655t oCaNHXRmCdol+qkICP99sI4acspYkwo1PguN6ht92CxbbGRANgE0b+dqTNm/f5KWz8iN lqQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782883204; x=1783488004; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pxxUFPOzE8l9ZSDN3CNthmxb/jce1JnhohMY6NH66MM=; b=cnARADwJNyenVcDdth2TvvAzUcd8OWsHHiQX0ZGmBfq/KqCXRQMefcBEuMrWJBnimL Pc4eIFfSQg64JOJrWJ559BF/LHNkETENMT24hGNeYDLCBQB9yLd0QYlI/YyBgxU/JgW9 PM5UmYiD7UbJ0Y0AgvNYxHedN2pHvMlnOXneOUzqeY4El0dQblHOJSik2KZMh6oxIz9U W/qmu1MzvlJG5gvGH5DJsRdiLnSvvOs6IJOncmvClWZ/5t0ovaHpkFy3w8k6P89z0Jwk uyg5w4tZz88QN08CBG8PHtWlpSbtYQga8DSZgCXhnhZw6Qm3OyVZZjehk9RsNQGjBpj+ F/3g== X-Gm-Message-State: AOJu0Yz9aEanhQ9VCTLJlH6CzOlbF1hV09nVpcmr1upfJ9RfaEeE0mmY TNwvZQmvTRQmGlCcSsup59m/Ro6gzYN6REAj5LJ852Jmx+u+hIJxPpsVqJYZRg== X-Gm-Gg: AfdE7ckDkU2wGfPq3UQo/vnn7/p1KrRU9JF3e5tgNdIIv/P0IW3QjB1QwkjVXgk8rul ECxnyaBPKmsuMTLsTQ6I8CeDy1eDTSbwWMFB7ypFtmM6rjItCXZWNFt2e3qUF80NXhvv9D1GOCm Se+PC5r29Bb+5EGQFXPKD6F9YTItiutpEvpfH4McuFZUUzxK836N17jVoi3j2T5rQ1ZBG99+W0+ FxLDyY1C5WB/RLDOLcfR8QBozX+kMSa90Wtp32PlTR3XZC/hzuO+TRWFY4o3n7oDkRAbHON4aoI qUZU8B9MVRvDyR7SsRqsrt1kbP/dvzCMW1Kgyg7SE0d6O9NYKlvTr/cYgZG58EiRMmB6w75T6Ja 6tZy2ygrGk93uDBUxSlPwXBTwYwgclTbIdzAgVwhnZE8K1Zw2pXB5kkkUXT5TMyzcaPb40/TPJo N9i8DggyTPGPzEeVd3zA== X-Received: by 2002:a17:90b:28cc:b0:37f:fd70:6790 with SMTP id 98e67ed59e1d1-380aa18b1ecmr184417a91.9.1782883204010; Tue, 30 Jun 2026 22:20:04 -0700 (PDT) From: Jeuk Kim To: qemu-devel@nongnu.org, stefanha@redhat.com Cc: kwolf@redhat.com, hreitz@redhat.com, qemu-block@nongnu.org, jeuk20.kim@samsung.com, j-young.choi@samsung.com Subject: [PULL 2/2] hw/ufs: Populate cqe.task_tag for UFSHCI 4.1 tag decoding Date: Wed, 1 Jul 2026 14:19:47 +0900 Message-ID: <20c03709b353d6c985bfa3174c4563d57ff47275.1782882742.git.jeuk20.kim@samsung.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: 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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1033; envelope-from=jeuk20.kim@gmail.com; helo=mail-pj1-x1033.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, FREEMAIL_FROM=0.001, 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1782883248783158500 Content-Type: text/plain; charset="utf-8" From: Jeuk Kim In UFSHCI 4.1 the MCQ completion queue entry carries the request tag in the cqe.task_tag field (DW5), whereas 4.0 hosts derive it from the UTP command descriptor base address. The device reports version 4.1 in the VER register but left task_tag/lun zero in the completion path, so a 4.1-compliant host reads tag 0 for every completion and cannot match it to the outstanding request. Add the task_tag/lun/iid fields to UfsCqEntry per the UFSHCI 4.1 CQE layout and populate them from the request UPIU header. For example, the Linux ufshcd_mcq_get_tag() uses cqe.task_tag for version >=3D 4.1, so without this SCSI commands hung (e.g. INQUIRY to the device W-LUN) while device-management commands still completed. Signed-off-by: Jeuk Kim --- hw/ufs/ufs.c | 6 ++++++ include/block/ufs.h | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/hw/ufs/ufs.c b/hw/ufs/ufs.c index ee7eba6793..464fd465b3 100644 --- a/hw/ufs/ufs.c +++ b/hw/ufs/ufs.c @@ -520,6 +520,12 @@ static void ufs_mcq_process_cq(void *opaque) req->cqe.prdt_off =3D cpu_to_le16(prdt_off); req->cqe.status =3D status; req->cqe.error =3D 0; + /* + * From UFSHCI 4.1 the host derives the request tag from cqe.task_= tag + * rather than decoding it from utp_addr. + */ + req->cqe.task_tag =3D req->req_upiu.header.task_tag; + req->cqe.lun =3D req->req_upiu.header.lun; =20 ret =3D ufs_addr_write(u, cq->addr + tail, &req->cqe, sizeof(req->= cqe)); if (ret) { diff --git a/include/block/ufs.h b/include/block/ufs.h index 66e8f35c0e..d19b3c65ef 100644 --- a/include/block/ufs.h +++ b/include/block/ufs.h @@ -1333,7 +1333,11 @@ typedef struct QEMU_PACKED UfsCqEntry { uint8_t status; uint8_t error; uint16_t rsvd1; - uint32_t rsvd2[3]; + uint8_t task_tag; + uint8_t lun; + uint8_t iid_ext_iid; + uint8_t rsvd2; + uint32_t rsvd3[2]; } UfsCqEntry; =20 static inline void _ufs_check_size(void) --=20 2.43.0