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 X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 58AAEC47087 for ; Tue, 25 May 2021 21:18:15 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 20FBA611BE for ; Tue, 25 May 2021 21:18:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 20FBA611BE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=jlekstrand.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 6F2E16EB4A; Tue, 25 May 2021 21:18:05 +0000 (UTC) Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by gabe.freedesktop.org (Postfix) with ESMTPS id 11DB06EB46 for ; Tue, 25 May 2021 21:18:05 +0000 (UTC) Received: by mail-pl1-x635.google.com with SMTP id h12so4871189plf.11 for ; Tue, 25 May 2021 14:18:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jlekstrand-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zBYlG0TQXh3M5UESnQyBpw3BPZcYPcdHje/svqKqnqU=; b=joO78nT0dLZnb9w8eJniqsx2G2+4nlTVNaMzBydbNFULqXWjGkN1/BRY/qv7FCnti/ 6WpO1ZY1f24gsAypfay6zclPnXbIx0Uhq4wkIbvDmiGWw4aC1kTa0LHdOiPRwECeQfSc fXJQemjfhPwgR0wHoMJ0Ctk7voPZalLEUSkqst6hLUWN6ZlfKgFVesc7WEhr/o/T8NUp Me93Qf0dwaGpk6mnmkMYw3R3mPAvjWYJbExUyH5K0wNBBUEVc/5BBU9okb0Rhe+K63vN nHC3+04sGcsb5Aeer69/sCkqHywz6EIayTdzoA7fz0VY4HE89D8fPKdjXZBWZbvYUllZ phAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zBYlG0TQXh3M5UESnQyBpw3BPZcYPcdHje/svqKqnqU=; b=NM2XDSPe3J6Mso1iNF5ps2WXNXjhbLCl37DG+HBgR87TKhKqPycdQPI5Zs5tUPIB/X UiCJ4GjNdrxMYW5yShFwXIlCvKjWo2djYLsztwlvRFHvCqVVjhVrBhf8uAMJroEKa6mn 0HwJMogrUmBAU40XTRIZndO2zJ2gJTAegpyLfgvBLBOemF6DqsajjpYezbIL9uh2zPRB th8I4uHGiAuJJrbv8rZLCRDQlWjgTzEJ7npLb/cFJxMf2fq4wQPD3K2xsCyE1JG19rJd zlamuHF3eGtD5hp5kJYV1RkT8VAmOysRYNFTFOqoJPR6qrkjXFpPD4m0ZaKAJVKF4fLJ OgHw== X-Gm-Message-State: AOAM530aXXZrlF9gdyVm+iHMr3IVVF6HaCafw1FnQXJkS5cuzkUB/C2A TpApaW/frUTbnlB1eBEogbRj5uYks1TVUw== X-Google-Smtp-Source: ABdhPJypms8hHhyEWPWO7Fvw22wMDzBbdTdTOjyDpDW478qXFko1qswyGQJ8BnFot6xxq/p6vsdzAw== X-Received: by 2002:a17:90b:3781:: with SMTP id mz1mr326902pjb.234.1621977484492; Tue, 25 May 2021 14:18:04 -0700 (PDT) Received: from omlet.lan ([134.134.139.83]) by smtp.gmail.com with ESMTPSA id e186sm14342278pfa.145.2021.05.25.14.18.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 May 2021 14:18:03 -0700 (PDT) From: Jason Ekstrand To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Date: Tue, 25 May 2021 16:17:48 -0500 Message-Id: <20210525211753.1086069-3-jason@jlekstrand.net> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210525211753.1086069-1-jason@jlekstrand.net> References: <20210525211753.1086069-1-jason@jlekstrand.net> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 2/7] dma-buf: Rename dma_resv helpers from _rcu to _unlocked (v2) X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Thomas Zimmermann , Daniel Vetter , Maxime Ripard , Huang Rui , VMware Graphics , Gerd Hoffmann , =?UTF-8?q?Christian=20K=C3=B6nig?= , Lucas Stach Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Tm9uZSBvZiB0aGVzZSBoZWxwZXJzIGFjdHVhbGx5IGxlYWsgYW55IFJDVSBkZXRhaWxzIHRvIHRo ZSBjYWxsZXIuICBUaGV5CmFsbCBhc3N1bWUgeW91IGhhdmUgYSBnZW51aW5lIHJlZmVyZW5jZSwg dGFrZSB0aGUgUkNVIHJlYWQgbG9jaywgYW5kCnJldHJ5IGlmIG5lZWRlZC4gIE5hbWluZyB0aGVt IHdpdGggYW4gX3JjdSBpcyBsaWtlbHkgdG8gY2F1c2UgY2FsbGVycwptb3JlIHBhbmljIHRoYW4g bmVlZGVkLgoKdjIgKEphc29uIEVrc3RyYW5kKToKIC0gRml4IGZ1bmN0aW9uIGFyZ3VtZW50IGlu ZGVudGF0aW9uCgpTaWduZWQtb2ZmLWJ5OiBKYXNvbiBFa3N0cmFuZCA8amFzb25Aamxla3N0cmFu ZC5uZXQ+ClN1Z2dlc3RlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5j aD4KQ2M6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KQ2M6IE1h YXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+CkNjOiBN YXhpbWUgUmlwYXJkIDxtcmlwYXJkQGtlcm5lbC5vcmc+CkNjOiBUaG9tYXMgWmltbWVybWFubiA8 dHppbW1lcm1hbm5Ac3VzZS5kZT4KQ2M6IEx1Y2FzIFN0YWNoIDxsLnN0YWNoQHBlbmd1dHJvbml4 LmRlPgpDYzogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgpDYzogU2VhbiBQYXVsIDxz ZWFuQHBvb3JseS5ydW4+CkNjOiBIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29tPgpDYzogR2Vy ZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CkNjOiBWTXdhcmUgR3JhcGhpY3MgPGxpbnV4 LWdyYXBoaWNzLW1haW50YWluZXJAdm13YXJlLmNvbT4KLS0tCiBkcml2ZXJzL2RtYS1idWYvZG1h LWJ1Zi5jICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KIGRyaXZlcnMvZG1hLWJ1Zi9kbWEt cmVzdi5jICAgICAgICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKy0tLS0tLS0tLS0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMgICB8ICA2ICsrLS0KIGRyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kbWFfYnVmLmMgICB8ICAyICstCiBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2VtLmMgICAgICAgfCAgNCArLS0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuYyAgICAgICB8ICA2ICsrLS0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9tbi5jICAgICAgICB8ICA0ICstLQogZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jICAgIHwgIDQgKy0tCiBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMgICAgICAgfCAgNiArKy0tCiBkcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdm0uYyAgICAgICAgfCAxNCArKysrKy0tLS0tCiAuLi4v Z3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgfCAgNiArKy0tCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX2dlbS5jICAgICAgICAgICAgICAgICAgICAgfCAxMCArKystLS0tCiBk cml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmMgICAgICAgfCAgMiArLQogZHJp dmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW0uYyAgICAgICAgIHwgIDcgKystLS0KIGRy aXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3N1Ym1pdC5jICB8ICA4ICsrKy0tLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDIgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2RtYV9yZXN2X3V0aWxzLmMgICAgICAgICB8ICAyICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fYnVzeS5jICAgICAgfCAgMiArLQogLi4uL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jICAgIHwgIDIgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3QuaCAgICB8ICAyICstCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jICAgfCAgNCArLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2dlbS9pOTE1X2dlbV93YWl0LmMgICAgICB8IDEwICsrKy0tLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICA2ICsrLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYyAgICAgICAgICB8ICA0ICstLQogZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZ2VtLmMgICAgICAgICAgICAgICAgIHwgIDMgKy0KIGRyaXZlcnMvZ3B1 L2RybS9ub3V2ZWF1L2Rpc3BudjUwL3duZHcuYyAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9k cm0vbm91dmVhdS9ub3V2ZWF1X2dlbS5jICAgICAgICAgfCAgNCArLS0KIGRyaXZlcnMvZ3B1L2Ry bS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYyAgICAgICB8ICA0ICstLQogZHJpdmVycy9ncHUvZHJt L3BhbmZyb3N0L3BhbmZyb3N0X2pvYi5jICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX2dlbS5jICAgICAgICAgICB8ICA2ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9y YWRlb24vcmFkZW9uX21uLmMgICAgICAgICAgICB8ICA0ICstLQogZHJpdmVycy9ncHUvZHJtL3R0 bS90dG1fYm8uYyAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMgICAgICAgICAgICAgfCAgNCArLS0KIGRyaXZlcnMvZ3B1 L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jICAgICAgICB8ICA2ICsrLS0KIGRyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X2JvLmMgICAgICAgICAgICB8ICAyICstCiBpbmNsdWRlL2xpbnV4 L2RtYS1yZXN2LmggICAgICAgICAgICAgICAgICAgICAgfCAxOCArKysrKystLS0tLS0KIDM2IGZp bGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVm LmMKaW5kZXggZjI2NGI3MGMzODNlYi4uZWQ2NDUxZDU1ZDY2MyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9kbWEtYnVmL2RtYS1idWYuYworKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCkBAIC0x MTQ3LDggKzExNDcsOCBAQCBzdGF0aWMgaW50IF9fZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKHN0 cnVjdCBkbWFfYnVmICpkbWFidWYsCiAJbG9uZyByZXQ7CiAKIAkvKiBXYWl0IG9uIGFueSBpbXBs aWNpdCByZW5kZXJpbmcgZmVuY2VzICovCi0JcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3Jj dShyZXN2LCB3cml0ZSwgdHJ1ZSwKLQkJCQkJCSAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCXJl dCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChyZXN2LCB3cml0ZSwgdHJ1ZSwKKwkJ CQkJICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7CiAJaWYgKHJldCA8IDApCiAJCXJldHVybiBy ZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtcmVzdi5jIGIvZHJpdmVycy9k bWEtYnVmL2RtYS1yZXN2LmMKaW5kZXggNmRkYmViNWRmYmY2NS4uZDZmMWVkNGNkNGQ1NSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1yZXN2LmMKKysrIGIvZHJpdmVycy9kbWEtYnVm L2RtYS1yZXN2LmMKQEAgLTQxNyw3ICs0MTcsNyBAQCBpbnQgZG1hX3Jlc3ZfY29weV9mZW5jZXMo c3RydWN0IGRtYV9yZXN2ICpkc3QsIHN0cnVjdCBkbWFfcmVzdiAqc3JjKQogRVhQT1JUX1NZTUJP TChkbWFfcmVzdl9jb3B5X2ZlbmNlcyk7CiAKIC8qKgotICogZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19y Y3UgLSBHZXQgYW4gb2JqZWN0J3Mgc2hhcmVkIGFuZCBleGNsdXNpdmUKKyAqIGRtYV9yZXN2X2dl dF9mZW5jZXNfdW5sb2NrZWQgLSBHZXQgYW4gb2JqZWN0J3Mgc2hhcmVkIGFuZCBleGNsdXNpdmUK ICAqIGZlbmNlcyB3aXRob3V0IHVwZGF0ZSBzaWRlIGxvY2sgaGVsZAogICogQG9iajogdGhlIHJl c2VydmF0aW9uIG9iamVjdAogICogQHBmZW5jZV9leGNsOiB0aGUgcmV0dXJuZWQgZXhjbHVzaXZl IGZlbmNlIChvciBOVUxMKQpAQCAtNDI5LDEwICs0MjksMTAgQEAgRVhQT1JUX1NZTUJPTChkbWFf cmVzdl9jb3B5X2ZlbmNlcyk7CiAgKiBleGNsdXNpdmUgZmVuY2UgaXMgbm90IHNwZWNpZmllZCB0 aGUgZmVuY2UgaXMgcHV0IGludG8gdGhlIGFycmF5IG9mIHRoZQogICogc2hhcmVkIGZlbmNlcyBh cyB3ZWxsLiBSZXR1cm5zIGVpdGhlciB6ZXJvIG9yIC1FTk9NRU0uCiAgKi8KLWludCBkbWFfcmVz dl9nZXRfZmVuY2VzX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwKLQkJCSAgICBzdHJ1Y3QgZG1h X2ZlbmNlICoqcGZlbmNlX2V4Y2wsCi0JCQkgICAgdW5zaWduZWQgKnBzaGFyZWRfY291bnQsCi0J CQkgICAgc3RydWN0IGRtYV9mZW5jZSAqKipwc2hhcmVkKQoraW50IGRtYV9yZXN2X2dldF9mZW5j ZXNfdW5sb2NrZWQoc3RydWN0IGRtYV9yZXN2ICpvYmosCisJCQkJIHN0cnVjdCBkbWFfZmVuY2Ug KipwZmVuY2VfZXhjbCwKKwkJCQkgdW5zaWduZWQgKnBzaGFyZWRfY291bnQsCisJCQkJIHN0cnVj dCBkbWFfZmVuY2UgKioqcHNoYXJlZCkKIHsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICoqc2hhcmVkID0g TlVMTDsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZV9leGNsOwpAQCAtNTE1LDEwICs1MTUsMTAg QEAgaW50IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLAogCSpw c2hhcmVkID0gc2hhcmVkOwogCXJldHVybiByZXQ7CiB9Ci1FWFBPUlRfU1lNQk9MX0dQTChkbWFf cmVzdl9nZXRfZmVuY2VzX3JjdSk7CitFWFBPUlRfU1lNQk9MX0dQTChkbWFfcmVzdl9nZXRfZmVu Y2VzX3VubG9ja2VkKTsKIAogLyoqCi0gKiBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1IC0gV2Fp dCBvbiByZXNlcnZhdGlvbidzIG9iamVjdHMKKyAqIGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxv Y2tlZCAtIFdhaXQgb24gcmVzZXJ2YXRpb24ncyBvYmplY3RzCiAgKiBzaGFyZWQgYW5kL29yIGV4 Y2x1c2l2ZSBmZW5jZXMuCiAgKiBAb2JqOiB0aGUgcmVzZXJ2YXRpb24gb2JqZWN0CiAgKiBAd2Fp dF9hbGw6IGlmIHRydWUsIHdhaXQgb24gYWxsIGZlbmNlcywgZWxzZSB3YWl0IG9uIGp1c3QgZXhj bHVzaXZlIGZlbmNlCkBAIC01MjksOSArNTI5LDkgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZG1hX3Jl c3ZfZ2V0X2ZlbmNlc19yY3UpOwogICogUmV0dXJucyAtRVJFU1RBUlRTWVMgaWYgaW50ZXJydXB0 ZWQsIDAgaWYgdGhlIHdhaXQgdGltZWQgb3V0LCBvcgogICogZ3JlYXRlciB0aGFuIHplciBvbiBz dWNjZXNzLgogICovCi1sb25nIGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3Uoc3RydWN0IGRtYV9y ZXN2ICpvYmosCi0JCQkgICAgICAgYm9vbCB3YWl0X2FsbCwgYm9vbCBpbnRyLAotCQkJICAgICAg IHVuc2lnbmVkIGxvbmcgdGltZW91dCkKK2xvbmcgZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9j a2VkKHN0cnVjdCBkbWFfcmVzdiAqb2JqLAorCQkJCSAgICBib29sIHdhaXRfYWxsLCBib29sIGlu dHIsCisJCQkJICAgIHVuc2lnbmVkIGxvbmcgdGltZW91dCkKIHsKIAlzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZTsKIAl1bnNpZ25lZCBzZXEsIHNoYXJlZF9jb3VudDsKQEAgLTYwMiw3ICs2MDIsNyBA QCBsb25nIGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmosCiAJ cmN1X3JlYWRfdW5sb2NrKCk7CiAJZ290byByZXRyeTsKIH0KLUVYUE9SVF9TWU1CT0xfR1BMKGRt YV9yZXN2X3dhaXRfdGltZW91dF9yY3UpOworRVhQT1JUX1NZTUJPTF9HUEwoZG1hX3Jlc3Zfd2Fp dF90aW1lb3V0X3VubG9ja2VkKTsKIAogCiBzdGF0aWMgaW5saW5lIGludCBkbWFfcmVzdl90ZXN0 X3NpZ25hbGVkX3NpbmdsZShzdHJ1Y3QgZG1hX2ZlbmNlICpwYXNzZWRfZmVuY2UpCkBAIC02MjIs NyArNjIyLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9zaW5n bGUoc3RydWN0IGRtYV9mZW5jZSAqcGFzc2VkX2ZlbmNlKQogfQogCiAvKioKLSAqIGRtYV9yZXN2 X3Rlc3Rfc2lnbmFsZWRfcmN1IC0gVGVzdCBpZiBhIHJlc2VydmF0aW9uIG9iamVjdCdzCisgKiBk bWFfcmVzdl90ZXN0X3NpZ25hbGVkX3VubG9ja2VkIC0gVGVzdCBpZiBhIHJlc2VydmF0aW9uIG9i amVjdCdzCiAgKiBmZW5jZXMgaGF2ZSBiZWVuIHNpZ25hbGVkLgogICogQG9iajogdGhlIHJlc2Vy dmF0aW9uIG9iamVjdAogICogQHRlc3RfYWxsOiBpZiB0cnVlLCB0ZXN0IGFsbCBmZW5jZXMsIG90 aGVyd2lzZSBvbmx5IHRlc3QgdGhlIGV4Y2x1c2l2ZQpAQCAtNjMxLDcgKzYzMSw3IEBAIHN0YXRp YyBpbmxpbmUgaW50IGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfc2luZ2xlKHN0cnVjdCBkbWFfZmVu Y2UgKnBhc3NlZF9mZW5jZSkKICAqIFJFVFVSTlMKICAqIHRydWUgaWYgYWxsIGZlbmNlcyBzaWdu YWxlZCwgZWxzZSBmYWxzZQogICovCi1ib29sIGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KHN0 cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxsKQorYm9vbCBkbWFfcmVzdl90ZXN0X3Np Z25hbGVkX3VubG9ja2VkKHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBib29sIHRlc3RfYWxsKQogewog CXVuc2lnbmVkIHNlcSwgc2hhcmVkX2NvdW50OwogCWludCByZXQ7CkBAIC02ODAsNCArNjgwLDQg QEAgYm9vbCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwg Ym9vbCB0ZXN0X2FsbCkKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlyZXR1cm4gcmV0OwogfQotRVhQ T1JUX1NZTUJPTF9HUEwoZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3UpOworRVhQT1JUX1NZTUJP TF9HUEwoZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZCk7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwppbmRleCA4YTFmYjhiNjYwNmU1Li5iOGUyNGYx OTliZTlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlz cGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMK QEAgLTIwMyw5ICsyMDMsOSBAQCBpbnQgYW1kZ3B1X2Rpc3BsYXlfY3J0Y19wYWdlX2ZsaXBfdGFy Z2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJZ290byB1bnBpbjsKIAl9CiAKLQlyID0gZG1h X3Jlc3ZfZ2V0X2ZlbmNlc19yY3UobmV3X2Fiby0+dGJvLmJhc2UucmVzdiwgJndvcmstPmV4Y2ws Ci0JCQkJCSAgICAgICZ3b3JrLT5zaGFyZWRfY291bnQsCi0JCQkJCSAgICAgICZ3b3JrLT5zaGFy ZWQpOworCXIgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKG5ld19hYm8tPnRiby5iYXNl LnJlc3YsICZ3b3JrLT5leGNsLAorCQkJCQkgJndvcmstPnNoYXJlZF9jb3VudCwKKwkJCQkJICZ3 b3JrLT5zaGFyZWQpOwogCWlmICh1bmxpa2VseShyICE9IDApKSB7CiAJCURSTV9FUlJPUigiZmFp bGVkIHRvIGdldCBmZW5jZXMgZm9yIGJ1ZmZlclxuIik7CiAJCWdvdG8gdW5waW47CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZG1hX2J1Zi5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2RtYV9idWYuYwppbmRleCBiYWE5ODBhNDc3ZDk0 Li4wZDAzMTliYzUxNTc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfZG1hX2J1Zi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9k bWFfYnVmLmMKQEAgLTk4LDcgKzk4LDcgQEAgX19kbWFfcmVzdl9tYWtlX2V4Y2x1c2l2ZShzdHJ1 Y3QgZG1hX3Jlc3YgKm9iaikKIAlpZiAoIWRtYV9yZXN2X2dldF9saXN0KG9iaikpIC8qIG5vIHNo YXJlZCBmZW5jZXMgdG8gY29udmVydCAqLwogCQlyZXR1cm4gMDsKIAotCXIgPSBkbWFfcmVzdl9n ZXRfZmVuY2VzX3JjdShvYmosIE5VTEwsICZjb3VudCwgJmZlbmNlcyk7CisJciA9IGRtYV9yZXN2 X2dldF9mZW5jZXNfdW5sb2NrZWQob2JqLCBOVUxMLCAmY291bnQsICZmZW5jZXMpOwogCWlmIChy KQogCQlyZXR1cm4gcjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dlbS5jCmlu ZGV4IDE4OTc0YmQwODFmMDAuLjhlMjk5NmQ2YmEzYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfZ2VtLmMKQEAgLTQ3MSw4ICs0NzEsOCBAQCBpbnQgYW1kZ3B1X2dlbV93YWl0 X2lkbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJcmV0dXJu IC1FTk9FTlQ7CiAJfQogCXJvYmogPSBnZW1fdG9fYW1kZ3B1X2JvKGdvYmopOwotCXJldCA9IGRt YV9yZXN2X3dhaXRfdGltZW91dF9yY3Uocm9iai0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwgdHJ1ZSwK LQkJCQkJCSAgdGltZW91dCk7CisJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2Vk KHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRydWUsCisJCQkJCSAgICAgdGltZW91dCk7CiAK IAkvKiByZXQgPT0gMCBtZWFucyBub3Qgc2lnbmFsZWQsCiAJICogcmV0ID4gMCBtZWFucyBzaWdu YWxlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5j IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5jCmluZGV4IGI0OTcxZTkw Yjk4Y2YuLjM4ZTFiMzJkZDJjZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9pZHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf aWRzLmMKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIGFtZGdwdV9wYXNpZF9mcmVlX2RlbGF5ZWQo c3RydWN0IGRtYV9yZXN2ICpyZXN2LAogCXVuc2lnbmVkIGNvdW50OwogCWludCByOwogCi0JciA9 IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHJlc3YsIE5VTEwsICZjb3VudCwgJmZlbmNlcyk7CisJ ciA9IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQocmVzdiwgTlVMTCwgJmNvdW50LCAmZmVu Y2VzKTsKIAlpZiAocikKIAkJZ290byBmYWxsYmFjazsKIApAQCAtMTU2LDggKzE1Niw4IEBAIHZv aWQgYW1kZ3B1X3Bhc2lkX2ZyZWVfZGVsYXllZChzdHJ1Y3QgZG1hX3Jlc3YgKnJlc3YsCiAJLyog Tm90IGVub3VnaCBtZW1vcnkgZm9yIHRoZSBkZWxheWVkIGRlbGV0ZSwgYXMgbGFzdCByZXNvcnQK IAkgKiBibG9jayBmb3IgYWxsIHRoZSBmZW5jZXMgdG8gY29tcGxldGUuCiAJICovCi0JZG1hX3Jl c3Zfd2FpdF90aW1lb3V0X3JjdShyZXN2LCB0cnVlLCBmYWxzZSwKLQkJCQkJICAgIE1BWF9TQ0hF RFVMRV9USU1FT1VUKTsKKwlkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQocmVzdiwgdHJ1 ZSwgZmFsc2UsCisJCQkJICAgICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKIAlhbWRncHVfcGFz aWRfZnJlZShwYXNpZCk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2FtZGdwdV9tbi5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMK aW5kZXggODI4YjUxNjdmZjEyOC4uMDMxOWM4YjU0N2M0OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X21uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X21uLmMKQEAgLTc1LDggKzc1LDggQEAgc3RhdGljIGJvb2wgYW1kZ3B1X21u X2ludmFsaWRhdGVfZ2Z4KHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgKm1uaSwKIAogCW1t dV9pbnRlcnZhbF9zZXRfc2VxKG1uaSwgY3VyX3NlcSk7CiAKLQlyID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwgdHJ1ZSwgZmFsc2UsCi0JCQkJICAgICAgTUFY X1NDSEVEVUxFX1RJTUVPVVQpOworCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQo Ym8tPnRiby5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAorCQkJCQkgICBNQVhfU0NIRURVTEVfVElN RU9VVCk7CiAJbXV0ZXhfdW5sb2NrKCZhZGV2LT5ub3RpZmllcl9sb2NrKTsKIAlpZiAociA8PSAw KQogCQlEUk1fRVJST1IoIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciB1c2VyIGJvXG4iLCByKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwppbmRleCAwYWRmZmNh Y2UzMjYzLi5kZTFjN2M1NTAxNjgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfb2JqZWN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X29iamVjdC5jCkBAIC03OTEsOCArNzkxLDggQEAgaW50IGFtZGdwdV9ib19rbWFwKHN0cnVj dCBhbWRncHVfYm8gKmJvLCB2b2lkICoqcHRyKQogCQlyZXR1cm4gMDsKIAl9CiAKLQlyID0gZG1h X3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+dGJvLmJhc2UucmVzdiwgZmFsc2UsIGZhbHNlLAot CQkJCQkJTUFYX1NDSEVEVUxFX1RJTUVPVVQpOworCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRf dW5sb2NrZWQoYm8tPnRiby5iYXNlLnJlc3YsIGZhbHNlLCBmYWxzZSwKKwkJCQkJICAgTUFYX1ND SEVEVUxFX1RJTUVPVVQpOwogCWlmIChyIDwgMCkKIAkJcmV0dXJuIHI7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV91dmQuYwppbmRleCBjNmRiYzA4MDE2MDQ1Li40YTIxOTY0MDRm YjY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdXZkLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3V2ZC5jCkBAIC0xMTE1LDkg KzExMTUsOSBAQCBzdGF0aWMgaW50IGFtZGdwdV91dmRfc2VuZF9tc2coc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2JvICpibywKIAlpYi0+bGVuZ3RoX2R3ID0gMTY7CiAK IAlpZiAoZGlyZWN0KSB7Ci0JCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT50Ym8u YmFzZS5yZXN2LAotCQkJCQkJCXRydWUsIGZhbHNlLAotCQkJCQkJCW1zZWNzX3RvX2ppZmZpZXMo MTApKTsKKwkJciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChiby0+dGJvLmJhc2Uu cmVzdiwKKwkJCQkJCSAgIHRydWUsIGZhbHNlLAorCQkJCQkJICAgbXNlY3NfdG9famlmZmllcygx MCkpOwogCQlpZiAociA9PSAwKQogCQkJciA9IC1FVElNRURPVVQ7CiAJCWlmIChyIDwgMCkKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKaW5kZXggNGEzZTNmNzJlMTI3Ny4uN2Jh MWM1MzdkNjU4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3ZtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKQEAgLTIw MDcsMTQgKzIwMDcsMTQgQEAgc3RhdGljIHZvaWQgYW1kZ3B1X3ZtX3BydF9maW5pKHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKIAl1bnNpZ25lZCBpLCBz aGFyZWRfY291bnQ7CiAJaW50IHI7CiAKLQlyID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3UocmVz diwgJmV4Y2wsCi0JCQkJCSAgICAgICZzaGFyZWRfY291bnQsICZzaGFyZWQpOworCXIgPSBkbWFf cmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKHJlc3YsICZleGNsLAorCQkJCQkgJnNoYXJlZF9jb3Vu dCwgJnNoYXJlZCk7CiAJaWYgKHIpIHsKIAkJLyogTm90IGVub3VnaCBtZW1vcnkgdG8gZ3JhYiB0 aGUgZmVuY2UgbGlzdCwgYXMgbGFzdCByZXNvcnQKIAkJICogYmxvY2sgZm9yIGFsbCB0aGUgZmVu Y2VzIHRvIGNvbXBsZXRlLgogCQkgKi8KLQkJZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShyZXN2 LCB0cnVlLCBmYWxzZSwKLQkJCQkJCSAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7CisJCWRtYV9y ZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChyZXN2LCB0cnVlLCBmYWxzZSwKKwkJCQkJICAgICAg IE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKIAkJcmV0dXJuOwogCX0KIApAQCAtMjYyNSw3ICsyNjI1 LDcgQEAgYm9vbCBhbWRncHVfdm1fZXZpY3RhYmxlKHN0cnVjdCBhbWRncHVfYm8gKmJvKQogCQly ZXR1cm4gdHJ1ZTsKIAogCS8qIERvbid0IGV2aWN0IFZNIHBhZ2UgdGFibGVzIHdoaWxlIHRoZXkg YXJlIGJ1c3kgKi8KLQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KGJvLT50Ym8uYmFz ZS5yZXN2LCB0cnVlKSkKKwlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQoYm8t PnRiby5iYXNlLnJlc3YsIHRydWUpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBUcnkgdG8gYmxv Y2sgb25nb2luZyB1cGRhdGVzICovCkBAIC0yODA1LDggKzI4MDUsOCBAQCB2b2lkIGFtZGdwdV92 bV9hZGp1c3Rfc2l6ZShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgbWluX3Zt X3NpemUsCiAgKi8KIGxvbmcgYW1kZ3B1X3ZtX3dhaXRfaWRsZShzdHJ1Y3QgYW1kZ3B1X3ZtICp2 bSwgbG9uZyB0aW1lb3V0KQogewotCXRpbWVvdXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1 KHZtLT5yb290LmJhc2UuYm8tPnRiby5iYXNlLnJlc3YsCi0JCQkJCSAgICB0cnVlLCB0cnVlLCB0 aW1lb3V0KTsKKwl0aW1lb3V0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKHZtLT5y b290LmJhc2UuYm8tPnRiby5iYXNlLnJlc3YsCisJCQkJCQkgdHJ1ZSwgdHJ1ZSwgdGltZW91dCk7 CiAJaWYgKHRpbWVvdXQgPD0gMCkKIAkJcmV0dXJuIHRpbWVvdXQ7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMgYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCmluZGV4IDljYTUxN2I2 NTg1NDYuLjAxMjFkMjgxN2ZhMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvZGlz cGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNw bGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwpAQCAtODI3Niw5ICs4Mjc2LDkgQEAgc3RhdGljIHZv aWQgYW1kZ3B1X2RtX2NvbW1pdF9wbGFuZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl LAogCQkgKiBkZWFkbG9jayBkdXJpbmcgR1BVIHJlc2V0IHdoZW4gdGhpcyBmZW5jZSB3aWxsIG5v dCBzaWduYWwKIAkJICogYnV0IHdlIGhvbGQgcmVzZXJ2YXRpb24gbG9jayBmb3IgdGhlIEJPLgog CQkgKi8KLQkJciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UoYWJvLT50Ym8uYmFzZS5yZXN2 LCB0cnVlLAotCQkJCQkJCWZhbHNlLAotCQkJCQkJCW1zZWNzX3RvX2ppZmZpZXMoNTAwMCkpOwor CQlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGFiby0+dGJvLmJhc2UucmVzdiwg dHJ1ZSwKKwkJCQkJCSAgIGZhbHNlLAorCQkJCQkJICAgbXNlY3NfdG9famlmZmllcyg1MDAwKSk7 CiAJCWlmICh1bmxpa2VseShyIDw9IDApKQogCQkJRFJNX0VSUk9SKCJXYWl0aW5nIGZvciBmZW5j ZXMgdGltZWQgb3V0ISIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYwppbmRleCA5OTg5NDI1ZTk4NzVhLi4xMjQxYTQy MWI5ZTgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fZ2VtLmMKQEAgLTc3MCw4ICs3NzAsOCBAQCBsb25nIGRybV9nZW1fZG1h X3Jlc3Zfd2FpdChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVwLCB1MzIgaGFuZGxlLAogCQlyZXR1cm4g LUVJTlZBTDsKIAl9CiAKLQlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KG9iai0+cmVz diwgd2FpdF9hbGwsCi0JCQkJCQkgIHRydWUsIHRpbWVvdXQpOworCXJldCA9IGRtYV9yZXN2X3dh aXRfdGltZW91dF91bmxvY2tlZChvYmotPnJlc3YsIHdhaXRfYWxsLAorCQkJCQkgICAgIHRydWUs IHRpbWVvdXQpOwogCWlmIChyZXQgPT0gMCkKIAkJcmV0ID0gLUVUSU1FOwogCWVsc2UgaWYgKHJl dCA+IDApCkBAIC0xMzc1LDEzICsxMzc1LDEzIEBAIGludCBkcm1fZ2VtX2ZlbmNlX2FycmF5X2Fk ZF9pbXBsaWNpdChzdHJ1Y3QgeGFycmF5ICpmZW5jZV9hcnJheSwKIAogCWlmICghd3JpdGUpIHsK IAkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UgPQotCQkJZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KG9i ai0+cmVzdik7CisJCQlkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChvYmotPnJlc3YpOwogCiAJ CXJldHVybiBkcm1fZ2VtX2ZlbmNlX2FycmF5X2FkZChmZW5jZV9hcnJheSwgZmVuY2UpOwogCX0K IAotCXJldCA9IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KG9iai0+cmVzdiwgTlVMTCwKLQkJCQkJ CSZmZW5jZV9jb3VudCwgJmZlbmNlcyk7CisJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNlc191bmxv Y2tlZChvYmotPnJlc3YsIE5VTEwsCisJCQkJCSAgICZmZW5jZV9jb3VudCwgJmZlbmNlcyk7CiAJ aWYgKHJldCB8fCAhZmVuY2VfY291bnQpCiAJCXJldHVybiByZXQ7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fZ2VtX2F0b21pY19oZWxwZXIuYwppbmRleCBhMDA1YzVhMGJhNDZhLi5hMjcxMzUwODRhZTVj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fYXRvbWljX2hlbHBlci5jCkBAIC0xNDcsNyArMTQ3 LDcgQEAgaW50IGRybV9nZW1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsIHN0cnVjdCBkcm1fcGxhbmVfc3QKIAkJcmV0dXJuIDA7CiAKIAlvYmogPSBkcm1f Z2VtX2ZiX2dldF9vYmooc3RhdGUtPmZiLCAwKTsKLQlmZW5jZSA9IGRtYV9yZXN2X2dldF9leGNs X3JjdShvYmotPnJlc3YpOworCWZlbmNlID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQob2Jq LT5yZXN2KTsKIAlkcm1fYXRvbWljX3NldF9mZW5jZV9mb3JfcGxhbmUoc3RhdGUsIGZlbmNlKTsK IAogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZp dl9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtLmMKaW5kZXggZGI2 OWYxOWFiNWJjYS4uNGU2ZjUzNDZlODRlNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V0 bmF2aXYvZXRuYXZpdl9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2 X2dlbS5jCkBAIC0zOTAsMTQgKzM5MCwxMyBAQCBpbnQgZXRuYXZpdl9nZW1fY3B1X3ByZXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHUzMiBvcCwKIAl9CiAKIAlpZiAob3AgJiBFVE5BX1BS RVBfTk9TWU5DKSB7Ci0JCWlmICghZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3Uob2JqLT5yZXN2 LAotCQkJCQkJCSAgd3JpdGUpKQorCQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2Nr ZWQob2JqLT5yZXN2LCB3cml0ZSkpCiAJCQlyZXR1cm4gLUVCVVNZOwogCX0gZWxzZSB7CiAJCXVu c2lnbmVkIGxvbmcgcmVtYWluID0gZXRuYXZpdl90aW1lb3V0X3RvX2ppZmZpZXModGltZW91dCk7 CiAKLQkJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShvYmotPnJlc3YsCi0JCQkJCQkJ ICB3cml0ZSwgdHJ1ZSwgcmVtYWluKTsKKwkJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3Vu bG9ja2VkKG9iai0+cmVzdiwKKwkJCQkJCSAgICAgd3JpdGUsIHRydWUsIHJlbWFpbik7CiAJCWlm IChyZXQgPD0gMCkKIAkJCXJldHVybiByZXQgPT0gMCA/IC1FVElNRURPVVQgOiByZXQ7CiAJfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fc3VibWl0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2dlbV9zdWJtaXQuYwppbmRleCBkMDVj MzU5OTQ1Nzk5Li42NjE3ZmFkYTQ1OTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRu YXZpdi9ldG5hdml2X2dlbV9zdWJtaXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9l dG5hdml2X2dlbV9zdWJtaXQuYwpAQCAtMTg5LDEzICsxODksMTMgQEAgc3RhdGljIGludCBzdWJt aXRfZmVuY2Vfc3luYyhzdHJ1Y3QgZXRuYXZpdl9nZW1fc3VibWl0ICpzdWJtaXQpCiAJCQljb250 aW51ZTsKIAogCQlpZiAoYm8tPmZsYWdzICYgRVROQV9TVUJNSVRfQk9fV1JJVEUpIHsKLQkJCXJl dCA9IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHJvYmosICZiby0+ZXhjbCwKLQkJCQkJCQkJJmJv LT5ucl9zaGFyZWQsCi0JCQkJCQkJCSZiby0+c2hhcmVkKTsKKwkJCXJldCA9IGRtYV9yZXN2X2dl dF9mZW5jZXNfdW5sb2NrZWQocm9iaiwgJmJvLT5leGNsLAorCQkJCQkJCSAgICZiby0+bnJfc2hh cmVkLAorCQkJCQkJCSAgICZiby0+c2hhcmVkKTsKIAkJCWlmIChyZXQpCiAJCQkJcmV0dXJuIHJl dDsKIAkJfSBlbHNlIHsKLQkJCWJvLT5leGNsID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KHJvYmop OworCQkJYm8tPmV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChyb2JqKTsKIAkJfQog CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwppbmRl eCA0MjJiNTllYmY2ZGNlLi41ZjBiODVhMTAyMTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTEwNDAsNyArMTEwNDAsNyBAQCBpbnRlbF9w cmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAkJaWYgKHJldCA8IDAp CiAJCQlnb3RvIHVucGluX2ZiOwogCi0JCWZlbmNlID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KG9i ai0+YmFzZS5yZXN2KTsKKwkJZmVuY2UgPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChvYmot PmJhc2UucmVzdik7CiAJCWlmIChmZW5jZSkgewogCQkJYWRkX3Jwc19ib29zdF9hZnRlcl92Ymxh bmsobmV3X3BsYW5lX3N0YXRlLT5ody5jcnRjLAogCQkJCQkJICAgZmVuY2UpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZG1hX3Jlc3ZfdXRpbHMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2RtYV9yZXN2X3V0aWxzLmMKaW5kZXggOWU1MDhlN2Q0NjI5Zi4uYmRmYzZiZjE2YTRl OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZG1hX3Jlc3ZfdXRpbHMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kbWFfcmVzdl91dGlscy5jCkBAIC0xMCw3ICsxMCw3IEBA CiB2b2lkIGRtYV9yZXN2X3BydW5lKHN0cnVjdCBkbWFfcmVzdiAqcmVzdikKIHsKIAlpZiAoZG1h X3Jlc3ZfdHJ5bG9jayhyZXN2KSkgewotCQlpZiAoZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF9yY3Uo cmVzdiwgdHJ1ZSkpCisJCWlmIChkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3VubG9ja2VkKHJlc3Ys IHRydWUpKQogCQkJZG1hX3Jlc3ZfYWRkX2V4Y2xfZmVuY2UocmVzdiwgTlVMTCk7CiAJCWRtYV9y ZXN2X3VubG9jayhyZXN2KTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fYnVzeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2J1 c3kuYwppbmRleCAyNTIzNWVmNjMwYzEwLi43NTRhZDZkMWJhY2U5IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fYnVzeS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9pOTE1X2dlbV9idXN5LmMKQEAgLTEwNSw3ICsxMDUsNyBAQCBpOTE1X2dlbV9i dXN5X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJICogQWx0ZXJu YXRpdmVseSwgd2UgY2FuIHRyYWRlIHRoYXQgZXh0cmEgaW5mb3JtYXRpb24gb24gcmVhZC93cml0 ZQogCSAqIGFjdGl2aXR5IHdpdGgKIAkgKglhcmdzLT5idXN5ID0KLQkgKgkJIWRtYV9yZXN2X3Rl c3Rfc2lnbmFsZWRfcmN1KG9iai0+cmVzdiwgdHJ1ZSk7CisJICoJCSFkbWFfcmVzdl90ZXN0X3Np Z25hbGVkX3VubG9ja2VkKG9iai0+cmVzdiwgdHJ1ZSk7CiAJICogdG8gcmVwb3J0IHRoZSBvdmVy YWxsIGJ1c3luZXNzLiBUaGlzIGlzIHdoYXQgdGhlIHdhaXQtaW9jdGwgZG9lcy4KIAkgKgogCSAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKaW5k ZXggMjk3MTQzNTExZjk5Yi4uZThmMzIzNTY0ZTU3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC0xNDgxLDcgKzE0ODEsNyBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgdXNlX3JlbG9jX2dwdShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAlpZiAo REJHX0ZPUkNFX1JFTE9DKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gIWRtYV9yZXN2X3Rl c3Rfc2lnbmFsZWRfcmN1KHZtYS0+cmVzdiwgdHJ1ZSk7CisJcmV0dXJuICFkbWFfcmVzdl90ZXN0 X3NpZ25hbGVkX3VubG9ja2VkKHZtYS0+cmVzdiwgdHJ1ZSk7CiB9CiAKIHN0YXRpYyB1bnNpZ25l ZCBsb25nIHZtYV9waHlzX2FkZHIoc3RydWN0IGk5MTVfdm1hICp2bWEsIHUzMiBvZmZzZXQpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0LmgKaW5kZXggMmViZDc5NTM3 YWVhOS4uN2MwZWI0MjVjYjNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L2k5MTVfZ2VtX29iamVjdC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dl bV9vYmplY3QuaApAQCAtNTAwLDcgKzUwMCw3IEBAIGk5MTVfZ2VtX29iamVjdF9sYXN0X3dyaXRl X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogCXN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlOwogCiAJcmN1X3JlYWRfbG9jaygpOwotCWZlbmNlID0gZG1hX3Jlc3ZfZ2V0X2V4 Y2xfcmN1KG9iai0+YmFzZS5yZXN2KTsKKwlmZW5jZSA9IGRtYV9yZXN2X2dldF9leGNsX3VubG9j a2VkKG9iai0+YmFzZS5yZXN2KTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIAogCWlmIChmZW5jZSAm JiBkbWFfZmVuY2VfaXNfaTkxNShmZW5jZSkgJiYgIWRtYV9mZW5jZV9pc19zaWduYWxlZChmZW5j ZSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0 ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3VzZXJwdHIuYwppbmRleCBh NjU3Yjk5ZWM3NjA2Li40NGRmMThkYzk2NjlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vaTkxNV9nZW1fdXNlcnB0ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9pOTE1X2dlbV91c2VycHRyLmMKQEAgLTg1LDggKzg1LDggQEAgc3RhdGljIGJvb2wgaTkxNV9n ZW1fdXNlcnB0cl9pbnZhbGlkYXRlKHN0cnVjdCBtbXVfaW50ZXJ2YWxfbm90aWZpZXIgKm1uaSwK IAkJcmV0dXJuIHRydWU7CiAKIAkvKiB3ZSB3aWxsIHVuYmluZCBvbiBuZXh0IHN1Ym1pc3Npb24s IHN0aWxsIGhhdmUgdXNlcnB0ciBwaW5zICovCi0JciA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9y Y3Uob2JqLT5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAotCQkJCSAgICAgIE1BWF9TQ0hFRFVMRV9U SU1FT1VUKTsKKwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKG9iai0+YmFzZS5y ZXN2LCB0cnVlLCBmYWxzZSwKKwkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwogCWlmIChy IDw9IDApCiAJCWRybV9lcnIoJmk5MTUtPmRybSwgIiglbGQpIGZhaWxlZCB0byB3YWl0IGZvciBp ZGxlXG4iLCByKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVf Z2VtX3dhaXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV93YWl0LmMKaW5k ZXggNGI5ODU2ZDViYTE0Zi4uNWI2YzUyNjU5YWQ0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3dhaXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vaTkxNV9nZW1fd2FpdC5jCkBAIC00NSw3ICs0NSw3IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0 X3Jlc2VydmF0aW9uKHN0cnVjdCBkbWFfcmVzdiAqcmVzdiwKIAkJdW5zaWduZWQgaW50IGNvdW50 LCBpOwogCQlpbnQgcmV0OwogCi0JCXJldCA9IGRtYV9yZXN2X2dldF9mZW5jZXNfcmN1KHJlc3Ys ICZleGNsLCAmY291bnQsICZzaGFyZWQpOworCQlyZXQgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3Vu bG9ja2VkKHJlc3YsICZleGNsLCAmY291bnQsICZzaGFyZWQpOwogCQlpZiAocmV0KQogCQkJcmV0 dXJuIHJldDsKIApAQCAtNzMsNyArNzMsNyBAQCBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZXNlcnZh dGlvbihzdHJ1Y3QgZG1hX3Jlc3YgKnJlc3YsCiAJCSAqLwogCQlwcnVuZV9mZW5jZXMgPSBjb3Vu dCAmJiB0aW1lb3V0ID49IDA7CiAJfSBlbHNlIHsKLQkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNs X3JjdShyZXN2KTsKKwkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNsX3VubG9ja2VkKHJlc3YpOwog CX0KIAogCWlmIChleGNsICYmIHRpbWVvdXQgPj0gMCkKQEAgLTE1OCw4ICsxNTgsOCBAQCBpOTE1 X2dlbV9vYmplY3Rfd2FpdF9wcmlvcml0eShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAogCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7CiAJCWludCByZXQ7CiAKLQkJcmV0ID0gZG1hX3Jl c3ZfZ2V0X2ZlbmNlc19yY3Uob2JqLT5iYXNlLnJlc3YsCi0JCQkJCSAgICAgICZleGNsLCAmY291 bnQsICZzaGFyZWQpOworCQlyZXQgPSBkbWFfcmVzdl9nZXRfZmVuY2VzX3VubG9ja2VkKG9iai0+ YmFzZS5yZXN2LAorCQkJCQkJICAgJmV4Y2wsICZjb3VudCwgJnNoYXJlZCk7CiAJCWlmIChyZXQp CiAJCQlyZXR1cm4gcmV0OwogCkBAIC0xNzAsNyArMTcwLDcgQEAgaTkxNV9nZW1fb2JqZWN0X3dh aXRfcHJpb3JpdHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAogCQlrZnJlZShz aGFyZWQpOwogCX0gZWxzZSB7Ci0JCWV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF9yY3Uob2JqLT5i YXNlLnJlc3YpOworCQlleGNsID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQob2JqLT5iYXNl LnJlc3YpOwogCX0KIAogCWlmIChleGNsKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5j CmluZGV4IDk3MGQ4ZjQ5ODZiYmUuLmYxZWQwM2NlZDdkZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5jCkBAIC0xNTk0LDggKzE1OTQsOCBAQCBpOTE1X3JlcXVlc3RfYXdhaXRfb2Jq ZWN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnRvLAogCQlzdHJ1Y3QgZG1hX2ZlbmNlICoqc2hhcmVk OwogCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7CiAKLQkJcmV0ID0gZG1hX3Jlc3ZfZ2V0X2ZlbmNl c19yY3Uob2JqLT5iYXNlLnJlc3YsCi0JCQkJCQkJJmV4Y2wsICZjb3VudCwgJnNoYXJlZCk7CisJ CXJldCA9IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQob2JqLT5iYXNlLnJlc3YsCisJCQkJ CQkgICAmZXhjbCwgJmNvdW50LCAmc2hhcmVkKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7 CiAKQEAgLTE2MTEsNyArMTYxMSw3IEBAIGk5MTVfcmVxdWVzdF9hd2FpdF9vYmplY3Qoc3RydWN0 IGk5MTVfcmVxdWVzdCAqdG8sCiAJCQlkbWFfZmVuY2VfcHV0KHNoYXJlZFtpXSk7CiAJCWtmcmVl KHNoYXJlZCk7CiAJfSBlbHNlIHsKLQkJZXhjbCA9IGRtYV9yZXN2X2dldF9leGNsX3JjdShvYmot PmJhc2UucmVzdik7CisJCWV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChvYmotPmJh c2UucmVzdik7CiAJfQogCiAJaWYgKGV4Y2wpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc3dfZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVu Y2UuYwppbmRleCAyNzQ0NTU4ZjMwNTA3Li4wYmNiN2VhNDQyMDFlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zd19mZW5jZS5jCkBAIC01ODIsNyArNTgyLDcgQEAgaW50IGk5MTVfc3dfZmVuY2Vf YXdhaXRfcmVzZXJ2YXRpb24oc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAogCQlzdHJ1Y3Qg ZG1hX2ZlbmNlICoqc2hhcmVkOwogCQl1bnNpZ25lZCBpbnQgY291bnQsIGk7CiAKLQkJcmV0ID0g ZG1hX3Jlc3ZfZ2V0X2ZlbmNlc19yY3UocmVzdiwgJmV4Y2wsICZjb3VudCwgJnNoYXJlZCk7CisJ CXJldCA9IGRtYV9yZXN2X2dldF9mZW5jZXNfdW5sb2NrZWQocmVzdiwgJmV4Y2wsICZjb3VudCwg JnNoYXJlZCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCkBAIC02MDYsNyArNjA2LDcg QEAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24oc3RydWN0IGk5MTVfc3dfZmVu Y2UgKmZlbmNlLAogCQkJZG1hX2ZlbmNlX3B1dChzaGFyZWRbaV0pOwogCQlrZnJlZShzaGFyZWQp OwogCX0gZWxzZSB7Ci0JCWV4Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF9yY3UocmVzdik7CisJCWV4 Y2wgPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChyZXN2KTsKIAl9CiAKIAlpZiAocmV0ID49 IDAgJiYgZXhjbCAmJiBleGNsLT5vcHMgIT0gZXhjbHVkZSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYwpp bmRleCA1NmRmODZlNWY3NDAwLi4xYWNhNjA1MDdiYjE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW0uYwpA QCAtOTE1LDggKzkxNSw3IEBAIGludCBtc21fZ2VtX2NwdV9wcmVwKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqLCB1aW50MzJfdCBvcCwga3RpbWVfdCAqdGltZW91dCkKIAkJb3AgJiBNU01fUFJF UF9OT1NZTkMgPyAwIDogdGltZW91dF90b19qaWZmaWVzKHRpbWVvdXQpOwogCWxvbmcgcmV0Owog Ci0JcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShvYmotPnJlc3YsIHdyaXRlLAotCQkJ CQkJICB0cnVlLCAgcmVtYWluKTsKKwlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2Nr ZWQob2JqLT5yZXN2LCB3cml0ZSwgdHJ1ZSwgcmVtYWluKTsKIAlpZiAocmV0ID09IDApCiAJCXJl dHVybiByZW1haW4gPT0gMCA/IC1FQlVTWSA6IC1FVElNRURPVVQ7CiAJZWxzZSBpZiAocmV0IDwg MCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3BudjUwL3duZHcuYyBi L2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L2Rpc3BudjUwL3duZHcuYwppbmRleCAwY2IxZjlkODQ4 ZDNlLi44ZDA0OGJhY2Q2ZjAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9k aXNwbnY1MC93bmR3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvZGlzcG52NTAvd25k dy5jCkBAIC01NjEsNyArNTYxLDcgQEAgbnY1MF93bmR3X3ByZXBhcmVfZmIoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQogCQkJYXN5dy0+aW1h Z2UuaGFuZGxlWzBdID0gY3R4ZG1hLT5vYmplY3QuaGFuZGxlOwogCX0KIAotCWFzeXctPnN0YXRl LmZlbmNlID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1KG52Ym8tPmJvLmJhc2UucmVzdik7CisJYXN5 dy0+c3RhdGUuZmVuY2UgPSBkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChudmJvLT5iby5iYXNl LnJlc3YpOwogCWFzeXctPmltYWdlLm9mZnNldFswXSA9IG52Ym8tPm9mZnNldDsKIAogCWlmICh3 bmR3LT5mdW5jLT5wcmVwYXJlKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVh dS9ub3V2ZWF1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9nZW0uYwpp bmRleCBhNzBlODI0MTNmYTc1Li5iYzZiMDllZTliNTUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9ub3V2ZWF1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1 L25vdXZlYXVfZ2VtLmMKQEAgLTkyOCw4ICs5MjgsOCBAQCBub3V2ZWF1X2dlbV9pb2N0bF9jcHVf cHJlcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQlyZXR1cm4gLUVOT0VO VDsKIAludmJvID0gbm91dmVhdV9nZW1fb2JqZWN0KGdlbSk7CiAKLQlscmV0ID0gZG1hX3Jlc3Zf d2FpdF90aW1lb3V0X3JjdShudmJvLT5iby5iYXNlLnJlc3YsIHdyaXRlLCB0cnVlLAotCQkJCQkJ ICAgbm9fd2FpdCA/IDAgOiAzMCAqIEhaKTsKKwlscmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0 X3VubG9ja2VkKG52Ym8tPmJvLmJhc2UucmVzdiwgd3JpdGUsIHRydWUsCisJCQkJCSAgICAgIG5v X3dhaXQgPyAwIDogMzAgKiBIWik7CiAJaWYgKCFscmV0KQogCQlyZXQgPSAtRUJVU1k7CiAJZWxz ZSBpZiAobHJldCA+IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMKaW5k ZXggY2EwNzA5OGE2MTQxOS4uZWVmNWI2MzJlZTBjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9z dC9wYW5mcm9zdF9kcnYuYwpAQCAtMzExLDggKzMxMSw4IEBAIHBhbmZyb3N0X2lvY3RsX3dhaXRf Ym8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoIWdlbV9vYmopCiAJ CXJldHVybiAtRU5PRU5UOwogCi0JcmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShnZW1f b2JqLT5yZXN2LCB0cnVlLAotCQkJCQkJICB0cnVlLCB0aW1lb3V0KTsKKwlyZXQgPSBkbWFfcmVz dl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoZ2VtX29iai0+cmVzdiwgdHJ1ZSwKKwkJCQkJICAgICB0 cnVlLCB0aW1lb3V0KTsKIAlpZiAoIXJldCkKIAkJcmV0ID0gdGltZW91dCA/IC1FVElNRURPVVQg OiAtRUJVU1k7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9qb2IuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9qb2IuYwppbmRleCA2 MDAzY2ZlYjEzMjIxLi4yZGYzZTk5OWEzOGQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v cGFuZnJvc3QvcGFuZnJvc3Rfam9iLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3Bh bmZyb3N0X2pvYi5jCkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIHZvaWQgcGFuZnJvc3RfYWNx dWlyZV9vYmplY3RfZmVuY2VzKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKmJvcywKIAlpbnQgaTsK IAogCWZvciAoaSA9IDA7IGkgPCBib19jb3VudDsgaSsrKQotCQlpbXBsaWNpdF9mZW5jZXNbaV0g PSBkbWFfcmVzdl9nZXRfZXhjbF9yY3UoYm9zW2ldLT5yZXN2KTsKKwkJaW1wbGljaXRfZmVuY2Vz W2ldID0gZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2NrZWQoYm9zW2ldLT5yZXN2KTsKIH0KIAogc3Rh dGljIHZvaWQgcGFuZnJvc3RfYXR0YWNoX29iamVjdF9mZW5jZXMoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICoqYm9zLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwppbmRleCAwNWVhMmYzOWY2 MjYxLi4xYTM4YjBiZjM2ZDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbl9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0uYwpAQCAt MTI1LDcgKzEyNSw3IEBAIHN0YXRpYyBpbnQgcmFkZW9uX2dlbV9zZXRfZG9tYWluKHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ29iaiwKIAl9CiAJaWYgKGRvbWFpbiA9PSBSQURFT05fR0VNX0RPTUFJ Tl9DUFUpIHsKIAkJLyogQXNraW5nIGZvciBjcHUgYWNjZXNzIHdhaXQgZm9yIG9iamVjdCBpZGxl ICovCi0JCXIgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KHJvYmotPnRiby5iYXNlLnJlc3Ys IHRydWUsIHRydWUsIDMwICogSFopOworCQlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9j a2VkKHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRydWUsIDMwICogSFopOwogCQlpZiAoIXIp CiAJCQlyID0gLUVCVVNZOwogCkBAIC00NzQsNyArNDc0LDcgQEAgaW50IHJhZGVvbl9nZW1fYnVz eV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCX0KIAlyb2JqID0g Z2VtX3RvX3JhZGVvbl9ibyhnb2JqKTsKIAotCXIgPSBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3Jj dShyb2JqLT50Ym8uYmFzZS5yZXN2LCB0cnVlKTsKKwlyID0gZG1hX3Jlc3ZfdGVzdF9zaWduYWxl ZF91bmxvY2tlZChyb2JqLT50Ym8uYmFzZS5yZXN2LCB0cnVlKTsKIAlpZiAociA9PSAwKQogCQly ID0gLUVCVVNZOwogCWVsc2UKQEAgLTUwMyw3ICs1MDMsNyBAQCBpbnQgcmFkZW9uX2dlbV93YWl0 X2lkbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAl9CiAJcm9i aiA9IGdlbV90b19yYWRlb25fYm8oZ29iaik7CiAKLQlyZXQgPSBkbWFfcmVzdl93YWl0X3RpbWVv dXRfcmN1KHJvYmotPnRiby5iYXNlLnJlc3YsIHRydWUsIHRydWUsIDMwICogSFopOworCXJldCA9 IGRtYV9yZXN2X3dhaXRfdGltZW91dF91bmxvY2tlZChyb2JqLT50Ym8uYmFzZS5yZXN2LCB0cnVl LCB0cnVlLCAzMCAqIEhaKTsKIAlpZiAocmV0ID09IDApCiAJCXIgPSAtRUJVU1k7CiAJZWxzZSBp ZiAocmV0IDwgMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX21u LmMgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9tbi5jCmluZGV4IGUzN2M5YTU3YTdj MzYuLmExOWJlM2Y4YTIxOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFk ZW9uX21uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JhZGVvbi9yYWRlb25fbW4uYwpAQCAtNjYs OCArNjYsOCBAQCBzdGF0aWMgYm9vbCByYWRlb25fbW5faW52YWxpZGF0ZShzdHJ1Y3QgbW11X2lu dGVydmFsX25vdGlmaWVyICptbiwKIAkJcmV0dXJuIHRydWU7CiAJfQogCi0JciA9IGRtYV9yZXN2 X3dhaXRfdGltZW91dF9yY3UoYm8tPnRiby5iYXNlLnJlc3YsIHRydWUsIGZhbHNlLAotCQkJCSAg ICAgIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKKwlyID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3Vu bG9ja2VkKGJvLT50Ym8uYmFzZS5yZXN2LCB0cnVlLCBmYWxzZSwKKwkJCQkJICAgTUFYX1NDSEVE VUxFX1RJTUVPVVQpOwogCWlmIChyIDw9IDApCiAJCURSTV9FUlJPUigiKCVsZCkgZmFpbGVkIHRv IHdhaXQgZm9yIHVzZXIgYm9cbiIsIHIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fYm8uYwppbmRleCBjYTFiMDk4 YjZhNTYxLi4yMTVjYWQzMTQ5NjIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0 bV9iby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKQEAgLTI5NCw3ICsyOTQs NyBAQCBzdGF0aWMgaW50IHR0bV9ib19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZmZXJfb2Jq ZWN0ICpibywKIAlzdHJ1Y3QgZG1hX3Jlc3YgKnJlc3YgPSAmYm8tPmJhc2UuX3Jlc3Y7CiAJaW50 IHJldDsKIAotCWlmIChkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShyZXN2LCB0cnVlKSkKKwlp ZiAoZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZChyZXN2LCB0cnVlKSkKIAkJcmV0ID0g MDsKIAllbHNlCiAJCXJldCA9IC1FQlVTWTsKQEAgLTMwNiw4ICszMDYsOCBAQCBzdGF0aWMgaW50 IHR0bV9ib19jbGVhbnVwX3JlZnMoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKIAkJCWRt YV9yZXN2X3VubG9jayhiby0+YmFzZS5yZXN2KTsKIAkJc3Bpbl91bmxvY2soJmJvLT5iZGV2LT5s cnVfbG9jayk7CiAKLQkJbHJldCA9IGRtYV9yZXN2X3dhaXRfdGltZW91dF9yY3UocmVzdiwgdHJ1 ZSwgaW50ZXJydXB0aWJsZSwKLQkJCQkJCSAzMCAqIEhaKTsKKwkJbHJldCA9IGRtYV9yZXN2X3dh aXRfdGltZW91dF91bmxvY2tlZChyZXN2LCB0cnVlLCBpbnRlcnJ1cHRpYmxlLAorCQkJCQkJICAg ICAgMzAgKiBIWik7CiAKIAkJaWYgKGxyZXQgPCAwKQogCQkJcmV0dXJuIGxyZXQ7CkBAIC00MDks OCArNDA5LDggQEAgc3RhdGljIHZvaWQgdHRtX2JvX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYp CiAJCQkvKiBMYXN0IHJlc29ydCwgaWYgd2UgZmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRo ZQogCQkJICogZmVuY2VzIGJsb2NrIGZvciB0aGUgQk8gdG8gYmVjb21lIGlkbGUKIAkJCSAqLwot CQkJZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3JjdShiby0+YmFzZS5yZXN2LCB0cnVlLCBmYWxzZSwK LQkJCQkJCSAgMzAgKiBIWik7CisJCQlkbWFfcmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoYm8t PmJhc2UucmVzdiwgdHJ1ZSwgZmFsc2UsCisJCQkJCQkgICAgICAgMzAgKiBIWik7CiAJCX0KIAog CQlpZiAoYm8tPmJkZXYtPmZ1bmNzLT5yZWxlYXNlX25vdGlmeSkKQEAgLTQyMCw3ICs0MjAsNyBA QCBzdGF0aWMgdm9pZCB0dG1fYm9fcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAkJdHRtX21l bV9pb19mcmVlKGJkZXYsICZiby0+bWVtKTsKIAl9CiAKLQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2ln bmFsZWRfcmN1KGJvLT5iYXNlLnJlc3YsIHRydWUpIHx8CisJaWYgKCFkbWFfcmVzdl90ZXN0X3Np Z25hbGVkX3VubG9ja2VkKGJvLT5iYXNlLnJlc3YsIHRydWUpIHx8CiAJICAgICFkbWFfcmVzdl90 cnlsb2NrKGJvLT5iYXNlLnJlc3YpKSB7CiAJCS8qIFRoZSBCTyBpcyBub3QgaWRsZSwgcmVzdXJy ZWN0IGl0IGZvciBkZWxheWVkIGRlc3Ryb3kgKi8KIAkJdHRtX2JvX2ZsdXNoX2FsbF9mZW5jZXMo Ym8pOwpAQCAtMTExNiwxNCArMTExNiwxNCBAQCBpbnQgdHRtX2JvX3dhaXQoc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywKIAlsb25nIHRpbWVvdXQgPSAxNSAqIEhaOwogCiAJaWYgKG5vX3dh aXQpIHsKLQkJaWYgKGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KGJvLT5iYXNlLnJlc3YsIHRy dWUpKQorCQlpZiAoZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91bmxvY2tlZChiby0+YmFzZS5yZXN2 LCB0cnVlKSkKIAkJCXJldHVybiAwOwogCQllbHNlCiAJCQlyZXR1cm4gLUVCVVNZOwogCX0KIAot CXRpbWVvdXQgPSBkbWFfcmVzdl93YWl0X3RpbWVvdXRfcmN1KGJvLT5iYXNlLnJlc3YsIHRydWUs Ci0JCQkJCQkgICAgICBpbnRlcnJ1cHRpYmxlLCB0aW1lb3V0KTsKKwl0aW1lb3V0ID0gZG1hX3Jl c3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKGJvLT5iYXNlLnJlc3YsIHRydWUsCisJCQkJCQkgaW50 ZXJydXB0aWJsZSwgdGltZW91dCk7CiAJaWYgKHRpbWVvdXQgPCAwKQogCQlyZXR1cm4gdGltZW91 dDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jIGIvZHJp dmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9mZW5jZS5jCmluZGV4IDI5MDJkYzZlNjRmYWYuLjAxMGE4 MjQwNWUzNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZmVuY2UuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2ZlbmNlLmMKQEAgLTE1MSw4ICsxNTEsOCBA QCBpbnQgdmdlbV9mZW5jZV9hdHRhY2hfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAog CS8qIENoZWNrIGZvciBhIGNvbmZsaWN0aW5nIGZlbmNlICovCiAJcmVzdiA9IG9iai0+cmVzdjsK LQlpZiAoIWRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfcmN1KHJlc3YsCi0JCQkJCQkgIGFyZy0+Zmxh Z3MgJiBWR0VNX0ZFTkNFX1dSSVRFKSkgeworCWlmICghZG1hX3Jlc3ZfdGVzdF9zaWduYWxlZF91 bmxvY2tlZChyZXN2LAorCQkJCQkgICAgIGFyZy0+ZmxhZ3MgJiBWR0VNX0ZFTkNFX1dSSVRFKSkg ewogCQlyZXQgPSAtRUJVU1k7CiAJCWdvdG8gZXJyX2ZlbmNlOwogCX0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92aXJ0aW8vdmlydGdwdV9pb2N0bC5jIGIvZHJpdmVycy9ncHUvZHJtL3Zp cnRpby92aXJ0Z3B1X2lvY3RsLmMKaW5kZXggNjY5ZjJlZTM5NTE1NC4uYWIwMTBjOGUzMjgxNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL3ZpcnRpby92aXJ0Z3B1X2lvY3RsLmMKQEAgLTQ1MSwxMCArNDUxLDEw IEBAIHN0YXRpYyBpbnQgdmlydGlvX2dwdV93YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCiAJCXJldHVybiAtRU5PRU5UOwogCiAJaWYgKGFyZ3MtPmZsYWdzICYg VklSVEdQVV9XQUlUX05PV0FJVCkgewotCQlyZXQgPSBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3Jj dShvYmotPnJlc3YsIHRydWUpOworCQlyZXQgPSBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3VubG9j a2VkKG9iai0+cmVzdiwgdHJ1ZSk7CiAJfSBlbHNlIHsKLQkJcmV0ID0gZG1hX3Jlc3Zfd2FpdF90 aW1lb3V0X3JjdShvYmotPnJlc3YsIHRydWUsIHRydWUsCi0JCQkJCQl0aW1lb3V0KTsKKwkJcmV0 ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkKG9iai0+cmVzdiwgdHJ1ZSwgdHJ1ZSwK KwkJCQkJCSAgICAgdGltZW91dCk7CiAJfQogCWlmIChyZXQgPT0gMCkKIAkJcmV0ID0gLUVCVVNZ OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYyBiL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2JvLmMKaW5kZXggMDRkZDQ5YzRjMjU3Mi4uMTllMWNl MjM4NDJhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfYm8uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9iby5jCkBAIC03NDMsNyArNzQzLDcg QEAgc3RhdGljIGludCB2bXdfdXNlcl9ib19zeW5jY3B1X2dyYWIoc3RydWN0IHZtd191c2VyX2J1 ZmZlcl9vYmplY3QgKnVzZXJfYm8sCiAJaWYgKGZsYWdzICYgZHJtX3Ztd19zeW5jY3B1X2FsbG93 X2NzKSB7CiAJCWxvbmcgbHJldDsKIAotCQlscmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3Jj dQorCQlscmV0ID0gZG1hX3Jlc3Zfd2FpdF90aW1lb3V0X3VubG9ja2VkCiAJCQkoYm8tPmJhc2Uu cmVzdiwgdHJ1ZSwgdHJ1ZSwKIAkJCSBub25ibG9jayA/IDAgOiBNQVhfU0NIRURVTEVfVElNRU9V VCk7CiAJCWlmICghbHJldCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLXJlc3YuaCBi L2luY2x1ZGUvbGludXgvZG1hLXJlc3YuaAppbmRleCBkNDRhNzdlOGE3ZTM0Li45OWNmYjdhZjk2 NmI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RtYS1yZXN2LmgKKysrIGIvaW5jbHVkZS9s aW51eC9kbWEtcmVzdi5oCkBAIC0yNDYsNyArMjQ2LDcgQEAgZG1hX3Jlc3ZfZ2V0X2V4Y2woc3Ry dWN0IGRtYV9yZXN2ICpvYmopCiB9CiAKIC8qKgotICogZG1hX3Jlc3ZfZ2V0X2V4Y2xfcmN1IC0g Z2V0IHRoZSByZXNlcnZhdGlvbiBvYmplY3QncworICogZG1hX3Jlc3ZfZ2V0X2V4Y2xfdW5sb2Nr ZWQgLSBnZXQgdGhlIHJlc2VydmF0aW9uIG9iamVjdCdzCiAgKiBleGNsdXNpdmUgZmVuY2UsIHdp dGhvdXQgbG9jayBoZWxkLgogICogQG9iajogdGhlIHJlc2VydmF0aW9uIG9iamVjdAogICoKQEAg LTI1Nyw3ICsyNTcsNyBAQCBkbWFfcmVzdl9nZXRfZXhjbChzdHJ1Y3QgZG1hX3Jlc3YgKm9iaikK ICAqIFRoZSBleGNsdXNpdmUgZmVuY2Ugb3IgTlVMTCBpZiBub25lCiAgKi8KIHN0YXRpYyBpbmxp bmUgc3RydWN0IGRtYV9mZW5jZSAqCi1kbWFfcmVzdl9nZXRfZXhjbF9yY3Uoc3RydWN0IGRtYV9y ZXN2ICpvYmopCitkbWFfcmVzdl9nZXRfZXhjbF91bmxvY2tlZChzdHJ1Y3QgZG1hX3Jlc3YgKm9i aikKIHsKIAlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKIApAQCAtMjc4LDE2ICsyNzgsMTYgQEAg dm9pZCBkbWFfcmVzdl9hZGRfc2hhcmVkX2ZlbmNlKHN0cnVjdCBkbWFfcmVzdiAqb2JqLCBzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSk7CiAKIHZvaWQgZG1hX3Jlc3ZfYWRkX2V4Y2xfZmVuY2Uoc3Ry dWN0IGRtYV9yZXN2ICpvYmosIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsKIAotaW50IGRtYV9y ZXN2X2dldF9mZW5jZXNfcmN1KHN0cnVjdCBkbWFfcmVzdiAqb2JqLAotCQkJICAgIHN0cnVjdCBk bWFfZmVuY2UgKipwZmVuY2VfZXhjbCwKLQkJCSAgICB1bnNpZ25lZCAqcHNoYXJlZF9jb3VudCwK LQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqKnBzaGFyZWQpOworaW50IGRtYV9yZXN2X2dldF9m ZW5jZXNfdW5sb2NrZWQoc3RydWN0IGRtYV9yZXN2ICpvYmosCisJCQkJIHN0cnVjdCBkbWFfZmVu Y2UgKipwZmVuY2VfZXhjbCwKKwkJCQkgdW5zaWduZWQgKnBzaGFyZWRfY291bnQsCisJCQkJIHN0 cnVjdCBkbWFfZmVuY2UgKioqcHNoYXJlZCk7CiAKIGludCBkbWFfcmVzdl9jb3B5X2ZlbmNlcyhz dHJ1Y3QgZG1hX3Jlc3YgKmRzdCwgc3RydWN0IGRtYV9yZXN2ICpzcmMpOwogCi1sb25nIGRtYV9y ZXN2X3dhaXRfdGltZW91dF9yY3Uoc3RydWN0IGRtYV9yZXN2ICpvYmosIGJvb2wgd2FpdF9hbGws IGJvb2wgaW50ciwKLQkJCSAgICAgICB1bnNpZ25lZCBsb25nIHRpbWVvdXQpOworbG9uZyBkbWFf cmVzdl93YWl0X3RpbWVvdXRfdW5sb2NrZWQoc3RydWN0IGRtYV9yZXN2ICpvYmosIGJvb2wgd2Fp dF9hbGwsIGJvb2wgaW50ciwKKwkJCQkgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0KTsKIAotYm9v bCBkbWFfcmVzdl90ZXN0X3NpZ25hbGVkX3JjdShzdHJ1Y3QgZG1hX3Jlc3YgKm9iaiwgYm9vbCB0 ZXN0X2FsbCk7Citib29sIGRtYV9yZXN2X3Rlc3Rfc2lnbmFsZWRfdW5sb2NrZWQoc3RydWN0IGRt YV9yZXN2ICpvYmosIGJvb2wgdGVzdF9hbGwpOwogCiAjZW5kaWYgLyogX0xJTlVYX1JFU0VSVkFU SU9OX0ggKi8KLS0gCjIuMzEuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg== 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 X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 427E5C4707F for ; Tue, 25 May 2021 21:18:16 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 0D290611BE for ; Tue, 25 May 2021 21:18:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0D290611BE Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=jlekstrand.net Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 012176EB4C; Tue, 25 May 2021 21:18:07 +0000 (UTC) Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9670C6EB4C for ; Tue, 25 May 2021 21:18:05 +0000 (UTC) Received: by mail-pl1-x62b.google.com with SMTP id s4so15473888plg.12 for ; Tue, 25 May 2021 14:18:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jlekstrand-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zBYlG0TQXh3M5UESnQyBpw3BPZcYPcdHje/svqKqnqU=; b=joO78nT0dLZnb9w8eJniqsx2G2+4nlTVNaMzBydbNFULqXWjGkN1/BRY/qv7FCnti/ 6WpO1ZY1f24gsAypfay6zclPnXbIx0Uhq4wkIbvDmiGWw4aC1kTa0LHdOiPRwECeQfSc fXJQemjfhPwgR0wHoMJ0Ctk7voPZalLEUSkqst6hLUWN6ZlfKgFVesc7WEhr/o/T8NUp Me93Qf0dwaGpk6mnmkMYw3R3mPAvjWYJbExUyH5K0wNBBUEVc/5BBU9okb0Rhe+K63vN nHC3+04sGcsb5Aeer69/sCkqHywz6EIayTdzoA7fz0VY4HE89D8fPKdjXZBWZbvYUllZ phAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zBYlG0TQXh3M5UESnQyBpw3BPZcYPcdHje/svqKqnqU=; b=UEiZEn4z7wcyEvt9psds51yfkFgZaVQUc+6E4SXmO0pzpWD/uJIx1ArhNmpPjonppL eE57XYyVfhkoAP6VOF6ud8g75mx/MoXyctzXhtkBDG/sK58rjQL+X1o2uL++H8paeUgp Bf9D3/CTst8+1ByEhTKJCd/s6aMnZ0QvpKGMVWuyGLLeBBGcWB9Xqi6wftOMqaAQHVu9 75HedgP8pd4b0R38KKjhK1ggBAICk2bKq0LaZcVQyANit5WT8uBP2xXNwUGx9bkVITkg +QvxFAYsTiiWdQ+KPZ3Ysm4bEcUEtxcdWxJ31n9pgCVgIruHESdwX8EjuFE3sYNZycvN C+eg== X-Gm-Message-State: AOAM533vM5ZlGPerHAkMfgkg02fA0FKyZ15asnxoNtgLkxWmOdir7XbY DAdASAFj0KPDWlBbRAFhrXldh025uoZAJg== X-Google-Smtp-Source: ABdhPJypms8hHhyEWPWO7Fvw22wMDzBbdTdTOjyDpDW478qXFko1qswyGQJ8BnFot6xxq/p6vsdzAw== X-Received: by 2002:a17:90b:3781:: with SMTP id mz1mr326902pjb.234.1621977484492; Tue, 25 May 2021 14:18:04 -0700 (PDT) Received: from omlet.lan ([134.134.139.83]) by smtp.gmail.com with ESMTPSA id e186sm14342278pfa.145.2021.05.25.14.18.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 May 2021 14:18:03 -0700 (PDT) From: Jason Ekstrand To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Subject: [PATCH 2/7] dma-buf: Rename dma_resv helpers from _rcu to _unlocked (v2) Date: Tue, 25 May 2021 16:17:48 -0500 Message-Id: <20210525211753.1086069-3-jason@jlekstrand.net> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210525211753.1086069-1-jason@jlekstrand.net> References: <20210525211753.1086069-1-jason@jlekstrand.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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: , Cc: Thomas Zimmermann , Daniel Vetter , Huang Rui , VMware Graphics , Gerd Hoffmann , Jason Ekstrand , Sean Paul , =?UTF-8?q?Christian=20K=C3=B6nig?= Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" None of these helpers actually leak any RCU details to the caller. They all assume you have a genuine reference, take the RCU read lock, and retry if needed. Naming them with an _rcu is likely to cause callers more panic than needed. v2 (Jason Ekstrand): - Fix function argument indentation Signed-off-by: Jason Ekstrand Suggested-by: Daniel Vetter Cc: Christian König Cc: Maarten Lankhorst Cc: Maxime Ripard Cc: Thomas Zimmermann Cc: Lucas Stach Cc: Rob Clark Cc: Sean Paul Cc: Huang Rui Cc: Gerd Hoffmann Cc: VMware Graphics --- drivers/dma-buf/dma-buf.c | 4 +-- drivers/dma-buf/dma-resv.c | 28 +++++++++---------- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 6 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 4 +-- drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 6 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c | 4 +-- drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 +-- drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 6 ++-- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 14 +++++----- .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 6 ++-- drivers/gpu/drm/drm_gem.c | 10 +++---- drivers/gpu/drm/drm_gem_atomic_helper.c | 2 +- drivers/gpu/drm/etnaviv/etnaviv_gem.c | 7 ++--- drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c | 8 +++--- drivers/gpu/drm/i915/display/intel_display.c | 2 +- drivers/gpu/drm/i915/dma_resv_utils.c | 2 +- drivers/gpu/drm/i915/gem/i915_gem_busy.c | 2 +- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 +- drivers/gpu/drm/i915/gem/i915_gem_object.h | 2 +- drivers/gpu/drm/i915/gem/i915_gem_userptr.c | 4 +-- drivers/gpu/drm/i915/gem/i915_gem_wait.c | 10 +++---- drivers/gpu/drm/i915/i915_request.c | 6 ++-- drivers/gpu/drm/i915/i915_sw_fence.c | 4 +-- drivers/gpu/drm/msm/msm_gem.c | 3 +- drivers/gpu/drm/nouveau/dispnv50/wndw.c | 2 +- drivers/gpu/drm/nouveau/nouveau_gem.c | 4 +-- drivers/gpu/drm/panfrost/panfrost_drv.c | 4 +-- drivers/gpu/drm/panfrost/panfrost_job.c | 2 +- drivers/gpu/drm/radeon/radeon_gem.c | 6 ++-- drivers/gpu/drm/radeon/radeon_mn.c | 4 +-- drivers/gpu/drm/ttm/ttm_bo.c | 18 ++++++------ drivers/gpu/drm/vgem/vgem_fence.c | 4 +-- drivers/gpu/drm/virtio/virtgpu_ioctl.c | 6 ++-- drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 2 +- include/linux/dma-resv.h | 18 ++++++------ 36 files changed, 108 insertions(+), 110 deletions(-) diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c index f264b70c383eb..ed6451d55d663 100644 --- a/drivers/dma-buf/dma-buf.c +++ b/drivers/dma-buf/dma-buf.c @@ -1147,8 +1147,8 @@ static int __dma_buf_begin_cpu_access(struct dma_buf *dmabuf, long ret; /* Wait on any implicit rendering fences */ - ret = dma_resv_wait_timeout_rcu(resv, write, true, - MAX_SCHEDULE_TIMEOUT); + ret = dma_resv_wait_timeout_unlocked(resv, write, true, + MAX_SCHEDULE_TIMEOUT); if (ret < 0) return ret; diff --git a/drivers/dma-buf/dma-resv.c b/drivers/dma-buf/dma-resv.c index 6ddbeb5dfbf65..d6f1ed4cd4d55 100644 --- a/drivers/dma-buf/dma-resv.c +++ b/drivers/dma-buf/dma-resv.c @@ -417,7 +417,7 @@ int dma_resv_copy_fences(struct dma_resv *dst, struct dma_resv *src) EXPORT_SYMBOL(dma_resv_copy_fences); /** - * dma_resv_get_fences_rcu - Get an object's shared and exclusive + * dma_resv_get_fences_unlocked - Get an object's shared and exclusive * fences without update side lock held * @obj: the reservation object * @pfence_excl: the returned exclusive fence (or NULL) @@ -429,10 +429,10 @@ EXPORT_SYMBOL(dma_resv_copy_fences); * exclusive fence is not specified the fence is put into the array of the * shared fences as well. Returns either zero or -ENOMEM. */ -int dma_resv_get_fences_rcu(struct dma_resv *obj, - struct dma_fence **pfence_excl, - unsigned *pshared_count, - struct dma_fence ***pshared) +int dma_resv_get_fences_unlocked(struct dma_resv *obj, + struct dma_fence **pfence_excl, + unsigned *pshared_count, + struct dma_fence ***pshared) { struct dma_fence **shared = NULL; struct dma_fence *fence_excl; @@ -515,10 +515,10 @@ int dma_resv_get_fences_rcu(struct dma_resv *obj, *pshared = shared; return ret; } -EXPORT_SYMBOL_GPL(dma_resv_get_fences_rcu); +EXPORT_SYMBOL_GPL(dma_resv_get_fences_unlocked); /** - * dma_resv_wait_timeout_rcu - Wait on reservation's objects + * dma_resv_wait_timeout_unlocked - Wait on reservation's objects * shared and/or exclusive fences. * @obj: the reservation object * @wait_all: if true, wait on all fences, else wait on just exclusive fence @@ -529,9 +529,9 @@ EXPORT_SYMBOL_GPL(dma_resv_get_fences_rcu); * Returns -ERESTARTSYS if interrupted, 0 if the wait timed out, or * greater than zer on success. */ -long dma_resv_wait_timeout_rcu(struct dma_resv *obj, - bool wait_all, bool intr, - unsigned long timeout) +long dma_resv_wait_timeout_unlocked(struct dma_resv *obj, + bool wait_all, bool intr, + unsigned long timeout) { struct dma_fence *fence; unsigned seq, shared_count; @@ -602,7 +602,7 @@ long dma_resv_wait_timeout_rcu(struct dma_resv *obj, rcu_read_unlock(); goto retry; } -EXPORT_SYMBOL_GPL(dma_resv_wait_timeout_rcu); +EXPORT_SYMBOL_GPL(dma_resv_wait_timeout_unlocked); static inline int dma_resv_test_signaled_single(struct dma_fence *passed_fence) @@ -622,7 +622,7 @@ static inline int dma_resv_test_signaled_single(struct dma_fence *passed_fence) } /** - * dma_resv_test_signaled_rcu - Test if a reservation object's + * dma_resv_test_signaled_unlocked - Test if a reservation object's * fences have been signaled. * @obj: the reservation object * @test_all: if true, test all fences, otherwise only test the exclusive @@ -631,7 +631,7 @@ static inline int dma_resv_test_signaled_single(struct dma_fence *passed_fence) * RETURNS * true if all fences signaled, else false */ -bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all) +bool dma_resv_test_signaled_unlocked(struct dma_resv *obj, bool test_all) { unsigned seq, shared_count; int ret; @@ -680,4 +680,4 @@ bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all) rcu_read_unlock(); return ret; } -EXPORT_SYMBOL_GPL(dma_resv_test_signaled_rcu); +EXPORT_SYMBOL_GPL(dma_resv_test_signaled_unlocked); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index 8a1fb8b6606e5..b8e24f199be9a 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -203,9 +203,9 @@ int amdgpu_display_crtc_page_flip_target(struct drm_crtc *crtc, goto unpin; } - r = dma_resv_get_fences_rcu(new_abo->tbo.base.resv, &work->excl, - &work->shared_count, - &work->shared); + r = dma_resv_get_fences_unlocked(new_abo->tbo.base.resv, &work->excl, + &work->shared_count, + &work->shared); if (unlikely(r != 0)) { DRM_ERROR("failed to get fences for buffer\n"); goto unpin; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c index baa980a477d94..0d0319bc51577 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c @@ -98,7 +98,7 @@ __dma_resv_make_exclusive(struct dma_resv *obj) if (!dma_resv_get_list(obj)) /* no shared fences to convert */ return 0; - r = dma_resv_get_fences_rcu(obj, NULL, &count, &fences); + r = dma_resv_get_fences_unlocked(obj, NULL, &count, &fences); if (r) return r; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index 18974bd081f00..8e2996d6ba3ad 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -471,8 +471,8 @@ int amdgpu_gem_wait_idle_ioctl(struct drm_device *dev, void *data, return -ENOENT; } robj = gem_to_amdgpu_bo(gobj); - ret = dma_resv_wait_timeout_rcu(robj->tbo.base.resv, true, true, - timeout); + ret = dma_resv_wait_timeout_unlocked(robj->tbo.base.resv, true, true, + timeout); /* ret == 0 means not signaled, * ret > 0 means signaled diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c index b4971e90b98cf..38e1b32dd2cef 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c @@ -112,7 +112,7 @@ void amdgpu_pasid_free_delayed(struct dma_resv *resv, unsigned count; int r; - r = dma_resv_get_fences_rcu(resv, NULL, &count, &fences); + r = dma_resv_get_fences_unlocked(resv, NULL, &count, &fences); if (r) goto fallback; @@ -156,8 +156,8 @@ void amdgpu_pasid_free_delayed(struct dma_resv *resv, /* Not enough memory for the delayed delete, as last resort * block for all the fences to complete. */ - dma_resv_wait_timeout_rcu(resv, true, false, - MAX_SCHEDULE_TIMEOUT); + dma_resv_wait_timeout_unlocked(resv, true, false, + MAX_SCHEDULE_TIMEOUT); amdgpu_pasid_free(pasid); } diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c index 828b5167ff128..0319c8b547c48 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c @@ -75,8 +75,8 @@ static bool amdgpu_mn_invalidate_gfx(struct mmu_interval_notifier *mni, mmu_interval_set_seq(mni, cur_seq); - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, true, false, - MAX_SCHEDULE_TIMEOUT); + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, true, false, + MAX_SCHEDULE_TIMEOUT); mutex_unlock(&adev->notifier_lock); if (r <= 0) DRM_ERROR("(%ld) failed to wait for user bo\n", r); diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 0adffcace3263..de1c7c5501683 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -791,8 +791,8 @@ int amdgpu_bo_kmap(struct amdgpu_bo *bo, void **ptr) return 0; } - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, false, false, - MAX_SCHEDULE_TIMEOUT); + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, false, false, + MAX_SCHEDULE_TIMEOUT); if (r < 0) return r; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c index c6dbc08016045..4a2196404fb69 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c @@ -1115,9 +1115,9 @@ static int amdgpu_uvd_send_msg(struct amdgpu_ring *ring, struct amdgpu_bo *bo, ib->length_dw = 16; if (direct) { - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, - true, false, - msecs_to_jiffies(10)); + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, + true, false, + msecs_to_jiffies(10)); if (r == 0) r = -ETIMEDOUT; if (r < 0) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 4a3e3f72e1277..7ba1c537d6584 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -2007,14 +2007,14 @@ static void amdgpu_vm_prt_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm) unsigned i, shared_count; int r; - r = dma_resv_get_fences_rcu(resv, &excl, - &shared_count, &shared); + r = dma_resv_get_fences_unlocked(resv, &excl, + &shared_count, &shared); if (r) { /* Not enough memory to grab the fence list, as last resort * block for all the fences to complete. */ - dma_resv_wait_timeout_rcu(resv, true, false, - MAX_SCHEDULE_TIMEOUT); + dma_resv_wait_timeout_unlocked(resv, true, false, + MAX_SCHEDULE_TIMEOUT); return; } @@ -2625,7 +2625,7 @@ bool amdgpu_vm_evictable(struct amdgpu_bo *bo) return true; /* Don't evict VM page tables while they are busy */ - if (!dma_resv_test_signaled_rcu(bo->tbo.base.resv, true)) + if (!dma_resv_test_signaled_unlocked(bo->tbo.base.resv, true)) return false; /* Try to block ongoing updates */ @@ -2805,8 +2805,8 @@ void amdgpu_vm_adjust_size(struct amdgpu_device *adev, uint32_t min_vm_size, */ long amdgpu_vm_wait_idle(struct amdgpu_vm *vm, long timeout) { - timeout = dma_resv_wait_timeout_rcu(vm->root.base.bo->tbo.base.resv, - true, true, timeout); + timeout = dma_resv_wait_timeout_unlocked(vm->root.base.bo->tbo.base.resv, + true, true, timeout); if (timeout <= 0) return timeout; diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 9ca517b658546..0121d2817fa26 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -8276,9 +8276,9 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state, * deadlock during GPU reset when this fence will not signal * but we hold reservation lock for the BO. */ - r = dma_resv_wait_timeout_rcu(abo->tbo.base.resv, true, - false, - msecs_to_jiffies(5000)); + r = dma_resv_wait_timeout_unlocked(abo->tbo.base.resv, true, + false, + msecs_to_jiffies(5000)); if (unlikely(r <= 0)) DRM_ERROR("Waiting for fences timed out!"); diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 9989425e9875a..1241a421b9e81 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -770,8 +770,8 @@ long drm_gem_dma_resv_wait(struct drm_file *filep, u32 handle, return -EINVAL; } - ret = dma_resv_wait_timeout_rcu(obj->resv, wait_all, - true, timeout); + ret = dma_resv_wait_timeout_unlocked(obj->resv, wait_all, + true, timeout); if (ret == 0) ret = -ETIME; else if (ret > 0) @@ -1375,13 +1375,13 @@ int drm_gem_fence_array_add_implicit(struct xarray *fence_array, if (!write) { struct dma_fence *fence = - dma_resv_get_excl_rcu(obj->resv); + dma_resv_get_excl_unlocked(obj->resv); return drm_gem_fence_array_add(fence_array, fence); } - ret = dma_resv_get_fences_rcu(obj->resv, NULL, - &fence_count, &fences); + ret = dma_resv_get_fences_unlocked(obj->resv, NULL, + &fence_count, &fences); if (ret || !fence_count) return ret; diff --git a/drivers/gpu/drm/drm_gem_atomic_helper.c b/drivers/gpu/drm/drm_gem_atomic_helper.c index a005c5a0ba46a..a27135084ae5c 100644 --- a/drivers/gpu/drm/drm_gem_atomic_helper.c +++ b/drivers/gpu/drm/drm_gem_atomic_helper.c @@ -147,7 +147,7 @@ int drm_gem_plane_helper_prepare_fb(struct drm_plane *plane, struct drm_plane_st return 0; obj = drm_gem_fb_get_obj(state->fb, 0); - fence = dma_resv_get_excl_rcu(obj->resv); + fence = dma_resv_get_excl_unlocked(obj->resv); drm_atomic_set_fence_for_plane(state, fence); return 0; diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c index db69f19ab5bca..4e6f5346e84e4 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c @@ -390,14 +390,13 @@ int etnaviv_gem_cpu_prep(struct drm_gem_object *obj, u32 op, } if (op & ETNA_PREP_NOSYNC) { - if (!dma_resv_test_signaled_rcu(obj->resv, - write)) + if (!dma_resv_test_signaled_unlocked(obj->resv, write)) return -EBUSY; } else { unsigned long remain = etnaviv_timeout_to_jiffies(timeout); - ret = dma_resv_wait_timeout_rcu(obj->resv, - write, true, remain); + ret = dma_resv_wait_timeout_unlocked(obj->resv, + write, true, remain); if (ret <= 0) return ret == 0 ? -ETIMEDOUT : ret; } diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c index d05c359945799..6617fada4595d 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c @@ -189,13 +189,13 @@ static int submit_fence_sync(struct etnaviv_gem_submit *submit) continue; if (bo->flags & ETNA_SUBMIT_BO_WRITE) { - ret = dma_resv_get_fences_rcu(robj, &bo->excl, - &bo->nr_shared, - &bo->shared); + ret = dma_resv_get_fences_unlocked(robj, &bo->excl, + &bo->nr_shared, + &bo->shared); if (ret) return ret; } else { - bo->excl = dma_resv_get_excl_rcu(robj); + bo->excl = dma_resv_get_excl_unlocked(robj); } } diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index 422b59ebf6dce..5f0b85a102159 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -11040,7 +11040,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane, if (ret < 0) goto unpin_fb; - fence = dma_resv_get_excl_rcu(obj->base.resv); + fence = dma_resv_get_excl_unlocked(obj->base.resv); if (fence) { add_rps_boost_after_vblank(new_plane_state->hw.crtc, fence); diff --git a/drivers/gpu/drm/i915/dma_resv_utils.c b/drivers/gpu/drm/i915/dma_resv_utils.c index 9e508e7d4629f..bdfc6bf16a4e9 100644 --- a/drivers/gpu/drm/i915/dma_resv_utils.c +++ b/drivers/gpu/drm/i915/dma_resv_utils.c @@ -10,7 +10,7 @@ void dma_resv_prune(struct dma_resv *resv) { if (dma_resv_trylock(resv)) { - if (dma_resv_test_signaled_rcu(resv, true)) + if (dma_resv_test_signaled_unlocked(resv, true)) dma_resv_add_excl_fence(resv, NULL); dma_resv_unlock(resv); } diff --git a/drivers/gpu/drm/i915/gem/i915_gem_busy.c b/drivers/gpu/drm/i915/gem/i915_gem_busy.c index 25235ef630c10..754ad6d1bace9 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_busy.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_busy.c @@ -105,7 +105,7 @@ i915_gem_busy_ioctl(struct drm_device *dev, void *data, * Alternatively, we can trade that extra information on read/write * activity with * args->busy = - * !dma_resv_test_signaled_rcu(obj->resv, true); + * !dma_resv_test_signaled_unlocked(obj->resv, true); * to report the overall busyness. This is what the wait-ioctl does. * */ diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index 297143511f99b..e8f323564e57b 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1481,7 +1481,7 @@ static inline bool use_reloc_gpu(struct i915_vma *vma) if (DBG_FORCE_RELOC) return false; - return !dma_resv_test_signaled_rcu(vma->resv, true); + return !dma_resv_test_signaled_unlocked(vma->resv, true); } static unsigned long vma_phys_addr(struct i915_vma *vma, u32 offset) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.h b/drivers/gpu/drm/i915/gem/i915_gem_object.h index 2ebd79537aea9..7c0eb425cb3b3 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object.h +++ b/drivers/gpu/drm/i915/gem/i915_gem_object.h @@ -500,7 +500,7 @@ i915_gem_object_last_write_engine(struct drm_i915_gem_object *obj) struct dma_fence *fence; rcu_read_lock(); - fence = dma_resv_get_excl_rcu(obj->base.resv); + fence = dma_resv_get_excl_unlocked(obj->base.resv); rcu_read_unlock(); if (fence && dma_fence_is_i915(fence) && !dma_fence_is_signaled(fence)) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c index a657b99ec7606..44df18dc9669f 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c @@ -85,8 +85,8 @@ static bool i915_gem_userptr_invalidate(struct mmu_interval_notifier *mni, return true; /* we will unbind on next submission, still have userptr pins */ - r = dma_resv_wait_timeout_rcu(obj->base.resv, true, false, - MAX_SCHEDULE_TIMEOUT); + r = dma_resv_wait_timeout_unlocked(obj->base.resv, true, false, + MAX_SCHEDULE_TIMEOUT); if (r <= 0) drm_err(&i915->drm, "(%ld) failed to wait for idle\n", r); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_wait.c b/drivers/gpu/drm/i915/gem/i915_gem_wait.c index 4b9856d5ba14f..5b6c52659ad4d 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_wait.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_wait.c @@ -45,7 +45,7 @@ i915_gem_object_wait_reservation(struct dma_resv *resv, unsigned int count, i; int ret; - ret = dma_resv_get_fences_rcu(resv, &excl, &count, &shared); + ret = dma_resv_get_fences_unlocked(resv, &excl, &count, &shared); if (ret) return ret; @@ -73,7 +73,7 @@ i915_gem_object_wait_reservation(struct dma_resv *resv, */ prune_fences = count && timeout >= 0; } else { - excl = dma_resv_get_excl_rcu(resv); + excl = dma_resv_get_excl_unlocked(resv); } if (excl && timeout >= 0) @@ -158,8 +158,8 @@ i915_gem_object_wait_priority(struct drm_i915_gem_object *obj, unsigned int count, i; int ret; - ret = dma_resv_get_fences_rcu(obj->base.resv, - &excl, &count, &shared); + ret = dma_resv_get_fences_unlocked(obj->base.resv, + &excl, &count, &shared); if (ret) return ret; @@ -170,7 +170,7 @@ i915_gem_object_wait_priority(struct drm_i915_gem_object *obj, kfree(shared); } else { - excl = dma_resv_get_excl_rcu(obj->base.resv); + excl = dma_resv_get_excl_unlocked(obj->base.resv); } if (excl) { diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index 970d8f4986bbe..f1ed03ced7dd1 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c @@ -1594,8 +1594,8 @@ i915_request_await_object(struct i915_request *to, struct dma_fence **shared; unsigned int count, i; - ret = dma_resv_get_fences_rcu(obj->base.resv, - &excl, &count, &shared); + ret = dma_resv_get_fences_unlocked(obj->base.resv, + &excl, &count, &shared); if (ret) return ret; @@ -1611,7 +1611,7 @@ i915_request_await_object(struct i915_request *to, dma_fence_put(shared[i]); kfree(shared); } else { - excl = dma_resv_get_excl_rcu(obj->base.resv); + excl = dma_resv_get_excl_unlocked(obj->base.resv); } if (excl) { diff --git a/drivers/gpu/drm/i915/i915_sw_fence.c b/drivers/gpu/drm/i915/i915_sw_fence.c index 2744558f30507..0bcb7ea44201e 100644 --- a/drivers/gpu/drm/i915/i915_sw_fence.c +++ b/drivers/gpu/drm/i915/i915_sw_fence.c @@ -582,7 +582,7 @@ int i915_sw_fence_await_reservation(struct i915_sw_fence *fence, struct dma_fence **shared; unsigned int count, i; - ret = dma_resv_get_fences_rcu(resv, &excl, &count, &shared); + ret = dma_resv_get_fences_unlocked(resv, &excl, &count, &shared); if (ret) return ret; @@ -606,7 +606,7 @@ int i915_sw_fence_await_reservation(struct i915_sw_fence *fence, dma_fence_put(shared[i]); kfree(shared); } else { - excl = dma_resv_get_excl_rcu(resv); + excl = dma_resv_get_excl_unlocked(resv); } if (ret >= 0 && excl && excl->ops != exclude) { diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 56df86e5f7400..1aca60507bb14 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -915,8 +915,7 @@ int msm_gem_cpu_prep(struct drm_gem_object *obj, uint32_t op, ktime_t *timeout) op & MSM_PREP_NOSYNC ? 0 : timeout_to_jiffies(timeout); long ret; - ret = dma_resv_wait_timeout_rcu(obj->resv, write, - true, remain); + ret = dma_resv_wait_timeout_unlocked(obj->resv, write, true, remain); if (ret == 0) return remain == 0 ? -EBUSY : -ETIMEDOUT; else if (ret < 0) diff --git a/drivers/gpu/drm/nouveau/dispnv50/wndw.c b/drivers/gpu/drm/nouveau/dispnv50/wndw.c index 0cb1f9d848d3e..8d048bacd6f02 100644 --- a/drivers/gpu/drm/nouveau/dispnv50/wndw.c +++ b/drivers/gpu/drm/nouveau/dispnv50/wndw.c @@ -561,7 +561,7 @@ nv50_wndw_prepare_fb(struct drm_plane *plane, struct drm_plane_state *state) asyw->image.handle[0] = ctxdma->object.handle; } - asyw->state.fence = dma_resv_get_excl_rcu(nvbo->bo.base.resv); + asyw->state.fence = dma_resv_get_excl_unlocked(nvbo->bo.base.resv); asyw->image.offset[0] = nvbo->offset; if (wndw->func->prepare) { diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c index a70e82413fa75..bc6b09ee9b552 100644 --- a/drivers/gpu/drm/nouveau/nouveau_gem.c +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c @@ -928,8 +928,8 @@ nouveau_gem_ioctl_cpu_prep(struct drm_device *dev, void *data, return -ENOENT; nvbo = nouveau_gem_object(gem); - lret = dma_resv_wait_timeout_rcu(nvbo->bo.base.resv, write, true, - no_wait ? 0 : 30 * HZ); + lret = dma_resv_wait_timeout_unlocked(nvbo->bo.base.resv, write, true, + no_wait ? 0 : 30 * HZ); if (!lret) ret = -EBUSY; else if (lret > 0) diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panfrost/panfrost_drv.c index ca07098a61419..eef5b632ee0ce 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -311,8 +311,8 @@ panfrost_ioctl_wait_bo(struct drm_device *dev, void *data, if (!gem_obj) return -ENOENT; - ret = dma_resv_wait_timeout_rcu(gem_obj->resv, true, - true, timeout); + ret = dma_resv_wait_timeout_unlocked(gem_obj->resv, true, + true, timeout); if (!ret) ret = timeout ? -ETIMEDOUT : -EBUSY; diff --git a/drivers/gpu/drm/panfrost/panfrost_job.c b/drivers/gpu/drm/panfrost/panfrost_job.c index 6003cfeb13221..2df3e999a38d0 100644 --- a/drivers/gpu/drm/panfrost/panfrost_job.c +++ b/drivers/gpu/drm/panfrost/panfrost_job.c @@ -203,7 +203,7 @@ static void panfrost_acquire_object_fences(struct drm_gem_object **bos, int i; for (i = 0; i < bo_count; i++) - implicit_fences[i] = dma_resv_get_excl_rcu(bos[i]->resv); + implicit_fences[i] = dma_resv_get_excl_unlocked(bos[i]->resv); } static void panfrost_attach_object_fences(struct drm_gem_object **bos, diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c index 05ea2f39f6261..1a38b0bf36d11 100644 --- a/drivers/gpu/drm/radeon/radeon_gem.c +++ b/drivers/gpu/drm/radeon/radeon_gem.c @@ -125,7 +125,7 @@ static int radeon_gem_set_domain(struct drm_gem_object *gobj, } if (domain == RADEON_GEM_DOMAIN_CPU) { /* Asking for cpu access wait for object idle */ - r = dma_resv_wait_timeout_rcu(robj->tbo.base.resv, true, true, 30 * HZ); + r = dma_resv_wait_timeout_unlocked(robj->tbo.base.resv, true, true, 30 * HZ); if (!r) r = -EBUSY; @@ -474,7 +474,7 @@ int radeon_gem_busy_ioctl(struct drm_device *dev, void *data, } robj = gem_to_radeon_bo(gobj); - r = dma_resv_test_signaled_rcu(robj->tbo.base.resv, true); + r = dma_resv_test_signaled_unlocked(robj->tbo.base.resv, true); if (r == 0) r = -EBUSY; else @@ -503,7 +503,7 @@ int radeon_gem_wait_idle_ioctl(struct drm_device *dev, void *data, } robj = gem_to_radeon_bo(gobj); - ret = dma_resv_wait_timeout_rcu(robj->tbo.base.resv, true, true, 30 * HZ); + ret = dma_resv_wait_timeout_unlocked(robj->tbo.base.resv, true, true, 30 * HZ); if (ret == 0) r = -EBUSY; else if (ret < 0) diff --git a/drivers/gpu/drm/radeon/radeon_mn.c b/drivers/gpu/drm/radeon/radeon_mn.c index e37c9a57a7c36..a19be3f8a218c 100644 --- a/drivers/gpu/drm/radeon/radeon_mn.c +++ b/drivers/gpu/drm/radeon/radeon_mn.c @@ -66,8 +66,8 @@ static bool radeon_mn_invalidate(struct mmu_interval_notifier *mn, return true; } - r = dma_resv_wait_timeout_rcu(bo->tbo.base.resv, true, false, - MAX_SCHEDULE_TIMEOUT); + r = dma_resv_wait_timeout_unlocked(bo->tbo.base.resv, true, false, + MAX_SCHEDULE_TIMEOUT); if (r <= 0) DRM_ERROR("(%ld) failed to wait for user bo\n", r); diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index ca1b098b6a561..215cad3149621 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -294,7 +294,7 @@ static int ttm_bo_cleanup_refs(struct ttm_buffer_object *bo, struct dma_resv *resv = &bo->base._resv; int ret; - if (dma_resv_test_signaled_rcu(resv, true)) + if (dma_resv_test_signaled_unlocked(resv, true)) ret = 0; else ret = -EBUSY; @@ -306,8 +306,8 @@ static int ttm_bo_cleanup_refs(struct ttm_buffer_object *bo, dma_resv_unlock(bo->base.resv); spin_unlock(&bo->bdev->lru_lock); - lret = dma_resv_wait_timeout_rcu(resv, true, interruptible, - 30 * HZ); + lret = dma_resv_wait_timeout_unlocked(resv, true, interruptible, + 30 * HZ); if (lret < 0) return lret; @@ -409,8 +409,8 @@ static void ttm_bo_release(struct kref *kref) /* Last resort, if we fail to allocate memory for the * fences block for the BO to become idle */ - dma_resv_wait_timeout_rcu(bo->base.resv, true, false, - 30 * HZ); + dma_resv_wait_timeout_unlocked(bo->base.resv, true, false, + 30 * HZ); } if (bo->bdev->funcs->release_notify) @@ -420,7 +420,7 @@ static void ttm_bo_release(struct kref *kref) ttm_mem_io_free(bdev, &bo->mem); } - if (!dma_resv_test_signaled_rcu(bo->base.resv, true) || + if (!dma_resv_test_signaled_unlocked(bo->base.resv, true) || !dma_resv_trylock(bo->base.resv)) { /* The BO is not idle, resurrect it for delayed destroy */ ttm_bo_flush_all_fences(bo); @@ -1116,14 +1116,14 @@ int ttm_bo_wait(struct ttm_buffer_object *bo, long timeout = 15 * HZ; if (no_wait) { - if (dma_resv_test_signaled_rcu(bo->base.resv, true)) + if (dma_resv_test_signaled_unlocked(bo->base.resv, true)) return 0; else return -EBUSY; } - timeout = dma_resv_wait_timeout_rcu(bo->base.resv, true, - interruptible, timeout); + timeout = dma_resv_wait_timeout_unlocked(bo->base.resv, true, + interruptible, timeout); if (timeout < 0) return timeout; diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c index 2902dc6e64faf..010a82405e374 100644 --- a/drivers/gpu/drm/vgem/vgem_fence.c +++ b/drivers/gpu/drm/vgem/vgem_fence.c @@ -151,8 +151,8 @@ int vgem_fence_attach_ioctl(struct drm_device *dev, /* Check for a conflicting fence */ resv = obj->resv; - if (!dma_resv_test_signaled_rcu(resv, - arg->flags & VGEM_FENCE_WRITE)) { + if (!dma_resv_test_signaled_unlocked(resv, + arg->flags & VGEM_FENCE_WRITE)) { ret = -EBUSY; goto err_fence; } diff --git a/drivers/gpu/drm/virtio/virtgpu_ioctl.c b/drivers/gpu/drm/virtio/virtgpu_ioctl.c index 669f2ee395154..ab010c8e32816 100644 --- a/drivers/gpu/drm/virtio/virtgpu_ioctl.c +++ b/drivers/gpu/drm/virtio/virtgpu_ioctl.c @@ -451,10 +451,10 @@ static int virtio_gpu_wait_ioctl(struct drm_device *dev, void *data, return -ENOENT; if (args->flags & VIRTGPU_WAIT_NOWAIT) { - ret = dma_resv_test_signaled_rcu(obj->resv, true); + ret = dma_resv_test_signaled_unlocked(obj->resv, true); } else { - ret = dma_resv_wait_timeout_rcu(obj->resv, true, true, - timeout); + ret = dma_resv_wait_timeout_unlocked(obj->resv, true, true, + timeout); } if (ret == 0) ret = -EBUSY; diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c index 04dd49c4c2572..19e1ce23842a9 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c @@ -743,7 +743,7 @@ static int vmw_user_bo_synccpu_grab(struct vmw_user_buffer_object *user_bo, if (flags & drm_vmw_synccpu_allow_cs) { long lret; - lret = dma_resv_wait_timeout_rcu + lret = dma_resv_wait_timeout_unlocked (bo->base.resv, true, true, nonblock ? 0 : MAX_SCHEDULE_TIMEOUT); if (!lret) diff --git a/include/linux/dma-resv.h b/include/linux/dma-resv.h index d44a77e8a7e34..99cfb7af966b8 100644 --- a/include/linux/dma-resv.h +++ b/include/linux/dma-resv.h @@ -246,7 +246,7 @@ dma_resv_get_excl(struct dma_resv *obj) } /** - * dma_resv_get_excl_rcu - get the reservation object's + * dma_resv_get_excl_unlocked - get the reservation object's * exclusive fence, without lock held. * @obj: the reservation object * @@ -257,7 +257,7 @@ dma_resv_get_excl(struct dma_resv *obj) * The exclusive fence or NULL if none */ static inline struct dma_fence * -dma_resv_get_excl_rcu(struct dma_resv *obj) +dma_resv_get_excl_unlocked(struct dma_resv *obj) { struct dma_fence *fence; @@ -278,16 +278,16 @@ void dma_resv_add_shared_fence(struct dma_resv *obj, struct dma_fence *fence); void dma_resv_add_excl_fence(struct dma_resv *obj, struct dma_fence *fence); -int dma_resv_get_fences_rcu(struct dma_resv *obj, - struct dma_fence **pfence_excl, - unsigned *pshared_count, - struct dma_fence ***pshared); +int dma_resv_get_fences_unlocked(struct dma_resv *obj, + struct dma_fence **pfence_excl, + unsigned *pshared_count, + struct dma_fence ***pshared); int dma_resv_copy_fences(struct dma_resv *dst, struct dma_resv *src); -long dma_resv_wait_timeout_rcu(struct dma_resv *obj, bool wait_all, bool intr, - unsigned long timeout); +long dma_resv_wait_timeout_unlocked(struct dma_resv *obj, bool wait_all, bool intr, + unsigned long timeout); -bool dma_resv_test_signaled_rcu(struct dma_resv *obj, bool test_all); +bool dma_resv_test_signaled_unlocked(struct dma_resv *obj, bool test_all); #endif /* _LINUX_RESERVATION_H */ -- 2.31.1