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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1EFC1C433EF for ; Tue, 26 Apr 2022 03:53:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243590AbiDZD4m (ORCPT ); Mon, 25 Apr 2022 23:56:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36334 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243538AbiDZD4e (ORCPT ); Mon, 25 Apr 2022 23:56:34 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 1396B127A60 for ; Mon, 25 Apr 2022 20:53:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1650945207; 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=U56zSxUw/A+PjopBzCaVhOCjovFUkZ0LYAX7dUOgfDQ=; b=cFaXXfuzHkh1AgC8OZF/zBOr/T+2XsnumbC8bUMqfnCQJ/sMbaNMbnvKgz/p2pGixxdeKc mCx7L6JuUxJ11l4gIPvD5CN0ZMzWHrPlgkbnLAL4juFlTbS1tf9pl+K7mQyAV/a8/++z5Q +BSYiwlsI3MZxgawscg5G1qhZjISYlw= 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.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-428-__SLvj55M8yhna3cD5A0cA-1; Mon, 25 Apr 2022 23:53:25 -0400 X-MC-Unique: __SLvj55M8yhna3cD5A0cA-1 Received: by mail-wm1-f70.google.com with SMTP id d13-20020a05600c3acd00b0038ff865c043so610681wms.3 for ; Mon, 25 Apr 2022 20:53:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=U56zSxUw/A+PjopBzCaVhOCjovFUkZ0LYAX7dUOgfDQ=; b=4pYcgAGGZnOktGhcAOMiYpmjdys49ZZeXRYZp56D7SS91pg7/Zq9bhMwW4vCAmfF06 4cxPKe6F6vkYp6njs4I44b9T185FI16iilj2T9vxuvh78wgUEhEK2FlAYyOnLxcdjAMJ /ZqMge3Oy1mB+HzqwWq/2iyxd7papdMjwMukrEkKP454lYOQ18ltuggckI2Zs9YXDiM1 MLCxosFgilOqu63lbdPZRhsz60byJE6AOJirvz71NZdUSQFzjvdByRibAS7VnGTUVrew 5DVPaoL0L7MYUzLzgOp+stsq+8sdK0Wshvy7UdlI4hUJj18oNiX4zr6wNaxNsu0/NEmI JPZQ== X-Gm-Message-State: AOAM533owy5wjlKer+OhdaXAGAciHV/+uB9vXBm9HbirKw+sOx+Xy+SE kJVbI/Sof6kQyzAcDrNlqA8BhEgbTvNlO4/FDK95ohe3EbwYwAxwYjVErjekF4Ab09JIxl5J9i6 RSmznCfBwwJi4piqtjyEwr8yM X-Received: by 2002:a05:600c:651:b0:381:3d7b:40e0 with SMTP id p17-20020a05600c065100b003813d7b40e0mr28427289wmm.17.1650945204341; Mon, 25 Apr 2022 20:53:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxofEkhZ9h2B7Wu29O8xUY779/GKPNSvhJI1vPU3mEtBK3l2xYcVadO+u++va5nxtAPdGEXXQ== X-Received: by 2002:a05:600c:651:b0:381:3d7b:40e0 with SMTP id p17-20020a05600c065100b003813d7b40e0mr28427277wmm.17.1650945204148; Mon, 25 Apr 2022 20:53:24 -0700 (PDT) Received: from redhat.com ([2.53.22.137]) by smtp.gmail.com with ESMTPSA id bg20-20020a05600c3c9400b0037fa5c422c8sm13535917wmb.48.2022.04.25.20.53.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Apr 2022 20:53:23 -0700 (PDT) Date: Mon, 25 Apr 2022 23:53:19 -0400 From: "Michael S. Tsirkin" To: Jason Wang Cc: Halil Pasic , Cornelia Huck , linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, sgarzare@redhat.com, eperezma@redhat.com, lulu@redhat.com, tglx@linutronix.de, peterz@infradead.org, paulmck@kernel.org, maz@kernel.org Subject: Re: [PATCH V3 6/9] virtio-ccw: implement synchronize_cbs() Message-ID: <20220425235134-mutt-send-email-mst@kernel.org> References: <20220425024418.8415-1-jasowang@redhat.com> <20220425024418.8415-7-jasowang@redhat.com> <20220425040512-mutt-send-email-mst@kernel.org> <87a6c98rwf.fsf@redhat.com> <20220425095742-mutt-send-email-mst@kernel.org> <20220426042911.544477f9.pasic@linux.ibm.com> <20220425233434-mutt-send-email-mst@kernel.org> <20220425233604-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 26, 2022 at 11:42:45AM +0800, Jason Wang wrote: > > 在 2022/4/26 11:38, Michael S. Tsirkin 写道: > > On Mon, Apr 25, 2022 at 11:35:41PM -0400, Michael S. Tsirkin wrote: > > > On Tue, Apr 26, 2022 at 04:29:11AM +0200, Halil Pasic wrote: > > > > On Mon, 25 Apr 2022 09:59:55 -0400 > > > > "Michael S. Tsirkin" wrote: > > > > > > > > > On Mon, Apr 25, 2022 at 10:54:24AM +0200, Cornelia Huck wrote: > > > > > > On Mon, Apr 25 2022, "Michael S. Tsirkin" wrote: > > > > > > > On Mon, Apr 25, 2022 at 10:44:15AM +0800, Jason Wang wrote: > > > > > > > > This patch tries to implement the synchronize_cbs() for ccw. For the > > > > > > > > vring_interrupt() that is called via virtio_airq_handler(), the > > > > > > > > synchronization is simply done via the airq_info's lock. For the > > > > > > > > vring_interrupt() that is called via virtio_ccw_int_handler(), a per > > > > > > > > device spinlock for irq is introduced ans used in the synchronization > > > > > > > > method. > > > > > > > > > > > > > > > > Cc: Thomas Gleixner > > > > > > > > Cc: Peter Zijlstra > > > > > > > > Cc: "Paul E. McKenney" > > > > > > > > Cc: Marc Zyngier > > > > > > > > Cc: Halil Pasic > > > > > > > > Cc: Cornelia Huck > > > > > > > > Signed-off-by: Jason Wang > > > > > > > > > > > > > > This is the only one that is giving me pause. Halil, Cornelia, > > > > > > > should we be concerned about the performance impact here? > > > > > > > Any chance it can be tested? > > > > > > We can have a bunch of devices using the same airq structure, and the > > > > > > sync cb creates a choke point, same as registering/unregistering. > > > > > BTW can callbacks for multiple VQs run on multiple CPUs at the moment? > > > > I'm not sure I understand the question. > > > > > > > > I do think we can have multiple CPUs that are executing some portion of > > > > virtio_ccw_int_handler(). So I guess the answer is yes. Connie what do you think? > > > > > > > > On the other hand we could also end up serializing synchronize_cbs() > > > > calls for different devices if they happen to use the same airq_info. But > > > > this probably was not your question > > > > > > I am less concerned about synchronize_cbs being slow and more about > > > the slowdown in interrupt processing itself. > > > > > > > > this patch serializes them on a spinlock. > > > > > > > > > Those could then pile up on the newly introduced spinlock. > > > > > > > > Regards, > > > > Halil > > > Hmm yea ... not good. > > Is there any other way to synchronize with all callbacks? > > > Maybe using rwlock as airq handler? > > Thanks > rwlock is still a shared cacheline bouncing between CPUs and a bunch of ordering instructions. Maybe something per-cpu + some IPIs to run things on all CPUs instead? > > > > > -- > > > MST 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 smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (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 3C5E9C433F5 for ; Tue, 26 Apr 2022 03:53:32 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id EED63828F2; Tue, 26 Apr 2022 03:53:31 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tS5HluGyHV5K; Tue, 26 Apr 2022 03:53:31 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 7C9B582768; Tue, 26 Apr 2022 03:53:30 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5AD60C0032; Tue, 26 Apr 2022 03:53:30 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [IPv6:2605:bc80:3010::133]) by lists.linuxfoundation.org (Postfix) with ESMTP id E44D7C002D for ; Tue, 26 Apr 2022 03:53:28 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id C952F4035D for ; Tue, 26 Apr 2022 03:53:28 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp2.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=redhat.com Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Dv9tMYBSWfPw for ; Tue, 26 Apr 2022 03:53:28 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by smtp2.osuosl.org (Postfix) with ESMTPS id 03A004013B for ; Tue, 26 Apr 2022 03:53:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1650945206; 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=U56zSxUw/A+PjopBzCaVhOCjovFUkZ0LYAX7dUOgfDQ=; b=Bye0Ok69xMfAtg1fiuPHrY5uANDsDRKHtt1C1kVezyTWFH7PgqSVl8gyZnKSCzm3HeFPX3 XgClLcX1JsBzbKi3uhH3dfZJCWWcGI1V2d88bi/GOoaPXtFe7TwZqmsmdUXqFVG0Vhixbl l1R/aH6PECmb7vfMLGhPtKWjdVUqHLI= 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.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-215-v2_Mdsp4NbS7LYT5GXQQXg-1; Mon, 25 Apr 2022 23:53:25 -0400 X-MC-Unique: v2_Mdsp4NbS7LYT5GXQQXg-1 Received: by mail-wm1-f70.google.com with SMTP id r203-20020a1c44d4000000b00393f52ed5ceso171889wma.7 for ; Mon, 25 Apr 2022 20:53:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to; bh=U56zSxUw/A+PjopBzCaVhOCjovFUkZ0LYAX7dUOgfDQ=; b=CfNrmxExMENYcZhAbl0ILGGrCl4zME0qL4/JmQXcPL78YlY3bmAlo2kkVfmhad1WkN 020rVkYlaOsHKR6kGG0jiPlLgK5kRgEU2sqpRZXCHd+7p9Jdw3CeKRbdN8kia+Y0pqfi d/N0Ni/+k6OylrRzWYLzFOhnGycHHlPShQ8r7rUBr/ojwhzS7dDcxtwPvqHp190yLNgP xa5PHICTzpqs6XLq6pGPRpnD1L4nA57vKbyaDr1WfZQ9dwbT52IoFR9r/ykm6eg9f9ov 5SWur3vGeJFQx4kvnmMc4FkspWNw06HM5yArvxN7OqbWIGHZOSxguMbJsAjtecotixtd W8Cw== X-Gm-Message-State: AOAM532W8uQu9oimP9LQPEiXlc1G/guSdem+XTPz8/KiUbzBtlvzfzv4 m177SlOIDq4uOBBg3ljjckibBVG+Ed7DExvXjRzm460fiFw3IwM73QnkMH6CAkKEquexzz7uY+p 0hq5kt3LY6AsZRmVSplAEXCv8e/QwRUg8wuHa10teOg== X-Received: by 2002:a05:600c:651:b0:381:3d7b:40e0 with SMTP id p17-20020a05600c065100b003813d7b40e0mr28427288wmm.17.1650945204341; Mon, 25 Apr 2022 20:53:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxofEkhZ9h2B7Wu29O8xUY779/GKPNSvhJI1vPU3mEtBK3l2xYcVadO+u++va5nxtAPdGEXXQ== X-Received: by 2002:a05:600c:651:b0:381:3d7b:40e0 with SMTP id p17-20020a05600c065100b003813d7b40e0mr28427277wmm.17.1650945204148; Mon, 25 Apr 2022 20:53:24 -0700 (PDT) Received: from redhat.com ([2.53.22.137]) by smtp.gmail.com with ESMTPSA id bg20-20020a05600c3c9400b0037fa5c422c8sm13535917wmb.48.2022.04.25.20.53.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Apr 2022 20:53:23 -0700 (PDT) Date: Mon, 25 Apr 2022 23:53:19 -0400 From: "Michael S. Tsirkin" To: Jason Wang Subject: Re: [PATCH V3 6/9] virtio-ccw: implement synchronize_cbs() Message-ID: <20220425235134-mutt-send-email-mst@kernel.org> References: <20220425024418.8415-1-jasowang@redhat.com> <20220425024418.8415-7-jasowang@redhat.com> <20220425040512-mutt-send-email-mst@kernel.org> <87a6c98rwf.fsf@redhat.com> <20220425095742-mutt-send-email-mst@kernel.org> <20220426042911.544477f9.pasic@linux.ibm.com> <20220425233434-mutt-send-email-mst@kernel.org> <20220425233604-mutt-send-email-mst@kernel.org> MIME-Version: 1.0 In-Reply-To: Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mst@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Disposition: inline Cc: paulmck@kernel.org, lulu@redhat.com, peterz@infradead.org, maz@kernel.org, Cornelia Huck , linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, Halil Pasic , eperezma@redhat.com, tglx@linutronix.de X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gVHVlLCBBcHIgMjYsIDIwMjIgYXQgMTE6NDI6NDVBTSArMDgwMCwgSmFzb24gV2FuZyB3cm90 ZToKPiAKPiDlnKggMjAyMi80LzI2IDExOjM4LCBNaWNoYWVsIFMuIFRzaXJraW4g5YaZ6YGTOgo+ ID4gT24gTW9uLCBBcHIgMjUsIDIwMjIgYXQgMTE6MzU6NDFQTSAtMDQwMCwgTWljaGFlbCBTLiBU c2lya2luIHdyb3RlOgo+ID4gPiBPbiBUdWUsIEFwciAyNiwgMjAyMiBhdCAwNDoyOToxMUFNICsw MjAwLCBIYWxpbCBQYXNpYyB3cm90ZToKPiA+ID4gPiBPbiBNb24sIDI1IEFwciAyMDIyIDA5OjU5 OjU1IC0wNDAwCj4gPiA+ID4gIk1pY2hhZWwgUy4gVHNpcmtpbiIgPG1zdEByZWRoYXQuY29tPiB3 cm90ZToKPiA+ID4gPiAKPiA+ID4gPiA+IE9uIE1vbiwgQXByIDI1LCAyMDIyIGF0IDEwOjU0OjI0 QU0gKzAyMDAsIENvcm5lbGlhIEh1Y2sgd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIE1vbiwgQXByIDI1 IDIwMjIsICJNaWNoYWVsIFMuIFRzaXJraW4iIDxtc3RAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPiA+ ID4gPiA+ID4gT24gTW9uLCBBcHIgMjUsIDIwMjIgYXQgMTA6NDQ6MTVBTSArMDgwMCwgSmFzb24g V2FuZyB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IFRoaXMgcGF0Y2ggdHJpZXMgdG8gaW1wbGVtZW50 IHRoZSBzeW5jaHJvbml6ZV9jYnMoKSBmb3IgY2N3LiBGb3IgdGhlCj4gPiA+ID4gPiA+ID4gPiB2 cmluZ19pbnRlcnJ1cHQoKSB0aGF0IGlzIGNhbGxlZCB2aWEgdmlydGlvX2FpcnFfaGFuZGxlcigp LCB0aGUKPiA+ID4gPiA+ID4gPiA+IHN5bmNocm9uaXphdGlvbiBpcyBzaW1wbHkgZG9uZSB2aWEg dGhlIGFpcnFfaW5mbydzIGxvY2suIEZvciB0aGUKPiA+ID4gPiA+ID4gPiA+IHZyaW5nX2ludGVy cnVwdCgpIHRoYXQgaXMgY2FsbGVkIHZpYSB2aXJ0aW9fY2N3X2ludF9oYW5kbGVyKCksIGEgcGVy Cj4gPiA+ID4gPiA+ID4gPiBkZXZpY2Ugc3BpbmxvY2sgZm9yIGlycSBpcyBpbnRyb2R1Y2VkIGFu cyB1c2VkIGluIHRoZSBzeW5jaHJvbml6YXRpb24KPiA+ID4gPiA+ID4gPiA+IG1ldGhvZC4KPiA+ ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gQ2M6IFRob21hcyBHbGVpeG5lciA8dGdseEBs aW51dHJvbml4LmRlPgo+ID4gPiA+ID4gPiA+ID4gQ2M6IFBldGVyIFppamxzdHJhIDxwZXRlcnpA aW5mcmFkZWFkLm9yZz4KPiA+ID4gPiA+ID4gPiA+IENjOiAiUGF1bCBFLiBNY0tlbm5leSIgPHBh dWxtY2tAa2VybmVsLm9yZz4KPiA+ID4gPiA+ID4gPiA+IENjOiBNYXJjIFp5bmdpZXIgPG1hekBr ZXJuZWwub3JnPgo+ID4gPiA+ID4gPiA+ID4gQ2M6IEhhbGlsIFBhc2ljIDxwYXNpY0BsaW51eC5p Ym0uY29tPgo+ID4gPiA+ID4gPiA+ID4gQ2M6IENvcm5lbGlhIEh1Y2sgPGNvaHVja0ByZWRoYXQu Y29tPgo+ID4gPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogSmFzb24gV2FuZyA8amFzb3dhbmdA cmVkaGF0LmNvbT4KPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBUaGlzIGlzIHRoZSBvbmx5 IG9uZSB0aGF0IGlzIGdpdmluZyBtZSBwYXVzZS4gSGFsaWwsIENvcm5lbGlhLAo+ID4gPiA+ID4g PiA+IHNob3VsZCB3ZSBiZSBjb25jZXJuZWQgYWJvdXQgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBo ZXJlPwo+ID4gPiA+ID4gPiA+IEFueSBjaGFuY2UgaXQgY2FuIGJlIHRlc3RlZD8KPiA+ID4gPiA+ ID4gV2UgY2FuIGhhdmUgYSBidW5jaCBvZiBkZXZpY2VzIHVzaW5nIHRoZSBzYW1lIGFpcnEgc3Ry dWN0dXJlLCBhbmQgdGhlCj4gPiA+ID4gPiA+IHN5bmMgY2IgY3JlYXRlcyBhIGNob2tlIHBvaW50 LCBzYW1lIGFzIHJlZ2lzdGVyaW5nL3VucmVnaXN0ZXJpbmcuCj4gPiA+ID4gPiBCVFcgY2FuIGNh bGxiYWNrcyBmb3IgbXVsdGlwbGUgVlFzIHJ1biBvbiBtdWx0aXBsZSBDUFVzIGF0IHRoZSBtb21l bnQ/Cj4gPiA+ID4gSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcXVlc3Rpb24uCj4gPiA+ ID4gCj4gPiA+ID4gSSBkbyB0aGluayB3ZSBjYW4gaGF2ZSBtdWx0aXBsZSBDUFVzIHRoYXQgYXJl IGV4ZWN1dGluZyBzb21lIHBvcnRpb24gb2YKPiA+ID4gPiB2aXJ0aW9fY2N3X2ludF9oYW5kbGVy KCkuIFNvIEkgZ3Vlc3MgdGhlIGFuc3dlciBpcyB5ZXMuIENvbm5pZSB3aGF0IGRvIHlvdSB0aGlu az8KPiA+ID4gPiAKPiA+ID4gPiBPbiB0aGUgb3RoZXIgaGFuZCB3ZSBjb3VsZCBhbHNvIGVuZCB1 cCBzZXJpYWxpemluZyBzeW5jaHJvbml6ZV9jYnMoKQo+ID4gPiA+IGNhbGxzIGZvciBkaWZmZXJl bnQgZGV2aWNlcyBpZiB0aGV5IGhhcHBlbiB0byB1c2UgdGhlIHNhbWUgYWlycV9pbmZvLiBCdXQK PiA+ID4gPiB0aGlzIHByb2JhYmx5IHdhcyBub3QgeW91ciBxdWVzdGlvbgo+ID4gPiAKPiA+ID4g SSBhbSBsZXNzIGNvbmNlcm5lZCBhYm91dCAgc3luY2hyb25pemVfY2JzIGJlaW5nIHNsb3cgYW5k IG1vcmUgYWJvdXQKPiA+ID4gdGhlIHNsb3dkb3duIGluIGludGVycnVwdCBwcm9jZXNzaW5nIGl0 c2VsZi4KPiA+ID4gCj4gPiA+ID4gPiB0aGlzIHBhdGNoIHNlcmlhbGl6ZXMgdGhlbSBvbiBhIHNw aW5sb2NrLgo+ID4gPiA+ID4gCj4gPiA+ID4gVGhvc2UgY291bGQgdGhlbiBwaWxlIHVwIG9uIHRo ZSBuZXdseSBpbnRyb2R1Y2VkIHNwaW5sb2NrLgo+ID4gPiA+IAo+ID4gPiA+IFJlZ2FyZHMsCj4g PiA+ID4gSGFsaWwKPiA+ID4gSG1tIHllYSAuLi4gbm90IGdvb2QuCj4gPiBJcyB0aGVyZSBhbnkg b3RoZXIgd2F5IHRvIHN5bmNocm9uaXplIHdpdGggYWxsIGNhbGxiYWNrcz8KPiAKPiAKPiBNYXli ZSB1c2luZyByd2xvY2sgYXMgYWlycSBoYW5kbGVyPwo+IAo+IFRoYW5rcwo+IAoKcndsb2NrIGlz IHN0aWxsIGEgc2hhcmVkIGNhY2hlbGluZSBib3VuY2luZyBiZXR3ZWVuIENQVXMgYW5kCmEgYnVu Y2ggb2Ygb3JkZXJpbmcgaW5zdHJ1Y3Rpb25zLgpNYXliZSBzb21ldGhpbmcgcGVyLWNwdSArIHNv bWUgSVBJcyB0byBydW4gdGhpbmdzIG9uIGFsbCBDUFVzIGluc3RlYWQ/Cgo+ID4gCj4gPiA+IC0t IAo+ID4gPiBNU1QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClZpcnR1YWxpemF0aW9uIG1haWxpbmcgbGlzdApWaXJ0dWFsaXphdGlvbkBsaXN0cy5saW51 eC1mb3VuZGF0aW9uLm9yZwpodHRwczovL2xpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcvbWFpbG1h bi9saXN0aW5mby92aXJ0dWFsaXphdGlvbg==