From nobody Mon May 12 07:31:58 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1734024246; cv=none; d=zohomail.com; s=zohoarc; b=l7PWqGhMTSh+B1O+Qptdiw1TCujUI9q0oTrP14JVYJ2pWNsMPc5UAOGo4jRv6rMmx/OH7YcH4+w0zqQT/0F3AYO043kIp+6sYAuywCM1Bf/cdgnuzhEH4g1STr59shYBuewks+dD8k1uONwFitzu0NV4MhmJOvZaDySNZ5ke08U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734024246; h=Content-Type: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=Qns/X8H2PNJ05wsGWyjsR/L+wlODTrfFTvyB/zyipf8=; b=CFRWXIgKS3pOwmIomEfTzuf391JwP2o/PlS1vWLilIYo2lBGu7hsYv2NEXm3eDxjuU564XUxASayU/LlSH4puCtOyG9FoRwBpSA1VgeiLaeDVee9fuKV1MJWa5YGlLqXQ1SJTcRL4QqvK/zZcx7c5ARMaEallxtoV0plkonC4cA= 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=<pbonzini@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734024246678600.7020311694102; Thu, 12 Dec 2024 09:24:06 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tLmtV-0006oV-2z; Thu, 12 Dec 2024 12:22:33 -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 <pbonzini@redhat.com>) id 1tLmtN-0006mS-8F for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:25 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <pbonzini@redhat.com>) id 1tLmtG-0006mY-WF for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:24 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-645-UIiAOvAoMW-pjaCVcgUL7A-1; Thu, 12 Dec 2024 12:22:16 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-43582d49dacso7948885e9.2 for <qemu-devel@nongnu.org>; Thu, 12 Dec 2024 09:22:15 -0800 (PST) Received: from [192.168.10.47] ([151.81.118.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4362555334bsm22739135e9.1.2024.12.12.09.22.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 09:22:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734024137; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Qns/X8H2PNJ05wsGWyjsR/L+wlODTrfFTvyB/zyipf8=; b=bLbXmtifw+ysx+4NpsY2ubBP17Pw13xsmjd+GnqxXe8tiJJ4+/OBuqQiLe2oftv3BQ+foC UVoX2sSpx5/D/G+7/6RecW+F6fNmv2z4UBbL6ckdmQMXJSDoru1LydWTH/YiRuJdVq/W++ YOGGR3COpB2dqE4By3PMMD6ydxuVt4s= X-MC-Unique: UIiAOvAoMW-pjaCVcgUL7A-1 X-Mimecast-MFC-AGG-ID: UIiAOvAoMW-pjaCVcgUL7A X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734024134; x=1734628934; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Qns/X8H2PNJ05wsGWyjsR/L+wlODTrfFTvyB/zyipf8=; b=OYqmuzs1yQZg1XJunMHgLRvegEdNbYLezOcpFKIiStnlQLtGIUDcHg2k3zlSFk2I+m wF+YMrc9z52n32cHIZy0ApHsSJkjz1zoPGVtowQ5UbLv5oUb/+AemLbzV3qe9yJHQ+O7 3+TtGsmfq5WrsVooPHZxxyVvLh0nYMdoY1wXzzVyySErG0W3kkuGGjduaJoG5Un4w0aJ ZAKonV92rY1GAnHkDItD+jBpHw0hncV941PVg2HTtwwj+cQ5/ERQaFVlwWq6NGUutMKQ KwLfzTyJELFswR0SLSYsXQPagAm0atKJa9BzO/I3IS00w7PpZ1+mZYXAPdSTYK8yXdkj qDHg== X-Gm-Message-State: AOJu0Yx53eQpcn4STgmMsoq44gpvYfskyDfOF+Rfl/pbMcNP2zMQl4kj HnL8Lm49rX8RrQJaxb//W7IhbH2vUKE8ErNc/DkpWlO3N/N6/HIE2/wRYeFZmB+WjnDSiPrSvSe 2rME3SYteqe8cSxzLzH8MMFEYyc5S8M6ocwCjQXvskfafQCYX9qjJfo3NVgWc2hq3EaVh/5PMmP EMjFFpGfEgUUfwk1vrOy4qOfmGNqRDF4infpbi X-Gm-Gg: ASbGncuevHBD1DBErx8ddhKuCMRaNZhVMM2piUWP+VCEHvN4jjoyyOuAMXknJBZ4EYH drDyBqwqfrE6hwb1a3/LlGwynbUAA8RKndSYBJZ7XRF0qVJENxeLdkNu4BaZid3NI93F93XH/+/ iP1B4SvS1NokD8Aa3e8tMzx0GYDJ2mRW+ETJocqrduuYfWvMlnBL4QWNk1kMTyL7wwfOEzQeklv FoiWgIQjZLXfpZ4QmSSSoX+3jookekFgZiccaW14jjSGfze9zZ44aLunA2t X-Received: by 2002:a05:600c:3593:b0:435:294:f1c8 with SMTP id 5b1f17b1804b1-43622883637mr31159165e9.28.1734024133906; Thu, 12 Dec 2024 09:22:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IGbopeWngomw2GJnLUPpY65052E82dIWyU/Xh4pmo+qt4fFEVBFBxQb/yuBEwHKpSSHpc/W6A== X-Received: by 2002:a05:600c:3593:b0:435:294:f1c8 with SMTP id 5b1f17b1804b1-43622883637mr31158895e9.28.1734024133412; Thu, 12 Dec 2024 09:22:13 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Cc: philmd@linaro.org, qemu-rust@nongnu.org Subject: [PATCH 1/7] rust: pl011: fix declaration of LineControl bits Date: Thu, 12 Dec 2024 18:21:58 +0100 Message-ID: <20241212172209.533779-2-pbonzini@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241212172209.533779-1-pbonzini@redhat.com> References: <20241212172209.533779-1-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1734024248813116600 The bits in the LineControl struct were backwards. :( Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> --- rust/hw/char/pl011/src/lib.rs | 82 +++++++++++++++++------------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/rust/hw/char/pl011/src/lib.rs b/rust/hw/char/pl011/src/lib.rs index 4dc0e8f345f..d5089f78854 100644 --- a/rust/hw/char/pl011/src/lib.rs +++ b/rust/hw/char/pl011/src/lib.rs @@ -319,32 +319,21 @@ fn default() -> Self { /// Line Control Register, `UARTLCR_H` #[doc(alias =3D "UARTLCR_H")] pub struct LineControl { - /// 15:8 - Reserved, do not modify, read as zero. - _reserved_zero_no_modify: u8, - /// 7 SPS Stick parity select. - /// 0 =3D stick parity is disabled - /// 1 =3D either: - /// =E2=80=A2 if the EPS bit is 0 then the parity bit is transmitt= ed and checked - /// as a 1 =E2=80=A2 if the EPS bit is 1 then the parity bit is - /// transmitted and checked as a 0. This bit has no effect when - /// the PEN bit disables parity checking and generation. See Table= 3-11 - /// on page 3-14 for the parity truth table. - pub sticky_parity: bool, - /// WLEN Word length. These bits indicate the number of data bits - /// transmitted or received in a frame as follows: b11 =3D 8 bits - /// b10 =3D 7 bits - /// b01 =3D 6 bits - /// b00 =3D 5 bits. - pub word_length: WordLength, - /// FEN Enable FIFOs: - /// 0 =3D FIFOs are disabled (character mode) that is, the FIFOs b= ecome - /// 1-byte-deep holding registers 1 =3D transmit and receive FIFO - /// buffers are enabled (FIFO mode). - pub fifos_enabled: Mode, - /// 3 STP2 Two stop bits select. If this bit is set to 1, two stop= bits - /// are transmitted at the end of the frame. The receive - /// logic does not check for two stop bits being received. - pub two_stops_bits: bool, + /// BRK Send break. + /// + /// If this bit is set to `1`, a low-level is continually output o= n the + /// `UARTTXD` output, after completing transmission of the + /// current character. For the proper execution of the break comma= nd, + /// the software must set this bit for at least two complete + /// frames. For normal use, this bit must be cleared to `0`. + pub send_break: bool, + /// 1 PEN Parity enable: + /// + /// - 0 =3D parity is disabled and no parity bit added to the data= frame + /// - 1 =3D parity checking and generation is enabled. + /// + /// See Table 3-11 on page 3-14 for the parity truth table. + pub parity_enabled: bool, /// EPS Even parity select. Controls the type of parity the UART u= ses /// during transmission and reception: /// - 0 =3D odd parity. The UART generates or checks for an odd nu= mber of @@ -355,21 +344,32 @@ pub struct LineControl { /// and generation. See Table 3-11 on page 3-14 for the parity /// truth table. pub parity: Parity, - /// 1 PEN Parity enable: - /// - /// - 0 =3D parity is disabled and no parity bit added to the data= frame - /// - 1 =3D parity checking and generation is enabled. - /// - /// See Table 3-11 on page 3-14 for the parity truth table. - pub parity_enabled: bool, - /// BRK Send break. - /// - /// If this bit is set to `1`, a low-level is continually output o= n the - /// `UARTTXD` output, after completing transmission of the - /// current character. For the proper execution of the break comma= nd, - /// the software must set this bit for at least two complete - /// frames. For normal use, this bit must be cleared to `0`. - pub send_break: bool, + /// 3 STP2 Two stop bits select. If this bit is set to 1, two stop= bits + /// are transmitted at the end of the frame. The receive + /// logic does not check for two stop bits being received. + pub two_stops_bits: bool, + /// FEN Enable FIFOs: + /// 0 =3D FIFOs are disabled (character mode) that is, the FIFOs b= ecome + /// 1-byte-deep holding registers 1 =3D transmit and receive FIFO + /// buffers are enabled (FIFO mode). + pub fifos_enabled: Mode, + /// WLEN Word length. These bits indicate the number of data bits + /// transmitted or received in a frame as follows: b11 =3D 8 bits + /// b10 =3D 7 bits + /// b01 =3D 6 bits + /// b00 =3D 5 bits. + pub word_length: WordLength, + /// 7 SPS Stick parity select. + /// 0 =3D stick parity is disabled + /// 1 =3D either: + /// =E2=80=A2 if the EPS bit is 0 then the parity bit is transmitt= ed and checked + /// as a 1 =E2=80=A2 if the EPS bit is 1 then the parity bit is + /// transmitted and checked as a 0. This bit has no effect when + /// the PEN bit disables parity checking and generation. See Table= 3-11 + /// on page 3-14 for the parity truth table. + pub sticky_parity: bool, + /// 15:8 - Reserved, do not modify, read as zero. + _reserved_zero_no_modify: u8, } =20 impl LineControl { --=20 2.47.1 From nobody Mon May 12 07:31:58 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1734024207; cv=none; d=zohomail.com; s=zohoarc; b=B46/A2qdCYUnCBRdbNctNlK/8LHHLgSbcR56S620Dj0vzB3csbc/DpUN1n2DDvnDk3nvh4dOCnu1FcfWvPWPF0cYZ6V31TtqpTK77gC8+C5A6SAKv3hHxoJfSrEOeoNwq45EnJzdvCJP1WdsxmTHBgUB9/St6zNwDNEcCid8BPo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734024207; 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=zlSROje/jH4aIG+vHs+aMStbuV+YcJ8QhC20zV8MRIQ=; b=UToSKkxmHu/6vKh0VtTOB+BS5j9j2LGX9RUwh7hzcDvQh9n2gEMH04aXsTSECBCLWHQAyP2dBW8xxGCb1Zg1xuZZ7ZjXK5AY2VKRT2LdqZJXLK0+zGGKwjhEkw6CLtusPgo64/iAvWytyhjBNMozhE2zGRGeFpG6JyadysolwuU= 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=<pbonzini@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 173402420794034.883075561443775; Thu, 12 Dec 2024 09:23:27 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tLmtW-0006pU-1M; Thu, 12 Dec 2024 12:22:34 -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 <pbonzini@redhat.com>) id 1tLmtO-0006mU-PM for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:28 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <pbonzini@redhat.com>) id 1tLmtI-0006mt-RH for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:25 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-638-9_IpYgGQPVmR0-u-mxLz1Q-1; Thu, 12 Dec 2024 12:22:18 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-434fe2b605eso5521575e9.2 for <qemu-devel@nongnu.org>; Thu, 12 Dec 2024 09:22:18 -0800 (PST) Received: from [192.168.10.47] ([151.81.118.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4361ec88993sm27906175e9.2.2024.12.12.09.22.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 09:22:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734024140; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zlSROje/jH4aIG+vHs+aMStbuV+YcJ8QhC20zV8MRIQ=; b=QjE/GplGFQm5Ttdag1tDtYNqPsKwqMJJjPysii5kM1x7xwZXuyM6IiFU8A4dPzl35aDrbt //SVl+E7XZ1Sh0SfL2lfh1+FU5V2vMxxaxo9G3p9wEk5v5e5V9KN0RMbdPnzDo/A3nv+dD YGylIcGAUmSzif2nGXF+WVavX4lcDR8= X-MC-Unique: 9_IpYgGQPVmR0-u-mxLz1Q-1 X-Mimecast-MFC-AGG-ID: 9_IpYgGQPVmR0-u-mxLz1Q X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734024136; x=1734628936; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zlSROje/jH4aIG+vHs+aMStbuV+YcJ8QhC20zV8MRIQ=; b=MdB5vOgzZCojbpN1Tbd0gzQ50Q1gpabLT1GUC0afM1ViN8E3aVCpxmA5giHlDGGDtx Z4j/or0SKcTr/XW2s8fdLXT+F9Y19u2fe0gWWpzhRXd6h34Zmbm2MnW4PaaOQ+nBHgOr yzmw4ixNeDUAiPclqpLx1lqNyZ29qI4pTk9qT1AXkew+Qgcp5I5YqCiCpJJ+ilMGthuC 1oghwlXV97K02MeS6m/Iea06UAZ+DYYyYFoCsaEw4aXeBKlsG+29D7E8joSRFCGhVJhK vmNhkevNc2TZa3XzMhzZKOhBf3hhiWK0P6CSoa/67KC6GyPOapqVt3qI8ZBSHcPdGmXL qlMQ== X-Gm-Message-State: AOJu0YwS1DWBNWu1Bmvrazv2VLHySSHEd7e43jaMkTtC5HHBbwhU0HTN U4b3RKbl+T7AE5C/lfISKEFmre1Do305eqh62ylnumji4XMdNTeJiEErCbadHdAnTf5VqzZh6vn x+V4m8r+GvZ1WAD3+k5tRYpFk3Im2SfOlW5LQI5Wd6mjXrdC4W8g/Bxi15Ar6RbNk0XrH7i2d3m Ig0Dd5N3cQ1n0x0afOoohDEtI9Fii+tkLCpxT5 X-Gm-Gg: ASbGncuNOP82TaR0vZwjEtVo2mYFgTe0AebLEia2px70YqhTNDuv1q+i632LUL8F5pu uRYsBI921yPh2Lumx21wUG/3kMLOloKPkuy9fUTACLVhUOY46NmQOGm1/Est9NxWj3xdG9SW82P vk3I2MT29nOR76yMa/h/AVUTL4bjLjyngCcRerod895/vMdNZEVD9GbYSyt9n+fZhbjSjQHxUSq RKPYg7WoC9ajn6yot3i3QNeg8T44SnuJAMW5dSUJkT5eTFPh5If8GR1Eb9l X-Received: by 2002:a05:600c:4e4b:b0:434:ff08:202b with SMTP id 5b1f17b1804b1-4361c36f5b3mr66285495e9.12.1734024136143; Thu, 12 Dec 2024 09:22:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IFsA5q7Fbw+NO+Mi5ht77fAvi9wOGQ4Iwy+WrOa3qRpj3Ln99lbAVYKYkTAluwaRHRWlIHtvw== X-Received: by 2002:a05:600c:4e4b:b0:434:ff08:202b with SMTP id 5b1f17b1804b1-4361c36f5b3mr66285185e9.12.1734024135711; Thu, 12 Dec 2024 09:22:15 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Cc: philmd@linaro.org, qemu-rust@nongnu.org Subject: [PATCH 2/7] rust: pl011: match break logic of C version Date: Thu, 12 Dec 2024 18:21:59 +0100 Message-ID: <20241212172209.533779-3-pbonzini@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241212172209.533779-1-pbonzini@redhat.com> References: <20241212172209.533779-1-pbonzini@redhat.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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1734024208575116600 Content-Type: text/plain; charset="utf-8" Check loopback_enabled(), not fifo_enabled(), like the C code. Also, set_break_error() must not happen until the break is read from the FIFO. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> --- rust/hw/char/pl011/src/device.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 41220c99a83..c6a8dbe1af4 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -465,9 +465,8 @@ pub fn can_receive(&self) -> bool { } =20 pub fn event(&mut self, event: QEMUChrEvent) { - if event =3D=3D bindings::QEMUChrEvent::CHR_EVENT_BREAK && !self.f= ifo_enabled() { + if event =3D=3D bindings::QEMUChrEvent::CHR_EVENT_BREAK && !self.l= oopback_enabled() { self.put_fifo(DATA_BREAK); - self.receive_status_error_clear.set_break_error(true); } } =20 --=20 2.47.1 From nobody Mon May 12 07:31:58 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1734024242; cv=none; d=zohomail.com; s=zohoarc; b=S8yPoMISzTRN3V1j5dQ0eL3BIlKZsTIqUOke2xqUHW1SoXqM1Pl7VUXGrU4oNCW3EkE9T2T45KX9ItE8Df4q4IecCK8sVoFAz9wJnMpMjUzoKN3uC60iDibBu3RZ08XFs3xE1QYmAV5eCJHLpKFFxl/f7AGkxUlV3N3aSLzkkbI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734024242; 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=QK+lsN9N8GKnH3zKNE8BJxFeo8zX1mw/5X/o/AQc7oc=; b=OugovwRQULdrQplMehSc2SsKwYEATpq4B3Yx8AUd4DwBd4XYl9IZ5v5CZcR7qGKQWqlwZ+B4n3cn/8zWV5usroFobybW7e9iXeYCHsBrplqaAzHA65TqhJS2ElQoKPpyKJnr/8HnKGVKVrTf5ls66/EvA0luuF1/u+888uCDuBc= 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=<pbonzini@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734024242731211.1379892448474; Thu, 12 Dec 2024 09:24:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tLmtV-0006oe-BR; Thu, 12 Dec 2024 12:22:33 -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 <pbonzini@redhat.com>) id 1tLmtT-0006nY-Cm for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:31 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <pbonzini@redhat.com>) id 1tLmtP-0006nj-EQ for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:29 -0500 Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-453-EeNdB360PNWx2advWsDeVg-1; Thu, 12 Dec 2024 12:22:24 -0500 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-436228ebc5eso5427615e9.3 for <qemu-devel@nongnu.org>; Thu, 12 Dec 2024 09:22:24 -0800 (PST) Received: from [192.168.10.47] ([151.81.118.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4361ec88993sm27906505e9.2.2024.12.12.09.22.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 09:22:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734024145; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QK+lsN9N8GKnH3zKNE8BJxFeo8zX1mw/5X/o/AQc7oc=; b=ITykdqR+wQXU+/WCOYxrKz8bvObcVYXU4yw9qzfYV7aegXiKtKc89Tlsf3RLNQoJCGE6Fg j8+Pyt7jZVSInux/3UwTVotRUArFaT8+atM0Z1SqWCOVjZYdMWl9cjYTYnN548Idz+9PTm pgb+gS0p8VmwKLqH5XLTn2+6F1sNPyk= X-MC-Unique: EeNdB360PNWx2advWsDeVg-1 X-Mimecast-MFC-AGG-ID: EeNdB360PNWx2advWsDeVg X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734024142; x=1734628942; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QK+lsN9N8GKnH3zKNE8BJxFeo8zX1mw/5X/o/AQc7oc=; b=qU1FGsXdPdHkTaM9hvImaVh+niXOQoxm/YUe2yvD96An0mBy6AteO63C3Va+vFdvOB EXbkLR4iUynswQ4eJvsHq6PMJXMvJA6vdZJFGGZxHH1KoOmLEPW7h3xP0uv1OV4dLv5C aE/9zC7QZKqAiByv0+DyduFqt4vJ7K55CszyaeVThU/r2rYqEX/hBqn8bMGmyMAYOymm md5u4Fh9m5AdrwOHGnjfzl1/McKs5tn684fovaHrc6EVNQ71C8FZGI+qkFItu4sm8yND OJARnVq5dWhDUu1aU/GfuHBnD3/snBSw2Qev6H9Jk7ZrZp/nwNx1xeH6+4B0On9LyNSM K7kw== X-Gm-Message-State: AOJu0YzNIBcG4nuCUrT6WViMfgP17o1b59v4Ym0euDGL8sNeSGrWaq5f MQNB3w4kjScleU07SAATY9+Th3CZ/FP20ysIq2pLbc0sMYC5pPFo9N6I9HG6em626cvF3yHrTSH 1P9C6SjuIKt67QOOxkrZzWbZvMiCmwEsjeiSp4eozYSu/CsF774BLVYCEiZFsIIHEgZivIF4osV lPxbf439TNx55WnLIKzRICnOiTww4M7f5klJGW X-Gm-Gg: ASbGnctn6PmsDCBXd2gHpLoqoa3WNnfU4SCHh2w4CQMQ7kKWs3QJ5vNby1epCgzy/8M 5fQs7jM5cA0o77hwFGvnoSeK4bG+mkbe/AbQXvaG68uqofIgRGfAYS5WYbfthLtPuyX/5IltjJ9 2/kzjJMfAshdrQ395dpvEap5d3675ynb083HlLtFD8lPB/Ps36JO72yOc6kvcnNR5PyGoNh4D24 XeSemWxHuuAb9NhHhZdKq89MvUuPxtqiNVe4mSZfuMiZomFdp7i/T9jH4P5 X-Received: by 2002:a05:600c:4f86:b0:434:9e46:5bc with SMTP id 5b1f17b1804b1-4361c35cf0amr77607425e9.10.1734024140836; Thu, 12 Dec 2024 09:22:20 -0800 (PST) X-Google-Smtp-Source: AGHT+IGOALJOSWPkWDyRLWHIqDFZoBkOeAohS1YxP/+7qkyhP9o/3cIaJKip1GqeHKcue6wF83J6kg== X-Received: by 2002:a05:600c:4f86:b0:434:9e46:5bc with SMTP id 5b1f17b1804b1-4361c35cf0amr77605895e9.10.1734024138930; Thu, 12 Dec 2024 09:22:18 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Cc: philmd@linaro.org, qemu-rust@nongnu.org Subject: [PATCH 3/7] rust: pl011: always use reset() method on registers Date: Thu, 12 Dec 2024 18:22:00 +0100 Message-ID: <20241212172209.533779-4-pbonzini@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241212172209.533779-1-pbonzini@redhat.com> References: <20241212172209.533779-1-pbonzini@redhat.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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1734024244741116600 Content-Type: text/plain; charset="utf-8" For CR, the ugly-ish "0.into()" idiom is already hidden within the Default trait. Do not repeat it. For FR, standardize on reset() being equivalent to "*self =3D Self::default= ()" and let reset_fifo toggle only the bits that are related to FIFOs. This commit also reproduces C commit 02b1f7f6192 ("hw/char/pl011: Split RX/TX path of pl011_reset_fifo()", 2024-09-13). Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> --- rust/hw/char/pl011/src/device.rs | 23 ++++++++++++++++------- rust/hw/char/pl011/src/lib.rs | 13 +++++-------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index c6a8dbe1af4..eb15e9d5788 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -267,7 +267,7 @@ pub fn write(&mut self, offset: hwaddr, value: u64) { self.update(); } Ok(RSR) =3D> { - self.receive_status_error_clear =3D 0.into(); + self.receive_status_error_clear.reset(); } Ok(FR) =3D> { // flag writes are ignored @@ -288,7 +288,8 @@ pub fn write(&mut self, offset: hwaddr, value: u64) { if bool::from(self.line_control.fifos_enabled()) ^ bool::from(new_val.fifos_enabled()) { - self.reset_fifo(); + self.reset_rx_fifo(); + self.reset_tx_fifo(); } if self.line_control.send_break() ^ new_val.send_break() { let mut break_enable: c_int =3D new_val.send_break().i= nto(); @@ -447,16 +448,24 @@ pub fn reset(&mut self) { self.read_trigger =3D 1; self.ifl =3D 0x12; self.control.reset(); - self.flags =3D 0.into(); - self.reset_fifo(); + self.flags.reset(); + self.reset_rx_fifo(); + self.reset_tx_fifo(); } =20 - pub fn reset_fifo(&mut self) { + pub fn reset_rx_fifo(&mut self) { self.read_count =3D 0; self.read_pos =3D 0; =20 - /* Reset FIFO flags */ - self.flags.reset(); + // Reset FIFO flags + self.flags.set_receive_fifo_full(false); + self.flags.set_receive_fifo_empty(true); + } + + pub fn reset_tx_fifo(&mut self) { + // Reset FIFO flags + self.flags.set_transmit_fifo_full(false); + self.flags.set_transmit_fifo_empty(true); } =20 pub fn can_receive(&self) -> bool { diff --git a/rust/hw/char/pl011/src/lib.rs b/rust/hw/char/pl011/src/lib.rs index d5089f78854..e3eacb0e6b9 100644 --- a/rust/hw/char/pl011/src/lib.rs +++ b/rust/hw/char/pl011/src/lib.rs @@ -230,7 +230,7 @@ pub struct ReceiveStatusErrorClear { impl ReceiveStatusErrorClear { pub fn reset(&mut self) { // All the bits are cleared to 0 on reset. - *self =3D 0.into(); + *self =3D Self::default(); } } =20 @@ -297,19 +297,16 @@ pub struct Flags { =20 impl Flags { pub fn reset(&mut self) { - // After reset TXFF, RXFF, and BUSY are 0, and TXFE and RXFE a= re 1 - self.set_receive_fifo_full(false); - self.set_transmit_fifo_full(false); - self.set_busy(false); - self.set_receive_fifo_empty(true); - self.set_transmit_fifo_empty(true); + *self =3D Self::default(); } } =20 impl Default for Flags { fn default() -> Self { let mut ret: Self =3D 0.into(); - ret.reset(); + // After reset TXFF, RXFF, and BUSY are 0, and TXFE and RXFE a= re 1 + ret.set_receive_fifo_empty(true); + ret.set_transmit_fifo_empty(true); ret } } --=20 2.47.1 From nobody Mon May 12 07:31:58 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1734024199; cv=none; d=zohomail.com; s=zohoarc; b=DybitO+a628GVMhLKbiVa481l1XKol+NWvS+f8zTUHXqHTeSAyjICzJzcd6OvldWJo6MHXSR29KiaV/bKzwByLjEemWWWg6uhTCm274RB+jsIqRYq+t73soNnoetMBLnrCRrgorQd88xeDxeLtV3x5rMp4oYN9xhdk121C/B8ZQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734024199; 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=u6V2KCGpKcKJaSNdx7ZIwr1bDMF8vYPd7y6l/A6UdOQ=; b=cAzMS8Bl5TJ3eNPHv+pWjYaT2pMsqYUSCTIXzLU8ONARNQvRkrVX9bnfhzchvsxmDymbufFoaM/FkqvOLiffISVCupEec64W4zYv9AU2kzP8QqwEjIc5XXR3I87I3pr6t94IQLrLFadi/NqKRCeV1JEFRduRYzrD1ZT8cHBeJLU= 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=<pbonzini@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734024198812408.55396858867834; Thu, 12 Dec 2024 09:23:18 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tLmtW-0006qE-T5; Thu, 12 Dec 2024 12:22:34 -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 <pbonzini@redhat.com>) id 1tLmtR-0006mt-4H for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:30 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <pbonzini@redhat.com>) id 1tLmtN-0006nI-54 for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:28 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-441-z7KIu92xOeOmuKlopWI0Lg-1; Thu, 12 Dec 2024 12:22:22 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-436228ebc5eso5427375e9.3 for <qemu-devel@nongnu.org>; Thu, 12 Dec 2024 09:22:22 -0800 (PST) Received: from [192.168.10.47] ([151.81.118.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-436255531fdsm22664625e9.2.2024.12.12.09.22.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 09:22:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734024144; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=u6V2KCGpKcKJaSNdx7ZIwr1bDMF8vYPd7y6l/A6UdOQ=; b=IQDZ4FJqlnDHj5GsG90Jo8QvvlenH2UO07FHXuYJZOYQMFauLMZ7cZtHvxccpSNE75nT42 FAub+9NMe4K46jflxTtiNESCYEsjDPx14r6WTjW6WoUw0cRvXdsTOdc/mVWUti8GdjuUA5 ObcV7AbBUFEgN9IpocOMv3Jos2PFKvI= X-MC-Unique: z7KIu92xOeOmuKlopWI0Lg-1 X-Mimecast-MFC-AGG-ID: z7KIu92xOeOmuKlopWI0Lg X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734024141; x=1734628941; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=u6V2KCGpKcKJaSNdx7ZIwr1bDMF8vYPd7y6l/A6UdOQ=; b=bPm3jRT8lH43dkvcXwTD5stHoTwkVsu869oCPpdLdN90KGbegwMo5XaU73PMCXlDNL KccT0qUnUAF7wBdK6iV7RyVsX9R0wshvDrz2iRpe16rh1oSRz3xVSrBqQMD4yLJJ9ZPX ufFuBRi3HyN8nI/O3fBqKEaI7P/J2gI8FbJm4NVdBKOrrrc7HipAV6sNwMTtxibObFMl WIrsmuywbw63Aduit3mE29kh6sPymuo63Y0P3zB+NvdauYHdTbVe9UBZGmXkISNvctqk 52Xk5j9BJe38KhY41P9Vm1y7uk2Zn9JjUPc/QsVinhlY099Qj3TEh0/tnGE0hJBdg8W5 toVQ== X-Gm-Message-State: AOJu0YwvjqGGzJN5nd31E2KoD0+0e8ZUeUaLuQjXLwGDmPBmg9evOYik cSffLKKJfOxCGDJ8Eu3VN33RG6Y62STmL0PVNJeiC1KsOT7/pg7kruFKNAARqA3bbeupD+flzVU 7okD/tVW3+mcR164Jxd2fHqgfK9HP5BA+HW1cGLe4zHAtX5DWrDZNMA7fuOl0Y6JFt2xeRXwLGK HWT1E5lg8Ov87YUD7JrbTbsiJTxmXfFfIpLCR5 X-Gm-Gg: ASbGncsjjoFs/eN9zVMxJNBDE+qTMmp5CkQJS7i58Z3/Xnk9Sc9jfDOS3Dz1RSYxyHE 8gYEKIv3dtEylH44Nl7TdZHmzoC4AsOzXGrHx7GfiqtDT80q9RAQRjI0nuuMyqWFqm5R0HUEbJx CkCEsVoS/gXmnHf7Q7oRz2iHp4kG83X0HySMFy/PgA93lLK8RdjE2+WP05421ZnIl+HLvudsOmp GmI94v71nA0ABW57aBq6AgcNv+YWSVhHCITtG1wiEhW+mkz8KQxfkx1LgHL X-Received: by 2002:a05:600c:1d1d:b0:434:f335:83b with SMTP id 5b1f17b1804b1-4361c344549mr61038445e9.5.1734024141033; Thu, 12 Dec 2024 09:22:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IH5LiWj4pWCKznuzLNsiEJ08jd8fnoongVHTt0lL4NL6k4DsTSN6lkBCvK1s8BBcFEyk6kyTg== X-Received: by 2002:a05:600c:1d1d:b0:434:f335:83b with SMTP id 5b1f17b1804b1-4361c344549mr61038215e9.5.1734024140569; Thu, 12 Dec 2024 09:22:20 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Cc: philmd@linaro.org, qemu-rust@nongnu.org Subject: [PATCH 4/7] rust: pl011: fix break errors and definition of Data struct Date: Thu, 12 Dec 2024 18:22:01 +0100 Message-ID: <20241212172209.533779-5-pbonzini@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241212172209.533779-1-pbonzini@redhat.com> References: <20241212172209.533779-1-pbonzini@redhat.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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1734024200648116600 Content-Type: text/plain; charset="utf-8" The Data struct is wrong, and does not show how bits 8-15 of DR are the receive status. Fix it, and use it to fix break errors ("c >> 8" in the C code does not translate to "c.to_be_bytes()[3]"). Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> --- rust/hw/char/pl011/src/device.rs | 15 ++++++------ rust/hw/char/pl011/src/lib.rs | 41 ++++++++++++++++++++++---------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index eb15e9d5788..e88ea24b00e 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -30,8 +30,6 @@ /// Fractional Baud Rate Divider, `UARTFBRD` const FBRD_MASK: u32 =3D 0x3f; =20 -const DATA_BREAK: u32 =3D 1 << 10; - /// QEMU sourced constant. pub const PL011_FIFO_DEPTH: usize =3D 16_usize; =20 @@ -68,7 +66,7 @@ pub struct PL011State { pub dmacr: u32, pub int_enabled: u32, pub int_level: u32, - pub read_fifo: [u32; PL011_FIFO_DEPTH], + pub read_fifo: [registers::Data; PL011_FIFO_DEPTH], pub ilpr: u32, pub ibrd: u32, pub fbrd: u32, @@ -215,10 +213,11 @@ pub fn read(&mut self, offset: hwaddr, _size: c_uint)= -> std::ops::ControlFlow<u self.int_level &=3D !registers::INT_RX; } // Update error bits. - self.receive_status_error_clear =3D c.to_be_bytes()[3].int= o(); + self.receive_status_error_clear.set_from_data(c); self.update(); // Must call qemu_chr_fe_accept_input, so return Continue: - return std::ops::ControlFlow::Continue(c.into()); + let c =3D u32::from(c); + return std::ops::ControlFlow::Continue(u64::from(c)); } Ok(RSR) =3D> u8::from(self.receive_status_error_clear).into(), Ok(FR) =3D> u16::from(self.flags).into(), @@ -411,7 +410,7 @@ fn loopback_mdmctrl(&mut self) { =20 fn loopback_break(&mut self, enable: bool) { if enable { - self.loopback_tx(DATA_BREAK); + self.loopback_tx(registers::Data::BREAK.into()); } } =20 @@ -475,7 +474,7 @@ pub fn can_receive(&self) -> bool { =20 pub fn event(&mut self, event: QEMUChrEvent) { if event =3D=3D bindings::QEMUChrEvent::CHR_EVENT_BREAK && !self.l= oopback_enabled() { - self.put_fifo(DATA_BREAK); + self.put_fifo(registers::Data::BREAK.into()); } } =20 @@ -502,7 +501,7 @@ pub fn put_fifo(&mut self, value: c_uint) { let depth =3D self.fifo_depth(); assert!(depth > 0); let slot =3D (self.read_pos + self.read_count) & (depth - 1); - self.read_fifo[slot] =3D value; + self.read_fifo[slot] =3D registers::Data::from(value); self.read_count +=3D 1; self.flags.set_receive_fifo_empty(false); if self.read_count =3D=3D depth { diff --git a/rust/hw/char/pl011/src/lib.rs b/rust/hw/char/pl011/src/lib.rs index e3eacb0e6b9..463ae60543b 100644 --- a/rust/hw/char/pl011/src/lib.rs +++ b/rust/hw/char/pl011/src/lib.rs @@ -139,6 +139,21 @@ pub mod registers { //! unused thus treated as zero when read or written. use bilge::prelude::*; =20 + /// Receive Status Register / Data Register common error bits + /// + /// The `UARTRSR` register is updated only when a read occurs + /// from the `UARTDR` register with the same status information + /// that can also be obtained by reading the `UARTDR` register + #[bitsize(8)] + #[derive(Clone, Copy, Default, DebugBits, FromBits)] + pub struct Errors { + pub framing_error: bool, + pub parity_error: bool, + pub break_error: bool, + pub overrun_error: bool, + _reserved_unpredictable: u4, + } + // TODO: FIFO Mode has different semantics /// Data Register, `UARTDR` /// @@ -181,16 +196,18 @@ pub mod registers { /// /// # Source /// ARM DDI 0183G 3.3.1 Data Register, UARTDR - #[bitsize(16)] - #[derive(Clone, Copy, DebugBits, FromBits)] + #[bitsize(32)] + #[derive(Clone, Copy, Default, DebugBits, FromBits)] #[doc(alias =3D "UARTDR")] pub struct Data { - _reserved: u4, pub data: u8, - pub framing_error: bool, - pub parity_error: bool, - pub break_error: bool, - pub overrun_error: bool, + pub errors: Errors, + _reserved: u16, + } + + impl Data { + // bilge is not very const-friendly, unfortunately + pub const BREAK: Self =3D Self { value: 1 << 10 }; } =20 // TODO: FIFO Mode has different semantics @@ -220,14 +237,14 @@ pub struct Data { #[bitsize(8)] #[derive(Clone, Copy, DebugBits, FromBits)] pub struct ReceiveStatusErrorClear { - pub framing_error: bool, - pub parity_error: bool, - pub break_error: bool, - pub overrun_error: bool, - _reserved_unpredictable: u4, + pub errors: Errors, } =20 impl ReceiveStatusErrorClear { + pub fn set_from_data(&mut self, data: Data) { + self.set_errors(data.errors()); + } + pub fn reset(&mut self) { // All the bits are cleared to 0 on reset. *self =3D Self::default(); --=20 2.47.1 From nobody Mon May 12 07:31:58 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1734024199; cv=none; d=zohomail.com; s=zohoarc; b=b7aswPOtb+sfpIbA8SVeE0Q/Fnuppxt9dg1juziPiLdLEs/dvQqf8XnJzpifScpZsFMqk0dXP76rIhSrK9TwQAsUGUZWK0eZqOZ3E5/9U9aGJU3AWeIB5A/vG7J9/XweCmC+Bhvqv1Rhgul3/ZnmEw2mx0k0z4ojhwbEYDRY6wM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734024199; 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=KHVqWO/pCUdfAOY6uDFnWMq+tGNU/At5wYKHm8JQJsI=; b=P33Dhzhys+5fU29x5up2yh1QuJUiNKZwOKXS1pB+8T9f181eob5s7pRgTL3lcY+xNCyQxlnegPv4WQ8pkpYBoJCyQ4ARderVV/kNBfCN984ymFzikDk2Rr+An8yfiPcVg6HFQH2XSUAWJTjrWWNx0VzCwBk0WURPduwa8VYGe3Y= 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=<pbonzini@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734024199285138.6296485611624; Thu, 12 Dec 2024 09:23:19 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tLmtb-0006sH-VA; Thu, 12 Dec 2024 12:22:39 -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 <pbonzini@redhat.com>) id 1tLmtW-0006ps-Ch for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:34 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <pbonzini@redhat.com>) id 1tLmtS-0006oB-6B for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:34 -0500 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-651-1hS0ErUeM1Gzc1ZtYIgQhw-1; Thu, 12 Dec 2024 12:22:27 -0500 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-43610eba55bso7942685e9.3 for <qemu-devel@nongnu.org>; Thu, 12 Dec 2024 09:22:26 -0800 (PST) Received: from [192.168.10.47] ([151.81.118.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4362557c6c2sm22187865e9.16.2024.12.12.09.22.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 09:22:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734024149; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=KHVqWO/pCUdfAOY6uDFnWMq+tGNU/At5wYKHm8JQJsI=; b=jTFW0sJWwtc3URQhmJP8PYdI/Oh/mo+gjZJN9hNfNufhTHQLqm5qJMT+gvOv8NCMlST3O4 d0WqNXgP1cqGoFVm/HOdbpFPfGCgwYDIqTwDTQRtPk7ICgCso14XULupgB/ry+56X4p5Ez EPe6gsGUlBgyBbHouQWtwoLMzjawph4= X-MC-Unique: 1hS0ErUeM1Gzc1ZtYIgQhw-1 X-Mimecast-MFC-AGG-ID: 1hS0ErUeM1Gzc1ZtYIgQhw X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734024145; x=1734628945; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KHVqWO/pCUdfAOY6uDFnWMq+tGNU/At5wYKHm8JQJsI=; b=XxDBfsOWGFiPMbIfVBArx7tkJQOdDqYNRb47A66I18rXVMwrkz4LXzgXyKatl6bNg0 HS3EiMzcHc6YWhmUT7sbjxkhrngqJ+ibduYnvmHIidTdtJepvtR3ZpNH8zOQGBQX5XlK 2bRcla9JrAv3p812YqrqIuVJLdjilA4NKzNgm2h7cHdbFG0aR2fPqVz1wAjk1c9EbqP8 9Kv4lyvXlsfuqw1ra5QR5+Eos3DWvqdsxMjvPGXKvH8hvgS4rdL90xtidVkRbEMGMhex 4K/3quxaYASQUSv4A0Ia4P1U5n3BrEZyynGBC4A5d9SwD4mCZp6y+l1o/MmxoCxotFIS hjfw== X-Gm-Message-State: AOJu0YxLpc3je2NZRRICwznZpd3F7jcGRS9X9LGCwvvwHYcDajrnp7Ao tio0+4KL9CS4Xly6yGhJe18OrkBW0fnXgvsaTZU/4U3Lhk4sqsWf+/wgSAo7R6mk7PFc8/ge56H e0cG+gCs/0vDAhDH6+ah5hz4uGolhDI/gtXsx0+qb9TPuISPz1NRlBIM2qMzddtW/MB5CNP3uCX qjO3yDcQasbOeNJwh4PLOts0FXdW8jVUHcvESN X-Gm-Gg: ASbGncvadW9f9Y1JEaY1Ai9cx4mvxVsuLWSh+12j/L4YSrlQAgB0VMx8+g8GZYqN1qM i666Lcpabf2jkF6boKZwGw3DhWxGOJ2lmYoL/E8gnRqlqRUtjqxsX5T0Ht1e7tKZJHvHIgOULUG YrYFpSTFFEm0igdnBzpaUZS+fg57Y5JPJK3muQnYuvvseUf35G/Ht5cHJOCV1TK/gu8RO2KI/Qo GATm0varU0QmNKvTm1V5zx/jO+i7P73fbycUdvtQttxZwV7HypelyoGCWjk X-Received: by 2002:a05:600c:4e49:b0:434:edcf:7474 with SMTP id 5b1f17b1804b1-43622883cd8mr37848665e9.33.1734024145098; Thu, 12 Dec 2024 09:22:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IHPtuQ9i7Q5Wttof82EifUn50vzbZkbe6+LFSMkXywkQw18sj1mp8gRfekBMl6pkeLXWAnpZg== X-Received: by 2002:a05:600c:4e49:b0:434:edcf:7474 with SMTP id 5b1f17b1804b1-43622883cd8mr37848415e9.33.1734024144601; Thu, 12 Dec 2024 09:22:24 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Cc: philmd@linaro.org, qemu-rust@nongnu.org Subject: [PATCH 5/7] rust: pl011: extend registers to 32 bits Date: Thu, 12 Dec 2024 18:22:02 +0100 Message-ID: <20241212172209.533779-6-pbonzini@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241212172209.533779-1-pbonzini@redhat.com> References: <20241212172209.533779-1-pbonzini@redhat.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=170.10.129.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1734024200711116600 Content-Type: text/plain; charset="utf-8" The PL011 Technical Reference Manual lists the "real" size of the registers in table 3-1, and only rounds up to the next byte when describing the registers; for example, UARTDR is listed as having width 12/8 (12 bits read, 8 written) and only bits 15:0 are listed in "Table 3-2 UARTDR Register". However, in practice these are 32-bit registers, accessible only through 32-bit MMIO accesses; preserving the fiction that they're smaller introduces multiple casts (to go from the bilge bitfield type to e.g u16 to u64) and more importantly it breaks the migration stream (though only on big-endian machines) because the Rust vmstate macros are not yet type safe. So, just make everything 32-bits wide. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> --- rust/hw/char/pl011/src/device.rs | 36 ++++++++++++++------------------ rust/hw/char/pl011/src/lib.rs | 23 +++++++++----------- 2 files changed, 26 insertions(+), 33 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index e88ea24b00e..332e0a31a82 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -190,10 +190,10 @@ unsafe fn init(&mut self) { pub fn read(&mut self, offset: hwaddr, _size: c_uint) -> std::ops::Con= trolFlow<u64, u64> { use RegisterOffset::*; =20 - std::ops::ControlFlow::Break(match RegisterOffset::try_from(offset= ) { + let value =3D match RegisterOffset::try_from(offset) { Err(v) if (0x3f8..0x400).contains(&(v >> 2)) =3D> { let device_id =3D self.get_class().device_id; - u64::from(device_id[(offset - 0xfe0) >> 2]) + u32::from(device_id[(offset - 0xfe0) >> 2]) } Err(_) =3D> { // qemu_log_mask(LOG_GUEST_ERROR, "pl011_read: Bad offset = 0x%x\n", (int)offset); @@ -219,27 +219,25 @@ pub fn read(&mut self, offset: hwaddr, _size: c_uint)= -> std::ops::ControlFlow<u let c =3D u32::from(c); return std::ops::ControlFlow::Continue(u64::from(c)); } - Ok(RSR) =3D> u8::from(self.receive_status_error_clear).into(), - Ok(FR) =3D> u16::from(self.flags).into(), - Ok(FBRD) =3D> self.fbrd.into(), - Ok(ILPR) =3D> self.ilpr.into(), - Ok(IBRD) =3D> self.ibrd.into(), - Ok(LCR_H) =3D> u16::from(self.line_control).into(), - Ok(CR) =3D> { - // We exercise our self-control. - u16::from(self.control).into() - } - Ok(FLS) =3D> self.ifl.into(), - Ok(IMSC) =3D> self.int_enabled.into(), - Ok(RIS) =3D> self.int_level.into(), - Ok(MIS) =3D> u64::from(self.int_level & self.int_enabled), + Ok(RSR) =3D> u32::from(self.receive_status_error_clear), + Ok(FR) =3D> u32::from(self.flags), + Ok(FBRD) =3D> self.fbrd, + Ok(ILPR) =3D> self.ilpr, + Ok(IBRD) =3D> self.ibrd, + Ok(LCR_H) =3D> u32::from(self.line_control), + Ok(CR) =3D> u32::from(self.control), + Ok(FLS) =3D> self.ifl, + Ok(IMSC) =3D> self.int_enabled, + Ok(RIS) =3D> self.int_level, + Ok(MIS) =3D> self.int_level & self.int_enabled, Ok(ICR) =3D> { // "The UARTICR Register is the interrupt clear register a= nd is write-only" // Source: ARM DDI 0183G 3.3.13 Interrupt Clear Register, = UARTICR 0 } - Ok(DMACR) =3D> self.dmacr.into(), - }) + Ok(DMACR) =3D> self.dmacr, + }; + std::ops::ControlFlow::Break(value.into()) } =20 pub fn write(&mut self, offset: hwaddr, value: u64) { @@ -281,7 +279,6 @@ pub fn write(&mut self, offset: hwaddr, value: u64) { self.fbrd =3D value; } Ok(LCR_H) =3D> { - let value =3D value as u16; let new_val: registers::LineControl =3D value.into(); // Reset the FIFO state on FIFO enable or disable if bool::from(self.line_control.fifos_enabled()) @@ -308,7 +305,6 @@ pub fn write(&mut self, offset: hwaddr, value: u64) { } Ok(CR) =3D> { // ??? Need to implement the enable bit. - let value =3D value as u16; self.control =3D value.into(); self.loopback_mdmctrl(); } diff --git a/rust/hw/char/pl011/src/lib.rs b/rust/hw/char/pl011/src/lib.rs index 463ae60543b..0747e130cae 100644 --- a/rust/hw/char/pl011/src/lib.rs +++ b/rust/hw/char/pl011/src/lib.rs @@ -131,12 +131,6 @@ const fn _assert_exhaustive(val: RegisterOffset) { pub mod registers { //! Device registers exposed as typed structs which are backed by arbi= trary //! integer bitmaps. [`Data`], [`Control`], [`LineControl`], etc. - //! - //! All PL011 registers are essentially 32-bit wide, but are typed her= e as - //! bitmaps with only the necessary width. That is, if a struct bitmap - //! in this module is for example 16 bits long, it should be conceived - //! as a 32-bit register where the unmentioned higher bits are always - //! unused thus treated as zero when read or written. use bilge::prelude::*; =20 /// Receive Status Register / Data Register common error bits @@ -234,10 +228,11 @@ impl Data { /// # Source /// ARM DDI 0183G 3.3.2 Receive Status Register/Error Clear Register, /// UARTRSR/UARTECR - #[bitsize(8)] + #[bitsize(32)] #[derive(Clone, Copy, DebugBits, FromBits)] pub struct ReceiveStatusErrorClear { pub errors: Errors, + _reserved_unpredictable: u24, } =20 impl ReceiveStatusErrorClear { @@ -257,7 +252,7 @@ fn default() -> Self { } } =20 - #[bitsize(16)] + #[bitsize(32)] #[derive(Clone, Copy, DebugBits, FromBits)] /// Flag Register, `UARTFR` #[doc(alias =3D "UARTFR")] @@ -309,7 +304,7 @@ pub struct Flags { pub transmit_fifo_empty: bool, /// `RI`, is `true` when `nUARTRI` is `LOW`. pub ring_indicator: bool, - _reserved_zero_no_modify: u7, + _reserved_zero_no_modify: u23, } =20 impl Flags { @@ -328,7 +323,7 @@ fn default() -> Self { } } =20 - #[bitsize(16)] + #[bitsize(32)] #[derive(Clone, Copy, DebugBits, FromBits)] /// Line Control Register, `UARTLCR_H` #[doc(alias =3D "UARTLCR_H")] @@ -382,8 +377,8 @@ pub struct LineControl { /// the PEN bit disables parity checking and generation. See Table= 3-11 /// on page 3-14 for the parity truth table. pub sticky_parity: bool, - /// 15:8 - Reserved, do not modify, read as zero. - _reserved_zero_no_modify: u8, + /// 31:8 - Reserved, do not modify, read as zero. + _reserved_zero_no_modify: u24, } =20 impl LineControl { @@ -454,7 +449,7 @@ pub enum WordLength { /// /// # Source /// ARM DDI 0183G, 3.3.8 Control Register, `UARTCR`, Table 3-12 - #[bitsize(16)] + #[bitsize(32)] #[doc(alias =3D "UARTCR")] #[derive(Clone, Copy, DebugBits, FromBits)] pub struct Control { @@ -532,6 +527,8 @@ pub struct Control { /// CTS hardware flow control is enabled. Data is only transmitted= when /// the `nUARTCTS` signal is asserted. pub cts_hardware_flow_control_enable: bool, + /// 31:16 - Reserved, do not modify, read as zero. + _reserved_zero_no_modify2: u16, } =20 impl Control { --=20 2.47.1 From nobody Mon May 12 07:31:58 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1734024243; cv=none; d=zohomail.com; s=zohoarc; b=LqitzWog0g2i2Gn/le10XUWHgdNQtpE1YhoFUvE1lqFQfyq9K8LicL28HSU54PK0wM2P5qGKL4QkTsOZSONBfVpROqpcmXRpjRyeyhZDmfI8NCTesCrkNu/u8HGvaL4/N07Lw5OkJPbItYuM3jzS9kgQ+lmtPkAHOYJCFJ3zH6M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734024243; 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=HdA/kdjoP/9szKTJTz2r1k+8hRh1UCiqvXnOngQ4uto=; b=lV6/LOv4f5v1WSb2eo7n3AQykddPbNlt5kqHpSvw8Rg/tEch8Rt0NYnRLk8u2PtQ15QMFwBKsbRY2e/PRy5CfP14C4CY9+fuIznNb4aZWoPmI+SPpw6aanK9kQ4LqYYowBHS+igjDYcn7bS9tcTS969YDuGlXykd2OcgxIPJ1Zo= 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=<pbonzini@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734024243252107.26049363049117; Thu, 12 Dec 2024 09:24:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tLmtd-0006tg-E5; Thu, 12 Dec 2024 12:22:41 -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 <pbonzini@redhat.com>) id 1tLmtV-0006op-BO for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:33 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <pbonzini@redhat.com>) id 1tLmtT-0006oq-DI for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:32 -0500 Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-190-ZlSCfcUGM7-Zbp7CvqrrEw-1; Thu, 12 Dec 2024 12:22:29 -0500 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-43582d49dacso7950065e9.2 for <qemu-devel@nongnu.org>; Thu, 12 Dec 2024 09:22:29 -0800 (PST) Received: from [192.168.10.47] ([151.81.118.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43625550532sm22987545e9.7.2024.12.12.09.22.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 09:22:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734024150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=HdA/kdjoP/9szKTJTz2r1k+8hRh1UCiqvXnOngQ4uto=; b=X8sKLnkixdkKNwvr5Ms4eDjztH6tL6oukWxLxH+rTaZSEhAOrnVzrgiA2iHzP++7V2WcWl mP0utH4n9t5VOgiNxny8cIWaEKhj/sBEso0cutiMFuxdpq3HnxYfNxWRJkYBCleaSb7XfO 3Xon+0FtPRp+O2WkECmDYX2ae5X5NxI= X-MC-Unique: ZlSCfcUGM7-Zbp7CvqrrEw-1 X-Mimecast-MFC-AGG-ID: ZlSCfcUGM7-Zbp7CvqrrEw X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734024147; x=1734628947; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HdA/kdjoP/9szKTJTz2r1k+8hRh1UCiqvXnOngQ4uto=; b=HL31ADWB1OSyJanxaRVLqBb0gKsUgAANbydPldPX8293N8t38qjMvgDoyG1Xqcm1+5 wptmteQg7DU2+M9B+O8L04u/7KiLCmre1xuUpAzxT9xnd2bCXsQHrRFQMqLqsHOYADI8 v7afH8TXq0Ary9c6snQ+Y29M/37kAjzpInu8Eqk3t/vFbBe0vofa7bQk7RB9qufuPAt7 0IlkvwrtKJ2oB/TZbbmiZ21ZEDPMe7HB4hzNKNABwP1DbBFKLX91ByJg6XgKt9JQL29z pbUh8s8wHFZ8zUFZwi3sz9iN+9RZGXJXiKNIbCvX4zLzkyQJWFPEFSey/DKU4oRP01r3 s+3g== X-Gm-Message-State: AOJu0YzctlK98BfLg9p4pILanTJBF3Jr03rfKqfL+SBMab+1ozuHNCUX DkBaYxpq/TKZSAyepTOWptx3xMFHCrIEG1y5zBrLn0NBpY2eqaD6NxlCDK52EBioO7VY30+cmjX 28LhnQAvlFSyJfmS5uuNf8NGkumqcCSt9dqALy8xbqv8JF6xx3O5IGbuDNr+JU3ih6VEGU2kwkg ikBxVYI9gYaaPuJQ5XBnCcFkBYs2PyBStQOWQV X-Gm-Gg: ASbGncsVxhpsracKayo+JdHQ0WCUAvqKfq0RlbHng50Y9WNqOr/vHZAfxKY3Js2yE+g onEPYaWvO9sykAO8gH/XrjNNTqcX4RXHyC7dRupGJVdJVzAcG5pI9EyD32UCDc8tSzACUvNUQ6G CToh2p5vW9AFiJb24TEABQbq9ojxHzeXy6aqhAW+VHHvgR7BSL8Vvxrak5JBI34JDs6GWggjErC m2oazLPQz/GPc2h3cliqvwe7JrgDZegP01TJLPwH4pJoGsnFE/r8aXeYrPL X-Received: by 2002:a05:600c:1ca6:b0:434:f396:525e with SMTP id 5b1f17b1804b1-43622832ff4mr38313675e9.9.1734024147402; Thu, 12 Dec 2024 09:22:27 -0800 (PST) X-Google-Smtp-Source: AGHT+IGA3AUAESDQriN/fq+NBro7IZR6DAtQIjHdmjuYFRNgyeHWebyZMBctglmsS6VoA2E3HvPcrQ== X-Received: by 2002:a05:600c:1ca6:b0:434:f396:525e with SMTP id 5b1f17b1804b1-43622832ff4mr38313245e9.9.1734024146919; Thu, 12 Dec 2024 09:22:26 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Cc: philmd@linaro.org, qemu-rust@nongnu.org Subject: [PATCH 6/7] rust: pl011: fix migration stream Date: Thu, 12 Dec 2024 18:22:03 +0100 Message-ID: <20241212172209.533779-7-pbonzini@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241212172209.533779-1-pbonzini@redhat.com> References: <20241212172209.533779-1-pbonzini@redhat.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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1734024244803116600 Content-Type: text/plain; charset="utf-8" The Rust vmstate macros lack the type-safety of their C equivalents (so safe, much abstraction), and therefore they were predictably wrong. The registers have already been changed to 32-bits in the previous patch, but read_pos/read_count/read_trigger also have to be u32 instead of usize. The easiest way to do so is to let the FIFO use u32 indices instead of usize. My plan for making VMStateField typesafe is to have a trait to retrieve a basic VMStateField; for example something like vmstate_uint32 would become an implementation of the VMState trait on u32. Then you'd write something like "vmstate_of!(Type, field).with_version_id(2)". That is, vmstate_of retrieves the basic VMStateField and fills in the offset, and then more changes can be applied on top. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> --- rust/hw/char/pl011/src/device.rs | 38 ++++++++++++++++++++++---- rust/hw/char/pl011/src/device_class.rs | 8 +++--- rust/qemu-api/src/vmstate.rs | 22 --------------- 3 files changed, 36 insertions(+), 32 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index 332e0a31a82..cfe2734703e 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -31,7 +31,7 @@ const FBRD_MASK: u32 =3D 0x3f; =20 /// QEMU sourced constant. -pub const PL011_FIFO_DEPTH: usize =3D 16_usize; +pub const PL011_FIFO_DEPTH: u32 =3D 16; =20 #[derive(Clone, Copy)] struct DeviceId(&'static [u8; 8]); @@ -49,6 +49,32 @@ impl DeviceId { const LUMINARY: Self =3D Self(&[0x11, 0x00, 0x18, 0x01, 0x0d, 0xf0, 0x= 05, 0xb1]); } =20 +// FIFOs use 32-bit indices instead of usize, for compatibility with +// the migration stream produced by the C version of this device. +#[repr(transparent)] +#[derive(Debug, Default)] +pub struct Fifo([registers::Data; PL011_FIFO_DEPTH as usize]); + +impl Fifo { + const fn len(&self) -> u32 { + self.0.len() as u32 + } +} + +impl std::ops::IndexMut<u32> for Fifo { + fn index_mut(&mut self, idx: u32) -> &mut Self::Output { + &mut self.0[idx as usize] + } +} + +impl std::ops::Index<u32> for Fifo { + type Output =3D registers::Data; + + fn index(&self, idx: u32) -> &Self::Output { + &self.0[idx as usize] + } +} + #[repr(C)] #[derive(Debug, qemu_api_macros::Object, qemu_api_macros::offsets)] /// PL011 Device Model in QEMU @@ -66,14 +92,14 @@ pub struct PL011State { pub dmacr: u32, pub int_enabled: u32, pub int_level: u32, - pub read_fifo: [registers::Data; PL011_FIFO_DEPTH], + pub read_fifo: Fifo, pub ilpr: u32, pub ibrd: u32, pub fbrd: u32, pub ifl: u32, - pub read_pos: usize, - pub read_count: usize, - pub read_trigger: usize, + pub read_pos: u32, + pub read_count: u32, + pub read_trigger: u32, #[doc(alias =3D "chr")] pub char_backend: CharBackend, /// QEMU interrupts @@ -485,7 +511,7 @@ pub fn loopback_enabled(&self) -> bool { } =20 #[inline] - pub fn fifo_depth(&self) -> usize { + pub fn fifo_depth(&self) -> u32 { // Note: FIFO depth is expected to be power-of-2 if self.fifo_enabled() { return PL011_FIFO_DEPTH; diff --git a/rust/hw/char/pl011/src/device_class.rs b/rust/hw/char/pl011/sr= c/device_class.rs index 975c3d42be7..759c521a99e 100644 --- a/rust/hw/char/pl011/src/device_class.rs +++ b/rust/hw/char/pl011/src/device_class.rs @@ -6,7 +6,7 @@ use std::os::raw::{c_int, c_void}; =20 use qemu_api::{ - bindings::*, c_str, vmstate_clock, vmstate_fields, vmstate_int32, vmst= ate_subsections, + bindings::*, c_str, vmstate_clock, vmstate_fields, vmstate_subsections, vmstate_uint32, vmstate_uint32_array, vmstate_unused, zeroable::Zeroab= le, }; =20 @@ -64,9 +64,9 @@ extern "C" fn pl011_post_load(opaque: *mut c_void, versio= n_id: c_int) -> c_int { vmstate_uint32!(ibrd, PL011State), vmstate_uint32!(fbrd, PL011State), vmstate_uint32!(ifl, PL011State), - vmstate_int32!(read_pos, PL011State), - vmstate_int32!(read_count, PL011State), - vmstate_int32!(read_trigger, PL011State), + vmstate_uint32!(read_pos, PL011State), + vmstate_uint32!(read_count, PL011State), + vmstate_uint32!(read_trigger, PL011State), }, subsections: vmstate_subsections! { VMSTATE_PL011_CLOCK diff --git a/rust/qemu-api/src/vmstate.rs b/rust/qemu-api/src/vmstate.rs index 25c68b703ea..63c897abcdf 100644 --- a/rust/qemu-api/src/vmstate.rs +++ b/rust/qemu-api/src/vmstate.rs @@ -106,28 +106,6 @@ macro_rules! vmstate_uint32 { }}; } =20 -#[doc(alias =3D "VMSTATE_INT32_V")] -#[macro_export] -macro_rules! vmstate_int32_v { - ($field_name:ident, $struct_name:ty, $version_id:expr) =3D> {{ - $crate::vmstate_single!( - $field_name, - $struct_name, - $version_id, - ::core::ptr::addr_of!($crate::bindings::vmstate_info_int32), - ::core::mem::size_of::<i32>() - ) - }}; -} - -#[doc(alias =3D "VMSTATE_INT32")] -#[macro_export] -macro_rules! vmstate_int32 { - ($field_name:ident, $struct_name:ty) =3D> {{ - $crate::vmstate_int32_v!($field_name, $struct_name, 0) - }}; -} - #[doc(alias =3D "VMSTATE_ARRAY")] #[macro_export] macro_rules! vmstate_array { --=20 2.47.1 From nobody Mon May 12 07:31:58 2025 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1734024256; cv=none; d=zohomail.com; s=zohoarc; b=iUn4EM3blF4P1ueOmnsNc2hryFqH9VPzQ7Dh2DQScFlj908i52Yez5/5qpcfui6OqBif/zFrNLpWPB6t1+Wfsgzq5AKOLFhZ8r/be/ZBEtaOzA2jU8S6NQs7LCbjT5zKsoz72bg62HKIO8B8wEa76qUa3wVp+Lt8rPN3Q3jbbKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1734024256; 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=bSm79oz08FdIlTp31rLzEqSvbz1oNHscAzWwfiPVPzw=; b=BLoMFaCqP5c6C1PIa6czQL7qTD/5qXOT7bHEU7WfM91tym/BBN1gNlju9gFQzf4XhHKQve+cvabtRRzy+xEuHLj0PNR6Swaw/BSNcvqV2/LhvNxK9Us0e/mGPCv1tBbl2pwUhP7VDVGN7Jsbv17AgCLqYP43kzLPIPsIV24QOHM= 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=<pbonzini@redhat.com> (p=none dis=none) Return-Path: <qemu-devel-bounces+importer=patchew.org@nongnu.org> Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1734024256926544.7767016921019; Thu, 12 Dec 2024 09:24:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from <qemu-devel-bounces@nongnu.org>) id 1tLmtd-0006th-Lw; Thu, 12 Dec 2024 12:22:41 -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 <pbonzini@redhat.com>) id 1tLmtZ-0006rU-SV for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:37 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <pbonzini@redhat.com>) id 1tLmtV-0006pE-9p for qemu-devel@nongnu.org; Thu, 12 Dec 2024 12:22:37 -0500 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-122-3l1RppL7PUGfdPMBZ4iMeg-1; Thu, 12 Dec 2024 12:22:31 -0500 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-385e3cbf308so411746f8f.2 for <qemu-devel@nongnu.org>; Thu, 12 Dec 2024 09:22:30 -0800 (PST) Received: from [192.168.10.47] ([151.81.118.45]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4361ec87bc3sm37435585e9.1.2024.12.12.09.22.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Dec 2024 09:22:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1734024152; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bSm79oz08FdIlTp31rLzEqSvbz1oNHscAzWwfiPVPzw=; b=NlXU0sidiUWDFLsBaOzmwOiyD0XsOPrcKAjRQsY+F9i3s05e4XjRFc9bvct0LVL4TlNpaS nMQS4WsJX6DZnYgI+E7hPaT5sgaqwWUcI77jLtr6y8gRsMhs6EhC1BLr/PsHixIRHT+2pu JsVJEIOcL8HW6AbL8YHYg6+1uOt4UlM= X-MC-Unique: 3l1RppL7PUGfdPMBZ4iMeg-1 X-Mimecast-MFC-AGG-ID: 3l1RppL7PUGfdPMBZ4iMeg X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734024149; x=1734628949; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bSm79oz08FdIlTp31rLzEqSvbz1oNHscAzWwfiPVPzw=; b=bUa2C3GzdMkYz0SxAS+r8hQm+vXtOsP2Eab11lw5AsuWKNImWUY0o7thFHLqi5Hv5V CmXY6LTu1wwbk7pog4R1GyFSKD09dKZezdCmbcVS/c9HWy7oDproliMtdC+eXOO1SY3r ofmL8hH6aoYMfeRTyRmjYr5HOmJG8QhSXh1JX6zXmvCYTUYb0IK8w2WcddlCdvlIGibM JhEoK4v8jMvoJutCHMOxR8XfS0unZRI2gv64ac96zVPLmRsTtfBkLhgfXRpxqkLZdsC0 5juFO8XwgVQ+qP5XT/a9CMuMZYLgOFm1kcLYoCrtMUC3mfTK2vOZ3DMvFv3XVvBg/4H9 ywQQ== X-Gm-Message-State: AOJu0Ywck+qF//YWUxnSl/Ij8pueKzTN3kgPCv0Xk5ZlFITJ48t+XZer OOkX7Sjhtu7sgPfEzYphwXgsRe29okBtHctbKZweFlxenpt4bbcnTd4tkkREMQZhzqcsOX8BjJA csgYR6R26PnzMUNqnsCBoFaO3sT2sP/UHlQ8OuUXKAIgf0ka+g42hzRzhEyC1yONOadM2LhWFLB 9ffGpJtet1JpvJzu5ZVfVpD/sClzHbY3CEqlNT X-Gm-Gg: ASbGnct1Hr+yndPCTiWHdRB1GX2i3YVcQ1lGfklEtxnsI18uJ1hLaSsHmA/ogLbzxiX Rth1ySdlcBAh16+mAyoscjvdciTIMtocQQI0elX+8nk6rnRqU/+dASckGSCaZZwSKl+3imYa2ih 1WVFRhowtnq5lHzPwmGZCXwnqS0wIA5yw2LsRuo3tZx1P52IuwgBfoU9pykh66Zz7ZpKy+Xcuqc EPiltSetrpCCuYU4TphEv+oZbxISHPrSq70siIPwd+NRrUbDaf5z1lmRTnV X-Received: by 2002:a5d:588b:0:b0:385:e2c4:1f8d with SMTP id ffacd0b85a97d-3864ce96ed1mr6918670f8f.19.1734024149514; Thu, 12 Dec 2024 09:22:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IERL4Pz7X8hJNKtOv0Z7DJ23nsR1ReastYOYfmmQ5wyeBe1Qf2yPsHd+ZqVQEJy/Mj+1+eu/A== X-Received: by 2002:a5d:588b:0:b0:385:e2c4:1f8d with SMTP id ffacd0b85a97d-3864ce96ed1mr6918651f8f.19.1734024149076; Thu, 12 Dec 2024 09:22:29 -0800 (PST) From: Paolo Bonzini <pbonzini@redhat.com> To: qemu-devel@nongnu.org Cc: philmd@linaro.org, qemu-rust@nongnu.org Subject: [PATCH 7/7] rust: pl011: simplify handling of the FIFO enabled bit in LCR Date: Thu, 12 Dec 2024 18:22:04 +0100 Message-ID: <20241212172209.533779-8-pbonzini@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20241212172209.533779-1-pbonzini@redhat.com> References: <20241212172209.533779-1-pbonzini@redhat.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=170.10.133.124; envelope-from=pbonzini@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.496, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, 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-devel.nongnu.org> List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe> List-Archive: <https://lists.nongnu.org/archive/html/qemu-devel> List-Post: <mailto:qemu-devel@nongnu.org> List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help> List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=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 @redhat.com) X-ZM-MESSAGEID: 1734024258859116600 Content-Type: text/plain; charset="utf-8" Use =3D=3D/!=3D instead of going through bool and xor. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 <philmd@linaro.org> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> --- rust/hw/char/pl011/src/device.rs | 6 ++---- rust/hw/char/pl011/src/lib.rs | 6 ------ 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/rust/hw/char/pl011/src/device.rs b/rust/hw/char/pl011/src/devi= ce.rs index cfe2734703e..169ff3779c6 100644 --- a/rust/hw/char/pl011/src/device.rs +++ b/rust/hw/char/pl011/src/device.rs @@ -307,9 +307,7 @@ pub fn write(&mut self, offset: hwaddr, value: u64) { Ok(LCR_H) =3D> { let new_val: registers::LineControl =3D value.into(); // Reset the FIFO state on FIFO enable or disable - if bool::from(self.line_control.fifos_enabled()) - ^ bool::from(new_val.fifos_enabled()) - { + if self.line_control.fifos_enabled() !=3D new_val.fifos_en= abled() { self.reset_rx_fifo(); self.reset_tx_fifo(); } @@ -502,7 +500,7 @@ pub fn event(&mut self, event: QEMUChrEvent) { =20 #[inline] pub fn fifo_enabled(&self) -> bool { - matches!(self.line_control.fifos_enabled(), registers::Mode::FIFO) + self.line_control.fifos_enabled() =3D=3D registers::Mode::FIFO } =20 #[inline] diff --git a/rust/hw/char/pl011/src/lib.rs b/rust/hw/char/pl011/src/lib.rs index 0747e130cae..69064d6929b 100644 --- a/rust/hw/char/pl011/src/lib.rs +++ b/rust/hw/char/pl011/src/lib.rs @@ -419,12 +419,6 @@ pub enum Mode { FIFO =3D 1, } =20 - impl From<Mode> for bool { - fn from(val: Mode) -> Self { - matches!(val, Mode::FIFO) - } - } - #[bitsize(2)] #[derive(Clone, Copy, Debug, Eq, FromBits, PartialEq)] /// `WLEN` Word length, field of [Line Control register](LineControl). --=20 2.47.1