From nobody Mon Feb 9 05:13:36 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=1770010929; cv=none; d=zohomail.com; s=zohoarc; b=ceod5gq9czRzolcFtGwFW+ebtQ3apaC/N91aG35Ma81qaBWvb5xuwcXwjiqCWdDxdm9RoHvPfyNYo2ZPVPKDFFvOdHNn7SRRNVOrk9HH36Z7pUlfioDq7y+zfnRrrdSoYC1n3aieCUZ1EdZCxfNPjyp/kbFvEfLmhaWfZWuwC18= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1770010929; 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=orTLrOWeKTPyvS26NEmXloq5PzOs+hNT/pDvq4j4jF4=; b=c9tsEOZ1IW9WThw31QELuXD6bZaL93gdVjY4EFxK8nbxXsgygtCIoHDXXl81osCt7TFYV4ilbB7LsYtPJG1278UVHPrmbdAPtAGySsSG+pAD+XuFMW1V38VN0TY6hYlqsRhufjvDhG4Mu4clVfQkE1qR5ducaUbttXcGjtZFSNM= 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 lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1770010929961600.4477692998979; Sun, 1 Feb 2026 21:42:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vmmgy-0003uE-Ut; Mon, 02 Feb 2026 00:41:44 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vmmgu-0003tJ-Ru for qemu-devel@nongnu.org; Mon, 02 Feb 2026 00:41:41 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vmmgt-0003yW-7w for qemu-devel@nongnu.org; Mon, 02 Feb 2026 00:41:40 -0500 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-3543b9f60e3so1386555a91.3 for ; Sun, 01 Feb 2026 21:41:38 -0800 (PST) Received: from jeuk-MS-7D42.. ([175.119.5.143]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-353f610266esm17804018a91.4.2026.02.01.21.41.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Feb 2026 21:41:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770010897; x=1770615697; 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=orTLrOWeKTPyvS26NEmXloq5PzOs+hNT/pDvq4j4jF4=; b=ntoQVnkl/1Io/2tNgYW5R4evF7vsT6iSvUaVJ1AIJrsJo+qB5AxO1aaYX5Zgew0KLc KOzEv0EaN1fwVQB8VnzmVcnB1vnU9rngNWjsogBnQaFX7Axiwdru2rf0qoqoKVAeFmrf 4kRqGI0+egJGkQzQmgQxnbnL7ppkJMAF05XaFZRDl5+VuvDKKqWJG+7x0dIwYzYhM1fv ebSX8ZOH4ZikVbhZ9PKNrLw/+p+UyVEwOyGM36hRSmJRsRLMje43z6s++1dSDhR4DfKL RWNlDWuRJQN6fr4Vqho4Vw9QwmDaKOWHqL7j+Wi9q+kyLioX6sPfvCdycV7/q/YHNYzj 0VJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770010897; x=1770615697; 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=orTLrOWeKTPyvS26NEmXloq5PzOs+hNT/pDvq4j4jF4=; b=Ox6Uwc01yqGnKvedTzYBb+Z06Xoa/XTE/dpxTlYXbBmonZD9QLpVNKE16ZdeM62dYh kUcm2ItYhFV2y/g+lT5iLcbv0q8TM9Unk4uQI5QFC2Cb3J/0hCjwG3gSMnK06c3YPZFO 0wG4oW686bQjjvsNId9Buai/nuPtB1NOb0AkZLf7nP+xJEV3Ga1yA4R9Ban2wcHT4U5V z6Oyz/wxXn+lH0ZHidXLkpKLv7Vczn89pEYEqaQ3ypUx5GBy/jmatTNztRTIN/+ixmDW +E46/efVKF92PWJ/53v5YYRLWW4OiXRRVSAv7Dw7SmccTlPm/s2s9W1D7K56i9V/iIj8 RbtQ== X-Gm-Message-State: AOJu0Yzr5amGuwFuUAbCynEA831U61aIX8RJtujcqgUSegill/ALApV7 DRACo9g0mrPXzJ6w1BUHxFF0/yMDvGgtONfCD8IjiiV+P6xcuPr52ICJIrRnlQ== X-Gm-Gg: AZuq6aIY4kHvGtyAKhgCLjgHP05RBpA36T+GdLnzUEH5nj9iKnG396IdUHpqSvVL4jB I6ElSo5gXLczsIIesBa65hII113P03ReRorcbR2qylznCqj0kJimRxvr9eR4EoGk7xMlj4sA6f/ 3nSogXOpboNYLZKcaykFqSz1qxB0XptkVPOdmpLxSy+43CP/6e8RqPRFddK6r0z0cBcBZE4aa8y gAIL1aijaompDPfCnWJQVpNSlZnvN9rGEiHPxt4oo9opf/oTHjtAhWp3lvcDpmsqdC2BptjOGTc klVmOPO9reECq6xXZZ1YYDDLsN0lQ+gbrcgzONIw2uPyinqk9h7HcWr9QF22xXxiVM2dyd1kU+D 8X4sVVa0X6SZlOW2Ig0+Uis3IvN96WKSk0DOFjfbxl9FSGFbAC8uWCz6WyntPy/QlcBH3LOjhha 7CSCE030iibJrnnA== X-Received: by 2002:a17:90b:4a09:b0:32e:e18a:3691 with SMTP id 98e67ed59e1d1-3543b3f34d6mr10177956a91.35.1770010897460; Sun, 01 Feb 2026 21:41:37 -0800 (PST) From: Jeuk Kim To: qemu-devel@nongnu.org Cc: richard.henderson@linaro.org, jeuk20.kim@samsung.com, qemu-block@nongnu.org, j-young.choi@samsung.com Subject: [PULL v2 2/4] hw/ufs: fix CQE endianness and UPIU length Date: Mon, 2 Feb 2026 14:41:12 +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=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=jeuk20.kim@gmail.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, 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: 1770010930588154100 Content-Type: text/plain; charset="utf-8" From: Jeuk Kim Round-trip UTRD fields through cpu_to_le/ le_to_cpu when building MCQ CQEs = to keep BE hosts correct. Also avoid double BE conversion of response data_segment_length and document the LE round-trip. Signed-off-by: Jeuk Kim --- hw/ufs/lu.c | 3 +-- hw/ufs/ufs.c | 27 ++++++++++++++++++--------- include/block/ufs.h | 2 +- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/hw/ufs/lu.c b/hw/ufs/lu.c index 2d8ffd72c5..3f3c9589ce 100644 --- a/hw/ufs/lu.c +++ b/hw/ufs/lu.c @@ -53,8 +53,7 @@ static void ufs_build_scsi_response_upiu(UfsRequest *req,= uint8_t *sense, response =3D UFS_COMMAND_RESULT_FAIL; } =20 - data_segment_length =3D - cpu_to_be16(sense_len + sizeof(req->rsp_upiu.sr.sense_data_len)); + data_segment_length =3D sense_len + sizeof(req->rsp_upiu.sr.sense_data= _len); ufs_build_upiu_header(req, UFS_UPIU_TRANSACTION_RESPONSE, flags, respo= nse, status, data_segment_length); } diff --git a/hw/ufs/ufs.c b/hw/ufs/ufs.c index d3f08f2ba9..9cf7eab9b0 100644 --- a/hw/ufs/ufs.c +++ b/hw/ufs/ufs.c @@ -449,15 +449,24 @@ static void ufs_mcq_process_cq(void *opaque) { ufs_dma_write_rsp_upiu(req); =20 - req->cqe.utp_addr =3D - ((uint64_t)req->utrd.command_desc_base_addr_hi << 32ULL) | - req->utrd.command_desc_base_addr_lo; - req->cqe.utp_addr |=3D req->sq->sqid; - req->cqe.resp_len =3D req->utrd.response_upiu_length; - req->cqe.resp_off =3D req->utrd.response_upiu_offset; - req->cqe.prdt_len =3D req->utrd.prd_table_length; - req->cqe.prdt_off =3D req->utrd.prd_table_offset; - req->cqe.status =3D req->utrd.header.dword_2 & 0xf; + /* UTRD/CQE are LE; round-trip through host to keep BE correct. */ + uint64_t ucdba =3D + ((uint64_t)le32_to_cpu(req->utrd.command_desc_base_addr_hi) + << 32ULL) | + le32_to_cpu(req->utrd.command_desc_base_addr_lo); + uint16_t resp_len =3D le16_to_cpu(req->utrd.response_upiu_length); + uint16_t resp_off =3D le16_to_cpu(req->utrd.response_upiu_offset); + uint16_t prdt_len =3D le16_to_cpu(req->utrd.prd_table_length); + uint16_t prdt_off =3D le16_to_cpu(req->utrd.prd_table_offset); + uint8_t status =3D le32_to_cpu(req->utrd.header.dword_2) & UFS_MAS= K_OCS; + + ucdba |=3D req->sq->sqid; + req->cqe.utp_addr =3D cpu_to_le64(ucdba); + req->cqe.resp_len =3D cpu_to_le16(resp_len); + req->cqe.resp_off =3D cpu_to_le16(resp_off); + req->cqe.prdt_len =3D cpu_to_le16(prdt_len); + req->cqe.prdt_off =3D cpu_to_le16(prdt_off); + req->cqe.status =3D status; req->cqe.error =3D 0; =20 ret =3D ufs_addr_write(u, cq->addr + tail, &req->cqe, sizeof(req->= cqe)); diff --git a/include/block/ufs.h b/include/block/ufs.h index ede4aff08e..04cb24324d 100644 --- a/include/block/ufs.h +++ b/include/block/ufs.h @@ -645,7 +645,7 @@ enum UtpOcsCodes { }; =20 enum { - UFS_MASK_OCS =3D 0x0F, + UFS_MASK_OCS =3D 0xFF, }; =20 /* --=20 2.43.0