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 14A33C678DB for ; Fri, 24 Feb 2023 07:49:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229452AbjBXHti (ORCPT ); Fri, 24 Feb 2023 02:49:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41956 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229470AbjBXHtg (ORCPT ); Fri, 24 Feb 2023 02:49:36 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9817A4E5C3 for ; Thu, 23 Feb 2023 23:49:34 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id 6so12573220wrb.11 for ; Thu, 23 Feb 2023 23:49:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=QbxEvBcANfCyv04vVI+P20GroH/CL1OZ8pzexawzCPA=; b=tnQWyJSxP15q1apDQgYJZl7TiYEzVSdSDue1GfVVOaD0fB7R0X/Bpt/P+s54EvMarj Y1GC+LfEvoa4d+LHbYhq1lLahNstbjvLM3CPlLNdcTMWd+6fEpU5pCFUdd1VfeuNgKwk ibvjVqYpxqAiwq34+4XApexuqjYGbp4gt7qZw1iuaxGK1TvncfYmapRjGkD85NIMMmmP NbuQi4uWSQWuuy9ihIFez+nKuGnq8M3VjfTqgeRzTTrLM/7QimIK9UBuRM43t1GjyADK yey+QqJZp4HrIHUMyIt6xRNdgPgUO0A11h1Oks2iBavOIBt53d+FQQPLO4ynnVsaUe+U aQBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QbxEvBcANfCyv04vVI+P20GroH/CL1OZ8pzexawzCPA=; b=ZZrDZDEtxn4I0BawElgPIli9Y/79pMBAOfCuX2V2iU2GkFqXVA9RYy2+YJKEOlLoCR BiGG7bPnMHoUJuEQ6Sht76KKn2PuA1sdm75uidfjypjGLfrhLp7Ox+qjZJSRL/W5S4CJ y00ICAjaLruaMB1scSBlDXNv7AUV9yw3JHon6KunEzaUqo1DdIpeq5SLQahLt8bbMhtZ yhukjwUzhhx1JtdyK3SGw3RdQYfWc0BrZ1k6Y+TaqeTCZs2qpsUWZL7R8q9ZYM/WxSRh ArdRK/tyr49UtmibA8LFatHuFxhq4y/FWn0qfl5ordJ2d9cXD+QxXiBpsr/le4W+VBEu GlFw== X-Gm-Message-State: AO0yUKXBYTIDxqAFy1AQnXN9+Ek/NzfcaiOsTM/WE6GKrVyJE4CoV5Z4 jo5brreJ8WC5tHVCWSatPw6Jng== X-Google-Smtp-Source: AK7set/nHyhaRUq0Yd+9Qdd+3r2tbNOhcXsgs9HAHAccmP/VT5YKMYKugqE9ITyi4t9jCFYpx+UWhg== X-Received: by 2002:a05:6000:98c:b0:2c5:5ee9:6b27 with SMTP id by12-20020a056000098c00b002c55ee96b27mr11889818wrb.13.1677224973014; Thu, 23 Feb 2023 23:49:33 -0800 (PST) Received: from [192.168.1.195] ([5.133.47.210]) by smtp.googlemail.com with ESMTPSA id j21-20020a5d6e55000000b002c3f81c51b6sm13600444wrz.90.2023.02.23.23.49.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 23 Feb 2023 23:49:32 -0800 (PST) Message-ID: <78fc83d7-a31b-c6bd-4e08-f0696e0a275b@linaro.org> Date: Fri, 24 Feb 2023 07:49:31 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v10 07/26] mailbox: Add Gunyah message queue mailbox Content-Language: en-US To: Elliot Berman , Alex Elder , Prakruthi Deepak Heragu , Jonathan Corbet , Jassi Brar Cc: Murali Nalajala , Trilok Soni , Srivatsa Vaddagiri , Carl van Schaik , Dmitry Baryshkov , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Bagas Sanjaya , Catalin Marinas , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230214211229.3239350-1-quic_eberman@quicinc.com> <20230214212316.3309053-1-quic_eberman@quicinc.com> <576aed85-a566-3645-559e-06b2135cf57f@quicinc.com> <7e3170e4-c530-0b5b-903f-e5ea6d8268dc@linaro.org> From: Srinivas Kandagatla In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On 23/02/2023 23:15, Elliot Berman wrote: > > > On 2/23/2023 2:25 AM, Srinivas Kandagatla wrote: >> >> >> On 23/02/2023 00:15, Elliot Berman wrote: >>> >>> >>> On 2/20/2023 5:59 AM, Srinivas Kandagatla wrote: >>>> >>>> >>>> On 14/02/2023 21:23, Elliot Berman wrote: >>>>> Gunyah message queues are a unidirectional inter-VM pipe for >>>>> messages up >>>>> to 1024 bytes. This driver supports pairing a receiver message >>>>> queue and >>>>> a transmitter message queue to expose a single mailbox channel. >>>>> >>>>> Signed-off-by: Elliot Berman >>>>> --- >>>>>   Documentation/virt/gunyah/message-queue.rst |   8 + >>>>>   drivers/mailbox/Makefile                   |   2 + >>>>>   drivers/mailbox/gunyah-msgq.c               | 214 >>>>> ++++++++++++++++++++ >>>>>   include/linux/gunyah.h                      |  56 +++++ >>>>>   4 files changed, 280 insertions(+) >>>>>   create mode 100644 drivers/mailbox/gunyah-msgq.c >>>>> >>>>> diff --git a/Documentation/virt/gunyah/message-queue.rst >>>>> b/Documentation/virt/gunyah/message-queue.rst >>>>> index 0667b3eb1ff9..082085e981e0 100644 >>>>> --- a/Documentation/virt/gunyah/message-queue.rst >>>>> +++ b/Documentation/virt/gunyah/message-queue.rst >>>>> @@ -59,3 +59,11 @@ vIRQ: two TX message queues will have two vIRQs >>>>> (and two capability IDs). >>>>>         |               |         |                 | >>>>> |               | >>>>>         |               |         |                 | >>>>> |               | >>>>>         +---------------+         +-----------------+ >>>>> +---------------+ >>>>> + >>>>> +Gunyah message queues are exposed as mailboxes. To create the >>>>> mailbox, create >>>>> +a mbox_client and call `gh_msgq_init`. On receipt of the RX_READY >>>>> interrupt, >>>>> +all messages in the RX message queue are read and pushed via the >>>>> `rx_callback` >>>>> +of the registered mbox_client. >>>>> + >>>>> +.. kernel-doc:: drivers/mailbox/gunyah-msgq.c >>>>> +   :identifiers: gh_msgq_init >>>>> diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile >>>>> index fc9376117111..5f929bb55e9a 100644 >>>>> --- a/drivers/mailbox/Makefile >>>>> +++ b/drivers/mailbox/Makefile >>>>> @@ -55,6 +55,8 @@ obj-$(CONFIG_MTK_CMDQ_MBOX)    += mtk-cmdq-mailbox.o >>>>>   obj-$(CONFIG_ZYNQMP_IPI_MBOX)    += zynqmp-ipi-mailbox.o >>>>> +obj-$(CONFIG_GUNYAH)        += gunyah-msgq.o >>>> >>>> Why are we reusing CONFIG_GUNYAH Kconfig symbol for mailbox, why not >>>> CONFIG_GUNYAH_MBOX? >>>> >>> >>> There was some previous discussion about this: >>> >>> https://lore.kernel.org/all/2a7bb5f2-1286-b661-659a-a5037150eae8@quicinc.com/ >>> >>>>> + >>>>>   obj-$(CONFIG_SUN6I_MSGBOX)    += sun6i-msgbox.o >>>>>   obj-$(CONFIG_SPRD_MBOX)       += sprd-mailbox.o >>>>> diff --git a/drivers/mailbox/gunyah-msgq.c >>>>> b/drivers/mailbox/gunyah-msgq.c >>>>> new file mode 100644 >>>>> index 000000000000..03ffaa30ce9b >>>>> --- /dev/null >>>>> +++ b/drivers/mailbox/gunyah-msgq.c >>>>> @@ -0,0 +1,214 @@ >>>>> +// SPDX-License-Identifier: GPL-2.0-only >>>>> +/* >>>>> + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All >>>>> rights reserved. >>>>> + */ >>>>> + >>>>> +#include >>>>> +#include >>>>> +#include >>>>> +#include >>>>> +#include >>>>> +#include >>>>> +#include >>>>> +#include >>>> >>>> ... >>>> >>>>> +/* Fired when message queue transitions from "full" to "space >>>>> available" to send messages */ >>>>> +static irqreturn_t gh_msgq_tx_irq_handler(int irq, void *data) >>>>> +{ >>>>> +    struct gh_msgq *msgq = data; >>>>> + >>>>> +    mbox_chan_txdone(gh_msgq_chan(msgq), 0); >>>>> + >>>>> +    return IRQ_HANDLED; >>>>> +} >>>>> + >>>>> +/* Fired after sending message and hypercall told us there was >>>>> more space available. */ >>>>> +static void gh_msgq_txdone_tasklet(struct tasklet_struct *tasklet) >>>> >>>> Tasklets have been long deprecated, consider using workqueues in >>>> this particular case. >>>> >>> >>> Workqueues have higher latency and tasklets came as recommendation >>> from Jassi. drivers/mailbox/imx-mailbox.c uses tasklets in the same way. >>> >>> I did some quick unscientific measurements of ~1000x samples. The >>> median latency for resource manager went from 25.5 us (tasklet) to 26 >>> us (workqueue) (2% slower). The mean went from 28.7 us to 32.5 us >>> (13% slower). Obviously, the outliers for workqueues were much more >>> extreme. >> >> TBH, this is expected because we are only testing resource manager, >> Note   the advantage that you will see shifting from tasket to >> workqueues is on overall system latencies and some drivers performance >> that need to react to events. >> >> please take some time to read this nice article about this >> https://lwn.net/Articles/830964/ >> > > Hmm, this article is from 2020 and there was another effort in 2007. > Neither seems to have succeeded. I'd like to stick to same mechanisms as > other mailbox controllers. I don't want to block this series because of this. We will have more opportunity to improve this once some system wide profiling is done. AFAIU, In this system we will have atleast 2 tasklets between VM and RM and 2 per inter-vm, so if the number of tasklets increase in the system will be potentially spending more time in soft irq handling it. At somepoint in time its good to get some profiling done using bcc/softirqs to see how much time is spent on softirqs. --srini > > Jassi, do you have any preferences? > > Thanks, > Elliot > > 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 0BE20C61DA3 for ; Fri, 24 Feb 2023 07:50:54 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=CsOTK/i1JOJD1n3u1X3xQfRfLcxzByIp+NmQFWlYbSo=; b=whL6y4Oi2z5YRH OZ2zRlX5rVhdpNA6EOn/nQdm0iEuPJCBc+KkJMgftgmbGWjEjsAOLZiEEBZfSa7rLrM1FNd3PCYZt 2OX54Aty14XG9ZVWocTENeKoLHwx3EBcLQwKvAcrQvLFNHO6/AtTWO5+McggEzCDWoLhQ4Awwz4ou KvNLsYbXx3S/y5rKKgTL/i0lkjHiG68GGt0TYXImEnv5cViXQQS4Geahr/qIWMQHlb8aanXzdB+RS TdD1jOrtuMC1iiTPdTJ6aLvbRZ55rnCc1lkieofPDD1CCYep79dg4bL6bmD/qT3XzPNkSl3tyj3u7 IFhUe+pAONaC8llmrPPQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pVSpo-001Rb8-Lc; Fri, 24 Feb 2023 07:49:40 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pVSpl-001Ra8-0P for linux-arm-kernel@lists.infradead.org; Fri, 24 Feb 2023 07:49:38 +0000 Received: by mail-wr1-x42d.google.com with SMTP id bt28so6313895wrb.8 for ; Thu, 23 Feb 2023 23:49:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=QbxEvBcANfCyv04vVI+P20GroH/CL1OZ8pzexawzCPA=; b=tnQWyJSxP15q1apDQgYJZl7TiYEzVSdSDue1GfVVOaD0fB7R0X/Bpt/P+s54EvMarj Y1GC+LfEvoa4d+LHbYhq1lLahNstbjvLM3CPlLNdcTMWd+6fEpU5pCFUdd1VfeuNgKwk ibvjVqYpxqAiwq34+4XApexuqjYGbp4gt7qZw1iuaxGK1TvncfYmapRjGkD85NIMMmmP NbuQi4uWSQWuuy9ihIFez+nKuGnq8M3VjfTqgeRzTTrLM/7QimIK9UBuRM43t1GjyADK yey+QqJZp4HrIHUMyIt6xRNdgPgUO0A11h1Oks2iBavOIBt53d+FQQPLO4ynnVsaUe+U aQBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=QbxEvBcANfCyv04vVI+P20GroH/CL1OZ8pzexawzCPA=; b=zmjneT1ET+qVo13aZgBNz62iKUkXDEYIwrwGWp+5WrA8hM56QkSnoNj6sPhdUwWEHU P9TKQNBbrEkVNMLxd2+ycIWYC8I7jVciP50qiiL0s7M4bbok/k7oE2fTw36bpjhySMVl lDZFXZlulPkwp+23BYgooB2s1Cp8Z6Pb4/n0oyt0ALYn6jnQcZN3gExlyCeRHGsztqAU h2ZzkYoQWvOexnR+oRJ7U8zhZdZvfkhwyJeTMKlX0xKQ2XDjYiRAixPif0fbroJg9Tbe OGRercWBqxwjZtC1qgG7h3GWDcwyPBk33Ryk7B4XCm2tEPcSuFq4T9FHIGt9bUutH7vQ ipEw== X-Gm-Message-State: AO0yUKUiKCC5TCM5+ApxrsjPusoY6/NQz5SrYn2GuGZsuci4L9tUwvd1 M7U0tOi12lCvWrNuLp+5XL3YZQ== X-Google-Smtp-Source: AK7set/nHyhaRUq0Yd+9Qdd+3r2tbNOhcXsgs9HAHAccmP/VT5YKMYKugqE9ITyi4t9jCFYpx+UWhg== X-Received: by 2002:a05:6000:98c:b0:2c5:5ee9:6b27 with SMTP id by12-20020a056000098c00b002c55ee96b27mr11889818wrb.13.1677224973014; Thu, 23 Feb 2023 23:49:33 -0800 (PST) Received: from [192.168.1.195] ([5.133.47.210]) by smtp.googlemail.com with ESMTPSA id j21-20020a5d6e55000000b002c3f81c51b6sm13600444wrz.90.2023.02.23.23.49.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 23 Feb 2023 23:49:32 -0800 (PST) Message-ID: <78fc83d7-a31b-c6bd-4e08-f0696e0a275b@linaro.org> Date: Fri, 24 Feb 2023 07:49:31 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH v10 07/26] mailbox: Add Gunyah message queue mailbox Content-Language: en-US To: Elliot Berman , Alex Elder , Prakruthi Deepak Heragu , Jonathan Corbet , Jassi Brar Cc: Murali Nalajala , Trilok Soni , Srivatsa Vaddagiri , Carl van Schaik , Dmitry Baryshkov , Bjorn Andersson , Konrad Dybcio , Arnd Bergmann , Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Bagas Sanjaya , Catalin Marinas , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20230214211229.3239350-1-quic_eberman@quicinc.com> <20230214212316.3309053-1-quic_eberman@quicinc.com> <576aed85-a566-3645-559e-06b2135cf57f@quicinc.com> <7e3170e4-c530-0b5b-903f-e5ea6d8268dc@linaro.org> From: Srinivas Kandagatla In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230223_234937_089304_FCF48E0C X-CRM114-Status: GOOD ( 25.76 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CgpPbiAyMy8wMi8yMDIzIDIzOjE1LCBFbGxpb3QgQmVybWFuIHdyb3RlOgo+IAo+IAo+IE9uIDIv MjMvMjAyMyAyOjI1IEFNLCBTcmluaXZhcyBLYW5kYWdhdGxhIHdyb3RlOgo+Pgo+Pgo+PiBPbiAy My8wMi8yMDIzIDAwOjE1LCBFbGxpb3QgQmVybWFuIHdyb3RlOgo+Pj4KPj4+Cj4+PiBPbiAyLzIw LzIwMjMgNTo1OSBBTSwgU3Jpbml2YXMgS2FuZGFnYXRsYSB3cm90ZToKPj4+Pgo+Pj4+Cj4+Pj4g T24gMTQvMDIvMjAyMyAyMToyMywgRWxsaW90IEJlcm1hbiB3cm90ZToKPj4+Pj4gR3VueWFoIG1l c3NhZ2UgcXVldWVzIGFyZSBhIHVuaWRpcmVjdGlvbmFsIGludGVyLVZNIHBpcGUgZm9yIAo+Pj4+ PiBtZXNzYWdlcyB1cAo+Pj4+PiB0byAxMDI0IGJ5dGVzLiBUaGlzIGRyaXZlciBzdXBwb3J0cyBw YWlyaW5nIGEgcmVjZWl2ZXIgbWVzc2FnZSAKPj4+Pj4gcXVldWUgYW5kCj4+Pj4+IGEgdHJhbnNt aXR0ZXIgbWVzc2FnZSBxdWV1ZSB0byBleHBvc2UgYSBzaW5nbGUgbWFpbGJveCBjaGFubmVsLgo+ Pj4+Pgo+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBFbGxpb3QgQmVybWFuIDxxdWljX2ViZXJtYW5AcXVp Y2luYy5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiDCoCBEb2N1bWVudGF0aW9uL3ZpcnQvZ3VueWFoL21l c3NhZ2UtcXVldWUucnN0IHzCoMKgIDggKwo+Pj4+PiDCoCBkcml2ZXJzL21haWxib3gvTWFrZWZp bGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgIDIgKwo+Pj4+PiDC oCBkcml2ZXJzL21haWxib3gvZ3VueWFoLW1zZ3EuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgfCAyMTQgCj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrCj4+Pj4+IMKgIGluY2x1ZGUvbGlu dXgvZ3VueWFoLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDU2ICsrKysrCj4+Pj4+IMKgIDQgZmlsZXMgY2hhbmdlZCwgMjgwIGluc2VydGlvbnMoKykKPj4+ Pj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWFpbGJveC9ndW55YWgtbXNncS5jCj4+ Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnQvZ3VueWFoL21lc3NhZ2Ut cXVldWUucnN0IAo+Pj4+PiBiL0RvY3VtZW50YXRpb24vdmlydC9ndW55YWgvbWVzc2FnZS1xdWV1 ZS5yc3QKPj4+Pj4gaW5kZXggMDY2N2IzZWIxZmY5Li4wODIwODVlOTgxZTAgMTAwNjQ0Cj4+Pj4+ IC0tLSBhL0RvY3VtZW50YXRpb24vdmlydC9ndW55YWgvbWVzc2FnZS1xdWV1ZS5yc3QKPj4+Pj4g KysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0L2d1bnlhaC9tZXNzYWdlLXF1ZXVlLnJzdAo+Pj4+PiBA QCAtNTksMyArNTksMTEgQEAgdklSUTogdHdvIFRYIG1lc3NhZ2UgcXVldWVzIHdpbGwgaGF2ZSB0 d28gdklSUXMgCj4+Pj4+IChhbmQgdHdvIGNhcGFiaWxpdHkgSURzKS4KPj4+Pj4gwqDCoMKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgCj4+Pj4+IHzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHwKPj4+Pj4gwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgCj4+Pj4+IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+Pj4gwqDCoMKg wqDCoMKgwqAgKy0tLS0tLS0tLS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgICstLS0tLS0tLS0tLS0t LS0tLSsgCj4+Pj4+ICstLS0tLS0tLS0tLS0tLS0rCj4+Pj4+ICsKPj4+Pj4gK0d1bnlhaCBtZXNz YWdlIHF1ZXVlcyBhcmUgZXhwb3NlZCBhcyBtYWlsYm94ZXMuIFRvIGNyZWF0ZSB0aGUgCj4+Pj4+ IG1haWxib3gsIGNyZWF0ZQo+Pj4+PiArYSBtYm94X2NsaWVudCBhbmQgY2FsbCBgZ2hfbXNncV9p bml0YC4gT24gcmVjZWlwdCBvZiB0aGUgUlhfUkVBRFkgCj4+Pj4+IGludGVycnVwdCwKPj4+Pj4g K2FsbCBtZXNzYWdlcyBpbiB0aGUgUlggbWVzc2FnZSBxdWV1ZSBhcmUgcmVhZCBhbmQgcHVzaGVk IHZpYSB0aGUgCj4+Pj4+IGByeF9jYWxsYmFja2AKPj4+Pj4gK29mIHRoZSByZWdpc3RlcmVkIG1i b3hfY2xpZW50Lgo+Pj4+PiArCj4+Pj4+ICsuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9tYWlsYm94 L2d1bnlhaC1tc2dxLmMKPj4+Pj4gK8KgwqAgOmlkZW50aWZpZXJzOiBnaF9tc2dxX2luaXQKPj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFpbGJveC9NYWtlZmlsZSBiL2RyaXZlcnMvbWFpbGJv eC9NYWtlZmlsZQo+Pj4+PiBpbmRleCBmYzkzNzYxMTcxMTEuLjVmOTI5YmI1NWU5YSAxMDA2NDQK Pj4+Pj4gLS0tIGEvZHJpdmVycy9tYWlsYm94L01ha2VmaWxlCj4+Pj4+ICsrKyBiL2RyaXZlcnMv bWFpbGJveC9NYWtlZmlsZQo+Pj4+PiBAQCAtNTUsNiArNTUsOCBAQCBvYmotJChDT05GSUdfTVRL X0NNRFFfTUJPWCnCoMKgwqAgKz0gbXRrLWNtZHEtbWFpbGJveC5vCj4+Pj4+IMKgIG9iai0kKENP TkZJR19aWU5RTVBfSVBJX01CT1gpwqDCoMKgICs9IHp5bnFtcC1pcGktbWFpbGJveC5vCj4+Pj4+ ICtvYmotJChDT05GSUdfR1VOWUFIKcKgwqDCoMKgwqDCoMKgICs9IGd1bnlhaC1tc2dxLm8KPj4+ Pgo+Pj4+IFdoeSBhcmUgd2UgcmV1c2luZyBDT05GSUdfR1VOWUFIIEtjb25maWcgc3ltYm9sIGZv ciBtYWlsYm94LCB3aHkgbm90IAo+Pj4+IENPTkZJR19HVU5ZQUhfTUJPWD8KPj4+Pgo+Pj4KPj4+ IFRoZXJlIHdhcyBzb21lIHByZXZpb3VzIGRpc2N1c3Npb24gYWJvdXQgdGhpczoKPj4+Cj4+PiBo dHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwvMmE3YmI1ZjItMTI4Ni1iNjYxLTY1OWEtYTUwMzcx NTBlYWU4QHF1aWNpbmMuY29tLwo+Pj4KPj4+Pj4gKwo+Pj4+PiDCoCBvYmotJChDT05GSUdfU1VO NklfTVNHQk9YKcKgwqDCoCArPSBzdW42aS1tc2dib3gubwo+Pj4+PiDCoCBvYmotJChDT05GSUdf U1BSRF9NQk9YKcKgwqDCoMKgwqDCoMKgKz0gc3ByZC1tYWlsYm94Lm8KPj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWFpbGJveC9ndW55YWgtbXNncS5jIAo+Pj4+PiBiL2RyaXZlcnMvbWFpbGJv eC9ndW55YWgtbXNncS5jCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+Pj4+IGluZGV4IDAw MDAwMDAwMDAwMC4uMDNmZmFhMzBjZTliCj4+Pj4+IC0tLSAvZGV2L251bGwKPj4+Pj4gKysrIGIv ZHJpdmVycy9tYWlsYm94L2d1bnlhaC1tc2dxLmMKPj4+Pj4gQEAgLTAsMCArMSwyMTQgQEAKPj4+ Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4+Pj4gKy8qCj4+ Pj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjItMjAyMyBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRl ciwgSW5jLiBBbGwgCj4+Pj4+IHJpZ2h0cyByZXNlcnZlZC4KPj4+Pj4gKyAqLwo+Pj4+PiArCj4+ Pj4+ICsjaW5jbHVkZSA8bGludXgvbWFpbGJveF9jb250cm9sbGVyLmg+Cj4+Pj4+ICsjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+Cj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Cj4+ Pj4+ICsjaW5jbHVkZSA8bGludXgvZ3VueWFoLmg+Cj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvcHJp bnRrLmg+Cj4+Pj4+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+Pj4+PiArI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KPj4+Pj4gKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+Cj4+Pj4KPj4+PiAuLi4K Pj4+Pgo+Pj4+PiArLyogRmlyZWQgd2hlbiBtZXNzYWdlIHF1ZXVlIHRyYW5zaXRpb25zIGZyb20g ImZ1bGwiIHRvICJzcGFjZSAKPj4+Pj4gYXZhaWxhYmxlIiB0byBzZW5kIG1lc3NhZ2VzICovCj4+ Pj4+ICtzdGF0aWMgaXJxcmV0dXJuX3QgZ2hfbXNncV90eF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2 b2lkICpkYXRhKQo+Pj4+PiArewo+Pj4+PiArwqDCoMKgIHN0cnVjdCBnaF9tc2dxICptc2dxID0g ZGF0YTsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIG1ib3hfY2hhbl90eGRvbmUoZ2hfbXNncV9jaGFu KG1zZ3EpLCAwKTsKPj4+Pj4gKwo+Pj4+PiArwqDCoMKgIHJldHVybiBJUlFfSEFORExFRDsKPj4+ Pj4gK30KPj4+Pj4gKwo+Pj4+PiArLyogRmlyZWQgYWZ0ZXIgc2VuZGluZyBtZXNzYWdlIGFuZCBo eXBlcmNhbGwgdG9sZCB1cyB0aGVyZSB3YXMgCj4+Pj4+IG1vcmUgc3BhY2UgYXZhaWxhYmxlLiAq Lwo+Pj4+PiArc3RhdGljIHZvaWQgZ2hfbXNncV90eGRvbmVfdGFza2xldChzdHJ1Y3QgdGFza2xl dF9zdHJ1Y3QgKnRhc2tsZXQpCj4+Pj4KPj4+PiBUYXNrbGV0cyBoYXZlIGJlZW4gbG9uZyBkZXBy ZWNhdGVkLCBjb25zaWRlciB1c2luZyB3b3JrcXVldWVzIGluIAo+Pj4+IHRoaXMgcGFydGljdWxh ciBjYXNlLgo+Pj4+Cj4+Pgo+Pj4gV29ya3F1ZXVlcyBoYXZlIGhpZ2hlciBsYXRlbmN5IGFuZCB0 YXNrbGV0cyBjYW1lIGFzIHJlY29tbWVuZGF0aW9uIAo+Pj4gZnJvbSBKYXNzaS4gZHJpdmVycy9t YWlsYm94L2lteC1tYWlsYm94LmMgdXNlcyB0YXNrbGV0cyBpbiB0aGUgc2FtZSB3YXkuCj4+Pgo+ Pj4gSSBkaWQgc29tZSBxdWljayB1bnNjaWVudGlmaWMgbWVhc3VyZW1lbnRzIG9mIH4xMDAweCBz YW1wbGVzLiBUaGUgCj4+PiBtZWRpYW4gbGF0ZW5jeSBmb3IgcmVzb3VyY2UgbWFuYWdlciB3ZW50 IGZyb20gMjUuNSB1cyAodGFza2xldCkgdG8gMjYgCj4+PiB1cyAod29ya3F1ZXVlKSAoMiUgc2xv d2VyKS4gVGhlIG1lYW4gd2VudCBmcm9tIDI4LjcgdXMgdG8gMzIuNSB1cyAKPj4+ICgxMyUgc2xv d2VyKS4gT2J2aW91c2x5LCB0aGUgb3V0bGllcnMgZm9yIHdvcmtxdWV1ZXMgd2VyZSBtdWNoIG1v cmUgCj4+PiBleHRyZW1lLgo+Pgo+PiBUQkgsIHRoaXMgaXMgZXhwZWN0ZWQgYmVjYXVzZSB3ZSBh cmUgb25seSB0ZXN0aW5nIHJlc291cmNlIG1hbmFnZXIsIAo+PiBOb3RlIMKgwqB0aGUgYWR2YW50 YWdlIHRoYXQgeW91IHdpbGwgc2VlIHNoaWZ0aW5nIGZyb20gdGFza2V0IHRvIAo+PiB3b3JrcXVl dWVzIGlzIG9uIG92ZXJhbGwgc3lzdGVtIGxhdGVuY2llcyBhbmQgc29tZSBkcml2ZXJzIHBlcmZv cm1hbmNlIAo+PiB0aGF0IG5lZWQgdG8gcmVhY3QgdG8gZXZlbnRzLgo+Pgo+PiBwbGVhc2UgdGFr ZSBzb21lIHRpbWUgdG8gcmVhZCB0aGlzIG5pY2UgYXJ0aWNsZSBhYm91dCB0aGlzIAo+PiBodHRw czovL2x3bi5uZXQvQXJ0aWNsZXMvODMwOTY0Lwo+Pgo+IAo+IEhtbSwgdGhpcyBhcnRpY2xlIGlz IGZyb20gMjAyMCBhbmQgdGhlcmUgd2FzIGFub3RoZXIgZWZmb3J0IGluIDIwMDcuIAo+IE5laXRo ZXIgc2VlbXMgdG8gaGF2ZSBzdWNjZWVkZWQuIEknZCBsaWtlIHRvIHN0aWNrIHRvIHNhbWUgbWVj aGFuaXNtcyBhcyAKPiBvdGhlciBtYWlsYm94IGNvbnRyb2xsZXJzLgoKSSBkb24ndCB3YW50IHRv IGJsb2NrIHRoaXMgc2VyaWVzIGJlY2F1c2Ugb2YgdGhpcy4gV2Ugd2lsbCBoYXZlIG1vcmUgCm9w cG9ydHVuaXR5IHRvIGltcHJvdmUgdGhpcyBvbmNlIHNvbWUgc3lzdGVtIHdpZGUgcHJvZmlsaW5n IGlzIGRvbmUuCgpBRkFJVSwgSW4gdGhpcyBzeXN0ZW0gd2Ugd2lsbCBoYXZlIGF0bGVhc3QgMiB0 YXNrbGV0cyBiZXR3ZWVuIFZNIGFuZCBSTSAKYW5kIDIgcGVyIGludGVyLXZtLCBzbyBpZiB0aGUg bnVtYmVyIG9mIHRhc2tsZXRzIGluY3JlYXNlIGluIHRoZSBzeXN0ZW0gCndpbGwgYmUgcG90ZW50 aWFsbHkgc3BlbmRpbmcgbW9yZSB0aW1lIGluIHNvZnQgaXJxIGhhbmRsaW5nIGl0LgoKQXQgc29t ZXBvaW50IGluIHRpbWUgaXRzIGdvb2QgdG8gZ2V0IHNvbWUgcHJvZmlsaW5nIGRvbmUgdXNpbmcg CmJjYy9zb2Z0aXJxcyB0byBzZWUgaG93IG11Y2ggdGltZSBpcyBzcGVudCBvbiBzb2Z0aXJxcy4K CgotLXNyaW5pCgo+IAo+IEphc3NpLCBkbyB5b3UgaGF2ZSBhbnkgcHJlZmVyZW5jZXM/Cj4gCj4g VGhhbmtzLAo+IEVsbGlvdAo+IAo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=