From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 7427B1A08BC for ; Thu, 10 Oct 2024 07:02:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728543770; cv=none; b=n92hGbXAfbD7zuDjpnbHUyN34JauKHVodkpq8Jg2WchdYrzXfGpY31gga8TRqIjQC/mBgmQqv4jjpiUg5o5j6Fdy20tK00ZLLDRELKUmM3WOnX2zSSF8dcHT5rlIhZD8/BAOuxqi2HFWkZfygn51oJRu/9fT6DudLew+YQMkS2I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1728543770; c=relaxed/simple; bh=5jwclqPu8O+bJfJLb8ugVc+m8lCQmIuz/y18oWorWWE=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=nO4bFH7HNo0ImYlhESx7fqxOud7pZ7chL2W9i2oDs4mMX9vfDNS64B2uD8KuWyZ7Nuo4vuuD0kWDgEoO4l2ANTsN3KxASOvGBmPaRIVxDhYOjdpw2kyblOZ21GvEZiHeyM7RZH4AKkUGV2bQSYZVblQNP9LsRoVis8IaWM6MwTo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=pfmByN0v; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="pfmByN0v" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-71df67c67fcso461823b3a.2 for ; Thu, 10 Oct 2024 00:02:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1728543768; x=1729148568; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=ofdLwK0e1Hu9/kT0oZI4oEAcowiTCCVHzyg8IA1AEgg=; b=pfmByN0v9f6T9ekEJ+Pfa2ZktdP33qNqp29eHCV4nGA7j1KY/8QDOkHtJoN+HhtjYW IXbyFddaJ6o/utQR7ciwiKHlIq0npIgodbsQVxPfLUa/ADEszG/mksTqwoMEfKxKDJMu MxwzpFuesp1BEkXRnWm/I7kBIR0dRxNDvSEoyIEA0sg/fJV+aL+lpzRipO1erDKkPBSP iLa7iww1DrfQBpY6+0GD0MOhhd2m5S8s89C3zXW0j0dzfvQxtcEn39iGKTFc+7ja381W 2PS/DcMJrLQ8cRWImIswhdvEvWwMRdSuq3rRWcu6iXCHmpHM6D1NyIWaPaDh7RfEhY2A HaMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728543768; x=1729148568; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ofdLwK0e1Hu9/kT0oZI4oEAcowiTCCVHzyg8IA1AEgg=; b=IYiLQVOaeTb+IQ5+0UbpOEc2BcF0TkUNjLtFOhoavVGxlSWVcHAdgfyejgfHHqSKfu 3BSXXN1ik8ud4MTUkr70yo1YDC+9dSfuO03WF6SUbBIxfTBMVyiumCrBaMEzvlXTg5I0 Bia9Ra2fRWrJEq0L4njll7Y23Ptzs2DHLbNSO2MLikXwnXfWaroDAkklrAgLjDzgSjWt YE14yjQBWSYPd3N5QTSoEHJXQWzb2UmG09E9MOgstu/MX+QTmOPxF1SEnlyMAzF+uFdh 2VYLiCkqFGBdjzo7yYA1HRHF62GBA1aVkVJGWlB7hhI9DByzceUxLn3qt/4iXm5s0TgB daqw== X-Forwarded-Encrypted: i=1; AJvYcCUfKFZnMSjaRF4OpHDkiZh58NjON+0IaDvfOM5JxVlEZ209CYBvqFd/CSjWH3xhtFZSg+caZOJtjuA=@vger.kernel.org X-Gm-Message-State: AOJu0YyBksLYpuR2qj94JA02Hq8HMzraPIeAKgR9ZemgycYnP91WSYwf VIbA4kluQvU8FGSxbfyiDxdGx3rUL67Cyqww06zlWcg1NPlSBlj/nt7dwQQsnA== X-Google-Smtp-Source: AGHT+IGrFANFlLTmXxVWE2c2rxdYcnB/6DqzwfWYMOWliLnPwjikVFZe+VCkCjaG/hnETvmtC6uc9g== X-Received: by 2002:a05:6a21:8ccc:b0:1cf:38cf:df92 with SMTP id adf61e73a8af0-1d8a3c1e1cemr9627803637.30.1728543767753; Thu, 10 Oct 2024 00:02:47 -0700 (PDT) Received: from thinkpad ([220.158.156.184]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e2a9ea2b2sm456025b3a.3.2024.10.10.00.02.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Oct 2024 00:02:47 -0700 (PDT) Date: Thu, 10 Oct 2024 12:32:42 +0530 From: Manivannan Sadhasivam To: Damien Le Moal Cc: Lorenzo Pieralisi , Kishon Vijay Abraham I , Shawn Lin , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Heiko Stuebner , linux-pci@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org, Rick Wertenbroek , Wilfred Mallawa , Niklas Cassel Subject: Re: [PATCH v3 01/12] PCI: rockchip-ep: Fix address translation unit programming Message-ID: <20241010070242.3i2f53kpdpr4fgl6@thinkpad> References: <20241007041218.157516-1-dlemoal@kernel.org> <20241007041218.157516-2-dlemoal@kernel.org> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20241007041218.157516-2-dlemoal@kernel.org> On Mon, Oct 07, 2024 at 01:12:07PM +0900, Damien Le Moal wrote: > The rockchip PCIe endpoint controller handles PCIe transfers addresses > by masking the lower bits of the programmed PCI address and using the > same number of lower bits masked from the CPU address space used for the > mapping. For a PCI mapping of bytes starting from , > the number of bits masked is the number of address bits changing in the > address range [pci_addr..pci_addr + size - 1]. > > However, rockchip_pcie_prog_ep_ob_atu() calculates num_pass_bits only > using the size of the mapping, resulting in an incorrect number of mask > bits depending on the value of the PCI address to map. > > Fix this by introducing the helper function > rockchip_pcie_ep_ob_atu_num_bits() to correctly calculate the number of > mask bits to use to program the address translation unit. The number of > mask bits iscalculated depending on both the PCI address and size of the > mapping, and clamped between 8 and 20 using the macros > ROCKCHIP_PCIE_AT_MIN_NUM_BITS and ROCKCHIP_PCIE_AT_MAX_NUM_BITS. > How did you end up with these clamping values? Are the values (at least MAX applicable to all SoCs)? Btw, it would be helpful if you referenced the TRM and the section that describes the outbound mapping. I'm able to find the reference: Rockchip RK3399 TRM V1.3 Part2, Section 17.5.5.1.1 - Mani > Fixes: cf590b078391 ("PCI: rockchip: Add EP driver for Rockchip PCIe controller") > Cc: stable@vger.kernel.org > Signed-off-by: Damien Le Moal > --- > drivers/pci/controller/pcie-rockchip-ep.c | 15 +++++++++++---- > drivers/pci/controller/pcie-rockchip.h | 4 ++++ > 2 files changed, 15 insertions(+), 4 deletions(-) > > diff --git a/drivers/pci/controller/pcie-rockchip-ep.c b/drivers/pci/controller/pcie-rockchip-ep.c > index 136274533656..27a7febb74e0 100644 > --- a/drivers/pci/controller/pcie-rockchip-ep.c > +++ b/drivers/pci/controller/pcie-rockchip-ep.c > @@ -63,16 +63,23 @@ static void rockchip_pcie_clear_ep_ob_atu(struct rockchip_pcie *rockchip, > ROCKCHIP_PCIE_AT_OB_REGION_DESC1(region)); > } > > +static int rockchip_pcie_ep_ob_atu_num_bits(struct rockchip_pcie *rockchip, > + u64 pci_addr, size_t size) > +{ > + int num_pass_bits = fls64(pci_addr ^ (pci_addr + size - 1)); > + > + return clamp(num_pass_bits, ROCKCHIP_PCIE_AT_MIN_NUM_BITS, > + ROCKCHIP_PCIE_AT_MAX_NUM_BITS); > +} > + > static void rockchip_pcie_prog_ep_ob_atu(struct rockchip_pcie *rockchip, u8 fn, > u32 r, u64 cpu_addr, u64 pci_addr, > size_t size) > { > - int num_pass_bits = fls64(size - 1); > + int num_pass_bits = > + rockchip_pcie_ep_ob_atu_num_bits(rockchip, pci_addr, size); > u32 addr0, addr1, desc0; > > - if (num_pass_bits < 8) > - num_pass_bits = 8; > - > addr0 = ((num_pass_bits - 1) & PCIE_CORE_OB_REGION_ADDR0_NUM_BITS) | > (lower_32_bits(pci_addr) & PCIE_CORE_OB_REGION_ADDR0_LO_ADDR); > addr1 = upper_32_bits(pci_addr); > diff --git a/drivers/pci/controller/pcie-rockchip.h b/drivers/pci/controller/pcie-rockchip.h > index 6111de35f84c..15ee949f2485 100644 > --- a/drivers/pci/controller/pcie-rockchip.h > +++ b/drivers/pci/controller/pcie-rockchip.h > @@ -245,6 +245,10 @@ > (PCIE_EP_PF_CONFIG_REGS_BASE + (((fn) << 12) & GENMASK(19, 12))) > #define ROCKCHIP_PCIE_EP_VIRT_FUNC_BASE(fn) \ > (PCIE_EP_PF_CONFIG_REGS_BASE + 0x10000 + (((fn) << 12) & GENMASK(19, 12))) > + > +#define ROCKCHIP_PCIE_AT_MIN_NUM_BITS 8 > +#define ROCKCHIP_PCIE_AT_MAX_NUM_BITS 20 > + > #define ROCKCHIP_PCIE_AT_IB_EP_FUNC_BAR_ADDR0(fn, bar) \ > (PCIE_CORE_AXI_CONF_BASE + 0x0828 + (fn) * 0x0040 + (bar) * 0x0008) > #define ROCKCHIP_PCIE_AT_IB_EP_FUNC_BAR_ADDR1(fn, bar) \ > -- > 2.46.2 > -- மணிவண்ணன் சதாசிவம் 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 538DCCF07CA for ; Thu, 10 Oct 2024 08:46:20 +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:In-Reply-To:MIME-Version:References: 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=NHYYAfZEi3AAyk4ioV/u2FYkLcT8njvhxLf83U6VWhA=; b=r0A82V+mY9+FDV VPDa7sJrCRR/FZgbIhUP7Fe/G6BwT2MzXeETsrtAbCUZyQoO+mofaM9jq6XWP3H2m3c8ktj4SsaHg H4kuxfnzSNlsyJ1dlxhCgkG+vNrOWUwt8tXXCIblWhyADhrfaaiSxqp+pGo78RJTgL1FH2VV5SAMM uvB0gKHtlNJ9eCrDZt/5/CDF5kne/NSm5iC7tVv1NEdfyDhO6zoUj5oqTAi9i4cnjNMnYSiqjSxYa nT4wMVy/VosaAQe9Cvn51DgtWs5B9qi49nYmlKiujXaaWPtLF28XgQJWJBmoOsojcqO3tw4zKgJQV 6TJhY4+FiXjbZnpNFoJA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1syooH-0000000C4Gy-0isZ; Thu, 10 Oct 2024 08:46:13 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1synCK-0000000Bm1v-2Rg7 for linux-rockchip@bombadil.infradead.org; Thu, 10 Oct 2024 07:02:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Transfer-Encoding: Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date: Sender:Reply-To:Content-ID:Content-Description; bh=ofdLwK0e1Hu9/kT0oZI4oEAcowiTCCVHzyg8IA1AEgg=; b=BX2JWR5DpoK331zC5pcL34uOOu F96EdqZxxP/DPr6C6bVHQjFJSsXOkszX7OqL6N0pQgM0CnmTDpbrM+G/xeUnb7HrAY6FeosFELUEE ZbbheoC2BtkuMp97bTgnaeolZMsQ+ovSMzkVMpwQQrwK+u0W/PJERb6/ulm7cxjK2meWN0BbElTtr SH2+Iw5ZV2Xcl3GTxac3d3qPDA1AJBNegSnf/9/P8Sg49jzEkJav+8cLSJUPXhZXw3RjfdbSqo5JK PFTIg3Spf28lM3eSo2ecyUnWr6wCMqbhkWJkJagbEZPHZVvTd86og8GBwuGaHRn1Owhy90lJzgNsc xJwIkNnw==; Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by desiato.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1synCF-00000005DAG-3Zqm for linux-rockchip@lists.infradead.org; Thu, 10 Oct 2024 07:02:55 +0000 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-7db908c9c83so382557a12.2 for ; Thu, 10 Oct 2024 00:02:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1728543768; x=1729148568; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=ofdLwK0e1Hu9/kT0oZI4oEAcowiTCCVHzyg8IA1AEgg=; b=qdQFrBCQ6TiovUmhtbmi/x1SCmlkWqF+BmwW0M3uFvoYSKY6xU/CA23lUAAvpRPaey yWyZBaoQls6/lQXHuvqJR2P/2E0pPid1D+0kIBXMhidl+bl7Sp9jiKaU5Iyl5jIdxXl8 RQMqu2QRDJvpkdknsbTZ/QxBAWYijkFHyal0H3eNxX86trFmYNuhCCTYeYWOqKAF9hXE v0Bpx8rPrM27UxdfUT1MTWX8JSknNgQxnkLw91/ngNA/1VP2RoPk6IGc77g8odbdrTZh FRTh2yjw/xNe6HqTcaSVTfe5SwVjafUllUrcKDuJo+RrfcptLYW0sWBatHJVY2qrfk1I j+dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728543768; x=1729148568; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ofdLwK0e1Hu9/kT0oZI4oEAcowiTCCVHzyg8IA1AEgg=; b=gNW9MPpWSZt8FzAYApGu47dNO7gie9qY+v6YA6QVHiowhJcf4KNHnCNbDbo0qHnJSI FfA1Me4u6Zu8LmI5QATWywuJFdsAV/LBfEp983ZGAOB9S4peeQax4L4sj0Ly6zbECf+2 O4BHAVkPz7lDysYnjirFXiVbvaP68YI6j74lMKUs3kItpEc4og0wDEkvoJg3esP0OYoq Meby0cmjERj1hT9IxSN6JAdz6oekrt0sCbbG7IvMni+8Hq0Yhf6yDEEtbJp4Xpbauv/s 6uax6iMusvyWgIwzFuFeAGokjotUktUfUGMlwNCLbzZiITAdI9nhUJYIl77HGWInwISd Bj8Q== X-Forwarded-Encrypted: i=1; AJvYcCVXa80pg/LC2BZmhltxlrYOxatXbRjA/2FQP7XhhyJAXrU63KOA+ONdW+xWa8bzHeF8LCpMWZ5IHil3p4lRhg==@lists.infradead.org X-Gm-Message-State: AOJu0YzcOKAmRVJllnRjjRTll19EDRRhJtzf5CqZd9gHvj5UkuNdZDS7 dJ2U0RMB77tCy+R6HAIcpSok9+D5yPO6cYQOpIkA8/pyoVOL1iiTlsgbXfkkyQ== X-Google-Smtp-Source: AGHT+IGrFANFlLTmXxVWE2c2rxdYcnB/6DqzwfWYMOWliLnPwjikVFZe+VCkCjaG/hnETvmtC6uc9g== X-Received: by 2002:a05:6a21:8ccc:b0:1cf:38cf:df92 with SMTP id adf61e73a8af0-1d8a3c1e1cemr9627803637.30.1728543767753; Thu, 10 Oct 2024 00:02:47 -0700 (PDT) Received: from thinkpad ([220.158.156.184]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71e2a9ea2b2sm456025b3a.3.2024.10.10.00.02.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Oct 2024 00:02:47 -0700 (PDT) Date: Thu, 10 Oct 2024 12:32:42 +0530 From: Manivannan Sadhasivam To: Damien Le Moal Cc: Lorenzo Pieralisi , Kishon Vijay Abraham I , Shawn Lin , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Heiko Stuebner , linux-pci@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org, Rick Wertenbroek , Wilfred Mallawa , Niklas Cassel Subject: Re: [PATCH v3 01/12] PCI: rockchip-ep: Fix address translation unit programming Message-ID: <20241010070242.3i2f53kpdpr4fgl6@thinkpad> References: <20241007041218.157516-1-dlemoal@kernel.org> <20241007041218.157516-2-dlemoal@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20241007041218.157516-2-dlemoal@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241010_080252_114708_26004D7C X-CRM114-Status: GOOD ( 26.30 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org T24gTW9uLCBPY3QgMDcsIDIwMjQgYXQgMDE6MTI6MDdQTSArMDkwMCwgRGFtaWVuIExlIE1vYWwg d3JvdGU6Cj4gVGhlIHJvY2tjaGlwIFBDSWUgZW5kcG9pbnQgY29udHJvbGxlciBoYW5kbGVzIFBD SWUgdHJhbnNmZXJzIGFkZHJlc3Nlcwo+IGJ5IG1hc2tpbmcgdGhlIGxvd2VyIGJpdHMgb2YgdGhl IHByb2dyYW1tZWQgUENJIGFkZHJlc3MgYW5kIHVzaW5nIHRoZQo+IHNhbWUgbnVtYmVyIG9mIGxv d2VyIGJpdHMgbWFza2VkIGZyb20gdGhlIENQVSBhZGRyZXNzIHNwYWNlIHVzZWQgZm9yIHRoZQo+ IG1hcHBpbmcuIEZvciBhIFBDSSBtYXBwaW5nIG9mIDxzaXplPiBieXRlcyBzdGFydGluZyBmcm9t IDxwY2lfYWRkcj4sCj4gdGhlIG51bWJlciBvZiBiaXRzIG1hc2tlZCBpcyB0aGUgbnVtYmVyIG9m IGFkZHJlc3MgYml0cyBjaGFuZ2luZyBpbiB0aGUKPiBhZGRyZXNzIHJhbmdlIFtwY2lfYWRkci4u cGNpX2FkZHIgKyBzaXplIC0gMV0uCj4gCj4gSG93ZXZlciwgcm9ja2NoaXBfcGNpZV9wcm9nX2Vw X29iX2F0dSgpIGNhbGN1bGF0ZXMgbnVtX3Bhc3NfYml0cyBvbmx5Cj4gdXNpbmcgdGhlIHNpemUg b2YgdGhlIG1hcHBpbmcsIHJlc3VsdGluZyBpbiBhbiBpbmNvcnJlY3QgbnVtYmVyIG9mIG1hc2sK PiBiaXRzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgdGhlIFBDSSBhZGRyZXNzIHRvIG1hcC4K PiAKPiBGaXggdGhpcyBieSBpbnRyb2R1Y2luZyB0aGUgaGVscGVyIGZ1bmN0aW9uCj4gcm9ja2No aXBfcGNpZV9lcF9vYl9hdHVfbnVtX2JpdHMoKSB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIHRoZSBu dW1iZXIgb2YKPiBtYXNrIGJpdHMgdG8gdXNlIHRvIHByb2dyYW0gdGhlIGFkZHJlc3MgdHJhbnNs YXRpb24gdW5pdC4gVGhlIG51bWJlciBvZgo+IG1hc2sgYml0cyBpc2NhbGN1bGF0ZWQgZGVwZW5k aW5nIG9uIGJvdGggdGhlIFBDSSBhZGRyZXNzIGFuZCBzaXplIG9mIHRoZQo+IG1hcHBpbmcsIGFu ZCBjbGFtcGVkIGJldHdlZW4gOCBhbmQgMjAgdXNpbmcgdGhlIG1hY3Jvcwo+IFJPQ0tDSElQX1BD SUVfQVRfTUlOX05VTV9CSVRTIGFuZCBST0NLQ0hJUF9QQ0lFX0FUX01BWF9OVU1fQklUUy4KPiAK CkhvdyBkaWQgeW91IGVuZCB1cCB3aXRoIHRoZXNlIGNsYW1waW5nIHZhbHVlcz8gQXJlIHRoZSB2 YWx1ZXMgKGF0IGxlYXN0IE1BWAphcHBsaWNhYmxlIHRvIGFsbCBTb0NzKT8KCkJ0dywgaXQgd291 bGQgYmUgaGVscGZ1bCBpZiB5b3UgcmVmZXJlbmNlZCB0aGUgVFJNIGFuZCB0aGUgc2VjdGlvbiB0 aGF0CmRlc2NyaWJlcyB0aGUgb3V0Ym91bmQgbWFwcGluZy4gSSdtIGFibGUgdG8gZmluZCB0aGUg cmVmZXJlbmNlOgoKUm9ja2NoaXAgUkszMzk5IFRSTSBWMS4zIFBhcnQyLCBTZWN0aW9uIDE3LjUu NS4xLjEKCi0gTWFuaQoKPiBGaXhlczogY2Y1OTBiMDc4MzkxICgiUENJOiByb2NrY2hpcDogQWRk IEVQIGRyaXZlciBmb3IgUm9ja2NoaXAgUENJZSBjb250cm9sbGVyIikKPiBDYzogc3RhYmxlQHZn ZXIua2VybmVsLm9yZwo+IFNpZ25lZC1vZmYtYnk6IERhbWllbiBMZSBNb2FsIDxkbGVtb2FsQGtl cm5lbC5vcmc+Cj4gLS0tCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1l cC5jIHwgMTUgKysrKysrKysrKystLS0tCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1y b2NrY2hpcC5oICAgIHwgIDQgKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvcGNpZS1yb2NrY2hpcC1lcC5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tj aGlwLWVwLmMKPiBpbmRleCAxMzYyNzQ1MzM2NTYuLjI3YTdmZWJiNzRlMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYwo+ICsrKyBiL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jCj4gQEAgLTYzLDE2ICs2MywyMyBA QCBzdGF0aWMgdm9pZCByb2NrY2hpcF9wY2llX2NsZWFyX2VwX29iX2F0dShzdHJ1Y3Qgcm9ja2No aXBfcGNpZSAqcm9ja2NoaXAsCj4gIAkJCSAgICBST0NLQ0hJUF9QQ0lFX0FUX09CX1JFR0lPTl9E RVNDMShyZWdpb24pKTsKPiAgfQo+ICAKPiArc3RhdGljIGludCByb2NrY2hpcF9wY2llX2VwX29i X2F0dV9udW1fYml0cyhzdHJ1Y3Qgcm9ja2NoaXBfcGNpZSAqcm9ja2NoaXAsCj4gKwkJCQkJICAg IHU2NCBwY2lfYWRkciwgc2l6ZV90IHNpemUpCj4gK3sKPiArCWludCBudW1fcGFzc19iaXRzID0g ZmxzNjQocGNpX2FkZHIgXiAocGNpX2FkZHIgKyBzaXplIC0gMSkpOwo+ICsKPiArCXJldHVybiBj bGFtcChudW1fcGFzc19iaXRzLCBST0NLQ0hJUF9QQ0lFX0FUX01JTl9OVU1fQklUUywKPiArCQkg ICAgIFJPQ0tDSElQX1BDSUVfQVRfTUFYX05VTV9CSVRTKTsKPiArfQo+ICsKPiAgc3RhdGljIHZv aWQgcm9ja2NoaXBfcGNpZV9wcm9nX2VwX29iX2F0dShzdHJ1Y3Qgcm9ja2NoaXBfcGNpZSAqcm9j a2NoaXAsIHU4IGZuLAo+ICAJCQkJCSB1MzIgciwgdTY0IGNwdV9hZGRyLCB1NjQgcGNpX2FkZHIs Cj4gIAkJCQkJIHNpemVfdCBzaXplKQo+ICB7Cj4gLQlpbnQgbnVtX3Bhc3NfYml0cyA9IGZsczY0 KHNpemUgLSAxKTsKPiArCWludCBudW1fcGFzc19iaXRzID0KPiArCQlyb2NrY2hpcF9wY2llX2Vw X29iX2F0dV9udW1fYml0cyhyb2NrY2hpcCwgcGNpX2FkZHIsIHNpemUpOwo+ICAJdTMyIGFkZHIw LCBhZGRyMSwgZGVzYzA7Cj4gIAo+IC0JaWYgKG51bV9wYXNzX2JpdHMgPCA4KQo+IC0JCW51bV9w YXNzX2JpdHMgPSA4Owo+IC0KPiAgCWFkZHIwID0gKChudW1fcGFzc19iaXRzIC0gMSkgJiBQQ0lF X0NPUkVfT0JfUkVHSU9OX0FERFIwX05VTV9CSVRTKSB8Cj4gIAkJKGxvd2VyXzMyX2JpdHMocGNp X2FkZHIpICYgUENJRV9DT1JFX09CX1JFR0lPTl9BRERSMF9MT19BRERSKTsKPiAgCWFkZHIxID0g dXBwZXJfMzJfYml0cyhwY2lfYWRkcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvcGNpZS1yb2NrY2hpcC5oIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tj aGlwLmgKPiBpbmRleCA2MTExZGUzNWY4NGMuLjE1ZWU5NDlmMjQ4NSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaAo+ICsrKyBiL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC5oCj4gQEAgLTI0NSw2ICsyNDUsMTAgQEAKPiAgCShQ Q0lFX0VQX1BGX0NPTkZJR19SRUdTX0JBU0UgKyAoKChmbikgPDwgMTIpICYgR0VOTUFTSygxOSwg MTIpKSkKPiAgI2RlZmluZSBST0NLQ0hJUF9QQ0lFX0VQX1ZJUlRfRlVOQ19CQVNFKGZuKSBcCj4g IAkoUENJRV9FUF9QRl9DT05GSUdfUkVHU19CQVNFICsgMHgxMDAwMCArICgoKGZuKSA8PCAxMikg JiBHRU5NQVNLKDE5LCAxMikpKQo+ICsKPiArI2RlZmluZSBST0NLQ0hJUF9QQ0lFX0FUX01JTl9O VU1fQklUUyAgOAo+ICsjZGVmaW5lIFJPQ0tDSElQX1BDSUVfQVRfTUFYX05VTV9CSVRTICAyMAo+ ICsKPiAgI2RlZmluZSBST0NLQ0hJUF9QQ0lFX0FUX0lCX0VQX0ZVTkNfQkFSX0FERFIwKGZuLCBi YXIpIFwKPiAgCShQQ0lFX0NPUkVfQVhJX0NPTkZfQkFTRSArIDB4MDgyOCArIChmbikgKiAweDAw NDAgKyAoYmFyKSAqIDB4MDAwOCkKPiAgI2RlZmluZSBST0NLQ0hJUF9QQ0lFX0FUX0lCX0VQX0ZV TkNfQkFSX0FERFIxKGZuLCBiYXIpIFwKPiAtLSAKPiAyLjQ2LjIKPiAKCi0tIArgrq7grqPgrr/g rrXgrqPgr43grqPgrqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5n IGxpc3QKTGludXgtcm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg==