From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (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 A3A486FB7 for ; Thu, 23 Feb 2023 19:58:21 +0000 (UTC) Received: by mail-pl1-f201.google.com with SMTP id l10-20020a17090270ca00b0019caa6e6bd1so2564017plt.2 for ; Thu, 23 Feb 2023 11:58:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=lATDuswOZbF3zLZuGn25g5w5EeOK39dFmfATzQI6x48=; b=WjkAmKeEgiP2hEXlbY746mkX3ZhOMGDC4P9c79ltVgkK2cIemHwqXcH6WrYyLHRdQF TPDAxjgYxRcgOZ9Cw42YNQatNy0fLX/b4SjlpRmVjocgTwZ+/NHLb7um96NikQlj0ehi z61VCGlKVn6yqKg+7X6pk7a0r38wnJVjrHrAZelDuyus9u6bCJc1ucQYnC0gwEUNfBwL 13s742XTOtNhDMUSovA7LDI9gfjrAbYLiDVYULHMN2GVGPzYnZOpwz34E6zS9Nxlczcd dm/+tCl7gL4ogIAyiGwzVItI4JYWQw4a5Yck0h70zIDUUba1T72R6HIZu+LfmJQ/sl0T Hf2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=lATDuswOZbF3zLZuGn25g5w5EeOK39dFmfATzQI6x48=; b=6y/6ZWbMYxrPrybl47P40/wxyHtnU8FRhsohm1oIE3wWWu7d+BDWLEkE2y2vtEa/Mw DWxb060onaXKZCA850Azp6tSNzkHUjy2lOvB+txoSNI80zqsoZN7+oxL3LuTitlRFAng HPlO1aNQxTw1bRuopQI5HO8UPFBwggoF4f9HNrql304sY09R/5n67t5JLROb1j6yntXJ zqet8sbk8mHAk+5xu9j2bwx58L+azlrvidtr3faSqiJO4ljw0M0pA2GSX/IgTSOXVdHS 9r8MjxtF4kp12wNyz0XW507KW+JMzmgRc2vnwdWUk5xRqwHPdXOj+up6GPLDKVqLag+H XCNw== X-Gm-Message-State: AO0yUKVFH7ODYZrETbd/IgeXL6SZ8rP1XiAy/fYTL3xx9115m8h5MbC0 3u70/CQetm+RnDGP0yyY9lQ/7Ez53qw= X-Google-Smtp-Source: AK7set/ODb8D8144x2HqvMvJqO9rb7VbrC4eAbsdwQguwGwUJ87CVxuU31/KcwKltggxqLDvzZUouJLJe5k= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:1993:0:b0:5a8:bdd2:f99c with SMTP id 141-20020a621993000000b005a8bdd2f99cmr1974028pfz.1.1677182300738; Thu, 23 Feb 2023 11:58:20 -0800 (PST) Date: Thu, 23 Feb 2023 11:58:19 -0800 In-Reply-To: Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20230217041230.2417228-1-yuzhao@google.com> <20230217041230.2417228-6-yuzhao@google.com> Message-ID: Subject: Re: [PATCH mm-unstable v1 5/5] mm: multi-gen LRU: use mmu_notifier_test_clear_young() From: Sean Christopherson To: Yu Zhao Cc: Johannes Weiner , Andrew Morton , Paolo Bonzini , Jonathan Corbet , Michael Larabel , kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org, linux-mm@google.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Thu, Feb 23, 2023, Yu Zhao wrote: > On Thu, Feb 23, 2023 at 12:11=E2=80=AFPM Sean Christopherson wrote: > > > > On Thu, Feb 23, 2023, Yu Zhao wrote: > > > > As alluded to in patch 1, unless batching the walks even if KVM doe= s _not_ support > > > > a lockless walk is somehow _worse_ than using the existing mmu_noti= fier_clear_flush_young(), > > > > I think batching the calls should be conditional only on LRU_GEN_SP= TE_WALK. Or > > > > if we want to avoid batching when there are no mmu_notifier listene= rs, probe > > > > mmu_notifiers. But don't call into KVM directly. > > > > > > I'm not sure I fully understand. Let's present the problem on the MM > > > side: assuming KVM supports lockless walks, batching can still be > > > worse (very unlikely), because GFNs can exhibit no memory locality at > > > all. So this option allows userspace to disable batching. > > > > I'm asking the opposite. Is there a scenario where batching+lock is wo= rse than > > !batching+lock? If not, then don't make batching depend on lockless wa= lks. >=20 > Yes, absolutely. batching+lock means we take/release mmu_lock for > every single PTE in the entire VA space -- each small batch contains > 64 PTEs but the entire batch is the whole KVM. Who is "we"? I don't see anything in the kernel that triggers walking the = whole VMA, e.g. lru_gen_look_around() limits the walk to a single PMD. I feel li= ke I'm missing something... 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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (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 38B58C61DA4 for ; Thu, 23 Feb 2023 19:59:20 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4PN3kt2L0Qz3chS for ; Fri, 24 Feb 2023 06:59:18 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20210112 header.b=WjkAmKeE; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=flex--seanjc.bounces.google.com (client-ip=2607:f8b0:4864:20::104a; helo=mail-pj1-x104a.google.com; envelope-from=3xmx3ywykdosfrnawptbbtyr.pbzyvahkccp-qriyvfgf.bmynof.bet@flex--seanjc.bounces.google.com; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=google.com header.i=@google.com header.a=rsa-sha256 header.s=20210112 header.b=WjkAmKeE; dkim-atps=neutral Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4PN3js0QFpz3cct for ; Fri, 24 Feb 2023 06:58:23 +1100 (AEDT) Received: by mail-pj1-x104a.google.com with SMTP id gg5-20020a17090b0a0500b00237659a783eso122942pjb.9 for ; Thu, 23 Feb 2023 11:58:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=lATDuswOZbF3zLZuGn25g5w5EeOK39dFmfATzQI6x48=; b=WjkAmKeEgiP2hEXlbY746mkX3ZhOMGDC4P9c79ltVgkK2cIemHwqXcH6WrYyLHRdQF TPDAxjgYxRcgOZ9Cw42YNQatNy0fLX/b4SjlpRmVjocgTwZ+/NHLb7um96NikQlj0ehi z61VCGlKVn6yqKg+7X6pk7a0r38wnJVjrHrAZelDuyus9u6bCJc1ucQYnC0gwEUNfBwL 13s742XTOtNhDMUSovA7LDI9gfjrAbYLiDVYULHMN2GVGPzYnZOpwz34E6zS9Nxlczcd dm/+tCl7gL4ogIAyiGwzVItI4JYWQw4a5Yck0h70zIDUUba1T72R6HIZu+LfmJQ/sl0T Hf2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=lATDuswOZbF3zLZuGn25g5w5EeOK39dFmfATzQI6x48=; b=JpADD3/BYdNjEseedq/Wj7LypY4F1mf8hsYlOtiFwhlUXwwDnjImuBNQisBRo75g2b dN+mIm5n16f81Qy9qNtRxcaXjBQcj0iPhzmnRxYHKbZ8TiLeEXstaaA8ulDP8b7x3ZlR NlDYh6Z6Hh6acLfLCtx6DU/VsB07C/YRalmbW+6n155MSUNA+ODtON1IMbae83Ff1aUN jwNWlJnLFSZPaKoP9Mu40SHSnHA0mhpM4ONdqpl0ostvmYdYCv15O1cvpGH1x8KfgUil HfgxZSipTU5z6PBi7PEX1ajite1DHR7Nqq0+7QNJZD3zzDiKx+Fu/GiQPHzPiErQ0Yig VYSQ== X-Gm-Message-State: AO0yUKUD/X+qb/8Yz6jRUtRCQFpASQx3FUrdrErPaHKcIdQZstgeddC6 sqnJtYPkEOfnkGB+wJ/s0L2J5yXFdqc= X-Google-Smtp-Source: AK7set/ODb8D8144x2HqvMvJqO9rb7VbrC4eAbsdwQguwGwUJ87CVxuU31/KcwKltggxqLDvzZUouJLJe5k= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:1993:0:b0:5a8:bdd2:f99c with SMTP id 141-20020a621993000000b005a8bdd2f99cmr1974028pfz.1.1677182300738; Thu, 23 Feb 2023 11:58:20 -0800 (PST) Date: Thu, 23 Feb 2023 11:58:19 -0800 In-Reply-To: Mime-Version: 1.0 References: <20230217041230.2417228-1-yuzhao@google.com> <20230217041230.2417228-6-yuzhao@google.com> Message-ID: Subject: Re: [PATCH mm-unstable v1 5/5] mm: multi-gen LRU: use mmu_notifier_test_clear_young() From: Sean Christopherson To: Yu Zhao Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-mm@google.com, kvm@vger.kernel.org, Jonathan Corbet , Michael Larabel , x86@kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Johannes Weiner , kvmarm@lists.linux.dev, Paolo Bonzini , Andrew Morton , linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On Thu, Feb 23, 2023, Yu Zhao wrote: > On Thu, Feb 23, 2023 at 12:11=E2=80=AFPM Sean Christopherson wrote: > > > > On Thu, Feb 23, 2023, Yu Zhao wrote: > > > > As alluded to in patch 1, unless batching the walks even if KVM doe= s _not_ support > > > > a lockless walk is somehow _worse_ than using the existing mmu_noti= fier_clear_flush_young(), > > > > I think batching the calls should be conditional only on LRU_GEN_SP= TE_WALK. Or > > > > if we want to avoid batching when there are no mmu_notifier listene= rs, probe > > > > mmu_notifiers. But don't call into KVM directly. > > > > > > I'm not sure I fully understand. Let's present the problem on the MM > > > side: assuming KVM supports lockless walks, batching can still be > > > worse (very unlikely), because GFNs can exhibit no memory locality at > > > all. So this option allows userspace to disable batching. > > > > I'm asking the opposite. Is there a scenario where batching+lock is wo= rse than > > !batching+lock? If not, then don't make batching depend on lockless wa= lks. >=20 > Yes, absolutely. batching+lock means we take/release mmu_lock for > every single PTE in the entire VA space -- each small batch contains > 64 PTEs but the entire batch is the whole KVM. Who is "we"? I don't see anything in the kernel that triggers walking the = whole VMA, e.g. lru_gen_look_around() limits the walk to a single PMD. I feel li= ke I'm missing something... 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 59107C64ED8 for ; Thu, 23 Feb 2023 19:59:38 +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:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=LzQuxm9/Dsx1hKx6RMA1O9vmbCAAXC+mBMSCVXJxTYw=; b=UeAivYIJwU27Yc6Lyz36Jgx+Sa Cki6P7MUEOhJ5g9CdCvW5oicn4AwAkGQgv35LcIz0CjDMVjQ/3cZooWjqY5wxq2uaXcmwv89G/jwS HzAzZPZp25KkxQwnYvJwG3pEgxAinsNDGo/D07oqWbsP0/nUkiv6ZrDCSXcZZNkuwLZD2CuzEmuKK Xsk+RhL2bffFPh3b//2NXwJjNoEKwL81y9KxQDeFBJGAUgCeYx6L17BANzZ8dK3DKPAU9yBC3AaqA aNuYDsMBkSZl8ORm56lA2nEqkCc0tmQn5c3Rx+KYlN3o1RIQFGHB2ExjKpCmZYKtXgIeHZT/wb+Ny fbpjKTcA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pVHjX-000COu-Kz; Thu, 23 Feb 2023 19:58:27 +0000 Received: from mail-pj1-x104a.google.com ([2607:f8b0:4864:20::104a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pVHjU-000CNZ-9u for linux-arm-kernel@lists.infradead.org; Thu, 23 Feb 2023 19:58:25 +0000 Received: by mail-pj1-x104a.google.com with SMTP id gf1-20020a17090ac7c100b002369bf87b7aso123827pjb.8 for ; Thu, 23 Feb 2023 11:58:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=lATDuswOZbF3zLZuGn25g5w5EeOK39dFmfATzQI6x48=; b=WjkAmKeEgiP2hEXlbY746mkX3ZhOMGDC4P9c79ltVgkK2cIemHwqXcH6WrYyLHRdQF TPDAxjgYxRcgOZ9Cw42YNQatNy0fLX/b4SjlpRmVjocgTwZ+/NHLb7um96NikQlj0ehi z61VCGlKVn6yqKg+7X6pk7a0r38wnJVjrHrAZelDuyus9u6bCJc1ucQYnC0gwEUNfBwL 13s742XTOtNhDMUSovA7LDI9gfjrAbYLiDVYULHMN2GVGPzYnZOpwz34E6zS9Nxlczcd dm/+tCl7gL4ogIAyiGwzVItI4JYWQw4a5Yck0h70zIDUUba1T72R6HIZu+LfmJQ/sl0T Hf2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=lATDuswOZbF3zLZuGn25g5w5EeOK39dFmfATzQI6x48=; b=nWyHRwk+wG+Ws9l+iqACAT6rb5LBnZIxrdSqIOl6LDXE6gpgr0slqnToEZ/5Uh0Dh/ FcVyjCjFfHE+NsaUAPJ/FcRccfpx9pIlN9HWLf09JRrqzfyVimcO3+GruKOyz4YtSJRg OEvt41UpzrqGr+648dzsMOISNyVMkV7Ud1CkV+hndRJt4/rvb3pMST5fT8GSgrJg4yV/ shxc0/KFlgVhEyWaWvcO2Ajeb/q5m8cu/4AnJbB3u1NSMSSiloKSsxptNcgD73TywwWn iVLuLVb1gpiiw4N7osVpRQWXkr9VympPwH9szr/jo/66YEGx8Pr4+/p7E5dY3XpFYoF+ TYaA== X-Gm-Message-State: AO0yUKVvVyijtKXrXg42Y4Zdid6xC1jD6RAJPDr/Yig6tiYJRtDuE2Za sXoE06wkNT5mml3bxxHpIJpN7cmMOCA= X-Google-Smtp-Source: AK7set/ODb8D8144x2HqvMvJqO9rb7VbrC4eAbsdwQguwGwUJ87CVxuU31/KcwKltggxqLDvzZUouJLJe5k= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a62:1993:0:b0:5a8:bdd2:f99c with SMTP id 141-20020a621993000000b005a8bdd2f99cmr1974028pfz.1.1677182300738; Thu, 23 Feb 2023 11:58:20 -0800 (PST) Date: Thu, 23 Feb 2023 11:58:19 -0800 In-Reply-To: Mime-Version: 1.0 References: <20230217041230.2417228-1-yuzhao@google.com> <20230217041230.2417228-6-yuzhao@google.com> Message-ID: Subject: Re: [PATCH mm-unstable v1 5/5] mm: multi-gen LRU: use mmu_notifier_test_clear_young() From: Sean Christopherson To: Yu Zhao Cc: Johannes Weiner , Andrew Morton , Paolo Bonzini , Jonathan Corbet , Michael Larabel , kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org, linux-mm@google.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230223_115824_365368_F2C69099 X-CRM114-Status: GOOD ( 20.88 ) X-BeenThere: linux-arm-kernel@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-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gVGh1LCBGZWIgMjMsIDIwMjMsIFl1IFpoYW8gd3JvdGU6Cj4gT24gVGh1LCBGZWIgMjMsIDIw MjMgYXQgMTI6MTHigK9QTSBTZWFuIENocmlzdG9waGVyc29uIDxzZWFuamNAZ29vZ2xlLmNvbT4g d3JvdGU6Cj4gPgo+ID4gT24gVGh1LCBGZWIgMjMsIDIwMjMsIFl1IFpoYW8gd3JvdGU6Cj4gPiA+ ID4gQXMgYWxsdWRlZCB0byBpbiBwYXRjaCAxLCB1bmxlc3MgYmF0Y2hpbmcgdGhlIHdhbGtzIGV2 ZW4gaWYgS1ZNIGRvZXMgX25vdF8gc3VwcG9ydAo+ID4gPiA+IGEgbG9ja2xlc3Mgd2FsayBpcyBz b21laG93IF93b3JzZV8gdGhhbiB1c2luZyB0aGUgZXhpc3RpbmcgbW11X25vdGlmaWVyX2NsZWFy X2ZsdXNoX3lvdW5nKCksCj4gPiA+ID4gSSB0aGluayBiYXRjaGluZyB0aGUgY2FsbHMgc2hvdWxk IGJlIGNvbmRpdGlvbmFsIG9ubHkgb24gTFJVX0dFTl9TUFRFX1dBTEsuICBPcgo+ID4gPiA+IGlm IHdlIHdhbnQgdG8gYXZvaWQgYmF0Y2hpbmcgd2hlbiB0aGVyZSBhcmUgbm8gbW11X25vdGlmaWVy IGxpc3RlbmVycywgcHJvYmUKPiA+ID4gPiBtbXVfbm90aWZpZXJzLiAgQnV0IGRvbid0IGNhbGwg aW50byBLVk0gZGlyZWN0bHkuCj4gPiA+Cj4gPiA+IEknbSBub3Qgc3VyZSBJIGZ1bGx5IHVuZGVy c3RhbmQuIExldCdzIHByZXNlbnQgdGhlIHByb2JsZW0gb24gdGhlIE1NCj4gPiA+IHNpZGU6IGFz c3VtaW5nIEtWTSBzdXBwb3J0cyBsb2NrbGVzcyB3YWxrcywgYmF0Y2hpbmcgY2FuIHN0aWxsIGJl Cj4gPiA+IHdvcnNlICh2ZXJ5IHVubGlrZWx5KSwgYmVjYXVzZSBHRk5zIGNhbiBleGhpYml0IG5v IG1lbW9yeSBsb2NhbGl0eSBhdAo+ID4gPiBhbGwuIFNvIHRoaXMgb3B0aW9uIGFsbG93cyB1c2Vy c3BhY2UgdG8gZGlzYWJsZSBiYXRjaGluZy4KPiA+Cj4gPiBJJ20gYXNraW5nIHRoZSBvcHBvc2l0 ZS4gIElzIHRoZXJlIGEgc2NlbmFyaW8gd2hlcmUgYmF0Y2hpbmcrbG9jayBpcyB3b3JzZSB0aGFu Cj4gPiAhYmF0Y2hpbmcrbG9jaz8gIElmIG5vdCwgdGhlbiBkb24ndCBtYWtlIGJhdGNoaW5nIGRl cGVuZCBvbiBsb2NrbGVzcyB3YWxrcy4KPiAKPiBZZXMsIGFic29sdXRlbHkuIGJhdGNoaW5nK2xv Y2sgbWVhbnMgd2UgdGFrZS9yZWxlYXNlIG1tdV9sb2NrIGZvcgo+IGV2ZXJ5IHNpbmdsZSBQVEUg aW4gdGhlIGVudGlyZSBWQSBzcGFjZSAtLSBlYWNoIHNtYWxsIGJhdGNoIGNvbnRhaW5zCj4gNjQg UFRFcyBidXQgdGhlIGVudGlyZSBiYXRjaCBpcyB0aGUgd2hvbGUgS1ZNLgoKV2hvIGlzICJ3ZSI/ ICBJIGRvbid0IHNlZSBhbnl0aGluZyBpbiB0aGUga2VybmVsIHRoYXQgdHJpZ2dlcnMgd2Fsa2lu ZyB0aGUgd2hvbGUKVk1BLCBlLmcuIGxydV9nZW5fbG9va19hcm91bmQoKSBsaW1pdHMgdGhlIHdh bGsgdG8gYSBzaW5nbGUgUE1ELiAgSSBmZWVsIGxpa2UgSSdtCm1pc3Npbmcgc29tZXRoaW5nLi4u CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1h cm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0t a2VybmVsCg==