From nobody Mon Feb 9 00:27:29 2026 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) (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 8D1E7824AE for ; Fri, 28 Jun 2024 20:54:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719608101; cv=none; b=JxcnO5McJBHf5S0Q4a8v+caTUMbuLHeLAw3N5KPMRcREA+clvi7EFb9Z1UIDG618rACgvBtKm0tXhuJVI6ahRrI8qGD7GZrKwFaOQAj/Wwv1fJ4NHDBA2Yr5TAxaLj+WwwZ9NkMqtLioF+gRJMaFwqQv04r9kCKFxen6y3nzcrY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1719608101; c=relaxed/simple; bh=NnpKzpQKB8lItvf0lnaiZLc6iYPVtQXSbUaLqNyyqLE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: Content-Type; b=dIdYc5khWLUevFZW8d88CRNBRGp1/BOsVr9cGKH6nzaBIcJR2peT7+B2zSEO16Ms9OCvTtWiLgo7bWJAiPlS0qRsdf08cc5TN8rqLfSzJgSWuLlSn21BSM6HQjrAHX3ns0Ak5XN1mWzOfOXIxxgJ3rz84ocM0o8n45B8AbQnG+I= 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=IZb4Pyd+; arc=none smtp.client-ip=209.85.215.172 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="IZb4Pyd+" Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-6bce380eb96so738706a12.0 for ; Fri, 28 Jun 2024 13:54:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1719608099; x=1720212899; 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=N1nHEKA9DGJGjqflFPfuP2QkYCqlzlHhTu/iLhQ8L9U=; b=IZb4Pyd+d+0AxTjjTpGIGIZ8gBw921v898rsKYxaigxk6NRsZzO9WER1Ad5PfagGG2 OyBjmBcKjstUgLpZXJfXWwNkKafGjWMccuk3i0jr+w8gOhzs3xHMVt9vXgii//GVeTC3 gsWHQnpGM1Ouu2JuF94E1OS196Rq+l6VANmpE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719608099; x=1720212899; 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=N1nHEKA9DGJGjqflFPfuP2QkYCqlzlHhTu/iLhQ8L9U=; b=lb8uYj/PrAqybvt+gyHw5Jlg5QzhFOOTWHjFXFIbKO0NmDP3viScvKl/txqX2w8rGK ojOTGjMyosBZYNSPqdldsb0zltZKvvBgoBaNwQU6f6L5NQdOFGV7JxRUXB5dJGlurSgT /wLusa96G2fGimQ03RRmkmJ3D7IG0ZEhdZne4QN2wat0bk6aCMlR17/1nn8X5gWCEtUo u++wtSJdnMUGgbWgw75LsSONAEG+4eux74/942uVl47DL1l94RO4l25ULLexPLEU8Pnn Yexmgf4RHcP57+Te7ybNgdPXxBHDvFKKxRbhpP08VPiuJr5JxU4u6g5OGNJ3Cr+6NQ1t Pfkg== X-Forwarded-Encrypted: i=1; AJvYcCUV/ER9VBgofvTOiO/0dA8ZRnRp/YCghCloQ0zUuVgtolYh78WJH3EvxTmd5ysN9UIpq1fB5WUicjLz1FJkuTB/NCBbLCWFqrlvDAUK X-Gm-Message-State: AOJu0YyXnRIjHp4eQe7nm5nRvgvgZMyyk0WuTS2hAn3uTRiQxa8clB/k RUYFLWNl+QhG+1MqFolrigpOI0Yz5xFm9Xu1KNnKQ5qVIwXlEWbHhbRhNaG3Xg== X-Google-Smtp-Source: AGHT+IE5G8pDHGxPgc4xEfwuRigSmXXdvVvVO19gxkRojRpIcplJS7bV38dCvgv/yuQInjLOuYlq6w== X-Received: by 2002:a05:6a20:2446:b0:1be:e1e1:d5e4 with SMTP id adf61e73a8af0-1bee1e1d6a5mr4080263637.12.1719608098740; Fri, 28 Jun 2024 13:54:58 -0700 (PDT) Received: from stbsrv-and-01.and.broadcom.net ([192.19.144.250]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1fac15393d1sm19695135ad.157.2024.06.28.13.54.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Jun 2024 13:54:58 -0700 (PDT) From: Jim Quinlan To: linux-pci@vger.kernel.org, Nicolas Saenz Julienne , Bjorn Helgaas , Lorenzo Pieralisi , Cyril Brulebois , Stanimir Varbanov , 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 v1 7/8] PCI: brcmstb: Refactor for chips with many regular inbound BARs Date: Fri, 28 Jun 2024 16:54:26 -0400 Message-Id: <20240628205430.24775-8-james.quinlan@broadcom.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20240628205430.24775-1-james.quinlan@broadcom.com> References: <20240628205430.24775-1-james.quinlan@broadcom.com> Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="000000000000e825ba061bf9758e" Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Content-Transfer-Encoding: quoted-printable --000000000000e825ba061bf9758e MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 UHJldmlvdXNseSwgb3VyIGNoaXBzIHByb3ZpZGVkIHRocmVlIGluYm91bmQgIkJBUlMiIHdpdGgg Zml4ZWQgcHVycG9zZXM6CnRoZSBmaXJzdCB3YXMgZm9yIG1hcHBpbmcgU09DIHJlZ2lzdGVycywg dGhlIHNlY29uZCB3YXMgZm9yIG1lbW9yeSwgYW5kIHRoZQp0aGlyZCB3YXMgZm9yIG1lbW9yeSBi dXQgd2l0aCB0aGUgZW5kaWFuIHN3YXBwZWQuICBXZSB0eXBpY2FsbHkgb25seSB1c2VkCm9uZSBv ZiB0aGVzZSBCQVJzLgoKQ29tcGxpY2F0aW5nIHRoYXQgQkFScyB1c2FnZSB3YXMgdGhlIGZhY3Qg dGhhdCB0aGUgUENJZSBIVyB3b3VsZCBkbyBhCmJhcm9xdWUgaW50ZXJuYWwgbWFwcGluZyBvZiBz eXN0ZW0gbWVtb3J5LCBhbmQgY29uY2F0ZW5hdGUgdGhlIHJlZ2lvbnMgb2YKbXVsdGlwbGUgbWVt b3J5IGNvbnRyb2xsZXJzLgoKTmV3ZXIgY2hpcHMgc3VjaCBhcyB0aGUgNzcxMiBhbmQgQ2FibGUg TW9kZW0gU09DcyBoYXZlIHRha2VuIGEgc3RlcCBmb3J3YXJkCmFuZCBub3cgcHJvdmlkZSBtdWx0 aXBsZSBpbmJvdW5kIEJBUnMuICBUaGlzIHdvcmtzIGluIGNvbmNlcnQgd2l0aCB0aGUKZG1hLXJh bmdlcyBwcm9wZXJ0eSwgd2hlcmUgZWFjaCBwcm92aWRlZCByYW5nZSBiZWNvbWVzIGFuIGluYm91 bmQgQkFSLgoKVGhpcyBjb21taXQgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlc2UgbmV3IGNoaXBz IGFuZCB0aGVpciBtdWx0aXBsZQppbmJvdW5kIEJBUnMgYnV0IGFsc28ga2VlcHMgdGhlIGxlZ2Fj eSBzdXBwb3J0IGZvciB0aGUgb2xkZXIgc3lzdGVtLgoKU2lnbmVkLW9mZi1ieTogSmltIFF1aW5s YW4gPGphbWVzLnF1aW5sYW5AYnJvYWRjb20uY29tPgotLS0KIGRyaXZlcnMvcGNpL2NvbnRyb2xs ZXIvcGNpZS1icmNtc3RiLmMgfCAxOTkgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAxNTAgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWJyY21zdGIuYyBiL2RyaXZlcnMvcGNpL2Nv bnRyb2xsZXI9Ci9wY2llLWJyY21zdGIuYwppbmRleCBlNzQwZTI5NjZhNWMuLjlkYWI1NzdkYzFi NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWJyY21zdGIuYworKysg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYnJjbXN0Yi5jCkBAIC03NSwxNSArNzUsMTIg QEAKICNkZWZpbmUgUENJRV9NRU1fV0lOMF9ISSh3aW4pCVwKIAkJUENJRV9NSVNDX0NQVV8yX1BD SUVfTUVNX1dJTjBfSEkgKyAoKHdpbikgKiA4KQo9MjAKKyNkZWZpbmUgUENJRV9CUkNNX01BWF9S Q19CQVJTCQkJCTE2CiAjZGVmaW5lIFBDSUVfTUlTQ19SQ19CQVIxX0NPTkZJR19MTwkJCTB4NDAy YwogI2RlZmluZSAgUENJRV9NSVNDX1JDX0JBUjFfQ09ORklHX0xPX1NJWkVfTUFTSwkJMHgxZgo9 MjAKLSNkZWZpbmUgUENJRV9NSVNDX1JDX0JBUjJfQ09ORklHX0xPCQkJMHg0MDM0Ci0jZGVmaW5l ICBQQ0lFX01JU0NfUkNfQkFSMl9DT05GSUdfTE9fU0laRV9NQVNLCQkweDFmCi0jZGVmaW5lIFBD SUVfTUlTQ19SQ19CQVIyX0NPTkZJR19ISQkJCTB4NDAzOAorI2RlZmluZSBQQ0lFX01JU0NfUkNf QkFSNF9DT05GSUdfTE8JCQkweDQwZDQKPTIwCi0jZGVmaW5lIFBDSUVfTUlTQ19SQ19CQVIzX0NP TkZJR19MTwkJCTB4NDAzYwotI2RlZmluZSAgUENJRV9NSVNDX1JDX0JBUjNfQ09ORklHX0xPX1NJ WkVfTUFTSwkJMHgxZgo9MjAKICNkZWZpbmUgUENJRV9NSVNDX01TSV9CQVJfQ09ORklHX0xPCQkJ MHg0MDQ0CiAjZGVmaW5lIFBDSUVfTUlTQ19NU0lfQkFSX0NPTkZJR19ISQkJCTB4NDA0OApAQCAt MTMwLDYgKzEyNywxMCBAQAogCSAgKFBDSUVfTUlTQ19IQVJEX1BDSUVfSEFSRF9ERUJVR19DTEtS RVFfREVCVUdfRU5BQkxFX01BU0sgfCBcCiAJICAgUENJRV9NSVNDX0hBUkRfUENJRV9IQVJEX0RF QlVHX0wxU1NfRU5BQkxFX01BU0spCj0yMAorI2RlZmluZSBQQ0lFX01JU0NfVUJVU19CQVIxX0NP TkZJR19SRU1BUAkJCTB4NDBhYworI2RlZmluZSAgUENJRV9NSVNDX1VCVVNfQkFSMV9DT05GSUdf UkVNQVBfQUNDRVNTX0VOX01BU0sJMHgxCisjZGVmaW5lIFBDSUVfTUlTQ19VQlVTX0JBUjRfQ09O RklHX1JFTUFQCQkJMHg0MTBjCisKICNkZWZpbmUgUENJRV9NU0lfSU5UUjJfQkFTRQkJMHg0NTAw Cj0yMAogLyogT2Zmc2V0cyBmcm9tIElOVFIyX0NQVSBhbmQgTVNJX0lOVFIyIEJBU0Ugb2Zmc2V0 cyAqLwpAQCAtMjIyLDYgKzIyMywxMyBAQCBlbnVtIHBjaWVfdHlwZSB7CiAJQkNNNDkwOCwKIAlC Q003Mjc4LAogCUJDTTI3MTEsCisJQkNNNzcxMiwKK307CisKK3N0cnVjdCByY19iYXIgeworCXU2 NCBzaXplOworCXU2NCBwY2lfb2Zmc2V0OworCXU2NCBjcHVfYWRkcjsKIH07Cj0yMAogc3RydWN0 IHBjaWVfY2ZnX2RhdGEgewpAQCAtMjc5LDYgKzI4Nyw3IEBAIHN0cnVjdCBicmNtX3BjaWUgewog CXN0cnVjdCBzdWJkZXZfcmVndWxhdG9ycyAqc3I7CiAJYm9vbAkJCWVwX3dha2V1cF9jYXBhYmxl OwogCWJvb2wJCQloYXNfcGh5OworCWludAkJCW51bV9pbmJvdW5kOwogfTsKPTIwCiBzdGF0aWMg aW5saW5lIGJvb2wgaXNfYm1pcHMoY29uc3Qgc3RydWN0IGJyY21fcGNpZSAqcGNpZSkKQEAgLTc5 NCwyMyArODAzLDYwIEBAIHN0YXRpYyB2b2lkIGJyY21fcGNpZV9wZXJzdF9zZXRfZ2VuZXJpYyhz dHJ1Y3QgYnJjbV9wPQpjaWUgKnBjaWUsIHUzMiB2YWwpCiAJd3JpdGVsKHRtcCwgcGNpZS0+YmFz ZSArIFBDSUVfUkdSMV9TV19JTklUXzEocGNpZSkpOwogfQo9MjAKLXN0YXRpYyBpbnQgYnJjbV9w Y2llX2dldF9yY19iYXIyX3NpemVfYW5kX29mZnNldChzdHJ1Y3QgYnJjbV9wY2llICpwY2llLAot CQkJCQkJCXU2NCAqcmNfYmFyMl9zaXplLAotCQkJCQkJCXU2NCAqcmNfYmFyMl9vZmZzZXQpCitz dGF0aWMgaW5saW5lIHZvaWQgc2V0X2JhcihzdHJ1Y3QgcmNfYmFyICpiLCBpbnQgKmNvdW50LCB1 NjQgc2l6ZSwKKwkJCSAgIHU2NCBjcHVfYWRkciwgdTY0IHBjaV9vZmZzZXQpCit7CisJYi0+c2l6 ZSA9M0Qgc2l6ZTsKKwliLT5jcHVfYWRkciA9M0QgY3B1X2FkZHI7CisJYi0+cGNpX29mZnNldCA9 M0QgcGNpX29mZnNldDsKKwkoKmNvdW50KSsrOworfQorCitzdGF0aWMgaW50IGJyY21fcGNpZV9n ZXRfcmNfYmFyX3NpemVzX2FuZF9vZmZzZXRzKHN0cnVjdCBicmNtX3BjaWUgKnBjaWUsCisJCQkJ CQkgIHN0cnVjdCByY19iYXIgcmNfYmFyc1tdKQogewogCXN0cnVjdCBwY2lfaG9zdF9icmlkZ2Ug KmJyaWRnZSA9M0QgcGNpX2hvc3RfYnJpZGdlX2Zyb21fcHJpdihwY2llKTsKKwl1NjQgcGNpX29m ZnNldCwgY3B1X2FkZHIsIHNpemUgPTNEIDAsIHRvdF9zaXplID0zRCAwOwogCXN0cnVjdCByZXNv dXJjZV9lbnRyeSAqZW50cnk7CiAJc3RydWN0IGRldmljZSAqZGV2ID0zRCBwY2llLT5kZXY7CiAJ dTY0IGxvd2VzdF9wY2llX2FkZHIgPTNEIH4odTY0KTA7Ci0JaW50IHJldCwgaSA9M0QgMDsKLQl1 NjQgc2l6ZSA9M0QgMDsKKworCWludCByZXQsIGkgPTNEIDAsIG4gPTNEIDA7CisKKwkvKgorCSAq IFRoZSBIVyByZWdpc3RlcnMgKGFuZCBQQ0llKSB1c2Ugb3JkZXItMSBudW1iZXJpbmcgZm9yIEJB UnMuIEFzCisJICogc3VjaCwgd2UgaGF2ZSByY19iYXJzWzBdIHVudXNlZCBhbmQgQkFSMSBzdGFy dHMgYXQgcmNfYmFyc1sxXS4KKwkgKi8KKwlzdHJ1Y3QgcmNfYmFyICpiX2JlZ2luID0zRCAmcmNf YmFyc1sxXTsKKwlzdHJ1Y3QgcmNfYmFyICpiID0zRCBiX2JlZ2luOworCisJLyoKKwkgKiBTVEIg Y2hpcHMgYmVzaWRlIDc3MTIgZGlzYWJsZSBCQVIxIGJ5IGRlZmF1bHQuICBJdCBpcyBtYXBwZWQg bm90CisJICogdG8gc3lzdGVtIG1lbW9yeSBidXQgdG8gYSByZWdpaW9uIGFsbCBvZiB0aGUgU09D IHJlZ2lzdGVycy4gIE5vCisJICogb25lIHVzZXMgdGhpcyBhbnltb3JlLgorCSAqLworCWlmIChw Y2llLT50eXBlICE9M0QgQkNNNzcxMikKKwkJc2V0X2JhcihiKyssICZuLCAwLCAwLCAwKTsKPTIw CiAJcmVzb3VyY2VfbGlzdF9mb3JfZWFjaF9lbnRyeShlbnRyeSwgJmJyaWRnZS0+ZG1hX3Jhbmdl cykgewogCQl1NjQgcGNpZV9iZWcgPTNEIGVudHJ5LT5yZXMtPnN0YXJ0IC0gZW50cnktPm9mZnNl dDsKKwkJdTY0IGNwdV9iZWcgPTNEIGVudHJ5LT5yZXMtPnN0YXJ0Owo9MjAKLQkJc2l6ZSArPTNE IGVudHJ5LT5yZXMtPmVuZCAtIGVudHJ5LT5yZXMtPnN0YXJ0ICsgMTsKKwkJc2l6ZSA9M0QgZW50 cnktPnJlcy0+ZW5kIC0gZW50cnktPnJlcy0+c3RhcnQgKyAxOworCQl0b3Rfc2l6ZSArPTNEIHNp emU7CiAJCWlmIChwY2llX2JlZyA8IGxvd2VzdF9wY2llX2FkZHIpCiAJCQlsb3dlc3RfcGNpZV9h ZGRyID0zRCBwY2llX2JlZzsKKwkJLyoKKwkJICogNzcxMiBhbmQgbmV3ZXIgY2hpcHMgbWF5IGhh dmUgbWFueSBCQVJzLCB3aXRoIGVhY2gKKwkJICogb2ZmZXJpbmcgYSBub24tb3ZlcmxhcHBpbmcg dmlld3BvcnQgdG8gc3lzdGVtIG1lbW9yeS4KKwkJICogVGhhdCBiZWluZyBzYWlkLCBlYWNoIEJB UnMgc2l6ZSBtdXN0IHN0aWxsIGJlIGEgcG93ZXIgb2YKKwkJICogdHdvLgorCQkgKi8KKwkJaWYg KHBjaWUtPnR5cGUgPTNEPTNEIEJDTTc3MTIpCisJCQlzZXRfYmFyKGIrKywgJm4sIHNpemUsIGNw dV9iZWcsIHBjaWVfYmVnKTsKKworCQlpZiAobiA+IHBjaWUtPm51bV9pbmJvdW5kKQorCQkJYnJl YWs7CiAJfQo9MjAKIAlpZiAobG93ZXN0X3BjaWVfYWRkciA9M0Q9M0Qgfih1NjQpMCkgewpAQCAt ODE4LDEzICs4NjQsMjAgQEAgc3RhdGljIGludCBicmNtX3BjaWVfZ2V0X3JjX2JhcjJfc2l6ZV9h bmRfb2Zmc2V0KHN0cnU9CmN0IGJyY21fcGNpZSAqcGNpZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJ fQo9MjAKKwkvKgorCSAqIDc3MTIgYW5kIG5ld2VyIGNoaXBzIGRvIG5vdCBoYXZlIGFuIGludGVy bmFsIG1lbW9yeSBtYXBwaW5nIHN5c3RlbQorCSAqIHRoYXQgZW5hYmxlcyBtdWx0aXBsZSBtZW1v cnkgY29udHJvbGxlcnMuICBBcyBzdWNoLCBpdCBjYW4gcmV0dXJuCisJICogbm93IHcvbyBkb2lu ZyBzcGVjaWFsIGNvbmZpZ3VyYXRpb24uCisJICovCisJaWYgKHBjaWUtPnR5cGUgPTNEPTNEIEJD TTc3MTIpCisJCXJldHVybiBuOworCiAJcmV0ID0zRCBvZl9wcm9wZXJ0eV9yZWFkX3ZhcmlhYmxl X3U2NF9hcnJheShwY2llLT5ucCwgImJyY20sc2NiLXNpemVzIiwgcD0KY2llLT5tZW1jX3NpemUs IDEsCiAJCQkJCQkgIFBDSUVfQlJDTV9NQVhfTUVNQyk7Ci0KIAlpZiAocmV0IDw9M0QgMCkgewog CQkvKiBNYWtlIGFuIGVkdWNhdGVkIGd1ZXNzICovCiAJCXBjaWUtPm51bV9tZW1jID0zRCAxOwot CQlwY2llLT5tZW1jX3NpemVbMF0gPTNEIDFVTEwgPDwgZmxzNjQoc2l6ZSAtIDEpOworCQlwY2ll LT5tZW1jX3NpemVbMF0gPTNEIDFVTEwgPDwgZmxzNjQodG90X3NpemUgLSAxKTsKIAl9IGVsc2Ug ewogCQlwY2llLT5udW1fbWVtYyA9M0QgcmV0OwogCX0KQEAgLTgzMywxMCArODg2LDE1IEBAIHN0 YXRpYyBpbnQgYnJjbV9wY2llX2dldF9yY19iYXIyX3NpemVfYW5kX29mZnNldChzdHJ1PQpjdCBi cmNtX3BjaWUgKnBjaWUsCiAJZm9yIChpID0zRCAwLCBzaXplID0zRCAwOyBpIDwgcGNpZS0+bnVt X21lbWM7IGkrKykKIAkJc2l6ZSArPTNEIHBjaWUtPm1lbWNfc2l6ZVtpXTsKPTIwCi0JLyogU3lz dGVtIG1lbW9yeSBzdGFydHMgYXQgdGhpcyBhZGRyZXNzIGluIFBDSWUtc3BhY2UgKi8KLQkqcmNf YmFyMl9vZmZzZXQgPTNEIGxvd2VzdF9wY2llX2FkZHI7Ci0JLyogVGhlIHN1bSBvZiBhbGwgbWVt YyB2aWV3cyBtdXN0IGFsc28gYmUgYSBwb3dlciBvZiAyICovCi0JKnJjX2JhcjJfc2l6ZSA9M0Qg MVVMTCA8PCBmbHM2NChzaXplIC0gMSk7CisJLyogT3VyIEhXIG1hbmRhdGVzIHRoYXQgdGhlIHdp bmRvdyBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyICovCisJc2l6ZSA9M0QgMVVMTCA8PCBmbHM2 NChzaXplIC0gMSk7CisKKwkvKgorCSAqIEZvciBTVEIgY2hpcHMsIHRoZSBCQVIyIGNwdV9hZGRy IGlzIGhhcmR3aXJlZCB0byB0aGUgc3RhcnQKKwkgKiBvZiBzeXN0ZW0gbWVtb3J5LCBzbyB3ZSBz ZXQgaXQgdG8gMC4KKwkgKi8KKwljcHVfYWRkciA9M0QgMDsKKwlwY2lfb2Zmc2V0ID0zRCBsb3dl c3RfcGNpZV9hZGRyOwo9MjAKIAkvKgogCSAqIFdlIHZhbGlkYXRlIHRoZSBpbmJvdW5kIG1lbW9y eSB2aWV3IGV2ZW4gdGhvdWdoIHdlIHNob3VsZCB0cnVzdApAQCAtODcxLDI1ICs5MjksNTAgQEAg c3RhdGljIGludCBicmNtX3BjaWVfZ2V0X3JjX2JhcjJfc2l6ZV9hbmRfb2Zmc2V0KHN0cnU9CmN0 IGJyY21fcGNpZSAqcGNpZSwKIAkgKiAgIG91dGJvdW5kIG1lbW9yeSBAIDNHQikuIFNvIGluc3Rl YWQgaXQgd2lsbCAgc3RhcnQgYXQgdGhlIDF4CiAJICogICBtdWx0aXBsZSBvZiBpdHMgc2l6ZQog CSAqLwotCWlmICghKnJjX2JhcjJfc2l6ZSB8fCAoKnJjX2JhcjJfb2Zmc2V0ICYgKCpyY19iYXIy X3NpemUgLSAxKSkgfHwKLQkgICAgKCpyY19iYXIyX29mZnNldCA8IFNaXzRHICYmICpyY19iYXIy X29mZnNldCA+IFNaXzJHKSkgeworCWlmICghc2l6ZSB8fCAocGNpX29mZnNldCAmIChzaXplIC0g MSkpIHx8CisJICAgIChwY2lfb2Zmc2V0IDwgU1pfNEcgJiYgcGNpX29mZnNldCA+IFNaXzJHKSkg ewogCQlkZXZfZXJyKGRldiwgIkludmFsaWQgcmNfYmFyMl9vZmZzZXQvc2l6ZTogc2l6ZSAweCVs bHgsIG9mZiAweCVsbHhcbiIsCi0JCQkqcmNfYmFyMl9zaXplLCAqcmNfYmFyMl9vZmZzZXQpOwor CQkJc2l6ZSwgcGNpX29mZnNldCk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KPTIwCi0JcmV0dXJu IDA7CisJLyogRW5hYmxlIEJBUjIsIHRoZSBpbmJvdW5kIHdpbmRvdyBmb3IgU1RCIGNoaXBzICov CisJc2V0X2JhcihiKyssICZuLCBzaXplLCBjcHVfYWRkciwgcGNpX29mZnNldCk7CisKKwkvKgor CSAqIERpc2FibGUgQkFSMy4gIE9uIHNvbWUgY2hpcHMgcHJlc2VudHMgdGhlIHNhbWUgd2luZG93 IGFzIEJBUjIKKwkgKiBidXQgdGhlIGRhdGEgYXBwZWFycyBpbiBhIHNldHRhYmxlIGVuZGlhbm5l c3MuCisJICovCisJc2V0X2JhcihiKyssICZuLCAwLCAwLCAwKTsKKworCXJldHVybiBuOworfQor CitzdGF0aWMgdW5zaWduZWQgaW50IGJyY21fY2FsY19iYXJfcmVnX29mZnNldChpbnQgYmFyKQor eworCWlmIChiYXIgPD0zRCAzKQorCQlyZXR1cm4gUENJRV9NSVNDX1JDX0JBUjFfQ09ORklHX0xP ICsgOCAqIChiYXIgLSAxKTsKKwllbHNlCisJCXJldHVybiBQQ0lFX01JU0NfUkNfQkFSNF9DT05G SUdfTE8gKyA4ICogKGJhciAtIDQpOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGJyY21fY2Fs Y191YnVzX3JlZ19vZmZzZXQoaW50IGJhcikKK3sKKwlpZiAoYmFyIDw9M0QgMykKKwkJcmV0dXJu IFBDSUVfTUlTQ19VQlVTX0JBUjFfQ09ORklHX1JFTUFQICsgOCAqIChiYXIgLSAxKTsKKwllbHNl CisJCXJldHVybiBQQ0lFX01JU0NfVUJVU19CQVI0X0NPTkZJR19SRU1BUCArIDggKiAoYmFyIC0g NCk7CiB9Cj0yMAogc3RhdGljIGludCBicmNtX3BjaWVfc2V0dXAoc3RydWN0IGJyY21fcGNpZSAq cGNpZSkKIHsKLQl1NjQgcmNfYmFyMl9vZmZzZXQsIHJjX2JhcjJfc2l6ZTsKKwlzdHJ1Y3QgcmNf YmFyIHJjX2JhcnNbUENJRV9CUkNNX01BWF9SQ19CQVJTXTsKIAl2b2lkIF9faW9tZW0gKmJhc2Ug PTNEIHBjaWUtPmJhc2U7CiAJc3RydWN0IHBjaV9ob3N0X2JyaWRnZSAqYnJpZGdlOwogCXN0cnVj dCByZXNvdXJjZV9lbnRyeSAqZW50cnk7CiAJdTMyIHRtcCwgYnVyc3QsIGFzcG1fc3VwcG9ydDsK LQlpbnQgbnVtX291dF93aW5zID0zRCAwOwotCWludCByZXQsIG1lbWM7CisJaW50IG51bV9vdXRf d2lucyA9M0QgMCwgbnVtX3JjX2JhcnMgPTNEIDA7CisJaW50IGksIG1lbWM7Cj0yMAogCS8qIFJl c2V0IHRoZSBicmlkZ2UgKi8KIAlwY2llLT5icmlkZ2Vfc3dfaW5pdF9zZXQocGNpZSwgMSk7CkBA IC05MzgsMTcgKzEwMjEsNDcgQEAgc3RhdGljIGludCBicmNtX3BjaWVfc2V0dXAoc3RydWN0IGJy Y21fcGNpZSAqcGNpZSkKIAl1MzJwX3JlcGxhY2VfYml0cygmdG1wLCAxLCBQQ0lFX01JU0NfTUlT Q19DVFJMX1BDSUVfUkNCXzY0Ql9NT0RFX01BU0spOwogCXdyaXRlbCh0bXAsIGJhc2UgKyBQQ0lF X01JU0NfTUlTQ19DVFJMKTsKPTIwCi0JcmV0ID0zRCBicmNtX3BjaWVfZ2V0X3JjX2JhcjJfc2l6 ZV9hbmRfb2Zmc2V0KHBjaWUsICZyY19iYXIyX3NpemUsCi0JCQkJCQkgICAgJnJjX2JhcjJfb2Zm c2V0KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCW51bV9yY19iYXJzID0zRCBicmNtX3Bj aWVfZ2V0X3JjX2Jhcl9zaXplc19hbmRfb2Zmc2V0cyhwY2llLCByY19iYXJzKTsKKwlpZiAobnVt X3JjX2JhcnMgPCAwKQorCQlyZXR1cm4gbnVtX3JjX2JhcnM7CisKKwlmb3IgKGkgPTNEIDE7IGkg PD0zRCBudW1fcmNfYmFyczsgaSsrKSB7CisJCXU2NCBwY2lfb2Zmc2V0ID0zRCByY19iYXJzW2ld LnBjaV9vZmZzZXQ7CisJCXU2NCBjcHVfYWRkciA9M0QgcmNfYmFyc1tpXS5jcHVfYWRkcjsKKwkJ dTY0IHNpemUgPTNEIHJjX2JhcnNbaV0uc2l6ZTsKKwkJdTMyIHJlZ19vZmZzZXQgPTNEIGJyY21f Y2FsY19iYXJfcmVnX29mZnNldChpKTsKKworCQl0bXAgPTNEIGxvd2VyXzMyX2JpdHMocGNpX29m ZnNldCk7CisJCXUzMnBfcmVwbGFjZV9iaXRzKCZ0bXAsIGJyY21fcGNpZV9lbmNvZGVfaWJhcl9z aXplKHNpemUpLAorCQkJCSAgUENJRV9NSVNDX1JDX0JBUjFfQ09ORklHX0xPX1NJWkVfTUFTSyk7 CisKKwkJLyogV3JpdGUgbG93ICovCisJCXdyaXRlbCh0bXAsIGJhc2UgKyByZWdfb2Zmc2V0KTsK KwkJLyogV3JpdGUgaGlnaCAqLworCQl3cml0ZWwodXBwZXJfMzJfYml0cyhwY2lfb2Zmc2V0KSwK KwkJICAgICAgIGJhc2UgKyByZWdfb2Zmc2V0ICsgNCk7CisKKwkJLyoKKwkJICogTW9zdCBTVEIg Y2hpcHM6CisJCSAqICAgICBEbyBub3RoaW5nLgorCQkgKiA3NzEyOgorCQkgKiAgICAgQWxsIG9m IHRoZWlyIEJBUnMgbmVlZCB0byBiZSBzZXQuCisJCSAqLworCQlpZiAocGNpZS0+dHlwZSA9M0Q9 M0QgQkNNNzcxMikgeworCQkJLyogQlVTIHJlbWFwIHJlZ2lzdGVyIHNldHRpbmdzICovCisJCQly ZWdfb2Zmc2V0ID0zRCBicmNtX2NhbGNfdWJ1c19yZWdfb2Zmc2V0KGkpOworCQkJdG1wID0zRCBs b3dlcl8zMl9iaXRzKGNwdV9hZGRyKSAmIH4weGZmZjsKKwkJCXRtcCB8PTNEIFBDSUVfTUlTQ19V QlVTX0JBUjFfQ09ORklHX1JFTUFQX0FDQ0VTU19FTl9NQVNLOworCQkJd3JpdGVsKHRtcCwgYmFz ZSArIHJlZ19vZmZzZXQpOworCQkJdG1wID0zRCB1cHBlcl8zMl9iaXRzKGNwdV9hZGRyKTsKKwkJ CXdyaXRlbCh0bXAsIGJhc2UgKyByZWdfb2Zmc2V0ICsgNCk7CisJCX0KKwl9Cj0yMAotCXRtcCA9 M0QgbG93ZXJfMzJfYml0cyhyY19iYXIyX29mZnNldCk7Ci0JdTMycF9yZXBsYWNlX2JpdHMoJnRt cCwgYnJjbV9wY2llX2VuY29kZV9pYmFyX3NpemUocmNfYmFyMl9zaXplKSwKLQkJCSAgUENJRV9N SVNDX1JDX0JBUjJfQ09ORklHX0xPX1NJWkVfTUFTSyk7Ci0Jd3JpdGVsKHRtcCwgYmFzZSArIFBD SUVfTUlTQ19SQ19CQVIyX0NPTkZJR19MTyk7Ci0Jd3JpdGVsKHVwcGVyXzMyX2JpdHMocmNfYmFy Ml9vZmZzZXQpLAotCSAgICAgICBiYXNlICsgUENJRV9NSVNDX1JDX0JBUjJfQ09ORklHX0hJKTsK KwlpZiAoIWJyY21fcGNpZV9yY19tb2RlKHBjaWUpKSB7CisJCWRldl9lcnIocGNpZS0+ZGV2LCAi UENJZSBSQyBjb250cm9sbGVyIG1pc2NvbmZpZ3VyZWQgYXMgRW5kcG9pbnRcbiIpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9Cj0yMAogCXRtcCA9M0QgcmVhZGwoYmFzZSArIFBDSUVfTUlTQ19NSVND X0NUUkwpOwogCWZvciAobWVtYyA9M0QgMDsgbWVtYyA8IHBjaWUtPm51bV9tZW1jOyBtZW1jKysp IHsKQEAgLTk3MCwyNSArMTA4MywxMiBAQCBzdGF0aWMgaW50IGJyY21fcGNpZV9zZXR1cChzdHJ1 Y3QgYnJjbV9wY2llICpwY2llKQogCSAqIDRHQiBvciB3aGVuIHRoZSBpbmJvdW5kIGFyZWEgaXMg c21hbGxlciB0aGFuIDRHQiAodGFraW5nIGludG8KIAkgKiBhY2NvdW50IHRoZSByb3VuZGluZy11 cCB3ZSdyZSBmb3JjZWQgdG8gcGVyZm9ybSkuCiAJICovCi0JaWYgKHJjX2JhcjJfb2Zmc2V0ID49 M0QgU1pfNEcgfHwgKHJjX2JhcjJfc2l6ZSArIHJjX2JhcjJfb2Zmc2V0KSA8IFNaXzRHKQorCWlm IChyY19iYXJzWzJdLnBjaV9vZmZzZXQgPj0zRCBTWl80RyB8fAorCSAgICAocmNfYmFyc1syXS5z aXplICsgcmNfYmFyc1syXS5wY2lfb2Zmc2V0KSA8IFNaXzRHKQogCQlwY2llLT5tc2lfdGFyZ2V0 X2FkZHIgPTNEIEJSQ01fTVNJX1RBUkdFVF9BRERSX0xUXzRHQjsKIAllbHNlCiAJCXBjaWUtPm1z aV90YXJnZXRfYWRkciA9M0QgQlJDTV9NU0lfVEFSR0VUX0FERFJfR1RfNEdCOwo9MjAKLQlpZiAo IWJyY21fcGNpZV9yY19tb2RlKHBjaWUpKSB7Ci0JCWRldl9lcnIocGNpZS0+ZGV2LCAiUENJZSBS QyBjb250cm9sbGVyIG1pc2NvbmZpZ3VyZWQgYXMgRW5kcG9pbnRcbiIpOwotCQlyZXR1cm4gLUVJ TlZBTDsKLQl9Ci0KLQkvKiBkaXNhYmxlIHRoZSBQQ0llLT5HSVNCIG1lbW9yeSB3aW5kb3cgKFJD X0JBUjEpICovCi0JdG1wID0zRCByZWFkbChiYXNlICsgUENJRV9NSVNDX1JDX0JBUjFfQ09ORklH X0xPKTsKLQl0bXAgJj0zRCB+UENJRV9NSVNDX1JDX0JBUjFfQ09ORklHX0xPX1NJWkVfTUFTSzsK LQl3cml0ZWwodG1wLCBiYXNlICsgUENJRV9NSVNDX1JDX0JBUjFfQ09ORklHX0xPKTsKLQotCS8q IGRpc2FibGUgdGhlIFBDSWUtPlNDQiBtZW1vcnkgd2luZG93IChSQ19CQVIzKSAqLwotCXRtcCA9 M0QgcmVhZGwoYmFzZSArIFBDSUVfTUlTQ19SQ19CQVIzX0NPTkZJR19MTyk7Ci0JdG1wICY9M0Qg flBDSUVfTUlTQ19SQ19CQVIzX0NPTkZJR19MT19TSVpFX01BU0s7Ci0Jd3JpdGVsKHRtcCwgYmFz ZSArIFBDSUVfTUlTQ19SQ19CQVIzX0NPTkZJR19MTyk7Cj0yMAogCS8qIERvbid0IGFkdmVydGlz ZSBMMHMgY2FwYWJpbGl0eSBpZiAnYXNwbS1uby1sMHMnICovCiAJYXNwbV9zdXBwb3J0ID0zRCBQ Q0lFX0xJTktfU1RBVEVfTDE7CkBAIC0xNjI4LDYgKzE3MjgsNyBAQCBzdGF0aWMgaW50IGJyY21f cGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZD0KZXYpCiAJcGNpZS0+cGVyc3Rf c2V0ID0zRCBkYXRhLT5wZXJzdF9zZXQ7CiAJcGNpZS0+YnJpZGdlX3N3X2luaXRfc2V0ID0zRCBk YXRhLT5icmlkZ2Vfc3dfaW5pdF9zZXQ7CiAJcGNpZS0+aGFzX3BoeSA9M0QgZGF0YS0+aGFzX3Bo eTsKKwlwY2llLT5udW1faW5ib3VuZCA9M0QgKHBjaWUtPnR5cGUgPTNEPTNEIEJDTTc3MTIpID8g MTAgOiAzOwo9MjAKIAlwY2llLT5iYXNlID0zRCBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3Vy Y2UocGRldiwgMCk7CiAJaWYgKElTX0VSUihwY2llLT5iYXNlKSkKLS09MjAKMi4xNy4xCg== --000000000000e825ba061bf9758e 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 MA0GCWCGSAFlAwQCAQUAoIHUMC8GCSqGSIb3DQEJBDEiBCANS8vawhTp87gf7T+XkWcouW42HSt5 3wL6F0z2x/E1jTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yNDA2 MjgyMDU0NTlaMGkGCSqGSIb3DQEJDzFcMFowCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglg hkgBZQMEAQIwCgYIKoZIhvcNAwcwCwYJKoZIhvcNAQEKMAsGCSqGSIb3DQEBBzALBglghkgBZQME AgEwDQYJKoZIhvcNAQEBBQAEggEANxUGRydM/1U0Hfs+Mz/eLtBR5qAYRM9DavE41EeU9CiinurN 8I3MpoIzd5iCTaO2lFmPa9G1DHLUZRzlJvDX5Wl+P4lhrOWMQ2h+rmj7epz1NoDWZlyP0Mk59Gqi uefX0lOTZ9ygLwl4r7sIcltH/rMuo7gt09pPLUye+bB2g30bXIqlqYR5ushEB1a9uU1ImsnZJ2bK dTqYNkeThelMmyGdnm8KMroh/ZEPUSHi7piJtrr6UoKpqzkOBqRblZNwd13AVC43hegMjNTpw7gK kJ4okEu1fXBOT29AuzcNaH1W2zTh9Skgf761TDu91IdHDOJ5O89t+gQQ5iVSwjJALA== --000000000000e825ba061bf9758e--