From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DD6528686 for ; Thu, 18 Jun 2026 13:36:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781789801; cv=none; b=JaAYXola3UrxeyOGvvt1NjAns5zv6m4BVM4atSoJ5SCLwzAY9sURpUwChSbnGCk27lst4JLKG15xw0nG+9/A6fk/tfrfinpHc3h8HCEQpK39DLUi1DfpZWkdQSOMwIRQIVnRcwdzJ+KT9wzRJSppr8uL4pUCztZscuYFzTmfE64= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781789801; c=relaxed/simple; bh=NtK8KAGuOvAPqgQxA0H02Zs1LcqLCIFigx5592EZT3o=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=YDGs8NJYOCYztcUeLVswSZcQI4/PtBEdnywTvFlnGuaALn/8Xot80HEsPTZXXPrXB4ZImbuoh49yopmRWU9fFN5Fy/4n4n2eQmIXuki1sP0M0RHk+/zatmi3jHnDFDuxAa/M+S/l8NNnyyAu4N81J8g+iphzc5mAMRbmOSQt23c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YzKDbH+r; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YzKDbH+r" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-45ef189aa1cso714353f8f.0 for ; Thu, 18 Jun 2026 06:36:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781789798; x=1782394598; darn=lists.linux.dev; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=qavgJPHHOECEJ91w79AZ813o0Mh7WejFknktQtGHNq8=; b=YzKDbH+r3TmrSg0Sq2v8V9lVPp/r4sEgEcIhMntDQwkoD+5T5h3jp9TkbGwgD8R0TF Jc3ks8J7o9CTrLnr5JEsr66bWztUr7uYQdSnUsNLuXb7WenEdH9TqRfGEqanQLSS4WuZ prc4f1l8pTZif0kRhlDKXKwywvl28ry1gmHFXTqMNDV8ArNpfh7ZRDVaQ3/GXuUQiAIP tRrtjL1xiRKRxebbn1LAQhwp5VtzY4lAWabBd0YcPj47ap9+EWfOjkFj2Ee9ToIjmMZk JPQ3YlnzA3NsDYOKpvF9i6e7n9Sxqof8z2EsWdNl0dXWqqANTkVOMcokF0xcHz1NdMcR EFtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781789798; x=1782394598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qavgJPHHOECEJ91w79AZ813o0Mh7WejFknktQtGHNq8=; b=GdcVwDqrwb+wMV5bkSorfP5KTVG6CGN1Dmo+mfPmj0goHR1bECMFNfxtWa8YxA5Kjx Y+L34DtFReXmoNxsIxZtR/nuOIRJ2wfzGxEH3debTiGJHzxMpbrltqfAxbAmsTWU0FEa G3XXo3EeLWQ+LnQtSVicCu4ZjQLLuR5ig9TsglbPoRwmM9RD/VUrELZO2tYB7Aa3a1Kr kHtyma22NKVZ4EZgXmu5OV6RMou8WBG9JkmReFh3uVyxh9DA2oSZ+JS6v9CVTuBrTStz pmOJYzKRmGmZPOWIJcqLTnpBgV1HN9BsaR1IG9G3KKW4114vYZCnh1rUgwv5cDrlrwmH SkvQ== X-Forwarded-Encrypted: i=1; AFNElJ93oNEPJq3Il+RlKQv5RvoFSy316mN8SAC/ErEGFBPcyB+0YukLk0h22aLM2mO9yx9Nm3l8ng==@lists.linux.dev X-Gm-Message-State: AOJu0YzO9K0rgbomUFynebVoHtpYMBT6+KCW6djLrMI/hj5wgDdZSNz4 U8AldTf/Q1bBh+FOjfH3CqYxWXi5xLAKidckwPVs9wZkQE8/bEKTyTY9 X-Gm-Gg: AfdE7clAMvibcSN5lwuHwcYazO2xxRCxFM7sm7p05xtGOB/anlNvxOqrTtVWxZJIkSI v1sEMkK9r4nrBjxFsTuUp9BPpCo3P2G2y44mDRDRvgUnEJq0BIP+LHSdqA7O2ULJsgI4L8uxe0A EelfQfpW1t+8UJ6uEvuJ7km1ji4LMLTJY9o0NOUlF4L7nnhGmJF29PDTnnS0ildxbCUdbXcYPti 08BkXvp6zPOFqI4CV5WvooqVUdFsYBC88cae/D3ajepqVit0Kri4NELLf9TMxpcpsq/a8IyAEcv C7lQVIr5KPPsRs84Qp3KBt/cjHPHMT5o9k7/TmADdIFsUYFVmp0ZkroUX69ariDeWtq2sJ6Q2wG N7eXFpop6EuWeOAkLjAZ7hH2ideRFdAvUhBShN1S+WziNtZCskHEHBnfjZUdcnYHwsqr0enxPDS 8XKQqnswqPrAL44ULBF8Gv9i5hsTIusrIrYo0WZ5ODyCKallm2dD4ftmWMCwrS X-Received: by 2002:a05:600c:4f91:b0:492:1e36:d16e with SMTP id 5b1f17b1804b1-492333f7ff3mr144524195e9.36.1781789797510; Thu, 18 Jun 2026 06:36:37 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49230a58fddsm233967025e9.8.2026.06.18.06.36.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Jun 2026 06:36:37 -0700 (PDT) Date: Thu, 18 Jun 2026 14:36:34 +0100 From: David Laight To: Guo Ren Cc: Vivian Wang , zhangzhanpeng.jasper@bytedance.com, alex@ghiti.fr, aou@eecs.berkeley.edu, cuiyunhui@bytedance.com, iommu@lists.linux.dev, joro@8bytes.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, luxu.kernel@bytedance.com, palmer@dabbelt.com, pjw@kernel.org, robin.murphy@arm.com, tjeznach@rivosinc.com, will@kernel.org, yuanzhu@bytedance.com Subject: Re: [PATCH v1] iommu/riscv: Support 32-bit register accesses Message-ID: <20260618143634.7f3dd6c5@pumpkin> In-Reply-To: References: <20260615064855.90316-1-zhangzhanpeng.jasper@bytedance.com> <20260615123821.373248-1-guoren@kernel.org> <7c490aeb-a3d9-4fe9-81de-f9662577851d@iscas.ac.cn> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) Precedence: bulk X-Mailing-List: iommu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Thu, 18 Jun 2026 17:51:34 +0800 Guo Ren wrote: > Hi Vivian, >=20 > As noted in the RISC-V IOMMU Specification, Chapter 6: > > Whether an 8-byte access to an IOMMU register is single-copy atomic is = UNSPECIFIED, and such an access may appear, internally to the IOMMU, as if = two separate 4-byte accesses =E2=80=94 first to the high half and second to= the low half =E2=80=94 were performed. =20 >=20 > Therefore, the atomicity of 64-bit MMIO accesses is UNSPECIFIED and > not clearly defined in the current ratified RISC-V IOMMU > specification. To handle this correctly, the Linux RISC-V IOMMU driver > should fall back to 32-bit MMIO accesses when reading 64-bit registers > (e.g., performance counters). The behavior of 32-bit MMIO accesses is > more precisely defined in the RISC-V IOMMU specification. >=20 > Thus, many hardware vendors implement 32-bit MMIO (rather than 64-bit > MMIO) based on the current ratified RISC-V IOMMU specification, and > this driver does not appear to benefit from 64-bit MMIO access either. > Performance is fundamentally constrained by bus latency; assuming that > simply reducing the number of accesses will improve performance is an > oversimplification that ignores the underlying hardware > characteristics. If the bus latency is significant it is almost certainly worth using memory accesses to avoid re-reading the hi register. Something like this might work: static volatile u32 hi_prev, lo_prev; u32 hi =3D read_reg_hi(); u32 lo =3D read_reg_lo(); if (lo <=3D lo_prev || hi !=3D hi_prev) { u32 hi_tmp =3D read_reg_hi; if (hi_tmp !=3D hi) { hi =3D hi_tmp; lo =3D 0; } lo_prev =3D ~0u; hi_prev =3D hi; } lo_prev =3D lo; return (u64)hi << 32 | lo; It shouldn't need any locking but the accesses do need to be ordered. David From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 81820CD98ED for ; Thu, 18 Jun 2026 13:37:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=0r90fvvl9ufZZfiPoyqgX6CMBTNGPhvZMcHE5wPo20w=; b=tnv15GR0yjOWc7 pgWjfgBZAbfCLaS6mYRHVDQFS55MDElfpE8LUW674xExwb3r5oXUWrelOIptE549S+5QvWoNNptro e4AM0gSF1Djhu0qsvXP2eFQhU/enBq91Z22cwhrpSDzL0uBOoFn8YmX2+3WGAia6HgRffODMWnaob /k4rsuG6Zl1Qu8TBpvDQRQmduQo2EJiITMBMOhMxBLAUKRjLW9acbHD6d5tj8fa/76mK3NpUmF7yk dHv29+X4KqC+BaUJQTh7UC2bY3oCzzsc3Hgc5I90Jfd8WieN1JUttK+vev0vJEDqU9ITBEiUO7vip GHbjlIyYVdKSP80xKCyA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1waCvC-00000001N7b-34Xs; Thu, 18 Jun 2026 13:36:42 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1waCvA-00000001N73-0WCU for linux-riscv@lists.infradead.org; Thu, 18 Jun 2026 13:36:41 +0000 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-4905529b933so8561455e9.0 for ; Thu, 18 Jun 2026 06:36:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781789798; x=1782394598; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=qavgJPHHOECEJ91w79AZ813o0Mh7WejFknktQtGHNq8=; b=O8aKpGa6L9V5RdXkCDlOylLEux5K50WwEKaxS6tRo2dIpNSFR9TSF5R3d4qqws/2P9 JPatowTqpeOX/3ifDl7y9q+lAt0owLsbMSz0GlvnNU55qBooED2CB+7VRfPfIDiBOpJr 6EcGFv6yWzuCTHghQWl63nNS4ezSkCbLXPw30q+9Zbr4B8SsJlprzlwxaahikPGYb19z Cxn50JiGIQ4oLs/z5JjaL2QHBVEkv2yCYKo5hRQVrgUBqgutVC9icHHGqdNybRVGXDBv 5e4t2Sh/ig0YXwiNX+XK3ls5tTlBtrt82i6xyLJ7K8lmMFfNcl2dbYu7z4RsNMN5g9X4 eJDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781789798; x=1782394598; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qavgJPHHOECEJ91w79AZ813o0Mh7WejFknktQtGHNq8=; b=LG9airiqCKUtr7wai9lVcxrcyBy+GH18E/FBDYe6UUXb6zj01gFoPsRn/KXWDMWtwY TWLkwoNIubILC6E10RqSgRizX6WLGS81XEX+ep3e6LLRAWpg7wEq4aYuK00TG3EhpxLb T0kBk1RQGe2hMJpWpF8k+RDTtrZw3tXIuGXvXNVr8eQHVZPgkvAjdoFTJxaCIlz+tE3Z T79E/CCKxyYVPuMjMnR3BMgdyTYEu8IOzy/WCCt7BmBs7aYIELpUmY9V1NCPaB3t5EQ/ QVG0UJ0VHl/o3aWrGvIYGJyX5VxY483GQZWToB0RS4pAKT3/UhNQU1HTYMzrgjxM9w0+ 0gig== X-Forwarded-Encrypted: i=1; AFNElJ/J5AbgoWMptnc9YWIBj5pCY4+uNcmOrTK9WscvzVGX1WRGoUgomi1v9WBnbzIIplZ/hQ9Sqg/Zu8ISSA==@lists.infradead.org X-Gm-Message-State: AOJu0Yws/NvYithlb3RD8nC3G2fH8rIUDMdb+k8RtVXoNnlSTo92/LCC w7xJDfNRSQogL0FuSFKiKkpJ3u8Tbm/31jw9TtNkB/RV/y2ditmGYkOa X-Gm-Gg: AfdE7ckgB8Sqb+RxO9NP8/s3Y/AuhqmFuxoirSJHaBy9qBexZdQFZUXPm2j0q1PXBsd 7UJnTFVTG54xN7niFVKrJgt1xtv752g+hG+blUrnLRrqXVPF6MoQTl3XyoJVCwoIG4CM9N8lL49 vS2JzH+6hLU+miM51pGU+2e/xFIxLVS0v2+NiVEz58MMPiRPhNTfoOhQj/6XbWhO0JOqinfRudi MOLr1cxXxYIl6g5WdFp4pAgLR0UtsGIMMKF3qfvfKjviUHZ2BzE5+zgC7aBnPWBVCVmN92HDjB8 +Iz+Cjmrqpdeb+gMwVemOFpkJEj2OnBWwEQ6DPhXeWjuOR5b8e0H32tZ2dK7gTdmD/KAe1fx17q SzQu+2yKJhjuqILpHqqP0tL6Zn1lI6HTvRWTtLCPkJXLSJqjVteXOH54ikQ9wmpKda609EthZKT wNQahv92motjp73Qnc0TICBhzPv3wHYQehQxrUUgqIMqdFw+LEMBlYA1Aa5yFU X-Received: by 2002:a05:600c:4f91:b0:492:1e36:d16e with SMTP id 5b1f17b1804b1-492333f7ff3mr144524195e9.36.1781789797510; Thu, 18 Jun 2026 06:36:37 -0700 (PDT) Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49230a58fddsm233967025e9.8.2026.06.18.06.36.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Jun 2026 06:36:37 -0700 (PDT) Date: Thu, 18 Jun 2026 14:36:34 +0100 From: David Laight To: Guo Ren Cc: Vivian Wang , zhangzhanpeng.jasper@bytedance.com, alex@ghiti.fr, aou@eecs.berkeley.edu, cuiyunhui@bytedance.com, iommu@lists.linux.dev, joro@8bytes.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org, luxu.kernel@bytedance.com, palmer@dabbelt.com, pjw@kernel.org, robin.murphy@arm.com, tjeznach@rivosinc.com, will@kernel.org, yuanzhu@bytedance.com Subject: Re: [PATCH v1] iommu/riscv: Support 32-bit register accesses Message-ID: <20260618143634.7f3dd6c5@pumpkin> In-Reply-To: References: <20260615064855.90316-1-zhangzhanpeng.jasper@bytedance.com> <20260615123821.373248-1-guoren@kernel.org> <7c490aeb-a3d9-4fe9-81de-f9662577851d@iscas.ac.cn> X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260618_063640_177708_D2692D2E X-CRM114-Status: GOOD ( 11.69 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCAxOCBKdW4gMjAyNiAxNzo1MTozNCArMDgwMApHdW8gUmVuIDxndW9yZW5Aa2VybmVs Lm9yZz4gd3JvdGU6Cgo+IEhpIFZpdmlhbiwKPiAKPiBBcyBub3RlZCBpbiB0aGUgUklTQy1WIElP TU1VIFNwZWNpZmljYXRpb24sIENoYXB0ZXIgNjoKPiA+IFdoZXRoZXIgYW4gOC1ieXRlIGFjY2Vz cyB0byBhbiBJT01NVSByZWdpc3RlciBpcyBzaW5nbGUtY29weSBhdG9taWMgaXMgVU5TUEVDSUZJ RUQsIGFuZCBzdWNoIGFuIGFjY2VzcyBtYXkgYXBwZWFyLCBpbnRlcm5hbGx5IHRvIHRoZSBJT01N VSwgYXMgaWYgdHdvIHNlcGFyYXRlIDQtYnl0ZSBhY2Nlc3NlcyDigJQgZmlyc3QgdG8gdGhlIGhp Z2ggaGFsZiBhbmQgc2Vjb25kIHRvIHRoZSBsb3cgaGFsZiDigJQgd2VyZSBwZXJmb3JtZWQuICAK PiAKPiBUaGVyZWZvcmUsIHRoZSBhdG9taWNpdHkgb2YgNjQtYml0IE1NSU8gYWNjZXNzZXMgaXMg VU5TUEVDSUZJRUQgYW5kCj4gbm90IGNsZWFybHkgZGVmaW5lZCBpbiB0aGUgY3VycmVudCByYXRp ZmllZCBSSVNDLVYgSU9NTVUKPiBzcGVjaWZpY2F0aW9uLiBUbyBoYW5kbGUgdGhpcyBjb3JyZWN0 bHksIHRoZSBMaW51eCBSSVNDLVYgSU9NTVUgZHJpdmVyCj4gc2hvdWxkIGZhbGwgYmFjayB0byAz Mi1iaXQgTU1JTyBhY2Nlc3NlcyB3aGVuIHJlYWRpbmcgNjQtYml0IHJlZ2lzdGVycwo+IChlLmcu LCBwZXJmb3JtYW5jZSBjb3VudGVycykuIFRoZSBiZWhhdmlvciBvZiAzMi1iaXQgTU1JTyBhY2Nl c3NlcyBpcwo+IG1vcmUgcHJlY2lzZWx5IGRlZmluZWQgaW4gdGhlIFJJU0MtViBJT01NVSBzcGVj aWZpY2F0aW9uLgo+IAo+IFRodXMsIG1hbnkgaGFyZHdhcmUgdmVuZG9ycyBpbXBsZW1lbnQgMzIt Yml0IE1NSU8gKHJhdGhlciB0aGFuIDY0LWJpdAo+IE1NSU8pIGJhc2VkIG9uIHRoZSBjdXJyZW50 IHJhdGlmaWVkIFJJU0MtViBJT01NVSBzcGVjaWZpY2F0aW9uLCBhbmQKPiB0aGlzIGRyaXZlciBk b2VzIG5vdCBhcHBlYXIgdG8gYmVuZWZpdCBmcm9tIDY0LWJpdCBNTUlPIGFjY2VzcyBlaXRoZXIu Cj4gUGVyZm9ybWFuY2UgaXMgZnVuZGFtZW50YWxseSBjb25zdHJhaW5lZCBieSBidXMgbGF0ZW5j eTsgYXNzdW1pbmcgdGhhdAo+IHNpbXBseSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGFjY2Vzc2Vz IHdpbGwgaW1wcm92ZSBwZXJmb3JtYW5jZSBpcyBhbgo+IG92ZXJzaW1wbGlmaWNhdGlvbiB0aGF0 IGlnbm9yZXMgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUKPiBjaGFyYWN0ZXJpc3RpY3MuCgpJZiB0 aGUgYnVzIGxhdGVuY3kgaXMgc2lnbmlmaWNhbnQgaXQgaXMgYWxtb3N0IGNlcnRhaW5seSB3b3J0 aCB1c2luZwptZW1vcnkgYWNjZXNzZXMgdG8gYXZvaWQgcmUtcmVhZGluZyB0aGUgaGkgcmVnaXN0 ZXIuCgpTb21ldGhpbmcgbGlrZSB0aGlzIG1pZ2h0IHdvcms6CgpzdGF0aWMgdm9sYXRpbGUgdTMy IGhpX3ByZXYsIGxvX3ByZXY7CgoJdTMyIGhpID0gcmVhZF9yZWdfaGkoKTsKCXUzMiBsbyA9IHJl YWRfcmVnX2xvKCk7CgoJaWYgKGxvIDw9IGxvX3ByZXYgfHwgaGkgIT0gaGlfcHJldikgewoJCXUz MiBoaV90bXAgPSByZWFkX3JlZ19oaTsKCQlpZiAoaGlfdG1wICE9IGhpKSB7CgkJCWhpID0gaGlf dG1wOwoJCQlsbyA9IDA7CgkJfQoJCWxvX3ByZXYgPSB+MHU7CgkJaGlfcHJldiA9IGhpOwoJfQoJ bG9fcHJldiA9IGxvOwoJcmV0dXJuICh1NjQpaGkgPDwgMzIgfCBsbzsKCkl0IHNob3VsZG4ndCBu ZWVkIGFueSBsb2NraW5nIGJ1dCB0aGUgYWNjZXNzZXMgZG8gbmVlZCB0byBiZSBvcmRlcmVkLgoK CURhdmlkCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK