From nobody Wed Dec 17 17:29:29 2025 Received: from mail-oa1-f43.google.com (mail-oa1-f43.google.com [209.85.160.43]) (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 7F335145A15 for ; Tue, 16 Jul 2024 21:32:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721165534; cv=none; b=aqY5yKufDbIZCnh6XluZLKTfIvIzcpeYbo4DyqKFYoK0qMssnX4+ODzArQg0B86HA6gRZki/YWecBK+3dw8lC48YcD8Fe/01YDY585JR8KLSNOJV0uvXWqq2ItqsNXWzkQ7jOUQ5Pa/vHAjWv4YbTg8sT91azVsTGGfPyx+NpDg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721165534; c=relaxed/simple; bh=fcZxmKu27BmV7Kb7DZAkJvgsiapT7+Y8ZzMeQwlfjeY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type; b=KsSHkO/eJneDSD4LV1luBFgXLBfzayBcliorBWRD79vKIYeBp2yVM4FF/0ZCSZAhbeCeo3wuSxbkPEUFCVyJp97xSNckEiAYMdI14Mv4IJbwLbLZe/A0pUJ8CU/7c3sy4FFJgxNsZKb9jpgyZRkCUXqzF03BYPZqx2AFvzg2wm0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=YiZX6DjY; arc=none smtp.client-ip=209.85.160.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="YiZX6DjY" Received: by mail-oa1-f43.google.com with SMTP id 586e51a60fabf-2608c51c97aso1548964fac.1 for ; Tue, 16 Jul 2024 14:32:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1721165531; x=1721770331; darn=vger.kernel.org; h=references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to; bh=3H/LPmK2VKEryVKD8evefj4FYYcA3iGHSKc9Q2ZF49s=; b=YiZX6DjYG6moUC0JlVSEpAce5TM8/+4dofS6Y8xvAG8JQnQURO7F5/KWVPoffSLrjR JUEJogWcvdbAaD38DoJCFyXlRNjv1UuUpR5Zwe3b5li2opsKH9+0n2cKbCpuSHog2Mk2 Sx4Yy3P1r1XjO/mMoIhGgoHCrNhLagDE+7vGQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721165531; x=1721770331; h=references:in-reply-to:message-id:date:subject:cc:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3H/LPmK2VKEryVKD8evefj4FYYcA3iGHSKc9Q2ZF49s=; b=fTQpxpwGrfhBP78jQ1m6xgOlQYId/9BbV82bNGm5w4K/oI8c4EPxUg7b+jc5bF23hZ 0QjBd/RyhrR6iO+Zs8MUrw/b7bOkdLMRTfcW2HxSWQ+/nwsh0y7OjiSNj1vnCJcGlsCy jnfOy4C8V711rBW2UepL/vUHSVkH2ePjuMMEON18TjtPIzCeCuzH1afwzLpH4Ms8hthM Ry+5BGkFb1G7kIko3L1sLHn/ntgMGyPCX+XO6lHUxCCWiZM80VuNogU62HrSKP/0RBBH GMX8/zaIm6b8/QSCvlnntcVzsdvQ/s+D2lz36ZtS5TJ47g4EjjWmQlQRBOVXpulunlye moUQ== X-Forwarded-Encrypted: i=1; AJvYcCXKJa7u8RjmmkGv24QGFs8v3dDn4cTi+zZjh1IAne6vvdqLosfRaUb9ptE/HjmVPH1XpRDiCi4lDnww4ZYR2t4cNdpeTjepjTiyKWgD X-Gm-Message-State: AOJu0YwMg6ZaIXO86iwscUX80ggjWNoO7K52dxUdP7LxarREGcqF4T1b 5wzoMNqBYqOpj45AI3oLKU2udveV3ayNR7JnyCwSnamsuvgd/EiYRhhankjI5w== X-Google-Smtp-Source: AGHT+IHbgSUfXFLYlspZT3aVC2XG8O5cysTO0jt82F+Tc8MQXTEy/SYGIK5yWtj9CK206RhZGyx3pw== X-Received: by 2002:a05:6870:5493:b0:25e:ba6b:58f with SMTP id 586e51a60fabf-260bdd806femr2915076fac.10.1721165531465; Tue, 16 Jul 2024 14:32:11 -0700 (PDT) Received: from stbsrv-and-01.and.broadcom.net ([192.19.144.250]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70b7eb9e20fsm6812828b3a.31.2024.07.16.14.32.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jul 2024 14:32:10 -0700 (PDT) From: Jim Quinlan To: linux-pci@vger.kernel.org, Nicolas Saenz Julienne , Bjorn Helgaas , Lorenzo Pieralisi , Cyril Brulebois , Stanimir Varbanov , Krzysztof Kozlowski , bcm-kernel-feedback-list@broadcom.com, jim2101024@gmail.com, james.quinlan@broadcom.com Cc: Florian Fainelli , Lorenzo Pieralisi , =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= , Rob Herring , linux-rpi-kernel@lists.infradead.org (moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE), linux-arm-kernel@lists.infradead.org (moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE), linux-kernel@vger.kernel.org (open list) Subject: [PATCH v4 09/12] PCI: brcmstb: Refactor for chips with many regular inbound BARs Date: Tue, 16 Jul 2024 17:31:24 -0400 Message-Id: <20240716213131.6036-10-james.quinlan@broadcom.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240716213131.6036-1-james.quinlan@broadcom.com> References: <20240716213131.6036-1-james.quinlan@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000215c94061d6414bb" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable --000000000000215c94061d6414bb MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UHJldmlvdXNseSwgb3VyIGNoaXBzIHByb3ZpZGVkIHRocmVlIGluYm91bmQgIkJBUlMiIHdpdGgg Zml4ZWQgcHVycG9zZXM6CnRoZSBmaXJzdCB3YXMgZm9yIG1hcHBpbmcgU29DIGludGVybmFsIHJl Z2lzdGVycywgdGhlIHNlY29uZCB3YXMgZm9yCm1lbW9yeSwgYW5kIHRoZSB0aGlyZCB3YXMgZm9y IG1lbW9yeSBidXQgd2l0aCB0aGUgZW5kaWFuIHN3YXBwZWQuICBXZQp0eXBpY2FsbHkgb25seSB1 c2VkIG9uZSBvZiB0aGVzZSBCQVJzLgoKQ29tcGxpY2F0aW5nIHRoYXQgQkFScyB1c2FnZSB3YXMg dGhlIGZhY3QgdGhhdCB0aGUgUENJZSBIVyB3b3VsZCBkbyBhCmJhcm9xdWUgaW50ZXJuYWwgbWFw cGluZyBvZiBzeXN0ZW0gbWVtb3J5LCBhbmQgY29uY2F0ZW5hdGUgdGhlIHJlZ2lvbnMgb2YKbXVs dGlwbGUgbWVtb3J5IGNvbnRyb2xsZXJzLgoKTmV3ZXIgY2hpcHMgc3VjaCBhcyB0aGUgNzcxMiBh bmQgQ2FibGUgTW9kZW0gU09DcyBoYXZlIHRha2VuIGEgc3RlcCBmb3J3YXJkCmFuZCBub3cgcHJv dmlkZSBtdWx0aXBsZSBpbmJvdW5kIEJBUnMuICBUaGlzIHdvcmtzIGluIGNvbmNlcnQgd2l0aCB0 aGUKZG1hLXJhbmdlcyBwcm9wZXJ0eSwgd2hlcmUgZWFjaCBwcm92aWRlZCByYW5nZSBiZWNvbWVz IGFuIGluYm91bmQgQkFSLgoKVGhpcyBjb21taXQgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlc2Ug bmV3IGNoaXBzIGFuZCB0aGVpciBtdWx0aXBsZQppbmJvdW5kIEJBUnMgYnV0IGFsc28ga2VlcHMg dGhlIGxlZ2FjeSBzdXBwb3J0IGZvciB0aGUgb2xkZXIgc3lzdGVtLgoKU2lnbmVkLW9mZi1ieTog SmltIFF1aW5sYW4gPGphbWVzLnF1aW5sYW5AYnJvYWRjb20uY29tPgpSZXZpZXdlZC1ieTogU3Rh bmltaXIgVmFyYmFub3YgPHN2YXJiYW5vdkBzdXNlLmRlPgotLS0KIGRyaXZlcnMvcGNpL2NvbnRy b2xsZXIvcGNpZS1icmNtc3RiLmMgfCAyMTYgKysrKysrKysrKysrKysrKysrKystLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWJyY21zdGIuYyBiL2RyaXZlcnMvcGNp L2NvbnRyb2xsZXI9Ci9wY2llLWJyY21zdGIuYwppbmRleCA4YWI1YThjYTA1YjQuLmM0NGE5MjIx Nzg1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWJyY21zdGIuYwor KysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYnJjbXN0Yi5jCkBAIC03NSwxNSArNzUs MTIgQEAKICNkZWZpbmUgUENJRV9NRU1fV0lOMF9ISSh3aW4pCVwKIAkJUENJRV9NSVNDX0NQVV8y X1BDSUVfTUVNX1dJTjBfSEkgKyAoKHdpbikgKiA4KQo9MjAKKyNkZWZpbmUgUENJRV9CUkNNX01B WF9SQ19CQVJTCQkJCTE2CiAjZGVmaW5lIFBDSUVfTUlTQ19SQ19CQVIxX0NPTkZJR19MTwkJCTB4 NDAyYwogI2RlZmluZSAgUENJRV9NSVNDX1JDX0JBUjFfQ09ORklHX0xPX1NJWkVfTUFTSwkJMHgx Zgo9MjAKLSNkZWZpbmUgUENJRV9NSVNDX1JDX0JBUjJfQ09ORklHX0xPCQkJMHg0MDM0Ci0jZGVm aW5lICBQQ0lFX01JU0NfUkNfQkFSMl9DT05GSUdfTE9fU0laRV9NQVNLCQkweDFmCi0jZGVmaW5l IFBDSUVfTUlTQ19SQ19CQVIyX0NPTkZJR19ISQkJCTB4NDAzOAorI2RlZmluZSBQQ0lFX01JU0Nf UkNfQkFSNF9DT05GSUdfTE8JCQkweDQwZDQKPTIwCi0jZGVmaW5lIFBDSUVfTUlTQ19SQ19CQVIz X0NPTkZJR19MTwkJCTB4NDAzYwotI2RlZmluZSAgUENJRV9NSVNDX1JDX0JBUjNfQ09ORklHX0xP X1NJWkVfTUFTSwkJMHgxZgo9MjAKICNkZWZpbmUgUENJRV9NSVNDX01TSV9CQVJfQ09ORklHX0xP CQkJMHg0MDQ0CiAjZGVmaW5lIFBDSUVfTUlTQ19NU0lfQkFSX0NPTkZJR19ISQkJCTB4NDA0OApA QCAtMTMwLDYgKzEyNywxMCBAQAogCSAgKFBDSUVfTUlTQ19IQVJEX1BDSUVfSEFSRF9ERUJVR19D TEtSRVFfREVCVUdfRU5BQkxFX01BU0sgfCBcCiAJICAgUENJRV9NSVNDX0hBUkRfUENJRV9IQVJE X0RFQlVHX0wxU1NfRU5BQkxFX01BU0spCj0yMAorI2RlZmluZSBQQ0lFX01JU0NfVUJVU19CQVIx X0NPTkZJR19SRU1BUAkJCTB4NDBhYworI2RlZmluZSAgUENJRV9NSVNDX1VCVVNfQkFSMV9DT05G SUdfUkVNQVBfQUNDRVNTX0VOX01BU0sJQklUKDApCisjZGVmaW5lIFBDSUVfTUlTQ19VQlVTX0JB UjRfQ09ORklHX1JFTUFQCQkJMHg0MTBjCisKICNkZWZpbmUgUENJRV9NU0lfSU5UUjJfQkFTRQkJ MHg0NTAwCj0yMAogLyogT2Zmc2V0cyBmcm9tIElOVFIyX0NQVSBhbmQgTVNJX0lOVFIyIEJBU0Ug b2Zmc2V0cyAqLwpAQCAtMjE3LDEyICsyMTgsMjAgQEAgZW51bSBwY2llX3R5cGUgewogCUJDTTQ5 MDgsCiAJQkNNNzI3OCwKIAlCQ00yNzExLAorCUJDTTc3MTIsCit9OworCitzdHJ1Y3QgcmNfYmFy IHsKKwl1NjQgc2l6ZTsKKwl1NjQgcGNpX29mZnNldDsKKwl1NjQgY3B1X2FkZHI7CiB9Owo9MjAK IHN0cnVjdCBwY2llX2NmZ19kYXRhIHsKIAljb25zdCBpbnQgKm9mZnNldHM7CiAJY29uc3QgZW51 bSBwY2llX3R5cGUgdHlwZTsKIAljb25zdCBib29sIGhhc19waHk7CisJdW5zaWduZWQgaW50IG51 bV9pbmJvdW5kOwogCXZvaWQgKCpwZXJzdF9zZXQpKHN0cnVjdCBicmNtX3BjaWUgKnBjaWUsIHUz MiB2YWwpOwogCXZvaWQgKCpicmlkZ2Vfc3dfaW5pdF9zZXQpKHN0cnVjdCBicmNtX3BjaWUgKnBj aWUsIHUzMiB2YWwpOwogfTsKQEAgLTI3NCw2ICsyODMsNyBAQCBzdHJ1Y3QgYnJjbV9wY2llIHsK IAlzdHJ1Y3Qgc3ViZGV2X3JlZ3VsYXRvcnMgKnNyOwogCWJvb2wJCQllcF93YWtldXBfY2FwYWJs ZTsKIAlib29sCQkJaGFzX3BoeTsKKwlpbnQJCQludW1faW5ib3VuZDsKIH07Cj0yMAogc3RhdGlj IGlubGluZSBib29sIGlzX2JtaXBzKGNvbnN0IHN0cnVjdCBicmNtX3BjaWUgKnBjaWUpCkBAIC03 ODksMjMgKzc5OSw2MSBAQCBzdGF0aWMgdm9pZCBicmNtX3BjaWVfcGVyc3Rfc2V0X2dlbmVyaWMo c3RydWN0IGJyY21fcD0KY2llICpwY2llLCB1MzIgdmFsKQogCXdyaXRlbCh0bXAsIHBjaWUtPmJh c2UgKyBQQ0lFX1JHUjFfU1dfSU5JVF8xKHBjaWUpKTsKIH0KPTIwCi1zdGF0aWMgaW50IGJyY21f cGNpZV9nZXRfcmNfYmFyMl9zaXplX2FuZF9vZmZzZXQoc3RydWN0IGJyY21fcGNpZSAqcGNpZSwK LQkJCQkJCQl1NjQgKnJjX2JhcjJfc2l6ZSwKLQkJCQkJCQl1NjQgKnJjX2JhcjJfb2Zmc2V0KQor c3RhdGljIGlubGluZSB2b2lkIHNldF9iYXIoc3RydWN0IHJjX2JhciAqYiwgaW50ICpjb3VudCwg dTY0IHNpemUsCisJCQkgICB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfb2Zmc2V0KQoreworCWItPnNp emUgPTNEIHNpemU7CisJYi0+Y3B1X2FkZHIgPTNEIGNwdV9hZGRyOworCWItPnBjaV9vZmZzZXQg PTNEIHBjaV9vZmZzZXQ7CisJKCpjb3VudCkrKzsKK30KKworc3RhdGljIGludCBicmNtX3BjaWVf Z2V0X2luYm91bmRfd2lucyhzdHJ1Y3QgYnJjbV9wY2llICpwY2llLAorCQkJCSAgICAgIHN0cnVj dCByY19iYXIgcmNfYmFyc1tdKQogewogCXN0cnVjdCBwY2lfaG9zdF9icmlkZ2UgKmJyaWRnZSA9 M0QgcGNpX2hvc3RfYnJpZGdlX2Zyb21fcHJpdihwY2llKTsKKwl1NjQgcGNpX29mZnNldCwgY3B1 X2FkZHIsIHNpemUgPTNEIDAsIHRvdF9zaXplID0zRCAwOwogCXN0cnVjdCByZXNvdXJjZV9lbnRy eSAqZW50cnk7CiAJc3RydWN0IGRldmljZSAqZGV2ID0zRCBwY2llLT5kZXY7CiAJdTY0IGxvd2Vz dF9wY2llX2FkZHIgPTNEIH4odTY0KTA7Ci0JaW50IHJldCwgaSA9M0QgMDsKLQl1NjQgc2l6ZSA9 M0QgMDsKKwlpbnQgcmV0LCBpID0zRCAwLCBuID0zRCAwOworCisJLyoKKwkgKiBUaGUgSFcgcmVn aXN0ZXJzIChhbmQgUENJZSkgdXNlIG9yZGVyLTEgbnVtYmVyaW5nIGZvciBCQVJzLiBBcworCSAq IHN1Y2gsIHdlIGhhdmUgcmNfYmFyc1swXSB1bnVzZWQgYW5kIEJBUjEgc3RhcnRzIGF0IHJjX2Jh cnNbMV0uCisJICovCisJc3RydWN0IHJjX2JhciAqYl9iZWdpbiA9M0QgJnJjX2JhcnNbMV07CisJ c3RydWN0IHJjX2JhciAqYiA9M0QgYl9iZWdpbjsKKworCS8qCisJICogU1RCIGNoaXBzIGJlc2lk ZSA3NzEyIGRpc2FibGUgdGhlIGZpcnN0IGluYm91bmQgd2luZG93IGRlZmF1bHQuCisJICogUmF0 aGVyIGJlaW5nIG1hcHBlZCB0byBzeXN0ZW0gbWVtb3J5IGl0IGlzIG1hcHBlZCB0byB0aGUKKwkg KiBpbnRlcm5hbCByZWdpc3RlcnMgb2YgdGhlIFNvQy4gIFRoaXMgZmVhdHVyZSBpcyBkZXByZWNh dGVkLCBoYXMKKwkgKiBzZWN1cml0eSBjb25zaWRlcmF0aW9ucywgYW5kIGlzIG5vdCBpbXBsZW1l bnRlZCBpbiBvdXIgbW9kZXJuCisJICogU29Dcy4KKwkgKi8KKwlpZiAocGNpZS0+dHlwZSAhPTNE IEJDTTc3MTIpCisJCXNldF9iYXIoYisrLCAmbiwgMCwgMCwgMCk7Cj0yMAogCXJlc291cmNlX2xp c3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZicmlkZ2UtPmRtYV9yYW5nZXMpIHsKIAkJdTY0IHBj aWVfYmVnID0zRCBlbnRyeS0+cmVzLT5zdGFydCAtIGVudHJ5LT5vZmZzZXQ7CisJCXU2NCBjcHVf YmVnID0zRCBlbnRyeS0+cmVzLT5zdGFydDsKPTIwCi0JCXNpemUgKz0zRCBlbnRyeS0+cmVzLT5l bmQgLSBlbnRyeS0+cmVzLT5zdGFydCArIDE7CisJCXNpemUgPTNEIHJlc291cmNlX3NpemUoZW50 cnktPnJlcyk7CisJCXRvdF9zaXplICs9M0Qgc2l6ZTsKIAkJaWYgKHBjaWVfYmVnIDwgbG93ZXN0 X3BjaWVfYWRkcikKIAkJCWxvd2VzdF9wY2llX2FkZHIgPTNEIHBjaWVfYmVnOworCQkvKgorCQkg KiA3NzEyIGFuZCBuZXdlciBjaGlwcyBtYXkgaGF2ZSBtYW55IEJBUnMsIHdpdGggZWFjaAorCQkg KiBvZmZlcmluZyBhIG5vbi1vdmVybGFwcGluZyB2aWV3cG9ydCB0byBzeXN0ZW0gbWVtb3J5Lgor CQkgKiBUaGF0IGJlaW5nIHNhaWQsIGVhY2ggQkFScyBzaXplIG11c3Qgc3RpbGwgYmUgYSBwb3dl ciBvZgorCQkgKiB0d28uCisJCSAqLworCQlpZiAocGNpZS0+dHlwZSA9M0Q9M0QgQkNNNzcxMikK KwkJCXNldF9iYXIoYisrLCAmbiwgc2l6ZSwgY3B1X2JlZywgcGNpZV9iZWcpOworCisJCWlmIChu ID4gcGNpZS0+bnVtX2luYm91bmQpCisJCQlicmVhazsKIAl9Cj0yMAogCWlmIChsb3dlc3RfcGNp ZV9hZGRyID0zRD0zRCB+KHU2NCkwKSB7CkBAIC04MTMsMTMgKzg2MSwyMCBAQCBzdGF0aWMgaW50 IGJyY21fcGNpZV9nZXRfcmNfYmFyMl9zaXplX2FuZF9vZmZzZXQoc3RydT0KY3QgYnJjbV9wY2ll ICpwY2llLAogCQlyZXR1cm4gLUVJTlZBTDsKIAl9Cj0yMAorCS8qCisJICogNzcxMiBhbmQgbmV3 ZXIgY2hpcHMgZG8gbm90IGhhdmUgYW4gaW50ZXJuYWwgbWVtb3J5IG1hcHBpbmcgc3lzdGVtCisJ ICogdGhhdCBlbmFibGVzIG11bHRpcGxlIG1lbW9yeSBjb250cm9sbGVycy4gIEFzIHN1Y2gsIGl0 IGNhbiByZXR1cm4KKwkgKiBub3cgdy9vIGRvaW5nIHNwZWNpYWwgY29uZmlndXJhdGlvbi4KKwkg Ki8KKwlpZiAocGNpZS0+dHlwZSA9M0Q9M0QgQkNNNzcxMikKKwkJcmV0dXJuIG47CisKIAlyZXQg PTNEIG9mX3Byb3BlcnR5X3JlYWRfdmFyaWFibGVfdTY0X2FycmF5KHBjaWUtPm5wLCAiYnJjbSxz Y2Itc2l6ZXMiLCBwPQpjaWUtPm1lbWNfc2l6ZSwgMSwKIAkJCQkJCSAgUENJRV9CUkNNX01BWF9N RU1DKTsKLQogCWlmIChyZXQgPD0zRCAwKSB7CiAJCS8qIE1ha2UgYW4gZWR1Y2F0ZWQgZ3Vlc3Mg Ki8KIAkJcGNpZS0+bnVtX21lbWMgPTNEIDE7Ci0JCXBjaWUtPm1lbWNfc2l6ZVswXSA9M0QgMVVM TCA8PCBmbHM2NChzaXplIC0gMSk7CisJCXBjaWUtPm1lbWNfc2l6ZVswXSA9M0QgMVVMTCA8PCBm bHM2NCh0b3Rfc2l6ZSAtIDEpOwogCX0gZWxzZSB7CiAJCXBjaWUtPm51bV9tZW1jID0zRCByZXQ7 CiAJfQpAQCAtODI4LDEwICs4ODMsMTUgQEAgc3RhdGljIGludCBicmNtX3BjaWVfZ2V0X3JjX2Jh cjJfc2l6ZV9hbmRfb2Zmc2V0KHN0cnU9CmN0IGJyY21fcGNpZSAqcGNpZSwKIAlmb3IgKGkgPTNE IDAsIHNpemUgPTNEIDA7IGkgPCBwY2llLT5udW1fbWVtYzsgaSsrKQogCQlzaXplICs9M0QgcGNp ZS0+bWVtY19zaXplW2ldOwo9MjAKLQkvKiBTeXN0ZW0gbWVtb3J5IHN0YXJ0cyBhdCB0aGlzIGFk ZHJlc3MgaW4gUENJZS1zcGFjZSAqLwotCSpyY19iYXIyX29mZnNldCA9M0QgbG93ZXN0X3BjaWVf YWRkcjsKLQkvKiBUaGUgc3VtIG9mIGFsbCBtZW1jIHZpZXdzIG11c3QgYWxzbyBiZSBhIHBvd2Vy IG9mIDIgKi8KLQkqcmNfYmFyMl9zaXplID0zRCAxVUxMIDw8IGZsczY0KHNpemUgLSAxKTsKKwkv KiBPdXIgSFcgbWFuZGF0ZXMgdGhhdCB0aGUgd2luZG93IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9m IDIgKi8KKwlzaXplID0zRCAxVUxMIDw8IGZsczY0KHNpemUgLSAxKTsKKworCS8qCisJICogRm9y IFNUQiBjaGlwcywgdGhlIEJBUjIgY3B1X2FkZHIgaXMgaGFyZHdpcmVkIHRvIHRoZSBzdGFydAor CSAqIG9mIHN5c3RlbSBtZW1vcnksIHNvIHdlIHNldCBpdCB0byAwLgorCSAqLworCWNwdV9hZGRy ID0zRCAwOworCXBjaV9vZmZzZXQgPTNEIGxvd2VzdF9wY2llX2FkZHI7Cj0yMAogCS8qCiAJICog V2UgdmFsaWRhdGUgdGhlIGluYm91bmQgbWVtb3J5IHZpZXcgZXZlbiB0aG91Z2ggd2Ugc2hvdWxk IHRydXN0CkBAIC04NjYsMjUgKzkyNiw4OSBAQCBzdGF0aWMgaW50IGJyY21fcGNpZV9nZXRfcmNf YmFyMl9zaXplX2FuZF9vZmZzZXQoc3RydT0KY3QgYnJjbV9wY2llICpwY2llLAogCSAqICAgb3V0 Ym91bmQgbWVtb3J5IEAgM0dCKS4gU28gaW5zdGVhZCBpdCB3aWxsICBzdGFydCBhdCB0aGUgMXgK IAkgKiAgIG11bHRpcGxlIG9mIGl0cyBzaXplCiAJICovCi0JaWYgKCEqcmNfYmFyMl9zaXplIHx8 ICgqcmNfYmFyMl9vZmZzZXQgJiAoKnJjX2JhcjJfc2l6ZSAtIDEpKSB8fAotCSAgICAoKnJjX2Jh cjJfb2Zmc2V0IDwgU1pfNEcgJiYgKnJjX2JhcjJfb2Zmc2V0ID4gU1pfMkcpKSB7CisJaWYgKCFz aXplIHx8IChwY2lfb2Zmc2V0ICYgKHNpemUgLSAxKSkgfHwKKwkgICAgKHBjaV9vZmZzZXQgPCBT Wl80RyAmJiBwY2lfb2Zmc2V0ID4gU1pfMkcpKSB7CiAJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBy Y19iYXIyX29mZnNldC9zaXplOiBzaXplIDB4JWxseCwgb2ZmIDB4JWxseFxuIiwKLQkJCSpyY19i YXIyX3NpemUsICpyY19iYXIyX29mZnNldCk7CisJCQlzaXplLCBwY2lfb2Zmc2V0KTsKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJfQo9MjAKLQlyZXR1cm4gMDsKKwkvKiBFbmFibGUgQkFSMiwgdGhlIGlu Ym91bmQgd2luZG93IGZvciBTVEIgY2hpcHMgKi8KKwlzZXRfYmFyKGIrKywgJm4sIHNpemUsIGNw dV9hZGRyLCBwY2lfb2Zmc2V0KTsKKworCS8qCisJICogRGlzYWJsZSBCQVIzLiAgT24gc29tZSBj aGlwcyBwcmVzZW50cyB0aGUgc2FtZSB3aW5kb3cgYXMgQkFSMgorCSAqIGJ1dCB0aGUgZGF0YSBh cHBlYXJzIGluIGEgc2V0dGFibGUgZW5kaWFubmVzcy4KKwkgKi8KKwlzZXRfYmFyKGIrKywgJm4s IDAsIDAsIDApOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyB1MzIgYnJjbV9iYXJfcmVnX29m ZnNldChpbnQgYmFyKQoreworCWlmIChiYXIgPD0zRCAzKQorCQlyZXR1cm4gUENJRV9NSVNDX1JD X0JBUjFfQ09ORklHX0xPICsgOCAqIChiYXIgLSAxKTsKKwllbHNlCisJCXJldHVybiBQQ0lFX01J U0NfUkNfQkFSNF9DT05GSUdfTE8gKyA4ICogKGJhciAtIDQpOworfQorCitzdGF0aWMgdTMyIGJy Y21fdWJ1c19yZWdfb2Zmc2V0KGludCBiYXIpCit7CisJaWYgKGJhciA8PTNEIDMpCisJCXJldHVy biBQQ0lFX01JU0NfVUJVU19CQVIxX0NPTkZJR19SRU1BUCArIDggKiAoYmFyIC0gMSk7CisJZWxz ZQorCQlyZXR1cm4gUENJRV9NSVNDX1VCVVNfQkFSNF9DT05GSUdfUkVNQVAgKyA4ICogKGJhciAt IDQpOworfQorCitzdGF0aWMgdm9pZCBzZXRfaW5ib3VuZF93aW5fcmVnaXN0ZXJzKHN0cnVjdCBi cmNtX3BjaWUgKnBjaWUsIGNvbnN0IHN0cnVjdD0KIHJjX2JhciAqcmNfYmFycywKKwkJCQkgICAg ICBpbnQgbnVtX3JjX2JhcnMpCit7CisJdm9pZCBfX2lvbWVtICpiYXNlID0zRCBwY2llLT5iYXNl OworCWludCBpOworCisJZm9yIChpID0zRCAxOyBpIDw9M0QgbnVtX3JjX2JhcnM7IGkrKykgewor CQl1NjQgcGNpX29mZnNldCA9M0QgcmNfYmFyc1tpXS5wY2lfb2Zmc2V0OworCQl1NjQgY3B1X2Fk ZHIgPTNEIHJjX2JhcnNbaV0uY3B1X2FkZHI7CisJCXU2NCBzaXplID0zRCByY19iYXJzW2ldLnNp emU7CisJCXUzMiByZWdfb2Zmc2V0ID0zRCBicmNtX2Jhcl9yZWdfb2Zmc2V0KGkpOworCQl1MzIg dG1wID0zRCBsb3dlcl8zMl9iaXRzKHBjaV9vZmZzZXQpOworCisJCXUzMnBfcmVwbGFjZV9iaXRz KCZ0bXAsIGJyY21fcGNpZV9lbmNvZGVfaWJhcl9zaXplKHNpemUpLAorCQkJCSAgUENJRV9NSVND X1JDX0JBUjFfQ09ORklHX0xPX1NJWkVfTUFTSyk7CisKKwkJLyogV3JpdGUgbG93ICovCisJCXdy aXRlbCh0bXAsIGJhc2UgKyByZWdfb2Zmc2V0KTsKKwkJLyogV3JpdGUgaGlnaCAqLworCQl3cml0 ZWwodXBwZXJfMzJfYml0cyhwY2lfb2Zmc2V0KSwgYmFzZSArIHJlZ19vZmZzZXQgKyA0KTsKKwor CQkvKgorCQkgKiBNb3N0IFNUQiBjaGlwczoKKwkJICogICAgIERvIG5vdGhpbmcuCisJCSAqIDc3 MTI6CisJCSAqICAgICBBbGwgb2YgdGhlaXIgQkFScyBuZWVkIHRvIGJlIHNldC4KKwkJICovCisJ CWlmIChwY2llLT50eXBlID0zRD0zRCBCQ003NzEyKSB7CisJCQkvKiBCVVMgcmVtYXAgcmVnaXN0 ZXIgc2V0dGluZ3MgKi8KKwkJCXJlZ19vZmZzZXQgPTNEIGJyY21fdWJ1c19yZWdfb2Zmc2V0KGkp OworCQkJdG1wID0zRCBsb3dlcl8zMl9iaXRzKGNwdV9hZGRyKSAmIH4weGZmZjsKKwkJCXRtcCB8 PTNEIFBDSUVfTUlTQ19VQlVTX0JBUjFfQ09ORklHX1JFTUFQX0FDQ0VTU19FTl9NQVNLOworCQkJ d3JpdGVsKHRtcCwgYmFzZSArIHJlZ19vZmZzZXQpOworCQkJdG1wID0zRCB1cHBlcl8zMl9iaXRz KGNwdV9hZGRyKTsKKwkJCXdyaXRlbCh0bXAsIGJhc2UgKyByZWdfb2Zmc2V0ICsgNCk7CisJCX0K Kwl9CiB9Cj0yMAogc3RhdGljIGludCBicmNtX3BjaWVfc2V0dXAoc3RydWN0IGJyY21fcGNpZSAq cGNpZSkKIHsKLQl1NjQgcmNfYmFyMl9vZmZzZXQsIHJjX2JhcjJfc2l6ZTsKKwlzdHJ1Y3QgcmNf YmFyIHJjX2JhcnNbUENJRV9CUkNNX01BWF9SQ19CQVJTXTsKIAl2b2lkIF9faW9tZW0gKmJhc2Ug PTNEIHBjaWUtPmJhc2U7CiAJc3RydWN0IHBjaV9ob3N0X2JyaWRnZSAqYnJpZGdlOwogCXN0cnVj dCByZXNvdXJjZV9lbnRyeSAqZW50cnk7CiAJdTMyIHRtcCwgYnVyc3QsIGFzcG1fc3VwcG9ydDsK LQlpbnQgbnVtX291dF93aW5zID0zRCAwOwotCWludCByZXQsIG1lbWM7CisJaW50IG51bV9vdXRf d2lucyA9M0QgMCwgbnVtX3JjX2JhcnMgPTNEIDA7CisJaW50IG1lbWM7Cj0yMAogCS8qIFJlc2V0 IHRoZSBicmlkZ2UgKi8KIAlwY2llLT5icmlkZ2Vfc3dfaW5pdF9zZXQocGNpZSwgMSk7CkBAIC05 MzMsMTcgKzEwNTcsMTYgQEAgc3RhdGljIGludCBicmNtX3BjaWVfc2V0dXAoc3RydWN0IGJyY21f cGNpZSAqcGNpZSkKIAl1MzJwX3JlcGxhY2VfYml0cygmdG1wLCAxLCBQQ0lFX01JU0NfTUlTQ19D VFJMX1BDSUVfUkNCXzY0Ql9NT0RFX01BU0spOwogCXdyaXRlbCh0bXAsIGJhc2UgKyBQQ0lFX01J U0NfTUlTQ19DVFJMKTsKPTIwCi0JcmV0ID0zRCBicmNtX3BjaWVfZ2V0X3JjX2JhcjJfc2l6ZV9h bmRfb2Zmc2V0KHBjaWUsICZyY19iYXIyX3NpemUsCi0JCQkJCQkgICAgJnJjX2JhcjJfb2Zmc2V0 KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW51bV9yY19iYXJzID0zRCBicmNtX3BjaWVf Z2V0X2luYm91bmRfd2lucyhwY2llLCByY19iYXJzKTsKKwlpZiAobnVtX3JjX2JhcnMgPCAwKQor CQlyZXR1cm4gbnVtX3JjX2JhcnM7Cj0yMAotCXRtcCA9M0QgbG93ZXJfMzJfYml0cyhyY19iYXIy X29mZnNldCk7Ci0JdTMycF9yZXBsYWNlX2JpdHMoJnRtcCwgYnJjbV9wY2llX2VuY29kZV9pYmFy X3NpemUocmNfYmFyMl9zaXplKSwKLQkJCSAgUENJRV9NSVNDX1JDX0JBUjJfQ09ORklHX0xPX1NJ WkVfTUFTSyk7Ci0Jd3JpdGVsKHRtcCwgYmFzZSArIFBDSUVfTUlTQ19SQ19CQVIyX0NPTkZJR19M Tyk7Ci0Jd3JpdGVsKHVwcGVyXzMyX2JpdHMocmNfYmFyMl9vZmZzZXQpLAotCSAgICAgICBiYXNl ICsgUENJRV9NSVNDX1JDX0JBUjJfQ09ORklHX0hJKTsKKwlzZXRfaW5ib3VuZF93aW5fcmVnaXN0 ZXJzKHBjaWUsIHJjX2JhcnMsIG51bV9yY19iYXJzKTsKKworCWlmICghYnJjbV9wY2llX3JjX21v ZGUocGNpZSkpIHsKKwkJZGV2X2VycihwY2llLT5kZXYsICJQQ0llIFJDIGNvbnRyb2xsZXIgbWlz Y29uZmlndXJlZCBhcyBFbmRwb2ludFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KPTIwCiAJ dG1wID0zRCByZWFkbChiYXNlICsgUENJRV9NSVNDX01JU0NfQ1RSTCk7CiAJZm9yIChtZW1jID0z RCAwOyBtZW1jIDwgcGNpZS0+bnVtX21lbWM7IG1lbWMrKykgewpAQCAtOTY1LDI1ICsxMDg4LDEy IEBAIHN0YXRpYyBpbnQgYnJjbV9wY2llX3NldHVwKHN0cnVjdCBicmNtX3BjaWUgKnBjaWUpCiAJ ICogNEdCIG9yIHdoZW4gdGhlIGluYm91bmQgYXJlYSBpcyBzbWFsbGVyIHRoYW4gNEdCICh0YWtp bmcgaW50bwogCSAqIGFjY291bnQgdGhlIHJvdW5kaW5nLXVwIHdlJ3JlIGZvcmNlZCB0byBwZXJm b3JtKS4KIAkgKi8KLQlpZiAocmNfYmFyMl9vZmZzZXQgPj0zRCBTWl80RyB8fCAocmNfYmFyMl9z aXplICsgcmNfYmFyMl9vZmZzZXQpIDwgU1pfNEcpCisJaWYgKHJjX2JhcnNbMl0ucGNpX29mZnNl dCA+PTNEIFNaXzRHIHx8CisJICAgIChyY19iYXJzWzJdLnNpemUgKyByY19iYXJzWzJdLnBjaV9v ZmZzZXQpIDwgU1pfNEcpCiAJCXBjaWUtPm1zaV90YXJnZXRfYWRkciA9M0QgQlJDTV9NU0lfVEFS R0VUX0FERFJfTFRfNEdCOwogCWVsc2UKIAkJcGNpZS0+bXNpX3RhcmdldF9hZGRyID0zRCBCUkNN X01TSV9UQVJHRVRfQUREUl9HVF80R0I7Cj0yMAotCWlmICghYnJjbV9wY2llX3JjX21vZGUocGNp ZSkpIHsKLQkJZGV2X2VycihwY2llLT5kZXYsICJQQ0llIFJDIGNvbnRyb2xsZXIgbWlzY29uZmln dXJlZCBhcyBFbmRwb2ludFxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCS8qIGRpc2Fi bGUgdGhlIFBDSWUtPkdJU0IgbWVtb3J5IHdpbmRvdyAoUkNfQkFSMSkgKi8KLQl0bXAgPTNEIHJl YWRsKGJhc2UgKyBQQ0lFX01JU0NfUkNfQkFSMV9DT05GSUdfTE8pOwotCXRtcCAmPTNEIH5QQ0lF X01JU0NfUkNfQkFSMV9DT05GSUdfTE9fU0laRV9NQVNLOwotCXdyaXRlbCh0bXAsIGJhc2UgKyBQ Q0lFX01JU0NfUkNfQkFSMV9DT05GSUdfTE8pOwotCi0JLyogZGlzYWJsZSB0aGUgUENJZS0+U0NC IG1lbW9yeSB3aW5kb3cgKFJDX0JBUjMpICovCi0JdG1wID0zRCByZWFkbChiYXNlICsgUENJRV9N SVNDX1JDX0JBUjNfQ09ORklHX0xPKTsKLQl0bXAgJj0zRCB+UENJRV9NSVNDX1JDX0JBUjNfQ09O RklHX0xPX1NJWkVfTUFTSzsKLQl3cml0ZWwodG1wLCBiYXNlICsgUENJRV9NSVNDX1JDX0JBUjNf Q09ORklHX0xPKTsKPTIwCiAJLyogRG9uJ3QgYWR2ZXJ0aXNlIEwwcyBjYXBhYmlsaXR5IGlmICdh c3BtLW5vLWwwcycgKi8KIAlhc3BtX3N1cHBvcnQgPTNEIFBDSUVfTElOS19TVEFURV9MMTsKQEAg LTE1MTYsNiArMTYyNiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpZV9jZmdfZGF0YSBnZW5l cmljX2NmZyA9M0QgewogCS50eXBlCQk9M0QgR0VORVJJQywKIAkucGVyc3Rfc2V0CT0zRCBicmNt X3BjaWVfcGVyc3Rfc2V0X2dlbmVyaWMsCiAJLmJyaWRnZV9zd19pbml0X3NldCA9M0QgYnJjbV9w Y2llX2JyaWRnZV9zd19pbml0X3NldF9nZW5lcmljLAorCS5udW1faW5ib3VuZAk9M0QgMywKIH07 Cj0yMAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2llX2NmZ19kYXRhIGJjbTc0MjVfY2ZnID0zRCB7 CkBAIC0xNTIzLDYgKzE2MzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaWVfY2ZnX2RhdGEg YmNtNzQyNV9jZmcgPTNEIHsKIAkudHlwZQkJPTNEIEJDTTc0MjUsCiAJLnBlcnN0X3NldAk9M0Qg YnJjbV9wY2llX3BlcnN0X3NldF9nZW5lcmljLAogCS5icmlkZ2Vfc3dfaW5pdF9zZXQgPTNEIGJy Y21fcGNpZV9icmlkZ2Vfc3dfaW5pdF9zZXRfZ2VuZXJpYywKKwkubnVtX2luYm91bmQJPTNEIDMs CiB9Owo9MjAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpZV9jZmdfZGF0YSBiY203NDM1X2NmZyA9 M0QgewpAQCAtMTUzMCw2ICsxNjQyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2llX2NmZ19k YXRhIGJjbTc0MzVfY2ZnID0zRCB7CiAJLnR5cGUJCT0zRCBCQ003NDM1LAogCS5wZXJzdF9zZXQJ PTNEIGJyY21fcGNpZV9wZXJzdF9zZXRfZ2VuZXJpYywKIAkuYnJpZGdlX3N3X2luaXRfc2V0ID0z RCBicmNtX3BjaWVfYnJpZGdlX3N3X2luaXRfc2V0X2dlbmVyaWMsCisJLm51bV9pbmJvdW5kCT0z RCAzLAogfTsKPTIwCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaWVfY2ZnX2RhdGEgYmNtNDkwOF9j ZmcgPTNEIHsKQEAgLTE1MzcsNiArMTY1MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpZV9j ZmdfZGF0YSBiY200OTA4X2NmZyA9M0QgewogCS50eXBlCQk9M0QgQkNNNDkwOCwKIAkucGVyc3Rf c2V0CT0zRCBicmNtX3BjaWVfcGVyc3Rfc2V0XzQ5MDgsCiAJLmJyaWRnZV9zd19pbml0X3NldCA9 M0QgYnJjbV9wY2llX2JyaWRnZV9zd19pbml0X3NldF9nZW5lcmljLAorCS5udW1faW5ib3VuZAk9 M0QgMywKIH07Cj0yMAogc3RhdGljIGNvbnN0IGludCBwY2llX29mZnNldF9iY203Mjc4W10gPTNE IHsKQEAgLTE1NTIsNiArMTY2Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpZV9jZmdfZGF0 YSBiY203Mjc4X2NmZyA9M0QgewogCS50eXBlCQk9M0QgQkNNNzI3OCwKIAkucGVyc3Rfc2V0CT0z RCBicmNtX3BjaWVfcGVyc3Rfc2V0XzcyNzgsCiAJLmJyaWRnZV9zd19pbml0X3NldCA9M0QgYnJj bV9wY2llX2JyaWRnZV9zd19pbml0X3NldF83Mjc4LAorCS5udW1faW5ib3VuZAk9M0QgMywKIH07 Cj0yMAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2llX2NmZ19kYXRhIGJjbTI3MTFfY2ZnID0zRCB7 CkBAIC0xNTU5LDYgKzE2NzQsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaWVfY2ZnX2RhdGEg YmNtMjcxMV9jZmcgPTNEIHsKIAkudHlwZQkJPTNEIEJDTTI3MTEsCiAJLnBlcnN0X3NldAk9M0Qg YnJjbV9wY2llX3BlcnN0X3NldF9nZW5lcmljLAogCS5icmlkZ2Vfc3dfaW5pdF9zZXQgPTNEIGJy Y21fcGNpZV9icmlkZ2Vfc3dfaW5pdF9zZXRfZ2VuZXJpYywKKwkubnVtX2luYm91bmQJPTNEIDMs CiB9Owo9MjAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpZV9jZmdfZGF0YSBiY203MjE2X2NmZyA9 M0QgewpAQCAtMTU2Nyw2ICsxNjgzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2llX2NmZ19k YXRhIGJjbTcyMTZfY2ZnID0zRCB7CiAJLnBlcnN0X3NldAk9M0QgYnJjbV9wY2llX3BlcnN0X3Nl dF83Mjc4LAogCS5icmlkZ2Vfc3dfaW5pdF9zZXQgPTNEIGJyY21fcGNpZV9icmlkZ2Vfc3dfaW5p dF9zZXRfNzI3OCwKIAkuaGFzX3BoeQk9M0QgdHJ1ZSwKKwkubnVtX2luYm91bmQJPTNEIDMsCiB9 Owo9MjAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGJyY21fcGNpZV9tYXRjaFtd ID0zRCB7CkBAIC0xNjIzLDYgKzE3NDAsNyBAQCBzdGF0aWMgaW50IGJyY21fcGNpZV9wcm9iZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZD0KZXYpCiAJcGNpZS0+cGVyc3Rfc2V0ID0zRCBkYXRh LT5wZXJzdF9zZXQ7CiAJcGNpZS0+YnJpZGdlX3N3X2luaXRfc2V0ID0zRCBkYXRhLT5icmlkZ2Vf c3dfaW5pdF9zZXQ7CiAJcGNpZS0+aGFzX3BoeSA9M0QgZGF0YS0+aGFzX3BoeTsKKwlwY2llLT5u dW1faW5ib3VuZCA9M0QgZGF0YS0+bnVtX2luYm91bmQ7Cj0yMAogCXBjaWUtPmJhc2UgPTNEIGRl dm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwKTsKIAlpZiAoSVNfRVJSKHBjaWUt PmJhc2UpKQotLT0yMAoyLjE3LjEK --000000000000215c94061d6414bb Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature 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 mOAplh6h3nMZUZxBguxG3g2p3iD4EgibUYneEzqOQafIQB/naf2uetKb8y9jKgWJxq2Y4y8Jqg2u uVIO1AyOJjWwqdgN+QhuIlat+qZd03P48Gim9ZPEMDUCAwEAAaOCAdswggHXMA4GA1UdDwEB/wQE AwIFoDCBowYIKwYBBQUHAQEEgZYwgZMwTgYIKwYBBQUHMAKGQmh0dHA6Ly9zZWN1cmUuZ2xvYmFs c2lnbi5jb20vY2FjZXJ0L2dzZ2NjcjNwZXJzb25hbHNpZ24yY2EyMDIwLmNydDBBBggrBgEFBQcw AYY1aHR0cDovL29jc3AuZ2xvYmFsc2lnbi5jb20vZ3NnY2NyM3BlcnNvbmFsc2lnbjJjYTIwMjAw TQYDVR0gBEYwRDBCBgorBgEEAaAyASgKMDQwMgYIKwYBBQUHAgEWJmh0dHBzOi8vd3d3Lmdsb2Jh bHNpZ24uY29tL3JlcG9zaXRvcnkvMAkGA1UdEwQCMAAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cDov L2NybC5nbG9iYWxzaWduLmNvbS9nc2djY3IzcGVyc29uYWxzaWduMmNhMjAyMC5jcmwwJQYDVR0R BB4wHIEaamFtZXMucXVpbmxhbkBicm9hZGNvbS5jb20wEwYDVR0lBAwwCgYIKwYBBQUHAwQwHwYD VR0jBBgwFoAUljPR5lgXWzR1ioFWZNW+SN6hj88wHQYDVR0OBBYEFGx/E27aeGBP2eJktrILxlhK z8f6MA0GCSqGSIb3DQEBCwUAA4IBAQBdQQukiELsPfse49X4QNy/UN43dPUw0I1asiQ8wye3nAuD b3GFmf3SZKlgxBTdWJoaNmmUFW2H3HWOoQBnTeedLtV9M2Tb9vOKMncQD1f9hvWZR6LnZpjBIlKe +R+v6CLF07qYmBI6olvOY/Rsv9QpW9W8qZYk+2RkWHz/fR5N5YldKlJHP0NDT4Wjc5fEzV+mZC8A AlT80qiuCVv+IQP08ovEVSLPhUp8i1pwsHT9atbWOfXQjbq1B/ditFIbPzwmwJPuGUc7n7vpmtxB 75sSFMj27j4JXl5W9vORgHR2YzuPBzfzDJU1ul0DIofSWVF6E1dx4tZohRED1Yl/T/ZGMYICbTCC AmkCAQEwazBbMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBudi1zYTExMC8GA1UE AxMoR2xvYmFsU2lnbiBHQ0MgUjMgUGVyc29uYWxTaWduIDIgQ0EgMjAyMAIMSO43VW7D5NP1X/KD MA0GCWCGSAFlAwQCAQUAoIHUMC8GCSqGSIb3DQEJBDEiBCA6J4lPQxMOJaM2g6PouGVTzddArmX6 KGQbNgSRMtIGtDAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDA3 MTYyMTMyMTFaMGkGCSqGSIb3DQEJDzFcMFowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglg hkgBZQMEAQIwCgYIKoZIhvcNAwcwCwYJKoZIhvcNAQEKMAsGCSqGSIb3DQEBBzALBglghkgBZQME AgEwDQYJKoZIhvcNAQEBBQAEggEAHh2hfiLN2+adTmx2GMJEBAkjK2gwuP6Td4z2AbZrxcTC92JR ao+gnbvD52ocqKAxGXgRjCOiVHJHC4hb3z8dpcqC6ebLLqemFNjuqrzzflF1oaxcvoojxlooT4kA phKDKjvCYFVU2rfBF3hk3DCCM59+epkZHwpSDFDmXSQZTu5O3k5p48CcMe5BAK7YMD77nFAktrrK ZQ1FtB5TCPfxUlhfLlgp2O0VEYmDrnxZHrxFTuyxRCMJ56+diMstpbkzE/S43HUIDFdRVWFxmWE7 JDK+CC2695LDlLcP0fUUK0C3yjnF/fhZWQlHHwmTv4xZzRhW8EXByBjfK/yvAN7i/Q== --000000000000215c94061d6414bb--