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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 E2A10CD6E55 for ; Mon, 1 Jun 2026 17:38:39 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 09C83113673; Mon, 1 Jun 2026 17:38:39 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Zwe7SfVh"; dkim-atps=neutral Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id 79454113672 for ; Mon, 1 Jun 2026 17:38:37 +0000 (UTC) Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-490ac10e337so6517405e9.3 for ; Mon, 01 Jun 2026 10:38:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780335516; x=1780940316; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WHxXW7O/Izz7xiSeeyh2JIhlbrvpSEr0KJxBvl9/+SI=; b=Zwe7SfVhHLM2wwbJSi17hioM0BvN1b6Fke1Gwi9tCkXVLB9Lsqn0hqKij0ndJ5eZ7p vl669J3Z5DorbQZjnE5MOtL1k3NygxplQeZRtAXIhbZCCg7jT4gLDu4IgBh3PhAajXf9 +xfafbiOKmS4zksL9vIwzlpmypuOp5+j8Zm1fG6eurrX7/El0kEtC+WKlCxG9MWCnh0U Tanji7yutaYWSew0gcJPsJ/R7ohh+5LQJgSx9pq/Ubm/kQdzWhYcMNlMdc83G1QmxPew HkID1T8Dks47m/wko71e2FHUdBWM4UVDIT/twdCWqSW5cWbfapfBPPKDGzGvMJJefLhz 70eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780335516; x=1780940316; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WHxXW7O/Izz7xiSeeyh2JIhlbrvpSEr0KJxBvl9/+SI=; b=CnDRZcsLRaaVSzAgFYyp2UWi3S3CgLitJDkrd5rp1D816l7HX5XMup2lwor97XWE46 Cqk6T/W/QI7yrJ/OPrh7xfMr8E7/+JuNDE5w9qvB54cKZN/BOqsrbu8aSKP+QNYq/CL9 IrEYBauXEnisUg1/A/E92UJ3C/dTJCZzoSs8LJjvAmmSy7xqS+k0XOKjiGOcIwHlETbJ fAQptGzm39rIrR26gajcebBzz5t42B2CE6e6DG8htvIv0F8UhutLhMUWKBLfpnN2UScs 3wCtusZLBsDEiTwH4FrfzDBvy4CnZ3eUnb1Zo48svgxt5SftYWJ13qyovT5+9l4IsHRb ymxg== X-Forwarded-Encrypted: i=1; AFNElJ9bS+PADUbeRenRZj9ht4+GmNXg5fpY0Ooa6REF/vVKSG2POytv+t3ALC8gro/qye43r6uAJ03AMPc=@lists.freedesktop.org X-Gm-Message-State: AOJu0YyU9tOuTxfg9EDV1cNKiz4JzJcqBtoZjoedJPE1JVU/fA54tpW5 QLIHDFdH09fNhZMBzphovATp5QeqJmYjH5vmIiuGUGp9GSf2BcUfJ0bt X-Gm-Gg: Acq92OG7dCMmHZApp5NouaG0hJKS+aDEakyGlBjkLA6cWRPGOA6wl7XLwO1gZXgRI1K 30TXImtbf9+DqPYhsIm6K4GdCAt/6WP7IGmZLzNGCJrp5XiW90BAAg+2i3hHb6K2PT/HGaJc/F3 C2FMvv/PDRnXxFZA+t8oMkuJzC/SvqoaRzOfCp2OCLEdyLcs2776jSzVbmfyTQzEbrhWMNuQ0HF mFA0V18hEd3BjjNAeTU6tJZjbtxKYEjuhP9uqEoeBHUAU8dB5kD0L5ivrtUmyW70VLHRuwwR3+T EsAil8DY/BeH3xhu1TgjtWEuVQ2VSc17zsrfPLIQnJf419HEvDYd3dYQyniSzkuJfig4QFm31u0 tPijulmFigBwZ/m0BaGwaq4q3jVRmP8SwYoAbTzlDxUr2gHBip3YeousjJAvvFpv1+paUvV96ya p4oO8BP5tFv/2rWgipRc3++d0matsRKdKwioU6sk745T08olRvgI8040FIiS3TOYevuAPA2JNFk 8k9fW5+UP0SoVukqxYZAjH4kwns4PqJdyJMxd+sgQvgjH/wFQLKvvg0XYx/zK0= X-Received: by 2002:a05:600c:8684:b0:490:9d1b:f07e with SMTP id 5b1f17b1804b1-490a2910956mr151513555e9.13.1780335515555; Mon, 01 Jun 2026 10:38:35 -0700 (PDT) Received: from tapdecorti.home (cst-prg-57-209.cust.vodafone.cz. [46.135.57.209]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490b0e239f4sm10315155e9.7.2026.06.01.10.38.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Jun 2026 10:38:34 -0700 (PDT) From: Tomeu Vizoso X-Google-Original-From: Tomeu Vizoso To: "Rob Herring (Arm)" , Tomeu Vizoso , Oded Gabbay , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Kees Cook , "Gustavo A. R. Silva" Cc: =?UTF-8?q?Ma=C3=ADra=20Canal?= , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-hardening@vger.kernel.org Subject: [PATCH v4] accel: ethosu: Add performance counter support Date: Mon, 1 Jun 2026 19:38:11 +0200 Message-ID: <20260601173814.250071-1-tomeu@tomeuvizoso.net> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260523083730.255310-1-tomeu@tomeuvizoso.net> References: <20260523083730.255310-1-tomeu@tomeuvizoso.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" RnJvbTogIlJvYiBIZXJyaW5nIChBcm0pIiA8cm9iaEBrZXJuZWwub3JnPgoKVGhlIEFybSBFdGhv cy1VIE5QVXMgaGF2ZSBhIFBNVSB3aXRoIHBlcmZvcm1hbmNlIGNvdW50ZXJzLiBUaGUgUE1VIGgv dwpzdXBwb3J0cyB1cCB0byA0IChVNjUpIG9yIDggKFU4NSkgY291bnRlcnMgd2hpY2ggY2FuIGJl IHByb2dyYW1tZWQgZm9yCmRpZmZlcmVudCBldmVudHMuIFRoZXJlIGlzIGFsc28gYSBkZWRpY2F0 ZWQgY3ljbGUgY291bnRlci4KClRoZSBBQkkgYW5kIGltcGxlbWVudGF0aW9uIGFyZSBjb3BpZWQg ZnJvbSB0aGUgVjNEIGRyaXZlci4gVGhlIG1haW4KZGlmZmVyZW5jZSBpbiB0aGUgQUJJIGlzIHRo ZXJlIGlzIG5vIHF1ZXJ5IEFQSSBmb3IgdGhlIGV2ZW50IGxpc3QuIFRoZQpldmVudHMgZGlmZmVy IGJldHdlZW4gdGhlIFU2NSBhbmQgVTg1LCBzbyB0aGUgZXZlbnRzIGxpc3RzIGFyZQptYWludGFp bmVkIGluIHVzZXJzcGFjZSBhbG9uZyB3aXRoIG90aGVyIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhl IFU2NSBhbmQKVTg1LgoKVGhlIGN5Y2xlIGNvdW50ZXIgaXMgYWx3YXlzIGVuYWJsZWQgd2hlbiB0 aGUgUE1VIGlzIGVuYWJsZWQuIFdoZW4gdGhlCnVzZXIgcmVxdWVzdHMgTiBldmVudHMsIHJlYWRp bmcgdGhlIGNvdW50ZXJzIHdpbGwgcmV0dXJuIHRoZSBOIGV2ZW50cwpwbHVzIHRoZSBjeWNsZSBj b3VudGVyLgoKU2lnbmVkLW9mZi1ieTogUm9iIEhlcnJpbmcgKEFybSkgPHJvYmhAa2VybmVsLm9y Zz4KU2lnbmVkLW9mZi1ieTogVG9tZXUgVml6b3NvIDx0b21ldUB0b21ldXZpem9zby5uZXQ+ClJl dmlld2VkLWJ5OiBNYcOtcmEgQ2FuYWwgPG1jYW5hbEBpZ2FsaWEuY29tPgoKLS0tCnYyOgogLSBV c2UgWEFycmF5IGluc3RlYWQgb2YgaWRyCiAtIFJld29yayBsb2NraW5nIHRvIHVzZSBwZXIgZGV2 aWNlIHNwaW5sb2NrIHRvIHByb3RlY3QgbW9kaWZ5aW5nIGFjdGl2ZQogICBwZXJmbW9uLiBCYXNl ZCBvbiBwZW5kaW5nIFYzRCBjaGFuZ2VzOgogICBodHRwczovL2xvcmUua2VybmVsLm9yZy9hbGwv MjAyNjA1MDgtdjNkLXBlcmZtb24tbGlmZXRpbWUtdjEtMS1mNWI1NjQyYzA4NWZAaWdhbGlhLmNv bS8KIC0gQWRkIG1pc3NpbmcgcGVyZm1vbiBwdXRzIGluIGV0aG9zdV9pb2N0bF9wZXJmbW9uX3Nl dF9nbG9iYWwoKSBhbmQKICAgZXRob3N1X2lvY3RsX3BlcmZtb25fZ2V0X3ZhbHVlcygpIGVycm9y IHBhdGhzLgogLSBGaXggcmVhZGluZyBudW1iZXIgb2YgY291bnRlcnMgb24gVTg1LgogLSBBZGQg ZGVmaW5lcyBOUFVfUkVHX1BNQ0NOVFJfQ0ZHCgp2MzoKIC0gQWRkIGV4cGxpY2l0IHBhZGRpbmcg dG8gZHJtX2V0aG9zdV9wZXJmbW9uX2Rlc3Ryb3kKIC0gRml4IFNQRFggbGljZW5zZSBleHByZXNz aW9uCiAtIEZpeCBjb21tZW50IHR5cG9zCiAtIENvbnZlcnQgcGVyZm1vbiBsb2NrIGZyb20gc3Bp bmxvY2sgdG8gbXV0ZXgKIC0gU2ltcGxpZnkgc3dpdGNoX3BlcmZtb24gY29uZGl0aW9uIGNoZWNr CiAtIFJlbW92ZSB1bnVzZWQgZXRob3N1X3BlcmZtb25faW5pdAogLSBBZGQgbG9ja2RlcF9hc3Nl cnRfaGVsZCB0byBldGhvc3VfcGVyZm1vbl9zdG9wX2xvY2tlZAoKdjQ6CiAtIFVzZSBkcm1tX211 dGV4X2luaXQoKSBmb3IgcGVyZm1vbiBsb2NrCiAtIEFkZCBsb2NrZGVwX2Fzc2VydF9oZWxkKCkg dG8gZXRob3N1X3BlcmZtb25fc3RhcnQoKQogLSBGaXggYSBmZXcgc3R5bGUgaXNzdWVzIHJlcG9y dGVkIGJ5IE1hw61yYQotLS0KIGRyaXZlcnMvYWNjZWwvZXRob3N1L01ha2VmaWxlICAgICAgICAg fCAgIDIgKy0KIGRyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9kZXZpY2UuaCAgfCAgMzMgKysr CiBkcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfZHJ2LmMgICAgIHwgIDIzICstCiBkcml2ZXJz L2FjY2VsL2V0aG9zdS9ldGhvc3VfZHJ2LmggICAgIHwgIDYxICsrKysrLQogZHJpdmVycy9hY2Nl bC9ldGhvc3UvZXRob3N1X2pvYi5jICAgICB8ICAzOSArKystCiBkcml2ZXJzL2FjY2VsL2V0aG9z dS9ldGhvc3Vfam9iLmggICAgIHwgICAyICsKIGRyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9w ZXJmbW9uLmMgfCAzMDEgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9k cm0vZXRob3N1X2FjY2VsLmggICAgICAgfCAgNjAgKysrKy0KIDggZmlsZXMgY2hhbmdlZCwgNTA4 IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvYWNjZWwvZXRob3N1L2V0aG9zdV9wZXJmbW9uLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Fj Y2VsL2V0aG9zdS9NYWtlZmlsZSBiL2RyaXZlcnMvYWNjZWwvZXRob3N1L01ha2VmaWxlCmluZGV4 IDE3ZGI1YTYwMDQxNi4uNTk4YTM4OGI3MTc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjY2VsL2V0 aG9zdS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2FjY2VsL2V0aG9zdS9NYWtlZmlsZQpAQCAtMSw0 ICsxLDQgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogCiBvYmot JChDT05GSUdfRFJNX0FDQ0VMX0FSTV9FVEhPU1UpIDo9IGV0aG9zdS5vCi1ldGhvc3UteSArPSBl dGhvc3VfZHJ2Lm8gZXRob3N1X2dlbS5vIGV0aG9zdV9qb2IubworZXRob3N1LXkgKz0gZXRob3N1 X2Rydi5vIGV0aG9zdV9nZW0ubyBldGhvc3Vfam9iLm8gZXRob3N1X3BlcmZtb24ubwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2RldmljZS5oIGIvZHJpdmVycy9hY2Nl bC9ldGhvc3UvZXRob3N1X2RldmljZS5oCmluZGV4IGIxODlmYTc4M2Q2YS4uM2ExZDA3ZDk0Nzg1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfZGV2aWNlLmgKKysrIGIv ZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2RldmljZS5oCkBAIC02LDYgKzYsNyBAQAogCiAj aW5jbHVkZSA8bGludXgvYml0ZmllbGQuaD4KICNpbmNsdWRlIDxsaW51eC9iaXRzLmg+CisjaW5j bHVkZSA8bGludXgvbXV0ZXguaD4KICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCiAjaW5jbHVk ZSA8ZHJtL2RybV9kZXZpY2UuaD4KQEAgLTQzLDYgKzQ0LDE1IEBAIHN0cnVjdCBnZW5fcG9vbDsK ICNkZWZpbmUgTlBVX1JFR19CQVNFUF9ISSh4KQkoMHgwMDg0ICsgKHgpICogOCkKICNkZWZpbmUg TlBVX0JBU0VQX1JFR0lPTl9NQVgJOAogCisjZGVmaW5lIE5QVV9SRUdfUE1DUgkJMHgwMTgwCisj ZGVmaW5lIE5QVV9SRUdfUE1DTlRFTlNFVAkweDAxODQKKyNkZWZpbmUgTlBVX1JFR19QTUNOVEVO Q0xSCTB4MDE4OAorI2RlZmluZSBOUFVfUkVHX1BNQ0NOVFJfTE8JMHgwMUEwCisjZGVmaW5lIE5Q VV9SRUdfUE1DQ05UUl9ISQkweDAxQTQKKyNkZWZpbmUgTlBVX1JFR19QTUNDTlRSX0NGRwkweDAx QTgKKyNkZWZpbmUgTlBVX1JFR19QTVVfRVZDTlRSKHgpCSgweDAzMDAgKyAoeCkgKiA0KQorI2Rl ZmluZSBOUFVfUkVHX1BNVV9FVlRZUEVSKHgpCSgweDAzODAgKyAoeCkgKiA0KQorCiAjZGVmaW5l IElEX0FSQ0hfTUFKT1JfTUFTSwlHRU5NQVNLKDMxLCAyOCkKICNkZWZpbmUgSURfQVJDSF9NSU5P Ul9NQVNLCUdFTk1BU0soMjcsIDIwKQogI2RlZmluZSBJRF9BUkNIX1BBVENIX01BU0sJR0VOTUFT SygxOSwgMTYpCkBAIC02Nyw2ICs3NywxNSBAQCBzdHJ1Y3QgZ2VuX3Bvb2w7CiAKICNkZWZpbmUg UFJPVF9BQ1RJVkVfQ1NMCQlCSVQoMSkKIAorI2RlZmluZSBQTUNSX05VTV9FVkVOVF9DTlRfTUFT SwlHRU5NQVNLKDE1LCAxMSkKKyNkZWZpbmUgUE1DUl9DWUNMRV9DTlRfUlNUCUJJVCgyKQorI2Rl ZmluZSBQTUNSX0VWRU5UX0NOVF9SU1QJQklUKDEpCisjZGVmaW5lIFBNQ1JfQ05UX0VOCQlCSVQo MCkKKworI2RlZmluZSBQTVVfRVZfVFlQRV9OT05FCTAKKyNkZWZpbmUgUE1VX0VWX1RZUEVfQ1lD TEVTCTB4MTEKKyNkZWZpbmUgUE1VX0VWX1RZUEVfSURMRQkweDIwCisKIGVudW0gZXRob3N1X2Nt ZHMgewogCU5QVV9PUF9DT05WID0gMHgyLAogCU5QVV9PUF9ERVBUSFdJU0UgPSAweDMsCkBAIC0x NTIsNiArMTcxLDggQEAgZW51bSBldGhvc3VfY21kcyB7CiAKICNkZWZpbmUgRVRIT1NVX1NSQU1f UkVHSU9OCTIJLyogTWF0Y2hpbmcgVmVsYSBjb21waWxlciAqLwogCitzdHJ1Y3QgZXRob3N1X3Bl cmZtb247CisKIC8qKgogICogc3RydWN0IGV0aG9zdV9kZXZpY2UgLSBFdGhvc3UgZGV2aWNlCiAg Ki8KQEAgLTE2MSw2ICsxODIsNyBAQCBzdHJ1Y3QgZXRob3N1X2RldmljZSB7CiAKIAkvKiogQGlv bWVtOiBDUFUgbWFwcGluZyBvZiB0aGUgcmVnaXN0ZXJzLiAqLwogCXZvaWQgX19pb21lbSAqcmVn czsKKwl2b2lkIF9faW9tZW0gKnBtdV9yZWdzOwogCiAJdm9pZCBfX2lvbWVtICpzcmFtOwogCXN0 cnVjdCBnZW5fcG9vbCAqc3JhbXBvb2w7CkBAIC0xODQsNiArMjA2LDE3IEBAIHN0cnVjdCBldGhv c3VfZGV2aWNlIHsKIAlzdHJ1Y3QgbXV0ZXggc2NoZWRfbG9jazsKIAl1NjQgZmVuY2VfY29udGV4 dDsKIAl1NjQgZW1pdF9zZXFubzsKKworCS8qIFRyYWNrcyB0aGUgcGVyZm9ybWFuY2UgbW9uaXRv ciBzdGF0ZS4gKi8KKwlzdHJ1Y3QgeworCQkvKiBQcm90ZWN0cyBAYWN0aXZlLiAqLworCQlzdHJ1 Y3QgbXV0ZXggbG9jazsKKworCQkvKiBQZXJmbW9uIGN1cnJlbnRseSBwcm9ncmFtbWVkIGluIEhX IChvciBOVUxMIGlmIG5vbmUpLiAqLworCQlzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKmFjdGl2ZTsK Kwl9IHBlcmZtb25fc3RhdGU7CisKKwlzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKmdsb2JhbF9wZXJm bW9uOwogfTsKIAogI2RlZmluZSB0b19ldGhvc3VfZGV2aWNlKGRybV9kZXYpIFwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9kcnYuYyBiL2RyaXZlcnMvYWNjZWwvZXRo b3N1L2V0aG9zdV9kcnYuYwppbmRleCA5OTkyMTkzZDczMzguLmZlZjQ3MTNlODA2MSAxMDA2NDQK LS0tIGEvZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2Rydi5jCisrKyBiL2RyaXZlcnMvYWNj ZWwvZXRob3N1L2V0aG9zdV9kcnYuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgPGRybS9k cm1fdXRpbHMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgogI2luY2x1ZGUgPGRybS9kcm1f YWNjZWwuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX21hbmFnZWQuaD4KICNpbmNsdWRlIDxkcm0vZXRo b3N1X2FjY2VsLmg+CiAKICNpbmNsdWRlICJldGhvc3VfZHJ2LmgiCkBAIC0xNTUsNiArMTU2LDcg QEAgc3RhdGljIGludCBldGhvc3Vfb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwgc3RydWN0 IGRybV9maWxlICpmaWxlKQogCWlmIChyZXQpCiAJCWdvdG8gZXJyX3B1dF9tb2Q7CiAKKwlldGhv c3VfcGVyZm1vbl9vcGVuX2ZpbGUocHJpdik7CiAJZmlsZS0+ZHJpdmVyX3ByaXYgPSBub19mcmVl X3B0cihwcml2KTsKIAlyZXR1cm4gMDsKIApAQCAtMTY2LDYgKzE2OCw3IEBAIHN0YXRpYyBpbnQg ZXRob3N1X29wZW4oc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKIHN0YXRpYyB2b2lkIGV0aG9zdV9wb3N0Y2xvc2Uoc3RydWN0IGRybV9kZXZpY2UgKmRkZXYs IHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKIAlldGhvc3Vfam9iX2Nsb3NlKGZpbGUtPmRyaXZl cl9wcml2KTsKKwlldGhvc3VfcGVyZm1vbl9jbG9zZV9maWxlKGZpbGUtPmRyaXZlcl9wcml2KTsK IAlrZnJlZShmaWxlLT5kcml2ZXJfcHJpdik7CiAJbW9kdWxlX3B1dChUSElTX01PRFVMRSk7CiB9 CkBAIC0xODAsNiArMTgzLDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2Mg ZXRob3N1X2RybV9kcml2ZXJfaW9jdGxzW10gPSB7CiAJRVRIT1NVX0lPQ1RMKEJPX01NQVBfT0ZG U0VULCBib19tbWFwX29mZnNldCwgMCksCiAJRVRIT1NVX0lPQ1RMKENNRFNUUkVBTV9CT19DUkVB VEUsIGNtZHN0cmVhbV9ib19jcmVhdGUsIDApLAogCUVUSE9TVV9JT0NUTChTVUJNSVQsIHN1Ym1p dCwgMCksCisJRVRIT1NVX0lPQ1RMKFBFUkZNT05fQ1JFQVRFLCBwZXJmbW9uX2NyZWF0ZSwgMCks CisJRVRIT1NVX0lPQ1RMKFBFUkZNT05fREVTVFJPWSwgcGVyZm1vbl9kZXN0cm95LCAwKSwKKwlF VEhPU1VfSU9DVEwoUEVSRk1PTl9HRVRfVkFMVUVTLCBwZXJmbW9uX2dldF92YWx1ZXMsIDApLAor CUVUSE9TVV9JT0NUTChQRVJGTU9OX1NFVF9HTE9CQUwsIHBlcmZtb25fc2V0X2dsb2JhbCwgMCks CiB9OwogCiBERUZJTkVfRFJNX0FDQ0VMX0ZPUFMoZXRob3N1X2RybV9kcml2ZXJfZm9wcyk7CkBA IC0zMTUsOCArMzIyLDE0IEBAIHN0YXRpYyBpbnQgZXRob3N1X2luaXQoc3RydWN0IGV0aG9zdV9k ZXZpY2UgKmV0aG9zdWRldikKIAogCWV0aG9zdV9zcmFtX2luaXQoZXRob3N1ZGV2KTsKIAorCWlm ICghZXRob3N1X2lzX3U2NShldGhvc3VkZXYpKQorCQlldGhvc3VkZXYtPnBtdV9yZWdzICs9IDB4 MTAwMDsKKworCWV0aG9zdWRldi0+bnB1X2luZm8ucG11X2NvdW50ZXJzID0gRklFTERfR0VUKFBN Q1JfTlVNX0VWRU5UX0NOVF9NQVNLLAorCQlyZWFkbF9yZWxheGVkKGV0aG9zdWRldi0+cG11X3Jl Z3MgKyBOUFVfUkVHX1BNQ1IpKTsKKwogCWRldl9pbmZvKGV0aG9zdWRldi0+YmFzZS5kZXYsCi0J CSAiRXRob3MtVSBOUFUsIGFyY2ggdiVsZC4lbGQuJWxkLCByZXYgciVsZHAlbGQsIGNtZCBzdHJl YW0gdmVyJWxkLCAlZCBNQUNzLCAlZEtCIFNSQU1cbiIsCisJCSAiRXRob3MtVSBOUFUsIGFyY2gg diVsZC4lbGQuJWxkLCByZXYgciVsZHAlbGQsIGNtZCBzdHJlYW0gdmVyJWxkLCAlZCBNQUNzLCAl ZEtCIFNSQU0sICVkIFBNVSBjbnRyc1xuIiwKIAkJIEZJRUxEX0dFVChJRF9BUkNIX01BSk9SX01B U0ssIGlkKSwKIAkJIEZJRUxEX0dFVChJRF9BUkNIX01JTk9SX01BU0ssIGlkKSwKIAkJIEZJRUxE X0dFVChJRF9BUkNIX1BBVENIX01BU0ssIGlkKSwKQEAgLTMyNCw3ICszMzcsOCBAQCBzdGF0aWMg aW50IGV0aG9zdV9pbml0KHN0cnVjdCBldGhvc3VfZGV2aWNlICpldGhvc3VkZXYpCiAJCSBGSUVM RF9HRVQoSURfVkVSX01JTk9SX01BU0ssIGlkKSwKIAkJIEZJRUxEX0dFVChDT05GSUdfQ01EX1NU UkVBTV9WRVJfTUFTSywgY29uZmlnKSwKIAkJIDEgPDwgRklFTERfR0VUKENPTkZJR19NQUNTX1BF Ul9DQ19NQVNLLCBjb25maWcpLAotCQkgZXRob3N1ZGV2LT5ucHVfaW5mby5zcmFtX3NpemUgLyAx MDI0KTsKKwkJIGV0aG9zdWRldi0+bnB1X2luZm8uc3JhbV9zaXplIC8gMTAyNCwKKwkJIGV0aG9z dWRldi0+bnB1X2luZm8ucG11X2NvdW50ZXJzKTsKIAogCXJldHVybiAwOwogfQpAQCAtMzQzLDEx ICszNTcsMTYgQEAgc3RhdGljIGludCBldGhvc3VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKIAlkbWFfc2V0X21hc2tfYW5kX2NvaGVyZW50KCZwZGV2LT5kZXYsIERNQV9CSVRf TUFTSyg0MCkpOwogCiAJZXRob3N1ZGV2LT5yZWdzID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jl c291cmNlKHBkZXYsIDApOworCWV0aG9zdWRldi0+cG11X3JlZ3MgPSBldGhvc3VkZXYtPnJlZ3M7 CiAKIAlldGhvc3VkZXYtPm51bV9jbGtzID0gZGV2bV9jbGtfYnVsa19nZXRfYWxsKCZwZGV2LT5k ZXYsICZldGhvc3VkZXYtPmNsa3MpOwogCWlmIChldGhvc3VkZXYtPm51bV9jbGtzIDwgMCkKIAkJ cmV0dXJuIGV0aG9zdWRldi0+bnVtX2Nsa3M7CiAKKwlyZXQgPSBkcm1tX211dGV4X2luaXQoJmV0 aG9zdWRldi0+YmFzZSwgJmV0aG9zdWRldi0+cGVyZm1vbl9zdGF0ZS5sb2NrKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCiAJcmV0ID0gZXRob3N1X2pvYl9pbml0KGV0aG9zdWRldik7CiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNjZWwvZXRob3N1 L2V0aG9zdV9kcnYuaCBiL2RyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9kcnYuaAppbmRleCA5 ZTIxZGZlOTQxODQuLjIxOTNiYzUxZDQyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hY2NlbC9ldGhv c3UvZXRob3N1X2Rydi5oCisrKyBiL2RyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9kcnYuaApA QCAtMSwxNSArMSw3NCBAQAogLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eSBPUiBNSVQgKi8KLS8qIENvcHlyaWdodCAyMDI1IEFybSwgTHRkLiAqLworLyogQ29weXJpZ2h0 IDIwMjUtMjAyNiBBcm0sIEx0ZC4gKi8KICNpZm5kZWYgX19FVEhPU1VfRFJWX0hfXwogI2RlZmlu ZSBfX0VUSE9TVV9EUlZfSF9fCiAKKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPgorI2luY2x1ZGUg PGxpbnV4L3hhcnJheS5oPgogI2luY2x1ZGUgPGRybS9ncHVfc2NoZWR1bGVyLmg+CiAKIHN0cnVj dCBldGhvc3VfZGV2aWNlOworc3RydWN0IGRybV9kZXZpY2U7CitzdHJ1Y3QgZHJtX2ZpbGU7CiAK IHN0cnVjdCBldGhvc3VfZmlsZV9wcml2IHsKIAlzdHJ1Y3QgZXRob3N1X2RldmljZSAqZWRldjsK IAlzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSBzY2hlZF9lbnRpdHk7CisJc3RydWN0IHhhcnJheSBw ZXJmbW9uczsKIH07CiAKKy8qIFBlcmZvcm1hbmNlIG1vbml0b3Igb2JqZWN0LiBUaGUgcGVyZm1v biBsaWZldGltZSBpcyBjb250cm9sbGVkIGJ5IHVzZXJzcGFjZQorICogdXNpbmcgcGVyZm1vbiBy ZWxhdGVkIGlvY3Rscy4gQSBwZXJmbW9uIGNhbiBiZSBhdHRhY2hlZCB0byBhIERSTV9FVEhPU1Vf U1VCTUlUCisgKiByZXF1ZXN0LCBhbmQgd2hlbiB0aGlzIGlzIHRoZSBjYXNlLCBIVyBwZXJmIGNv dW50ZXJzIHdpbGwgYmUgYWN0aXZhdGVkIGp1c3QKKyAqIGJlZm9yZSB0aGUgam9iIGlzIHN1Ym1p dHRlZCB0byB0aGUgTlBVIGFuZCBkaXNhYmxlZCB3aGVuIHRoZSBqb2IgaXMKKyAqIGRvbmUuIFRo aXMgd2F5LCBvbmx5IGV2ZW50cyByZWxhdGVkIHRvIGEgc3BlY2lmaWMgam9iIHdpbGwgYmUgY291 bnRlZC4KKyAqLworc3RydWN0IGV0aG9zdV9wZXJmbW9uIHsKKwkvKiBUcmFja3MgdGhlIG51bWJl ciBvZiB1c2VycyBvZiB0aGUgcGVyZm1vbiwgd2hlbiB0aGlzIGNvdW50ZXIgcmVhY2hlcworCSAq IHplcm8gdGhlIHBlcmZtb24gaXMgZGVzdHJveWVkLgorCSAqLworCXJlZmNvdW50X3QgcmVmY250 OworCisJLyogTnVtYmVyIG9mIGNvdW50ZXJzIGFjdGl2YXRlZCBpbiB0aGlzIHBlcmZtb24gaW5z dGFuY2UKKwkgKiAoc2hvdWxkIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byBEUk1fRVRIT1NVX01B WF9QRVJGX0NPVU5URVJTKS4KKwkgKi8KKwl1OCBuY291bnRlcnM7CisKKwkvKiBFdmVudHMgY291 bnRlZCBieSB0aGUgSFcgcGVyZiBjb3VudGVycy4gKi8KKwl1MTYgY291bnRlcnNbRFJNX0VUSE9T VV9NQVhfUEVSRl9FVkVOVF9DT1VOVEVSU107CisKKwkvKgorCSAqIFN0b3JhZ2UgZm9yIGNvdW50 ZXIgdmFsdWVzLiBDb3VudGVycyBhcmUgaW5jcmVtZW50ZWQgYnkgdGhlIEhXCisJICogcGVyZiBj b3VudGVyIHZhbHVlcyBldmVyeSB0aW1lIHRoZSBwZXJmbW9uIGlzIGF0dGFjaGVkIHRvIGFuCisJ ICogTlBVIGpvYi4gVGhpcyB3YXksIHBlcmZtb24gdXNlcnMgZG9uJ3QgaGF2ZSB0byByZXRyaWV2 ZSB0aGUKKwkgKiByZXN1bHRzIGFmdGVyIGVhY2ggam9iIGlmIHRoZXkgd2FudCB0byB0cmFjayBl dmVudHMgY292ZXJpbmcKKwkgKiBzZXZlcmFsIHN1Ym1pc3Npb25zLiBOb3RlIHRoYXQgY291bnRl ciB2YWx1ZXMgY2FuJ3QgYmUgcmVzZXQsCisJICogYnV0IHlvdSBjYW4gZmFrZSBhIHJlc2V0IGJ5 IGRlc3Ryb3lpbmcgdGhlIHBlcmZtb24gYW5kCisJICogY3JlYXRpbmcgYSBuZXcgb25lLgorCSAq LworCXU2NCB2YWx1ZXNbXSBfX2NvdW50ZWRfYnkobmNvdW50ZXJzKTsKK307CisKKy8qIGV0aG9z dV9wZXJmbW9uLmMgKi8KK3ZvaWQgZXRob3N1X3BlcmZtb25fZ2V0KHN0cnVjdCBldGhvc3VfcGVy Zm1vbiAqcGVyZm1vbik7Cit2b2lkIGV0aG9zdV9wZXJmbW9uX3B1dChzdHJ1Y3QgZXRob3N1X3Bl cmZtb24gKnBlcmZtb24pOwordm9pZCBldGhvc3VfcGVyZm1vbl9zdGFydChzdHJ1Y3QgZXRob3N1 X2RldmljZSAqZXRob3N1LAorCQkJICBzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb24pOwor dm9pZCBldGhvc3VfcGVyZm1vbl9zdG9wKHN0cnVjdCBldGhvc3VfZGV2aWNlICpldGhvc3UsCisJ CQkgc3RydWN0IGV0aG9zdV9wZXJmbW9uICpwZXJmbW9uLCBib29sIGNhcHR1cmUpOwordm9pZCBl dGhvc3VfcGVyZm1vbl9zdG9wX2xvY2tlZChzdHJ1Y3QgZXRob3N1X2RldmljZSAqZXRob3N1LCBz dHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb24sCisJCQkJYm9vbCBjYXB0dXJlKTsKK3N0cnVj dCBldGhvc3VfcGVyZm1vbiAqZXRob3N1X3BlcmZtb25fZmluZChzdHJ1Y3QgZXRob3N1X2ZpbGVf cHJpdiAqZXRob3N1X3ByaXYsCisJCQkJCSAgIGludCBpZCk7Cit2b2lkIGV0aG9zdV9wZXJmbW9u X29wZW5fZmlsZShzdHJ1Y3QgZXRob3N1X2ZpbGVfcHJpdiAqZXRob3N1X3ByaXYpOwordm9pZCBl dGhvc3VfcGVyZm1vbl9jbG9zZV9maWxlKHN0cnVjdCBldGhvc3VfZmlsZV9wcml2ICpldGhvc3Vf cHJpdik7CitpbnQgZXRob3N1X2lvY3RsX3BlcmZtb25fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50 IGV0aG9zdV9pb2N0bF9wZXJmbW9uX2Rlc3Ryb3koc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKKwkJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGV0aG9zdV9p b2N0bF9wZXJmbW9uX2dldF92YWx1ZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKKwkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworaW50IGV0aG9zdV9pb2N0 bF9wZXJmbW9uX3NldF9nbG9iYWwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK KwkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOworCiAjZW5kaWYKZGlmZiAtLWdp dCBhL2RyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9qb2IuYyBiL2RyaXZlcnMvYWNjZWwvZXRo b3N1L2V0aG9zdV9qb2IuYwppbmRleCBiNzY5MjQ2NDVhYWEuLjk5ZGVjMzNmNTI2YiAxMDA2NDQK LS0tIGEvZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2pvYi5jCisrKyBiL2RyaXZlcnMvYWNj ZWwvZXRob3N1L2V0aG9zdV9qb2IuYwpAQCAtMSw2ICsxLDYgQEAKIC8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgTUlUCiAvKiBDb3B5cmlnaHQgMjAyNC0yMDI1IFRv bWV1IFZpem9zbyA8dG9tZXVAdG9tZXV2aXpvc28ubmV0PiAqLwotLyogQ29weXJpZ2h0IDIwMjUg QXJtLCBMdGQuICovCisvKiBDb3B5cmlnaHQgMjAyNS0yMDI2IEFybSwgTHRkLiAqLwogCiAjaW5j bHVkZSA8bGludXgvYml0ZmllbGQuaD4KICNpbmNsdWRlIDxsaW51eC9nZW5hbGxvYy5oPgpAQCAt MTQ3LDYgKzE0Nyw4IEBAIHN0YXRpYyB2b2lkIGV0aG9zdV9qb2JfZXJyX2NsZWFudXAoc3RydWN0 IGV0aG9zdV9qb2IgKmpvYikKIHsKIAl1bnNpZ25lZCBpbnQgaTsKIAorCWV0aG9zdV9wZXJmbW9u X3B1dChqb2ItPnBlcmZtb24pOworCiAJZm9yIChpID0gMDsgaSA8IGpvYi0+cmVnaW9uX2NudDsg aSsrKQogCQlkcm1fZ2VtX29iamVjdF9wdXQoam9iLT5yZWdpb25fYm9baV0pOwogCkBAIC0xODEs NiArMTgzLDI2IEBAIHN0YXRpYyB2b2lkIGV0aG9zdV9qb2JfZnJlZShzdHJ1Y3QgZHJtX3NjaGVk X2pvYiAqc2NoZWRfam9iKQogCWV0aG9zdV9qb2JfcHV0KGpvYik7CiB9CiAKK3N0YXRpYyB2b2lk CitldGhvc3Vfc3dpdGNoX3BlcmZtb24oc3RydWN0IGV0aG9zdV9kZXZpY2UgKmV0aG9zdSwgc3Ry dWN0IGV0aG9zdV9qb2IgKmpvYikKK3sKKwlzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb247 CisKKwlndWFyZChtdXRleCkoJmV0aG9zdS0+cGVyZm1vbl9zdGF0ZS5sb2NrKTsKKworCXBlcmZt b24gPSBldGhvc3UtPmdsb2JhbF9wZXJmbW9uOworCWlmICghcGVyZm1vbikKKwkJcGVyZm1vbiA9 IGpvYi0+cGVyZm1vbjsKKworCWlmIChwZXJmbW9uID09IGV0aG9zdS0+cGVyZm1vbl9zdGF0ZS5h Y3RpdmUpCisJCXJldHVybjsKKworCWV0aG9zdV9wZXJmbW9uX3N0b3BfbG9ja2VkKGV0aG9zdSwg ZXRob3N1LT5wZXJmbW9uX3N0YXRlLmFjdGl2ZSwgdHJ1ZSk7CisKKwlpZiAocGVyZm1vbikKKwkJ ZXRob3N1X3BlcmZtb25fc3RhcnQoZXRob3N1LCBwZXJmbW9uKTsKK30KKwogc3RhdGljIHN0cnVj dCBkbWFfZmVuY2UgKmV0aG9zdV9qb2JfcnVuKHN0cnVjdCBkcm1fc2NoZWRfam9iICpzY2hlZF9q b2IpCiB7CiAJc3RydWN0IGV0aG9zdV9qb2IgKmpvYiA9IHRvX2V0aG9zdV9qb2Ioc2NoZWRfam9i KTsKQEAgLTE5NCw2ICsyMTYsOCBAQCBzdGF0aWMgc3RydWN0IGRtYV9mZW5jZSAqZXRob3N1X2pv Yl9ydW4oc3RydWN0IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYikKIAkJICAgICAgIGRldi0+ZmVu Y2VfY29udGV4dCwgKytkZXYtPmVtaXRfc2Vxbm8pOwogCWRtYV9mZW5jZV9nZXQoZmVuY2UpOwog CisJZXRob3N1X3N3aXRjaF9wZXJmbW9uKGRldiwgam9iKTsKKwogCXNjb3BlZF9ndWFyZChtdXRl eCwgJmRldi0+am9iX2xvY2spIHsKIAkJZGV2LT5pbl9mbGlnaHRfam9iID0gam9iOwogCQlldGhv c3Vfam9iX2h3X3N1Ym1pdChkZXYsIGpvYik7CkBAIC0zNjUsNyArMzg5LDggQEAgdm9pZCBldGhv c3Vfam9iX2Nsb3NlKHN0cnVjdCBldGhvc3VfZmlsZV9wcml2ICpldGhvc3VfcHJpdikKIH0KIAog c3RhdGljIGludCBldGhvc3VfaW9jdGxfc3VibWl0X2pvYihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCi0JCQkJICAgc3RydWN0IGRybV9ldGhvc3Vfam9iICpq b2IpCisJCQkJICAgc3RydWN0IGRybV9ldGhvc3Vfam9iICpqb2IsCisJCQkJICAgaW50IHBlcmZt b25faWQpCiB7CiAJc3RydWN0IGV0aG9zdV9kZXZpY2UgKmVkZXYgPSB0b19ldGhvc3VfZGV2aWNl KGRldik7CiAJc3RydWN0IGV0aG9zdV9maWxlX3ByaXYgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZl cl9wcml2OwpAQCAtMzg5LDYgKzQxNCw5IEBAIHN0YXRpYyBpbnQgZXRob3N1X2lvY3RsX3N1Ym1p dF9qb2Ioc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlCiAJZWpv Yi0+ZGV2ID0gZWRldjsKIAllam9iLT5zcmFtX3NpemUgPSBqb2ItPnNyYW1fc2l6ZTsKIAorCWlm IChwZXJmbW9uX2lkKQorCQllam9iLT5wZXJmbW9uID0gZXRob3N1X3BlcmZtb25fZmluZChmaWxl X3ByaXYsIHBlcmZtb25faWQpOworCiAJZWpvYi0+ZG9uZV9mZW5jZSA9IGt6YWxsb2Nfb2JqKCpl am9iLT5kb25lX2ZlbmNlKTsKIAlpZiAoIWVqb2ItPmRvbmVfZmVuY2UpIHsKIAkJcmV0ID0gLUVO T01FTTsKQEAgLTQ5MSwxMSArNTE5LDYgQEAgaW50IGV0aG9zdV9pb2N0bF9zdWJtaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWwKIAlpbnQg cmV0ID0gMDsKIAl1bnNpZ25lZCBpbnQgaSA9IDA7CiAKLQlpZiAoYXJncy0+cGFkKSB7Ci0JCWRy bV9kYmcoZGV2LCAiUmVzZXJ2ZWQgZmllbGQgaW4gZHJtX2V0aG9zdV9zdWJtaXQgc3RydWN0IHNo b3VsZCBiZSAwLlxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQogCXN0cnVjdCBkcm1fZXRo b3N1X2pvYiBfX2ZyZWUoa3ZmcmVlKSAqam9icyA9CiAJCWt2bWFsbG9jX29ianMoKmpvYnMsIGFy Z3MtPmpvYl9jb3VudCk7CiAJaWYgKCFqb2JzKQpAQCAtNTA5LDcgKzUzMiw3IEBAIGludCBldGhv c3VfaW9jdGxfc3VibWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVj dCBkcm1fZmlsZSAqZmlsCiAJfQogCiAJZm9yIChpID0gMDsgaSA8IGFyZ3MtPmpvYl9jb3VudDsg aSsrKSB7Ci0JCXJldCA9IGV0aG9zdV9pb2N0bF9zdWJtaXRfam9iKGRldiwgZmlsZSwgJmpvYnNb aV0pOworCQlyZXQgPSBldGhvc3VfaW9jdGxfc3VibWl0X2pvYihkZXYsIGZpbGUsICZqb2JzW2ld LCBhcmdzLT5wZXJmbW9uX2lkKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9hY2NlbC9ldGhvc3UvZXRob3N1X2pvYi5oIGIvZHJpdmVycy9hY2Nl bC9ldGhvc3UvZXRob3N1X2pvYi5oCmluZGV4IGZmMWNmNDQ4ZDA5NC4uODk4OGVkZDAwZWVkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3Vfam9iLmgKKysrIGIvZHJpdmVy cy9hY2NlbC9ldGhvc3UvZXRob3N1X2pvYi5oCkBAIC0yMSw2ICsyMSw4IEBAIHN0cnVjdCBldGhv c3Vfam9iIHsKIAl1OCByZWdpb25fY250OwogCXUzMiBzcmFtX3NpemU7CiAKKwlzdHJ1Y3QgZXRo b3N1X3BlcmZtb24gKnBlcmZtb247CisKIAkvKiBGZW5jZSB0byBiZSBzaWduYWxlZCBieSBkcm0t c2NoZWQgb25jZSBpdHMgZG9uZSB3aXRoIHRoZSBqb2IgKi8KIAlzdHJ1Y3QgZG1hX2ZlbmNlICpp bmZlcmVuY2VfZG9uZV9mZW5jZTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY2NlbC9ldGhvc3Uv ZXRob3N1X3BlcmZtb24uYyBiL2RyaXZlcnMvYWNjZWwvZXRob3N1L2V0aG9zdV9wZXJmbW9uLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yNmY2MjUzNzRmOWQKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2FjY2VsL2V0aG9zdS9ldGhvc3VfcGVyZm1vbi5jCkBA IC0wLDAgKzEsMzAxIEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5 IE9SIE1JVAorLyogQ29weXJpZ2h0IDIwMjYgQXJtLCBMdGQuICovCisvKiBCYXNlZCBvbiB2M2Rf cGVyZm1vbi5jLCBDb3B5cmlnaHQgKEMpIDIwMjEgUmFzcGJlcnJ5IFBpICovCisKKyNpbmNsdWRl IDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgorI2luY2x1ZGUgPGxp bnV4L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxp bnV4L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC91YWNjZXNzLmg+CisKKyNpbmNsdWRlIDxkcm0v ZHJtX2ZpbGUuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2lvY3RsLmg+CisKKyNpbmNsdWRlIDx1YXBp L2RybS9ldGhvc3VfYWNjZWwuaD4KKworI2luY2x1ZGUgImV0aG9zdV9kcnYuaCIKKyNpbmNsdWRl ICJldGhvc3VfZGV2aWNlLmgiCisKK3ZvaWQgZXRob3N1X3BlcmZtb25fZ2V0KHN0cnVjdCBldGhv c3VfcGVyZm1vbiAqcGVyZm1vbikKK3sKKwlpZiAocGVyZm1vbikKKwkJcmVmY291bnRfaW5jKCZw ZXJmbW9uLT5yZWZjbnQpOworfQorCit2b2lkIGV0aG9zdV9wZXJmbW9uX3B1dChzdHJ1Y3QgZXRo b3N1X3BlcmZtb24gKnBlcmZtb24pCit7CisJaWYgKHBlcmZtb24gJiYgcmVmY291bnRfZGVjX2Fu ZF90ZXN0KCZwZXJmbW9uLT5yZWZjbnQpKQorCQlrZnJlZShwZXJmbW9uKTsKK30KKwordm9pZCBl dGhvc3VfcGVyZm1vbl9zdGFydChzdHJ1Y3QgZXRob3N1X2RldmljZSAqZXRob3N1LCBzdHJ1Y3Qg ZXRob3N1X3BlcmZtb24gKnBlcmZtb24pCit7CisJdW5zaWduZWQgaW50IGk7CisJdTggbmNvdW50 ZXJzOworCXUzMiBtYXNrOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZXRob3N1LT5wZXJmbW9u X3N0YXRlLmxvY2spOworCisJaWYgKFdBUk5fT05fT05DRSghcGVyZm1vbiB8fCBldGhvc3UtPnBl cmZtb25fc3RhdGUuYWN0aXZlKSkKKwkJcmV0dXJuOworCisJd3JpdGVsX3JlbGF4ZWQoUE1DUl9D TlRfRU4sIGV0aG9zdS0+cG11X3JlZ3MgKyBOUFVfUkVHX1BNQ1IpOworCXdyaXRlbF9yZWxheGVk KFBNVV9FVl9UWVBFX0NZQ0xFUywgZXRob3N1LT5wbXVfcmVncyArIE5QVV9SRUdfUE1DQ05UUl9D RkcpOworCisJbWFzayA9IDB4ODAwMDAwMDA7CisJbmNvdW50ZXJzID0gcGVyZm1vbi0+bmNvdW50 ZXJzIC0gMTsKKwlpZiAobmNvdW50ZXJzKQorCQltYXNrIHw9IEdFTk1BU0sobmNvdW50ZXJzIC0g MSwgMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbmNvdW50ZXJzOyBpKyspCisJCXdyaXRlbF9yZWxh eGVkKHBlcmZtb24tPmNvdW50ZXJzW2ldLCBldGhvc3UtPnBtdV9yZWdzICsgTlBVX1JFR19QTVVf RVZUWVBFUihpKSk7CisKKwl3cml0ZWxfcmVsYXhlZChtYXNrLCBldGhvc3UtPnBtdV9yZWdzICsg TlBVX1JFR19QTUNOVEVOU0VUKTsKKwl3cml0ZWxfcmVsYXhlZChQTUNSX0NOVF9FTiB8IFBNQ1Jf RVZFTlRfQ05UX1JTVCB8IFBNQ1JfQ1lDTEVfQ05UX1JTVCwKKwkJZXRob3N1LT5wbXVfcmVncyAr IE5QVV9SRUdfUE1DUik7CisJZXRob3N1LT5wZXJmbW9uX3N0YXRlLmFjdGl2ZSA9IHBlcmZtb247 Cit9CisKK3ZvaWQgZXRob3N1X3BlcmZtb25fc3RvcF9sb2NrZWQoc3RydWN0IGV0aG9zdV9kZXZp Y2UgKmV0aG9zdSwgc3RydWN0IGV0aG9zdV9wZXJmbW9uICpwZXJmbW9uLAorCQkJCWJvb2wgY2Fw dHVyZSkKK3sKKwl1bnNpZ25lZCBpbnQgaTsKKwl1OCBuY291bnRlcnM7CisJdTMyIG1hc2s7CisK Kwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZldGhvc3UtPnBlcmZtb25fc3RhdGUubG9jayk7CisKKwlp ZiAoIXBlcmZtb24gfHwgcGVyZm1vbiAhPSBldGhvc3UtPnBlcmZtb25fc3RhdGUuYWN0aXZlKQor CQlyZXR1cm47CisKKwluY291bnRlcnMgPSBwZXJmbW9uLT5uY291bnRlcnMgLSAxOworCisJaWYg KCFwbV9ydW50aW1lX2dldF9pZl9hY3RpdmUoZXRob3N1LT5iYXNlLmRldikpIHsKKwkJZXRob3N1 LT5wZXJmbW9uX3N0YXRlLmFjdGl2ZSA9IE5VTEw7CisJCXJldHVybjsKKwl9CisKKwlpZiAoY2Fw dHVyZSkgeworCQlmb3IgKGkgPSAwOyBpIDwgbmNvdW50ZXJzOyBpKyspCisJCQlwZXJmbW9uLT52 YWx1ZXNbaV0gKz0gcmVhZGxfcmVsYXhlZChldGhvc3UtPnBtdV9yZWdzICsgTlBVX1JFR19QTVVf RVZDTlRSKGkpKTsKKworCQlwZXJmbW9uLT52YWx1ZXNbbmNvdW50ZXJzXSArPQorCQkJcmVhZGxf cmVsYXhlZChldGhvc3UtPnBtdV9yZWdzICsgTlBVX1JFR19QTUNDTlRSX0xPKSB8CisJCQkodTY0 KXJlYWRsX3JlbGF4ZWQoZXRob3N1LT5wbXVfcmVncyArIE5QVV9SRUdfUE1DQ05UUl9ISSkgPDwg MzI7CisJfQorCisJbWFzayA9IDB4ODAwMDAwMDA7CisJaWYgKG5jb3VudGVycykKKwkJbWFzayB8 PSBHRU5NQVNLKG5jb3VudGVycyAtIDEsIDApOworCXdyaXRlbF9yZWxheGVkKG1hc2ssIGV0aG9z dS0+cG11X3JlZ3MgKyBOUFVfUkVHX1BNQ05URU5DTFIpOworCisJd3JpdGVsX3JlbGF4ZWQoMCwg ZXRob3N1LT5wbXVfcmVncyArIE5QVV9SRUdfUE1DUik7CisJZXRob3N1LT5wZXJmbW9uX3N0YXRl LmFjdGl2ZSA9IE5VTEw7CisKKwlwbV9ydW50aW1lX3B1dChldGhvc3UtPmJhc2UuZGV2KTsKK30K Kwordm9pZCBldGhvc3VfcGVyZm1vbl9zdG9wKHN0cnVjdCBldGhvc3VfZGV2aWNlICpldGhvc3Us IHN0cnVjdCBldGhvc3VfcGVyZm1vbiAqcGVyZm1vbiwKKwkJCSBib29sIGNhcHR1cmUpCit7CisJ aWYgKCFwZXJmbW9uKQorCQlyZXR1cm47CisKKwlndWFyZChtdXRleCkoJmV0aG9zdS0+cGVyZm1v bl9zdGF0ZS5sb2NrKTsKKwlldGhvc3VfcGVyZm1vbl9zdG9wX2xvY2tlZChldGhvc3UsIHBlcmZt b24sIGNhcHR1cmUpOworfQorCitzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKmV0aG9zdV9wZXJmbW9u X2ZpbmQoc3RydWN0IGV0aG9zdV9maWxlX3ByaXYgKmV0aG9zdV9wcml2LCBpbnQgaWQpCit7CisJ c3RydWN0IGV0aG9zdV9wZXJmbW9uICpwZXJmbW9uOworCisJeGFfbG9jaygmZXRob3N1X3ByaXYt PnBlcmZtb25zKTsKKwlwZXJmbW9uID0geGFfbG9hZCgmZXRob3N1X3ByaXYtPnBlcmZtb25zLCBp ZCk7CisJZXRob3N1X3BlcmZtb25fZ2V0KHBlcmZtb24pOworCXhhX3VubG9jaygmZXRob3N1X3By aXYtPnBlcmZtb25zKTsKKworCXJldHVybiBwZXJmbW9uOworfQorCit2b2lkIGV0aG9zdV9wZXJm bW9uX29wZW5fZmlsZShzdHJ1Y3QgZXRob3N1X2ZpbGVfcHJpdiAqZXRob3N1X3ByaXYpCit7CisJ eGFfaW5pdF9mbGFncygmZXRob3N1X3ByaXYtPnBlcmZtb25zLCBYQV9GTEFHU19BTExPQzEpOwor fQorCitzdGF0aWMgdm9pZCBldGhvc3VfcGVyZm1vbl9kZWxldGUoc3RydWN0IGV0aG9zdV9maWxl X3ByaXYgKmV0aG9zdV9wcml2LAorCQkJCSBzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb24p Cit7CisJc3RydWN0IGV0aG9zdV9kZXZpY2UgKmV0aG9zdSA9IGV0aG9zdV9wcml2LT5lZGV2Owor CisJLyogSWYgdGhlIGFjdGl2ZSBwZXJmbW9uIGlzIGJlaW5nIGRlc3Ryb3llZCwgc3RvcCBpdCBm aXJzdCAqLworCXNjb3BlZF9ndWFyZChtdXRleCwgJmV0aG9zdS0+cGVyZm1vbl9zdGF0ZS5sb2Nr KSB7CisJCS8qIElmIHRoZSBnbG9iYWwgcGVyZm1vbiBpcyBiZWluZyBkZXN0cm95ZWQsIHNldCBp dCB0byBOVUxMICovCisJCWlmIChldGhvc3UtPmdsb2JhbF9wZXJmbW9uID09IHBlcmZtb24pIHsK KwkJCWV0aG9zdS0+Z2xvYmFsX3BlcmZtb24gPSBOVUxMOworCQkJZXRob3N1X3BlcmZtb25fcHV0 KHBlcmZtb24pOworCQl9CisKKwkJZXRob3N1X3BlcmZtb25fc3RvcF9sb2NrZWQoZXRob3N1LCBw ZXJmbW9uLCBmYWxzZSk7CisJfQorCisJZXRob3N1X3BlcmZtb25fcHV0KHBlcmZtb24pOworfQor Cit2b2lkIGV0aG9zdV9wZXJmbW9uX2Nsb3NlX2ZpbGUoc3RydWN0IGV0aG9zdV9maWxlX3ByaXYg KmV0aG9zdV9wcml2KQoreworCXN0cnVjdCBldGhvc3VfcGVyZm1vbiAqcGVyZm1vbjsKKwl1bnNp Z25lZCBsb25nIGlkOworCisJeGFfZm9yX2VhY2goJmV0aG9zdV9wcml2LT5wZXJmbW9ucywgaWQs IHBlcmZtb24pCisJCWV0aG9zdV9wZXJmbW9uX2RlbGV0ZShldGhvc3VfcHJpdiwgcGVyZm1vbik7 CisKKwl4YV9kZXN0cm95KCZldGhvc3VfcHJpdi0+cGVyZm1vbnMpOworfQorCitpbnQgZXRob3N1 X2lvY3RsX3BlcmZtb25fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CisJCQkgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQoreworCXN0cnVjdCBldGhvc3Vf ZmlsZV9wcml2ICpldGhvc3VfcHJpdiA9IGZpbGVfcHJpdi0+ZHJpdmVyX3ByaXY7CisJc3RydWN0 IGRybV9ldGhvc3VfcGVyZm1vbl9jcmVhdGUgKnJlcSA9IGRhdGE7CisJc3RydWN0IGV0aG9zdV9k ZXZpY2UgKmV0aG9zdSA9IHRvX2V0aG9zdV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgZXRob3N1X3Bl cmZtb24gKnBlcmZtb247CisJdW5zaWduZWQgaW50IGksIGV2ZW50X21heDsKKwlpbnQgcmV0Owor CXUzMiBpZDsKKworCS8qIE51bWJlciBvZiBtb25pdG9yZWQgY291bnRlcnMgY2Fubm90IGV4Y2Vl ZCBIVyBsaW1pdHMuICovCisJaWYgKHJlcS0+bmNvdW50ZXJzID4gZXRob3N1LT5ucHVfaW5mby5w bXVfY291bnRlcnMpCisJCXJldHVybiAtRUlOVkFMOworCisJLyogTWFrZSBzdXJlIGFsbCBjb3Vu dGVycyBhcmUgdmFsaWQuICovCisJZXZlbnRfbWF4ID0gZXRob3N1X2lzX3U2NShldGhvc3UpID8g NDMzIDogNjcxOworCWZvciAoaSA9IDA7IGkgPCByZXEtPm5jb3VudGVyczsgaSsrKSB7CisJCWlm IChyZXEtPmNvdW50ZXJzW2ldID4gZXZlbnRfbWF4KQorCQkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJLyogQWRkIDEgbW9yZSBjb3VudGVyIGZvciBjeWNsZSBjb3VudGVyICovCisJcmVxLT5uY291 bnRlcnMrKzsKKworCXBlcmZtb24gPSBremFsbG9jX2ZsZXgoKnBlcmZtb24sIHZhbHVlcywgcmVx LT5uY291bnRlcnMpOworCWlmICghcGVyZm1vbikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3Ig KGkgPSAwOyBpIDwgcmVxLT5uY291bnRlcnMgLSAxOyBpKyspCisJCXBlcmZtb24tPmNvdW50ZXJz W2ldID0gcmVxLT5jb3VudGVyc1tpXTsKKworCXBlcmZtb24tPm5jb3VudGVycyA9IHJlcS0+bmNv dW50ZXJzOworCisJcmVmY291bnRfc2V0KCZwZXJmbW9uLT5yZWZjbnQsIDEpOworCisJcmV0ID0g eGFfYWxsb2MoJmV0aG9zdV9wcml2LT5wZXJmbW9ucywgJmlkLCBwZXJmbW9uLCB4YV9saW1pdF8z MmIsCisJCSAgICAgICBHRlBfS0VSTkVMKTsKKworCWlmIChyZXQgPCAwKSB7CisJCWtmcmVlKHBl cmZtb24pOworCQlyZXR1cm4gcmV0OworCX0KKworCXJlcS0+aWQgPSBpZDsKKworCXJldHVybiAw OworfQorCitpbnQgZXRob3N1X2lvY3RsX3BlcmZtb25fZGVzdHJveShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdikKK3sK KwlzdHJ1Y3QgZXRob3N1X2ZpbGVfcHJpdiAqZXRob3N1X3ByaXYgPSBmaWxlX3ByaXYtPmRyaXZl cl9wcml2OworCXN0cnVjdCBkcm1fZXRob3N1X3BlcmZtb25fZGVzdHJveSAqcmVxID0gZGF0YTsK KwlzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb247CisKKwlwZXJmbW9uID0geGFfZXJhc2Uo JmV0aG9zdV9wcml2LT5wZXJmbW9ucywgcmVxLT5pZCk7CisJaWYgKCFwZXJmbW9uKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWV0aG9zdV9wZXJmbW9uX2RlbGV0ZShldGhvc3VfcHJpdiwgcGVyZm1v bik7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGV0aG9zdV9pb2N0bF9wZXJmbW9uX2dldF92YWx1 ZXMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYpCit7CisJc3RydWN0IGV0aG9zdV9kZXZpY2UgKmV0aG9zdSA9IHRvX2V0 aG9zdV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgZXRob3N1X2ZpbGVfcHJpdiAqZXRob3N1X3ByaXYg PSBmaWxlX3ByaXYtPmRyaXZlcl9wcml2OworCXN0cnVjdCBkcm1fZXRob3N1X3BlcmZtb25fZ2V0 X3ZhbHVlcyAqcmVxID0gZGF0YTsKKwlzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb247CisJ aW50IHJldCA9IDA7CisKKwlpZiAocmVxLT5wYWQgIT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlwZXJmbW9uID0gZXRob3N1X3BlcmZtb25fZmluZChldGhvc3VfcHJpdiwgcmVxLT5pZCk7CisJ aWYgKCFwZXJmbW9uKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldCA9IHBtX3J1bnRpbWVfcmVz dW1lX2FuZF9nZXQoZGV2LT5kZXYpOworCWlmIChyZXQpIHsKKwkJZXRob3N1X3BlcmZtb25fcHV0 KHBlcmZtb24pOworCQlyZXR1cm4gcmV0OworCX0KKwlldGhvc3VfcGVyZm1vbl9zdG9wKGV0aG9z dSwgcGVyZm1vbiwgdHJ1ZSk7CisKKwlwbV9ydW50aW1lX3B1dF9hdXRvc3VzcGVuZChkZXYtPmRl dik7CisKKwlpZiAoY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihyZXEtPnZhbHVlc19wdHIp LCBwZXJmbW9uLT52YWx1ZXMsCisJCQkgcGVyZm1vbi0+bmNvdW50ZXJzICogc2l6ZW9mKHU2NCkp KQorCQlyZXQgPSAtRUZBVUxUOworCisJZXRob3N1X3BlcmZtb25fcHV0KHBlcmZtb24pOworCisJ cmV0dXJuIHJldDsKK30KKworaW50IGV0aG9zdV9pb2N0bF9wZXJmbW9uX3NldF9nbG9iYWwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXYpCit7CisJc3RydWN0IGV0aG9zdV9maWxlX3ByaXYgKmV0aG9zdV9wcml2ID0gZmls ZV9wcml2LT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgZHJtX2V0aG9zdV9wZXJmbW9uX3NldF9nbG9i YWwgKnJlcSA9IGRhdGE7CisJc3RydWN0IGV0aG9zdV9kZXZpY2UgKmV0aG9zdSA9IHRvX2V0aG9z dV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgZXRob3N1X3BlcmZtb24gKnBlcmZtb247CisKKwlpZiAo cmVxLT5mbGFncyAmIH5EUk1fRVRIT1NVX1BFUkZNT05fQ0xFQVJfR0xPQkFMKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCXBlcmZtb24gPSBldGhvc3VfcGVyZm1vbl9maW5kKGV0aG9zdV9wcml2LCBy ZXEtPmlkKTsKKwlpZiAoIXBlcmZtb24pCisJCXJldHVybiAtRUlOVkFMOworCisJLyogSWYgdGhl IHJlcXVlc3QgaXMgdG8gY2xlYXIgdGhlIGdsb2JhbCBwZXJmb3JtYW5jZSBtb25pdG9yICovCisJ aWYgKHJlcS0+ZmxhZ3MgJiBEUk1fRVRIT1NVX1BFUkZNT05fQ0xFQVJfR0xPQkFMKSB7CisJCXN0 cnVjdCBldGhvc3VfcGVyZm1vbiAqb2xkOworCisJCXNjb3BlZF9ndWFyZChtdXRleCwgJmV0aG9z dS0+cGVyZm1vbl9zdGF0ZS5sb2NrKSB7CisJCQlvbGQgPSBldGhvc3UtPmdsb2JhbF9wZXJmbW9u OworCQkJaWYgKCFvbGQpIHsKKwkJCQlldGhvc3VfcGVyZm1vbl9wdXQocGVyZm1vbik7CisJCQkJ cmV0dXJuIC1FSU5WQUw7CisJCQl9CisKKwkJCWV0aG9zdS0+Z2xvYmFsX3BlcmZtb24gPSBOVUxM OworCQkJZXRob3N1X3BlcmZtb25fc3RvcF9sb2NrZWQoZXRob3N1LCBvbGQsIHRydWUpOworCQl9 CisKKwkJZXRob3N1X3BlcmZtb25fcHV0KG9sZCk7CisJCWV0aG9zdV9wZXJmbW9uX3B1dChwZXJm bW9uKTsKKworCQlyZXR1cm4gMDsKKwl9CisKKwlzY29wZWRfZ3VhcmQobXV0ZXgsICZldGhvc3Ut PnBlcmZtb25fc3RhdGUubG9jaykgeworCQlpZiAoZXRob3N1LT5wZXJmbW9uX3N0YXRlLmFjdGl2 ZSB8fCBldGhvc3UtPmdsb2JhbF9wZXJmbW9uKSB7CisJCQlldGhvc3VfcGVyZm1vbl9wdXQocGVy Zm1vbik7CisJCQlyZXR1cm4gLUVCVVNZOworCQl9CisKKwkJZXRob3N1LT5nbG9iYWxfcGVyZm1v biA9IHBlcmZtb247CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3Vh cGkvZHJtL2V0aG9zdV9hY2NlbC5oIGIvaW5jbHVkZS91YXBpL2RybS9ldGhvc3VfYWNjZWwuaApp bmRleCBhZjc4YmI0Njg2ZDcuLjViOTdkNTlhNzgwNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBp L2RybS9ldGhvc3VfYWNjZWwuaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2V0aG9zdV9hY2NlbC5o CkBAIC00Myw2ICs0MywxMSBAQCBlbnVtIGRybV9ldGhvc3VfaW9jdGxfaWQgewogCiAJLyoqIEBE Uk1fRVRIT1NVX1NVQk1JVDogU3VibWl0IGEgam9iIGFuZCBCT3MgdG8gcnVuLiAqLwogCURSTV9F VEhPU1VfU1VCTUlULAorCisJRFJNX0VUSE9TVV9QRVJGTU9OX0NSRUFURSwKKwlEUk1fRVRIT1NV X1BFUkZNT05fREVTVFJPWSwKKwlEUk1fRVRIT1NVX1BFUkZNT05fR0VUX1ZBTFVFUywKKwlEUk1f RVRIT1NVX1BFUkZNT05fU0VUX0dMT0JBTCwKIH07CiAKIC8qKgpAQCAtNzksNiArODQsNyBAQCBz dHJ1Y3QgZHJtX2V0aG9zdV9ucHVfaW5mbyB7CiAJX191MzIgY29uZmlnOwogCiAJX191MzIgc3Jh bV9zaXplOworCV9fdTMyIHBtdV9jb3VudGVyczsKIH07CiAKIC8qKgpAQCAtMjIwLDEwICsyMjYs NTQgQEAgc3RydWN0IGRybV9ldGhvc3Vfc3VibWl0IHsKIAkvKiogSW5wdXQ6IE51bWJlciBvZiBq b2JzIHBhc3NlZCBpbi4gKi8KIAlfX3UzMiBqb2JfY291bnQ7CiAKLQkvKiogUmVzZXJ2ZWQsIG11 c3QgYmUgemVyby4gKi8KKwkvKiogSW5wdXQ6IElkIHJldHVybmVkIGJ5IERSTV9FVEhPU1VfUEVS Rk1PTl9DUkVBVEUgKi8KKwlfX3UzMiBwZXJmbW9uX2lkOworfTsKKworI2RlZmluZSBEUk1fRVRI T1NVX01BWF9QRVJGX0VWRU5UX0NPVU5URVJTCTgKKyNkZWZpbmUgRFJNX0VUSE9TVV9NQVhfUEVS Rl9DT1VOVEVSUyBcCisJKERSTV9FVEhPU1VfTUFYX1BFUkZfRVZFTlRfQ09VTlRFUlMgKyAxKQor CitzdHJ1Y3QgZHJtX2V0aG9zdV9wZXJmbW9uX2NyZWF0ZSB7CisJX191MzIgaWQ7CisJX191MzIg bmNvdW50ZXJzOworCV9fdTE2IGNvdW50ZXJzW0RSTV9FVEhPU1VfTUFYX1BFUkZfRVZFTlRfQ09V TlRFUlNdOworfTsKKworc3RydWN0IGRybV9ldGhvc3VfcGVyZm1vbl9kZXN0cm95IHsKKwlfX3Uz MiBpZDsKIAlfX3UzMiBwYWQ7CiB9OwogCisvKgorICogUmV0dXJucyB0aGUgdmFsdWVzIG9mIHRo ZSBwZXJmb3JtYW5jZSBjb3VudGVycyB0cmFja2VkIGJ5IHRoaXMKKyAqIHBlcmZtb24gKGFzIGFu IGFycmF5IG9mIChuY291bnRlcnMgKyAxKSB1NjQgdmFsdWVzKS4KKyAqCisgKiBObyBpbXBsaWNp dCBzeW5jaHJvbml6YXRpb24gaXMgcGVyZm9ybWVkLCBzbyB0aGUgdXNlciBoYXMgdG8KKyAqIGd1 YXJhbnRlZSB0aGF0IGFueSBqb2JzIHVzaW5nIHRoaXMgcGVyZm1vbiBoYXZlIGFscmVhZHkgYmVl bgorICogY29tcGxldGVkLgorICovCitzdHJ1Y3QgZHJtX2V0aG9zdV9wZXJmbW9uX2dldF92YWx1 ZXMgeworCV9fdTMyIGlkOworCV9fdTMyIHBhZDsKKwlfX3U2NCB2YWx1ZXNfcHRyOworfTsKKwor I2RlZmluZSBEUk1fRVRIT1NVX1BFUkZNT05fQ0xFQVJfR0xPQkFMICAgIDB4MDAwMQorCisvKioK KyAqIHN0cnVjdCBkcm1fZXRob3N1X3BlcmZtb25fc2V0X2dsb2JhbCAtIGlvY3RsIHRvIGRlZmlu ZSBhIGdsb2JhbCBwZXJmb3JtYW5jZQorICogbW9uaXRvcgorICoKKyAqIFRoZSBnbG9iYWwgcGVy Zm9ybWFuY2UgbW9uaXRvciB3aWxsIGJlIHVzZWQgZm9yIGFsbCBqb2JzLiBJZiBhIGdsb2JhbAor ICogcGVyZm9ybWFuY2UgbW9uaXRvciBpcyBkZWZpbmVkLCBqb2JzIHdpdGggYSBzZWxmLWRlZmlu ZWQgcGVyZm9ybWFuY2UKKyAqIG1vbml0b3Igd29uJ3QgYmUgYWxsb3dlZC4KKyAqLworc3RydWN0 IGRybV9ldGhvc3VfcGVyZm1vbl9zZXRfZ2xvYmFsIHsKKwlfX3UzMiBmbGFnczsKKwlfX3UzMiBp ZDsKK307CisKIC8qKgogICogRFJNX0lPQ1RMX0VUSE9TVSgpIC0gQnVpbGQgYSBldGhvc3UgSU9D VEwgbnVtYmVyCiAgKiBAX19hY2Nlc3M6IEFjY2VzcyB0eXBlLiBNdXN0IGJlIFIsIFcgb3IgUlcu CkBAIC0yNTIsNiArMzAyLDE0IEBAIGVudW0gewogCQlEUk1fSU9DVExfRVRIT1NVKFdSLCBDTURT VFJFQU1fQk9fQ1JFQVRFLCBjbWRzdHJlYW1fYm9fY3JlYXRlKSwKIAlEUk1fSU9DVExfRVRIT1NV X1NVQk1JVCA9CiAJCURSTV9JT0NUTF9FVEhPU1UoV1IsIFNVQk1JVCwgc3VibWl0KSwKKwlEUk1f SU9DVExfRVRIT1NVX1BFUkZNT05fQ1JFQVRFID0KKwkJRFJNX0lPQ1RMX0VUSE9TVShXUiwgUEVS Rk1PTl9DUkVBVEUsIHBlcmZtb25fY3JlYXRlKSwKKwlEUk1fSU9DVExfRVRIT1NVX1BFUkZNT05f REVTVFJPWSA9CisJCURSTV9JT0NUTF9FVEhPU1UoV1IsIFBFUkZNT05fREVTVFJPWSwgcGVyZm1v bl9kZXN0cm95KSwKKwlEUk1fSU9DVExfRVRIT1NVX1BFUkZNT05fR0VUX1ZBTFVFUyA9CisJCURS TV9JT0NUTF9FVEhPU1UoV1IsIFBFUkZNT05fR0VUX1ZBTFVFUywgcGVyZm1vbl9nZXRfdmFsdWVz KSwKKwlEUk1fSU9DVExfRVRIT1NVX1BFUkZNT05fU0VUX0dMT0JBTCA9CisJCURSTV9JT0NUTF9F VEhPU1UoV1IsIFBFUkZNT05fU0VUX0dMT0JBTCwgcGVyZm1vbl9zZXRfZ2xvYmFsKSwKIH07CiAK ICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotLSAKMi41NC4wCgo=