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 X-Spam-Level: X-Spam-Status: No, score=-5.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1F8A3C33CA1 for ; Thu, 9 Jan 2020 23:41:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DB9FD2077C for ; Thu, 9 Jan 2020 23:41:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="c6ABK6YO" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729476AbgAIXla (ORCPT ); Thu, 9 Jan 2020 18:41:30 -0500 Received: from smtp-fw-33001.amazon.com ([207.171.190.10]:42406 "EHLO smtp-fw-33001.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725840AbgAIXl3 (ORCPT ); Thu, 9 Jan 2020 18:41:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1578613289; x=1610149289; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=LiHQ8qEhETcU1o1tFdPT/fMQUvDHkHslEbbbNaaN0PY=; b=c6ABK6YOpTF7Dy10+d9dwICsX2f8AHcDH9A/isOYjkVWBcgCMAfD/4S8 47wIbtr2fTo8DZRMsrmPLQWH+1rM61wHW8HzvesUo2VDxtMduw/E1kCSz uNfaA2i6nkMPLFXHvhgTTHG6k1xEE8IeO5ChyiXq77tBH/zBBXdtj2/+d w=; IronPort-SDR: jHEDBPr9SL5BiUmabpwOch0UFlE9qQMViRBXLXTpTO7Wso2aBS5JvdybsjtJ66EqP5r/G+aUFy nldKxNLQgv5A== X-IronPort-AV: E=Sophos;i="5.69,414,1571702400"; d="scan'208";a="19232911" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-1a-7d76a15f.us-east-1.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP; 09 Jan 2020 23:41:17 +0000 Received: from EX13MTAUEB002.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1a-7d76a15f.us-east-1.amazon.com (Postfix) with ESMTPS id 2109CA2B10; Thu, 9 Jan 2020 23:41:09 +0000 (UTC) Received: from EX13D08UEB002.ant.amazon.com (10.43.60.107) by EX13MTAUEB002.ant.amazon.com (10.43.60.12) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 9 Jan 2020 23:40:51 +0000 Received: from EX13MTAUEB002.ant.amazon.com (10.43.60.12) by EX13D08UEB002.ant.amazon.com (10.43.60.107) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 9 Jan 2020 23:40:51 +0000 Received: from dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com (172.22.96.68) by mail-relay.amazon.com (10.43.60.234) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Thu, 9 Jan 2020 23:40:51 +0000 Received: by dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com (Postfix, from userid 4335130) id AF38540E7A; Thu, 9 Jan 2020 23:40:50 +0000 (UTC) Date: Thu, 9 Jan 2020 23:40:50 +0000 From: Anchal Agarwal To: Thomas Gleixner CC: , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: Re: [RFC PATCH V2 09/11] xen: Clear IRQD_IRQ_STARTED flag during shutdown PIRQs Message-ID: <20200109234050.GA26381@dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com> References: <20200107234420.GA18738@dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com> <877e22ezv6.fsf@nanos.tec.linutronix.de> <20200108212417.GA22381@dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com> <874kx4omtc.fsf@nanos.tec.linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <874kx4omtc.fsf@nanos.tec.linutronix.de> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jan 09, 2020 at 01:07:27PM +0100, Thomas Gleixner wrote: > Anchal Agarwal writes: > > On Wed, Jan 08, 2020 at 04:23:25PM +0100, Thomas Gleixner wrote: > >> Anchal Agarwal writes: > >> > +void irq_state_clr_started(struct irq_desc *desc) > >> > { > >> > irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED); > >> > } > >> > +EXPORT_SYMBOL_GPL(irq_state_clr_started); > >> > >> This is core internal state and not supposed to be fiddled with by > >> drivers. > >> > >> irq_chip has irq_suspend/resume/pm_shutdown callbacks for a reason. > >> > > I agree, as its mentioned in the previous patch {[RFC PATCH V2 08/11]} this is > > one way of explicitly shutting down legacy devices without introducing too much > > code for each of the legacy devices. . for eg. in case of floppy there > > is no suspend/freeze handler which should have done the needful. > > . > > Either we implement them for all the legacy devices that have them missing or > > explicitly shutdown pirqs. I have choosen later for simplicity. I understand > > that ideally we should enable/disable devices interrupts in suspend/resume > > devices but that requires adding code for doing that to few drivers[and I may > > not know all of them either] > > > > Now I discovered during the flow in hibernation_platform_enter under resume > > devices that for such devices irq_startup is called which checks for > > IRQD_IRQ_STARTED flag and based on that it calls irq_enable or irq_startup. > > They are only restarted if the flag is not set which is cleared during shutdown. > > shutdown_pirq does not do that. Only masking/unmasking of evtchn does not work > > as pirq needs to be restarted. > > xen-pirq.enable_irq is called rather than stratup_pirq. On resume if these pirqs > > are not restarted in this case ACPI SCI interrupts, I do not see receiving > > any interrupts under cat /proc/interrupts even though host keeps generating > > S4 ACPI events. > > Does that makes sense? > > No. You still violate all abstraction boundaries. On one hand you use a > XEN specific suspend function to shut down interrupts, but then you want > the core code to reestablish them on resume. That's just bad hackery which > abuses partial knowledge of core internals. The state flag is only one > part of the core internal state and just clearing it does not make the > rest consistent. It just works by chance and not by design and any > change of the core code will break it in colourful ways. > > So either you can handle it purely on the XEN side without touching any > core state or you need to come up with some way of letting the core code > know that it should invoke shutdown instead of disable. > > Something like the completely untested patch below. > > Thanks, > > tglx Understandable. Really appreciate the patch suggestion below and i will test it for sure and see if things can be fixed properly in irq core if thats the only option. In the meanwhile, I tried to fix it on xen side unless it gives you the same feeling as above? MSI-x are just fine, just ioapic ones don't get any event channel asssigned hence enable_dynirq does nothing. Those needs to be restarted. Thanks, Anchal <----------------------- diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c index 1bb0b522d004..2ed152f35816 100644 --- a/drivers/xen/events/events_base.c +++ b/drivers/xen/events/events_base.c @@ -575,6 +575,11 @@ static void shutdown_pirq(struct irq_data *data) static void enable_pirq(struct irq_data *data) { +/*ioapic interrupts don't get event channel assigned + * after being explicitly shutdown during guest + * hibernation. They need to be restarted*/ + if(!evtchn_from_irq(data->irq)) + startup_pirq(data); enable_dynirq(data); } > > 8<---------------- > > diff --git a/include/linux/irq.h b/include/linux/irq.h > index 7853eb9301f2..50f2057bc339 100644 > --- a/include/linux/irq.h > +++ b/include/linux/irq.h > @@ -511,6 +511,7 @@ struct irq_chip { > * IRQCHIP_EOI_THREADED: Chip requires eoi() on unmask in threaded mode > * IRQCHIP_SUPPORTS_LEVEL_MSI Chip can provide two doorbells for Level MSIs > * IRQCHIP_SUPPORTS_NMI: Chip can deliver NMIs, only for root irqchips > + * IRQCHIP_SHUTDOWN_ON_SUSPEND: Shutdown non wake irqs in the suspend path > */ > enum { > IRQCHIP_SET_TYPE_MASKED = (1 << 0), > @@ -522,6 +523,7 @@ enum { > IRQCHIP_EOI_THREADED = (1 << 6), > IRQCHIP_SUPPORTS_LEVEL_MSI = (1 << 7), > IRQCHIP_SUPPORTS_NMI = (1 << 8), > + IRQCHIP_SHUTDOWN_ON_SUSPEND = (1 << 9), > }; > > #include > diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c > index b3fa2d87d2f3..0fe355f72a15 100644 > --- a/kernel/irq/chip.c > +++ b/kernel/irq/chip.c > @@ -233,7 +233,7 @@ __irq_startup_managed(struct irq_desc *desc, struct cpumask *aff, bool force) > } > #endif > > -static int __irq_startup(struct irq_desc *desc) > +int __irq_startup(struct irq_desc *desc) > { > struct irq_data *d = irq_desc_get_irq_data(desc); > int ret = 0; > diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h > index 3924fbe829d4..11c7c55bda63 100644 > --- a/kernel/irq/internals.h > +++ b/kernel/irq/internals.h > @@ -80,6 +80,7 @@ extern void __enable_irq(struct irq_desc *desc); > extern int irq_activate(struct irq_desc *desc); > extern int irq_activate_and_startup(struct irq_desc *desc, bool resend); > extern int irq_startup(struct irq_desc *desc, bool resend, bool force); > +extern int __irq_startup(struct irq_desc *desc); > > extern void irq_shutdown(struct irq_desc *desc); > extern void irq_shutdown_and_deactivate(struct irq_desc *desc); > diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c > index 8f557fa1f4fe..597f0602510a 100644 > --- a/kernel/irq/pm.c > +++ b/kernel/irq/pm.c > @@ -85,16 +85,22 @@ static bool suspend_device_irq(struct irq_desc *desc) > } > > desc->istate |= IRQS_SUSPENDED; > - __disable_irq(desc); > - > - /* > - * Hardware which has no wakeup source configuration facility > - * requires that the non wakeup interrupts are masked at the > - * chip level. The chip implementation indicates that with > - * IRQCHIP_MASK_ON_SUSPEND. > - */ > - if (irq_desc_get_chip(desc)->flags & IRQCHIP_MASK_ON_SUSPEND) > - mask_irq(desc); > + > + /* Some irq chips (e.g. XEN PIRQ) require a full shutdown on suspend */ > + if (irq_desc_get_chip(desc)->flags & IRQCHIP_SHUTDOWN_ON_SUSPEND) { > + irq_shutdown(desc); > + } else { > + __disable_irq(desc); > + > + /* > + * Hardware which has no wakeup source configuration facility > + * requires that the non wakeup interrupts are masked at the > + * chip level. The chip implementation indicates that with > + * IRQCHIP_MASK_ON_SUSPEND. > + */ > + if (irq_desc_get_chip(desc)->flags & IRQCHIP_MASK_ON_SUSPEND) > + mask_irq(desc); > + } > return true; > } > > @@ -152,7 +158,10 @@ static void resume_irq(struct irq_desc *desc) > irq_state_set_masked(desc); > resume: > desc->istate &= ~IRQS_SUSPENDED; > - __enable_irq(desc); > + if (irq_desc_get_chip(desc)->flags & IRQCHIP_SHUTDOWN_ON_SUSPEND) > + __irq_startup(desc); > + else > + __enable_irq(desc); > } > > static void resume_irqs(bool want_early) 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 X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B09FAC3F68F for ; Thu, 9 Jan 2020 23:41:59 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7730F2077C for ; Thu, 9 Jan 2020 23:41:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="c6ABK6YO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7730F2077C Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iphQp-0006qf-RM; Thu, 09 Jan 2020 23:41:39 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iphQo-0006qa-4E for xen-devel@lists.xenproject.org; Thu, 09 Jan 2020 23:41:38 +0000 X-Inumbo-ID: 8e79d95c-3339-11ea-b89f-bc764e2007e4 Received: from smtp-fw-33001.amazon.com (unknown [207.171.190.10]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 8e79d95c-3339-11ea-b89f-bc764e2007e4; Thu, 09 Jan 2020 23:41:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1578613289; x=1610149289; h=date:from:to:cc:subject:message-id:references: mime-version:in-reply-to; bh=LiHQ8qEhETcU1o1tFdPT/fMQUvDHkHslEbbbNaaN0PY=; b=c6ABK6YOpTF7Dy10+d9dwICsX2f8AHcDH9A/isOYjkVWBcgCMAfD/4S8 47wIbtr2fTo8DZRMsrmPLQWH+1rM61wHW8HzvesUo2VDxtMduw/E1kCSz uNfaA2i6nkMPLFXHvhgTTHG6k1xEE8IeO5ChyiXq77tBH/zBBXdtj2/+d w=; IronPort-SDR: jHEDBPr9SL5BiUmabpwOch0UFlE9qQMViRBXLXTpTO7Wso2aBS5JvdybsjtJ66EqP5r/G+aUFy nldKxNLQgv5A== X-IronPort-AV: E=Sophos;i="5.69,414,1571702400"; d="scan'208";a="19232911" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-1a-7d76a15f.us-east-1.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-33001.sea14.amazon.com with ESMTP; 09 Jan 2020 23:41:17 +0000 Received: from EX13MTAUEB002.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-1a-7d76a15f.us-east-1.amazon.com (Postfix) with ESMTPS id 2109CA2B10; Thu, 9 Jan 2020 23:41:09 +0000 (UTC) Received: from EX13D08UEB002.ant.amazon.com (10.43.60.107) by EX13MTAUEB002.ant.amazon.com (10.43.60.12) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 9 Jan 2020 23:40:51 +0000 Received: from EX13MTAUEB002.ant.amazon.com (10.43.60.12) by EX13D08UEB002.ant.amazon.com (10.43.60.107) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 9 Jan 2020 23:40:51 +0000 Received: from dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com (172.22.96.68) by mail-relay.amazon.com (10.43.60.234) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Thu, 9 Jan 2020 23:40:51 +0000 Received: by dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com (Postfix, from userid 4335130) id AF38540E7A; Thu, 9 Jan 2020 23:40:50 +0000 (UTC) Date: Thu, 9 Jan 2020 23:40:50 +0000 From: Anchal Agarwal To: Thomas Gleixner Message-ID: <20200109234050.GA26381@dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com> References: <20200107234420.GA18738@dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com> <877e22ezv6.fsf@nanos.tec.linutronix.de> <20200108212417.GA22381@dev-dsk-anchalag-2a-9c2d1d96.us-west-2.amazon.com> <874kx4omtc.fsf@nanos.tec.linutronix.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <874kx4omtc.fsf@nanos.tec.linutronix.de> User-Agent: Mutt/1.5.21 (2010-09-15) Precedence: Bulk Subject: Re: [Xen-devel] [RFC PATCH V2 09/11] xen: Clear IRQD_IRQ_STARTED flag during shutdown PIRQs X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: konrad.wilk@oracle.co, eduval@amazon.com, peterz@infradead.org, x86@kernel.org, linux-mm@kvack.org, axboe@kernel.dk, pavel@ucw.cz, hpa@zytor.com, sstabellini@kernel.org, kamatam@amazon.com, mingo@redhat.com, xen-devel@lists.xenproject.org, sblbir@amazon.com, len.brown@intel.com, linux-pm@vger.kernel.org, anchalag@amazon.com, bp@alien8.de, boris.ostrovsky@oracle.com, jgross@suse.com, netdev@vger.kernel.org, fllinden@amazon.com, rjw@rjwysocki.net, linux-kernel@vger.kernel.org, vkuznets@redhat.com, davem@davemloft.net, dwmw@amazon.co.uk, roger.pau@citrix.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gVGh1LCBKYW4gMDksIDIwMjAgYXQgMDE6MDc6MjdQTSArMDEwMCwgVGhvbWFzIEdsZWl4bmVy IHdyb3RlOgo+IEFuY2hhbCBBZ2Fyd2FsIDxhbmNoYWxhZ0BhbWF6b24uY29tPiB3cml0ZXM6Cj4g PiBPbiBXZWQsIEphbiAwOCwgMjAyMCBhdCAwNDoyMzoyNVBNICswMTAwLCBUaG9tYXMgR2xlaXhu ZXIgd3JvdGU6Cj4gPj4gQW5jaGFsIEFnYXJ3YWwgPGFuY2hhbGFnQGFtYXpvbi5jb20+IHdyaXRl czoKPiA+PiA+ICt2b2lkIGlycV9zdGF0ZV9jbHJfc3RhcnRlZChzdHJ1Y3QgaXJxX2Rlc2MgKmRl c2MpCj4gPj4gPiAgewo+ID4+ID4gIAlpcnFkX2NsZWFyKCZkZXNjLT5pcnFfZGF0YSwgSVJRRF9J UlFfU1RBUlRFRCk7Cj4gPj4gPiAgfQo+ID4+ID4gK0VYUE9SVF9TWU1CT0xfR1BMKGlycV9zdGF0 ZV9jbHJfc3RhcnRlZCk7Cj4gPj4gCj4gPj4gVGhpcyBpcyBjb3JlIGludGVybmFsIHN0YXRlIGFu ZCBub3Qgc3VwcG9zZWQgdG8gYmUgZmlkZGxlZCB3aXRoIGJ5Cj4gPj4gZHJpdmVycy4KPiA+PiAK PiA+PiBpcnFfY2hpcCBoYXMgaXJxX3N1c3BlbmQvcmVzdW1lL3BtX3NodXRkb3duIGNhbGxiYWNr cyBmb3IgYSByZWFzb24uCj4gPj4KPiA+IEkgYWdyZWUsIGFzIGl0cyBtZW50aW9uZWQgaW4gdGhl IHByZXZpb3VzIHBhdGNoIHtbUkZDIFBBVENIIFYyIDA4LzExXX0gdGhpcyBpcyAKPiA+IG9uZSB3 YXkgb2YgZXhwbGljaXRseSBzaHV0dGluZyBkb3duIGxlZ2FjeSBkZXZpY2VzIHdpdGhvdXQgaW50 cm9kdWNpbmcgdG9vIG11Y2ggCj4gPiBjb2RlIGZvciBlYWNoIG9mIHRoZSBsZWdhY3kgZGV2aWNl cy4gLiBmb3IgZWcuIGluIGNhc2Ugb2YgZmxvcHB5IHRoZXJlIAo+ID4gaXMgbm8gc3VzcGVuZC9m cmVlemUgaGFuZGxlciB3aGljaCBzaG91bGQgaGF2ZSBkb25lIHRoZSBuZWVkZnVsLgo+ID4gLgo+ ID4gRWl0aGVyIHdlIGltcGxlbWVudCB0aGVtIGZvciBhbGwgdGhlIGxlZ2FjeSBkZXZpY2VzIHRo YXQgaGF2ZSB0aGVtIG1pc3Npbmcgb3IKPiA+IGV4cGxpY2l0bHkgc2h1dGRvd24gcGlycXMuIEkg aGF2ZSBjaG9vc2VuIGxhdGVyIGZvciBzaW1wbGljaXR5LiBJIHVuZGVyc3RhbmQKPiA+IHRoYXQg aWRlYWxseSB3ZSBzaG91bGQgZW5hYmxlL2Rpc2FibGUgZGV2aWNlcyBpbnRlcnJ1cHRzIGluIHN1 c3BlbmQvcmVzdW1lIAo+ID4gZGV2aWNlcyBidXQgdGhhdCByZXF1aXJlcyBhZGRpbmcgY29kZSBm b3IgZG9pbmcgdGhhdCB0byBmZXcgZHJpdmVyc1thbmQgSSBtYXkKPiA+IG5vdCBrbm93IGFsbCBv ZiB0aGVtIGVpdGhlcl0KPiA+Cj4gPiBOb3cgSSBkaXNjb3ZlcmVkIGR1cmluZyB0aGUgZmxvdyBp biBoaWJlcm5hdGlvbl9wbGF0Zm9ybV9lbnRlciB1bmRlciByZXN1bWUgCj4gPiBkZXZpY2VzIHRo YXQgZm9yIHN1Y2ggZGV2aWNlcyBpcnFfc3RhcnR1cCBpcyBjYWxsZWQgd2hpY2ggY2hlY2tzIGZv ciAKPiA+IElSUURfSVJRX1NUQVJURUQgZmxhZyBhbmQgYmFzZWQgb24gdGhhdCBpdCBjYWxscyBp cnFfZW5hYmxlIG9yIGlycV9zdGFydHVwLgo+ID4gVGhleSBhcmUgb25seSByZXN0YXJ0ZWQgaWYg dGhlIGZsYWcgaXMgbm90IHNldCB3aGljaCBpcyBjbGVhcmVkIGR1cmluZyBzaHV0ZG93bi4gCj4g PiBzaHV0ZG93bl9waXJxIGRvZXMgbm90IGRvIHRoYXQuIE9ubHkgbWFza2luZy91bm1hc2tpbmcg b2YgZXZ0Y2huIGRvZXMgbm90IHdvcmsgCj4gPiBhcyBwaXJxIG5lZWRzIHRvIGJlIHJlc3RhcnRl ZC4KPiA+IHhlbi1waXJxLmVuYWJsZV9pcnEgaXMgY2FsbGVkIHJhdGhlciB0aGFuIHN0cmF0dXBf cGlycS4gT24gcmVzdW1lIGlmIHRoZXNlIHBpcnFzCj4gPiBhcmUgbm90IHJlc3RhcnRlZCBpbiB0 aGlzIGNhc2UgQUNQSSBTQ0kgaW50ZXJydXB0cywgSSBkbyBub3Qgc2VlIHJlY2VpdmluZyAKPiA+ IGFueSBpbnRlcnJ1cHRzIHVuZGVyIGNhdCAvcHJvYy9pbnRlcnJ1cHRzIGV2ZW4gdGhvdWdoIGhv c3Qga2VlcHMgZ2VuZXJhdGluZyAKPiA+IFM0IEFDUEkgZXZlbnRzLiAKPiA+IERvZXMgdGhhdCBt YWtlcyBzZW5zZT8KPiAKPiBOby4gWW91IHN0aWxsIHZpb2xhdGUgYWxsIGFic3RyYWN0aW9uIGJv dW5kYXJpZXMuIE9uIG9uZSBoYW5kIHlvdSB1c2UgYQo+IFhFTiBzcGVjaWZpYyBzdXNwZW5kIGZ1 bmN0aW9uIHRvIHNodXQgZG93biBpbnRlcnJ1cHRzLCBidXQgdGhlbiB5b3Ugd2FudAo+IHRoZSBj b3JlIGNvZGUgdG8gcmVlc3RhYmxpc2ggdGhlbSBvbiByZXN1bWUuIFRoYXQncyBqdXN0IGJhZCBo YWNrZXJ5IHdoaWNoCj4gYWJ1c2VzIHBhcnRpYWwga25vd2xlZGdlIG9mIGNvcmUgaW50ZXJuYWxz LiBUaGUgc3RhdGUgZmxhZyBpcyBvbmx5IG9uZQo+IHBhcnQgb2YgdGhlIGNvcmUgaW50ZXJuYWwg c3RhdGUgYW5kIGp1c3QgY2xlYXJpbmcgaXQgZG9lcyBub3QgbWFrZSB0aGUKPiByZXN0IGNvbnNp c3RlbnQuIEl0IGp1c3Qgd29ya3MgYnkgY2hhbmNlIGFuZCBub3QgYnkgZGVzaWduIGFuZCBhbnkK PiBjaGFuZ2Ugb2YgdGhlIGNvcmUgY29kZSB3aWxsIGJyZWFrIGl0IGluIGNvbG91cmZ1bCB3YXlz Lgo+IAo+IFNvIGVpdGhlciB5b3UgY2FuIGhhbmRsZSBpdCBwdXJlbHkgb24gdGhlIFhFTiBzaWRl IHdpdGhvdXQgdG91Y2hpbmcgYW55Cj4gY29yZSBzdGF0ZSBvciB5b3UgbmVlZCB0byBjb21lIHVw IHdpdGggc29tZSB3YXkgb2YgbGV0dGluZyB0aGUgY29yZSBjb2RlCj4ga25vdyB0aGF0IGl0IHNo b3VsZCBpbnZva2Ugc2h1dGRvd24gaW5zdGVhZCBvZiBkaXNhYmxlLgo+IAo+IFNvbWV0aGluZyBs aWtlIHRoZSBjb21wbGV0ZWx5IHVudGVzdGVkIHBhdGNoIGJlbG93Lgo+IAo+IFRoYW5rcywKPiAK PiAgICAgICAgdGdseApVbmRlcnN0YW5kYWJsZS4gUmVhbGx5IGFwcHJlY2lhdGUgdGhlIHBhdGNo IHN1Z2dlc3Rpb24gYmVsb3cgYW5kIGkgd2lsbCB0ZXN0IGl0CmZvciBzdXJlIGFuZCBzZWUgaWYg dGhpbmdzIGNhbiBiZSBmaXhlZCBwcm9wZXJseSBpbiBpcnEgY29yZSBpZiB0aGF0cyB0aGUgb25s eQpvcHRpb24uIEluIHRoZSBtZWFud2hpbGUsIEkgdHJpZWQgdG8gZml4IGl0IG9uIHhlbiBzaWRl IHVubGVzcyBpdCBnaXZlcyB5b3UgdGhlIApzYW1lIGZlZWxpbmcgYXMgYWJvdmU/IE1TSS14IGFy ZSBqdXN0IGZpbmUsIGp1c3QgaW9hcGljIG9uZXMgZG9uJ3QgZ2V0IGFueSBldmVudApjaGFubmVs IGFzc3NpZ25lZCBoZW5jZSBlbmFibGVfZHluaXJxIGRvZXMgbm90aGluZy4gVGhvc2UgbmVlZHMg dG8gYmUgcmVzdGFydGVkLgoKVGhhbmtzLApBbmNoYWwKCjwtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL2V2ZW50cy9ldmVudHNfYmFzZS5jIGIvZHJpdmVy cy94ZW4vZXZlbnRzL2V2ZW50c19iYXNlLmMKaW5kZXggMWJiMGI1MjJkMDA0Li4yZWQxNTJmMzU4 MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMveGVuL2V2ZW50cy9ldmVudHNfYmFzZS5jCiAgICArKysg Yi9kcml2ZXJzL3hlbi9ldmVudHMvZXZlbnRzX2Jhc2UuYwpAQCAtNTc1LDYgKzU3NSwxMSBAQCBz dGF0aWMgdm9pZCBzaHV0ZG93bl9waXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKCnN0YXRpYyB2 b2lkIGVuYWJsZV9waXJxKHN0cnVjdCBpcnFfZGF0YSAqZGF0YSkKewogICAgKy8qaW9hcGljIGlu dGVycnVwdHMgZG9uJ3QgZ2V0IGV2ZW50IGNoYW5uZWwgYXNzaWduZWQKICAgICAgICsgKiBhZnRl ciBiZWluZyBleHBsaWNpdGx5IHNodXRkb3duIGR1cmluZyBndWVzdAogICAgICAgKyAqIGhpYmVy bmF0aW9uLiBUaGV5IG5lZWQgdG8gYmUgcmVzdGFydGVkKi8KICAgICAgICArICAgICAgIGlmKCFl dnRjaG5fZnJvbV9pcnEoZGF0YS0+aXJxKSkKICAgICAgICArICAgICAgICAgICAgICAgc3RhcnR1 cF9waXJxKGRhdGEpOwogICAgZW5hYmxlX2R5bmlycShkYXRhKTsKIH0KCj4gCj4gODwtLS0tLS0t LS0tLS0tLS0tCj4gCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaXJxLmggYi9pbmNsdWRl L2xpbnV4L2lycS5oCj4gaW5kZXggNzg1M2ViOTMwMWYyLi41MGYyMDU3YmMzMzkgMTAwNjQ0Cj4g LS0tIGEvaW5jbHVkZS9saW51eC9pcnEuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvaXJxLmgKPiBA QCAtNTExLDYgKzUxMSw3IEBAIHN0cnVjdCBpcnFfY2hpcCB7Cj4gICAqIElSUUNISVBfRU9JX1RI UkVBREVEOglDaGlwIHJlcXVpcmVzIGVvaSgpIG9uIHVubWFzayBpbiB0aHJlYWRlZCBtb2RlCj4g ICAqIElSUUNISVBfU1VQUE9SVFNfTEVWRUxfTVNJCUNoaXAgY2FuIHByb3ZpZGUgdHdvIGRvb3Ji ZWxscyBmb3IgTGV2ZWwgTVNJcwo+ICAgKiBJUlFDSElQX1NVUFBPUlRTX05NSToJQ2hpcCBjYW4g ZGVsaXZlciBOTUlzLCBvbmx5IGZvciByb290IGlycWNoaXBzCj4gKyAqIElSUUNISVBfU0hVVERP V05fT05fU1VTUEVORDoJU2h1dGRvd24gbm9uIHdha2UgaXJxcyBpbiB0aGUgc3VzcGVuZCBwYXRo Cj4gICAqLwo+ICBlbnVtIHsKPiAgCUlSUUNISVBfU0VUX1RZUEVfTUFTS0VECQk9ICgxIDw8ICAw KSwKPiBAQCAtNTIyLDYgKzUyMyw3IEBAIGVudW0gewo+ICAJSVJRQ0hJUF9FT0lfVEhSRUFERUQJ CT0gKDEgPDwgIDYpLAo+ICAJSVJRQ0hJUF9TVVBQT1JUU19MRVZFTF9NU0kJPSAoMSA8PCAgNyks Cj4gIAlJUlFDSElQX1NVUFBPUlRTX05NSQkJPSAoMSA8PCAgOCksCj4gKwlJUlFDSElQX1NIVVRE T1dOX09OX1NVU1BFTkQJPSAoMSA8PCAgOSksCj4gIH07Cj4gIAo+ICAjaW5jbHVkZSA8bGludXgv aXJxZGVzYy5oPgo+IGRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL2NoaXAuYyBiL2tlcm5lbC9pcnEv Y2hpcC5jCj4gaW5kZXggYjNmYTJkODdkMmYzLi4wZmUzNTVmNzJhMTUgMTAwNjQ0Cj4gLS0tIGEv a2VybmVsL2lycS9jaGlwLmMKPiArKysgYi9rZXJuZWwvaXJxL2NoaXAuYwo+IEBAIC0yMzMsNyAr MjMzLDcgQEAgX19pcnFfc3RhcnR1cF9tYW5hZ2VkKHN0cnVjdCBpcnFfZGVzYyAqZGVzYywgc3Ry dWN0IGNwdW1hc2sgKmFmZiwgYm9vbCBmb3JjZSkKPiAgfQo+ICAjZW5kaWYKPiAgCj4gLXN0YXRp YyBpbnQgX19pcnFfc3RhcnR1cChzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCj4gK2ludCBfX2lycV9z dGFydHVwKHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKPiAgewo+ICAJc3RydWN0IGlycV9kYXRhICpk ID0gaXJxX2Rlc2NfZ2V0X2lycV9kYXRhKGRlc2MpOwo+ICAJaW50IHJldCA9IDA7Cj4gZGlmZiAt LWdpdCBhL2tlcm5lbC9pcnEvaW50ZXJuYWxzLmggYi9rZXJuZWwvaXJxL2ludGVybmFscy5oCj4g aW5kZXggMzkyNGZiZTgyOWQ0Li4xMWM3YzU1YmRhNjMgMTAwNjQ0Cj4gLS0tIGEva2VybmVsL2ly cS9pbnRlcm5hbHMuaAo+ICsrKyBiL2tlcm5lbC9pcnEvaW50ZXJuYWxzLmgKPiBAQCAtODAsNiAr ODAsNyBAQCBleHRlcm4gdm9pZCBfX2VuYWJsZV9pcnEoc3RydWN0IGlycV9kZXNjICpkZXNjKTsK PiAgZXh0ZXJuIGludCBpcnFfYWN0aXZhdGUoc3RydWN0IGlycV9kZXNjICpkZXNjKTsKPiAgZXh0 ZXJuIGludCBpcnFfYWN0aXZhdGVfYW5kX3N0YXJ0dXAoc3RydWN0IGlycV9kZXNjICpkZXNjLCBi b29sIHJlc2VuZCk7Cj4gIGV4dGVybiBpbnQgaXJxX3N0YXJ0dXAoc3RydWN0IGlycV9kZXNjICpk ZXNjLCBib29sIHJlc2VuZCwgYm9vbCBmb3JjZSk7Cj4gK2V4dGVybiBpbnQgX19pcnFfc3RhcnR1 cChzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpOwo+ICAKPiAgZXh0ZXJuIHZvaWQgaXJxX3NodXRkb3du KHN0cnVjdCBpcnFfZGVzYyAqZGVzYyk7Cj4gIGV4dGVybiB2b2lkIGlycV9zaHV0ZG93bl9hbmRf ZGVhY3RpdmF0ZShzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpOwo+IGRpZmYgLS1naXQgYS9rZXJuZWwv aXJxL3BtLmMgYi9rZXJuZWwvaXJxL3BtLmMKPiBpbmRleCA4ZjU1N2ZhMWY0ZmUuLjU5N2YwNjAy NTEwYSAxMDA2NDQKPiAtLS0gYS9rZXJuZWwvaXJxL3BtLmMKPiArKysgYi9rZXJuZWwvaXJxL3Bt LmMKPiBAQCAtODUsMTYgKzg1LDIyIEBAIHN0YXRpYyBib29sIHN1c3BlbmRfZGV2aWNlX2lycShz dHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpCj4gIAl9Cj4gIAo+ICAJZGVzYy0+aXN0YXRlIHw9IElSUVNf U1VTUEVOREVEOwo+IC0JX19kaXNhYmxlX2lycShkZXNjKTsKPiAtCj4gLQkvKgo+IC0JICogSGFy ZHdhcmUgd2hpY2ggaGFzIG5vIHdha2V1cCBzb3VyY2UgY29uZmlndXJhdGlvbiBmYWNpbGl0eQo+ IC0JICogcmVxdWlyZXMgdGhhdCB0aGUgbm9uIHdha2V1cCBpbnRlcnJ1cHRzIGFyZSBtYXNrZWQg YXQgdGhlCj4gLQkgKiBjaGlwIGxldmVsLiBUaGUgY2hpcCBpbXBsZW1lbnRhdGlvbiBpbmRpY2F0 ZXMgdGhhdCB3aXRoCj4gLQkgKiBJUlFDSElQX01BU0tfT05fU1VTUEVORC4KPiAtCSAqLwo+IC0J aWYgKGlycV9kZXNjX2dldF9jaGlwKGRlc2MpLT5mbGFncyAmIElSUUNISVBfTUFTS19PTl9TVVNQ RU5EKQo+IC0JCW1hc2tfaXJxKGRlc2MpOwo+ICsKPiArCS8qIFNvbWUgaXJxIGNoaXBzIChlLmcu IFhFTiBQSVJRKSByZXF1aXJlIGEgZnVsbCBzaHV0ZG93biBvbiBzdXNwZW5kICovCj4gKwlpZiAo aXJxX2Rlc2NfZ2V0X2NoaXAoZGVzYyktPmZsYWdzICYgSVJRQ0hJUF9TSFVURE9XTl9PTl9TVVNQ RU5EKSB7Cj4gKwkJaXJxX3NodXRkb3duKGRlc2MpOwo+ICsJfSBlbHNlIHsKPiArCQlfX2Rpc2Fi bGVfaXJxKGRlc2MpOwo+ICsKPiArCQkvKgo+ICsJCSAqIEhhcmR3YXJlIHdoaWNoIGhhcyBubyB3 YWtldXAgc291cmNlIGNvbmZpZ3VyYXRpb24gZmFjaWxpdHkKPiArCQkgKiByZXF1aXJlcyB0aGF0 IHRoZSBub24gd2FrZXVwIGludGVycnVwdHMgYXJlIG1hc2tlZCBhdCB0aGUKPiArCQkgKiBjaGlw IGxldmVsLiBUaGUgY2hpcCBpbXBsZW1lbnRhdGlvbiBpbmRpY2F0ZXMgdGhhdCB3aXRoCj4gKwkJ ICogSVJRQ0hJUF9NQVNLX09OX1NVU1BFTkQuCj4gKwkJICovCj4gKwkJaWYgKGlycV9kZXNjX2dl dF9jaGlwKGRlc2MpLT5mbGFncyAmIElSUUNISVBfTUFTS19PTl9TVVNQRU5EKQo+ICsJCQltYXNr X2lycShkZXNjKTsKPiArCX0KPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IEBAIC0xNTIsNyAr MTU4LDEwIEBAIHN0YXRpYyB2b2lkIHJlc3VtZV9pcnEoc3RydWN0IGlycV9kZXNjICpkZXNjKQo+ ICAJaXJxX3N0YXRlX3NldF9tYXNrZWQoZGVzYyk7Cj4gIHJlc3VtZToKPiAgCWRlc2MtPmlzdGF0 ZSAmPSB+SVJRU19TVVNQRU5ERUQ7Cj4gLQlfX2VuYWJsZV9pcnEoZGVzYyk7Cj4gKwlpZiAoaXJx X2Rlc2NfZ2V0X2NoaXAoZGVzYyktPmZsYWdzICYgSVJRQ0hJUF9TSFVURE9XTl9PTl9TVVNQRU5E KQo+ICsJCV9faXJxX3N0YXJ0dXAoZGVzYyk7Cj4gKwllbHNlCj4gKwkJX19lbmFibGVfaXJxKGRl c2MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCByZXN1bWVfaXJxcyhib29sIHdhbnRfZWFybHkp CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2 ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xp c3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs