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=-12.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,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 0FBA0C4363D for ; Thu, 1 Oct 2020 01:22:03 +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 A66EA2072E for ; Thu, 1 Oct 2020 01:22:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="onlQacxe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A66EA2072E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org 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 C67AA6E83D; Thu, 1 Oct 2020 01:21:57 +0000 (UTC) Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 21EAA6E83C for ; Thu, 1 Oct 2020 01:21:57 +0000 (UTC) Received: by mail-pg1-x542.google.com with SMTP id 5so2579206pgf.5 for ; Wed, 30 Sep 2020 18:21:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=h0WDFYsPW+b6j1jfcUSQQeUriSMq11o0ZvabqoN39UA=; b=onlQacxekbcJDz2YjcVG2DrnNESvH5tbpYAdSHAMQgppHD31QJcbkcQ5mB7WKffcxU e/hZ3yNtxRSIfhUhVpi4ZQvZK2f3RZ5+l7afIPcgKaZiKjGXs73FMFhhi3f9m5HYWrjo uoOcvNbRCp0gYHW/xSM4Okul2NcrJnm/7YW3LSCQCY46b5Sg//iSN8PS7t7T5UIZZwP6 xs9x5DBNfRQ7WIO9IRIScF59LngoXOLPRp/zTawGyxUliCRHz8HR3KdVmI8jKDqsgHPY +GmU1rtZ+Bpr3MGf6SNjM88lWkf61MEWIs7jWQ2Z2L13byhSHs+PeynO2zgWmC/CQjUN HOYw== 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=h0WDFYsPW+b6j1jfcUSQQeUriSMq11o0ZvabqoN39UA=; b=YLRCB1XZlKOcuFBBuM3WuJWEHqtBJb+pri4M/aJ4rFRyDE1FPTsOQQHV3XhZGFjqYi v5l66UDZhemsMIe4sOf2t1mHf0QBOClxUzz4yazrceiC2fMT11ue1n5bZn3ykIDnhjqO TsgTw9TqJfKRTEUOWSNDwnijFRAxWARir+HA2Qz5x6thnz+3er6AepdJR9pxlQcoXMd8 UQP/8k2x+dnmqtuU65IIqRXolY0D4nhXuCECKYH7anGwf8KWuqFou05dvwEdQKk3a+Oj veXfPX0VSJ4yYn5rlus2mUhFU2gGLbXfn+el4lRZoy1AVTip0v2N3RvLiygW5q2HO7gj tgdw== X-Gm-Message-State: AOAM533tHCiMHQsUib/4k+nyhRCuZDteAk79siGZRNsUs6fMgxF2ovkW 4c0kFzFLL+Bxegk/acI01r1FEQ== X-Google-Smtp-Source: ABdhPJzWNWSslL0iUFeC6X2mHpQYhzxFyfd0Vf6GpXH3E/IgEzy/YetGQYsr8SopJIAsY87hUw3vjg== X-Received: by 2002:a63:df02:: with SMTP id u2mr4108997pgg.270.1601515316600; Wed, 30 Sep 2020 18:21:56 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id s187sm4229372pfc.134.2020.09.30.18.21.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Sep 2020 18:21:55 -0700 (PDT) From: John Stultz To: lkml Subject: [PATCH v2 1/6] dma-buf: system_heap: Rework system heap to use sgtables instead of pagelists Date: Thu, 1 Oct 2020 01:21:46 +0000 Message-Id: <20201001012151.21149-2-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201001012151.21149-1-john.stultz@linaro.org> References: <20201001012151.21149-1-john.stultz@linaro.org> MIME-Version: 1.0 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: Sandeep Patil , dri-devel@lists.freedesktop.org, Ezequiel Garcia , Robin Murphy , James Jones , Liam Mark , Laura Abbott , Hridya Valsaraju , =?UTF-8?q?=C3=98rjan=20Eide?= , Suren Baghdasaryan , linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SW4gcHJlcGFyYXRpb24gZm9yIHNvbWUgcGF0Y2hlcyB0byBvcHRtaXplIHRoZSBzeXN0ZW0KaGVh cCBjb2RlLCByZXdvcmsgdGhlIGRtYWJ1ZiBleHBvcnRlciB0byB1dGlsaXplIHNndGFibGVzIHJh dGhlcgp0aGVuIHBhZ2VzbGlzdHMgZm9yIHRyYWNraW5nIHRoZSBhc3NvY2lhdGVkIHBhZ2VzLgoK VGhpcyB3aWxsIGFsbG93IGZvciBsYXJnZSBvcmRlciBwYWdlIGFsbG9jYXRpb25zLCBhcyB3ZWxs IGFzCm1vcmUgZWZmaWNpZW50IHBhZ2UgcG9vbGluZy4KCkluIGRvaW5nIHNvLCB0aGUgc3lzdGVt IGhlYXAgc3RvcHMgdXNpbmcgdGhlIGhlYXAtaGVscGVycyBsb2dpYwp3aGljaCBzYWRseSBpcyBu b3QgcXVpdGUgYXMgZ2VuZXJpYyBhcyBJIHdhcyBob3BpbmcgaXQgdG8gYmUsIHNvCnRoaXMgcGF0 Y2ggYWRkcyBoZWFwIHNwZWNpZmljIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZG1hX2J1Zl9vcHMK ZnVuY3Rpb24gaGFuZGxlcnMuCgpDYzogU3VtaXQgU2Vtd2FsIDxzdW1pdC5zZW13YWxAbGluYXJv Lm9yZz4KQ2M6IExpYW0gTWFyayA8bG1hcmtAY29kZWF1cm9yYS5vcmc+CkNjOiBMYXVyYSBBYmJv dHQgPGxhYmJvdHRAa2VybmVsLm9yZz4KQ2M6IEJyaWFuIFN0YXJrZXkgPEJyaWFuLlN0YXJrZXlA YXJtLmNvbT4KQ2M6IEhyaWR5YSBWYWxzYXJhanUgPGhyaWR5YUBnb29nbGUuY29tPgpDYzogU3Vy ZW4gQmFnaGRhc2FyeWFuIDxzdXJlbmJAZ29vZ2xlLmNvbT4KQ2M6IFNhbmRlZXAgUGF0aWwgPHNz cGF0aWxAZ29vZ2xlLmNvbT4KQ2M6IMOYcmphbiBFaWRlIDxvcmphbi5laWRlQGFybS5jb20+CkNj OiBSb2JpbiBNdXJwaHkgPHJvYmluLm11cnBoeUBhcm0uY29tPgpDYzogRXplcXVpZWwgR2FyY2lh IDxlemVxdWllbEBjb2xsYWJvcmEuY29tPgpDYzogU2ltb24gU2VyIDxjb250YWN0QGVtZXJzaW9u LmZyPgpDYzogSmFtZXMgSm9uZXMgPGpham9uZXNAbnZpZGlhLmNvbT4KQ2M6IGxpbnV4LW1lZGlh QHZnZXIua2VybmVsLm9yZwpDYzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpTaWdu ZWQtb2ZmLWJ5OiBKb2huIFN0dWx0eiA8am9obi5zdHVsdHpAbGluYXJvLm9yZz4KLS0tCnYyOgoq IEZpeCBsb2NraW5nIGlzc3VlIGFuZCBhbiB1bnVzZWQgcmV0dXJuIHZhbHVlIFJlcG9ydGVkLWJ5 OgogICAgIGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgogICAgIEp1bGlhIExhd2Fs bCA8anVsaWEubGF3YWxsQGxpcDYuZnI+CiogTWFrZSBzeXN0ZW1faGVhcF9idWZfb3BzIHN0YXRp YyBSZXBvcnRlZC1ieToKICAgICBrZXJuZWwgdGVzdCByb2JvdCA8bGtwQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2RtYS1idWYvaGVhcHMvc3lzdGVtX2hlYXAuYyB8IDM0NCArKysrKysrKysrKysr KysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjk4IGluc2VydGlvbnMoKyksIDQ2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVh cC5jIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL3N5c3RlbV9oZWFwLmMKaW5kZXggMGJmNjg4ZTNj MDIzLi43ZWM1OGY0ZTJiZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0 ZW1faGVhcC5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jCkBAIC0z LDcgKzMsMTEgQEAKICAqIERNQUJVRiBTeXN0ZW0gaGVhcCBleHBvcnRlcgogICoKICAqIENvcHly aWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBMaW5hcm8g THRkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LCAyMDIwIExpbmFybyBMdGQuCisgKgorICogUG9y dGlvbnMgYmFzZWQgb2ZmIG9mIEFuZHJldyBEYXZpcycgU1JBTSBoZWFwOgorICogQ29weXJpZ2h0 IChDKSAyMDE5IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGku Y29tLworICoJQW5kcmV3IEYuIERhdmlzIDxhZmRAdGkuY29tPgogICovCiAKICNpbmNsdWRlIDxs aW51eC9kbWEtYnVmLmg+CkBAIC0xNSw3MiArMTksMzIxIEBACiAjaW5jbHVkZSA8bGludXgvbW9k dWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9z bGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvc2NoZWQvc2lnbmFsLmg+Ci0jaW5jbHVkZSA8YXNtL3Bh Z2UuaD4KLQotI2luY2x1ZGUgImhlYXAtaGVscGVycy5oIgorI2luY2x1ZGUgPGxpbnV4L3ZtYWxs b2MuaD4KIAogc3RydWN0IGRtYV9oZWFwICpzeXNfaGVhcDsKIAotc3RhdGljIHZvaWQgc3lzdGVt X2hlYXBfZnJlZShzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVmZmVyICpidWZmZXIpCitzdHJ1Y3Qgc3lz dGVtX2hlYXBfYnVmZmVyIHsKKwlzdHJ1Y3QgZG1hX2hlYXAgKmhlYXA7CisJc3RydWN0IGxpc3Rf aGVhZCBhdHRhY2htZW50czsKKwlzdHJ1Y3QgbXV0ZXggbG9jazsKKwl1bnNpZ25lZCBsb25nIGxl bjsKKwlzdHJ1Y3Qgc2dfdGFibGUgc2dfdGFibGU7CisJaW50IHZtYXBfY250OworCXZvaWQgKnZh ZGRyOworfTsKKworc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgeworCXN0cnVjdCBkZXZpY2Ug KmRldjsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlOworCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsK K307CisKK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmR1cF9zZ190YWJsZShzdHJ1Y3Qgc2dfdGFi bGUgKnRhYmxlKQogewotCXBnb2ZmX3QgcGc7CisJc3RydWN0IHNnX3RhYmxlICpuZXdfdGFibGU7 CisJaW50IHJldCwgaTsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCAqbmV3X3NnOworCisJbmV3 X3RhYmxlID0ga3phbGxvYyhzaXplb2YoKm5ld190YWJsZSksIEdGUF9LRVJORUwpOworCWlmICgh bmV3X3RhYmxlKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCXJldCA9IHNnX2FsbG9j X3RhYmxlKG5ld190YWJsZSwgdGFibGUtPm5lbnRzLCBHRlBfS0VSTkVMKTsKKwlpZiAocmV0KSB7 CisJCWtmcmVlKG5ld190YWJsZSk7CisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCX0KKwor CW5ld19zZyA9IG5ld190YWJsZS0+c2dsOworCWZvcl9lYWNoX3NndGFibGVfc2codGFibGUsIHNn LCBpKSB7CisJCXNnX3NldF9wYWdlKG5ld19zZywgc2dfcGFnZShzZyksIHNnLT5sZW5ndGgsIHNn LT5vZmZzZXQpOworCQluZXdfc2cgPSBzZ19uZXh0KG5ld19zZyk7CisJfQorCisJcmV0dXJuIG5l d190YWJsZTsKK30KKworc3RhdGljIGludCBzeXN0ZW1faGVhcF9hdHRhY2goc3RydWN0IGRtYV9i dWYgKmRtYWJ1ZiwKKwkJCSAgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1l bnQpCit7CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2 OworCXN0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50ICphOworCXN0cnVjdCBzZ190YWJsZSAqdGFi bGU7CisKKwlhID0ga3phbGxvYyhzaXplb2YoKmEpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWEpCisJ CXJldHVybiAtRU5PTUVNOworCisJdGFibGUgPSBkdXBfc2dfdGFibGUoJmJ1ZmZlci0+c2dfdGFi bGUpOworCWlmIChJU19FUlIodGFibGUpKSB7CisJCWtmcmVlKGEpOworCQlyZXR1cm4gLUVOT01F TTsKKwl9CisKKwlhLT50YWJsZSA9IHRhYmxlOworCWEtPmRldiA9IGF0dGFjaG1lbnQtPmRldjsK KwlJTklUX0xJU1RfSEVBRCgmYS0+bGlzdCk7CisKKwlhdHRhY2htZW50LT5wcml2ID0gYTsKKwor CW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJbGlzdF9hZGQoJmEtPmxpc3QsICZidWZmZXIt PmF0dGFjaG1lbnRzKTsKKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgc3lzdGVtX2hlYXBfZGV0YXRjaChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmLAorCQkJCXN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQpCit7CisJ c3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVj dCBkbWFfaGVhcF9hdHRhY2htZW50ICphID0gYXR0YWNobWVudC0+cHJpdjsKKworCW11dGV4X2xv Y2soJmJ1ZmZlci0+bG9jayk7CisJbGlzdF9kZWwoJmEtPmxpc3QpOworCW11dGV4X3VubG9jaygm YnVmZmVyLT5sb2NrKTsKKworCXNnX2ZyZWVfdGFibGUoYS0+dGFibGUpOworCWtmcmVlKGEtPnRh YmxlKTsKKwlrZnJlZShhKTsKK30KKworc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqc3lzdGVtX2hl YXBfbWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNobWVudCwKKwkJ CQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKwlzdHJ1Y3QgZG1hX2hl YXBfYXR0YWNobWVudCAqYSA9IGF0dGFjaG1lbnQtPnByaXY7CisJc3RydWN0IHNnX3RhYmxlICp0 YWJsZSA9IGEtPnRhYmxlOworCisJaWYgKCFkbWFfbWFwX3NnKGF0dGFjaG1lbnQtPmRldiwgdGFi bGUtPnNnbCwgdGFibGUtPm5lbnRzLCBkaXJlY3Rpb24pKQorCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKKworCXJldHVybiB0YWJsZTsKK30KKworc3RhdGljIHZvaWQgc3lzdGVtX2hlYXBfdW5t YXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50LAorCQkJCSAg ICAgIHN0cnVjdCBzZ190YWJsZSAqdGFibGUsCisJCQkJICAgICAgZW51bSBkbWFfZGF0YV9kaXJl Y3Rpb24gZGlyZWN0aW9uKQoreworCWRtYV91bm1hcF9zZyhhdHRhY2htZW50LT5kZXYsIHRhYmxl LT5zZ2wsIHRhYmxlLT5uZW50cywgZGlyZWN0aW9uKTsKK30KKworc3RhdGljIGludCBzeXN0ZW1f aGVhcF9kbWFfYnVmX2JlZ2luX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJ CQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKwlzdHJ1Y3Qgc3lzdGVt X2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0 dGFjaG1lbnQgKmE7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCisJaWYgKGJ1ZmZl ci0+dm1hcF9jbnQpCisJCWludmFsaWRhdGVfa2VybmVsX3ZtYXBfcmFuZ2UoYnVmZmVyLT52YWRk ciwgYnVmZmVyLT5sZW4pOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRh Y2htZW50cywgbGlzdCkgeworCQlkbWFfc3luY19zZ19mb3JfY3B1KGEtPmRldiwgYS0+dGFibGUt PnNnbCwgYS0+dGFibGUtPm5lbnRzLAorCQkJCSAgICBkaXJlY3Rpb24pOworCX0KKwltdXRleF91 bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KIAotCWZvciAocGcgPSAwOyBw ZyA8IGJ1ZmZlci0+cGFnZWNvdW50OyBwZysrKQotCQlfX2ZyZWVfcGFnZShidWZmZXItPnBhZ2Vz W3BnXSk7Ci0Ja2ZyZWUoYnVmZmVyLT5wYWdlcyk7CitzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2Rt YV9idWZfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCQkJICAgICAg ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCXN0cnVjdCBzeXN0ZW1faGVh cF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgZG1hX2hlYXBfYXR0YWNo bWVudCAqYTsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlpZiAoYnVmZmVyLT52 bWFwX2NudCkKKwkJZmx1c2hfa2VybmVsX3ZtYXBfcmFuZ2UoYnVmZmVyLT52YWRkciwgYnVmZmVy LT5sZW4pOworCisJbGlzdF9mb3JfZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywg bGlzdCkgeworCQlkbWFfc3luY19zZ19mb3JfZGV2aWNlKGEtPmRldiwgYS0+dGFibGUtPnNnbCwg YS0+dGFibGUtPm5lbnRzLAorCQkJCSAgICAgICBkaXJlY3Rpb24pOworCX0KKwltdXRleF91bmxv Y2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBzeXN0ZW1f aGVhcF9tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hKQoreworCXN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJp djsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlID0gJmJ1ZmZlci0+c2dfdGFibGU7CisJdW5zaWdu ZWQgbG9uZyBhZGRyID0gdm1hLT52bV9zdGFydDsKKwlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHBpdGVy OworCWludCByZXQ7CisKKwlmb3JfZWFjaF9zZ3RhYmxlX3BhZ2UodGFibGUsICZwaXRlciwgdm1h LT52bV9wZ29mZikgeworCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZw aXRlcik7CisKKwkJcmV0ID0gcmVtYXBfcGZuX3JhbmdlKHZtYSwgYWRkciwgcGFnZV90b19wZm4o cGFnZSksIFBBR0VfU0laRSwKKwkJCQkgICAgICB2bWEtPnZtX3BhZ2VfcHJvdCk7CisJCWlmIChy ZXQpCisJCQlyZXR1cm4gcmV0OworCQlhZGRyICs9IFBBR0VfU0laRTsKKwkJaWYgKGFkZHIgPj0g dm1hLT52bV9lbmQpCisJCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2 b2lkICpzeXN0ZW1faGVhcF9kb192bWFwKHN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgKmJ1ZmZl cikKK3sKKwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlID0gJmJ1ZmZlci0+c2dfdGFibGU7CisJaW50 IG5wYWdlcyA9IFBBR0VfQUxJR04oYnVmZmVyLT5sZW4pIC8gUEFHRV9TSVpFOworCXN0cnVjdCBw YWdlICoqcGFnZXMgPSB2bWFsbG9jKHNpemVvZihzdHJ1Y3QgcGFnZSAqKSAqIG5wYWdlcyk7CisJ c3RydWN0IHBhZ2UgKip0bXAgPSBwYWdlczsKKwlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHBpdGVyOwor CXZvaWQgKnZhZGRyOworCisJaWYgKCFwYWdlcykKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7 CisKKwlmb3JfZWFjaF9zZ3RhYmxlX3BhZ2UodGFibGUsICZwaXRlciwgMCkgeworCQlXQVJOX09O KHRtcCAtIHBhZ2VzID49IG5wYWdlcyk7CisJCSp0bXArKyA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZw aXRlcik7CisJfQorCisJdmFkZHIgPSB2bWFwKHBhZ2VzLCBucGFnZXMsIFZNX01BUCwgUEFHRV9L RVJORUwpOworCXZmcmVlKHBhZ2VzKTsKKworCWlmICghdmFkZHIpCisJCXJldHVybiBFUlJfUFRS KC1FTk9NRU0pOworCisJcmV0dXJuIHZhZGRyOworfQorCitzdGF0aWMgdm9pZCAqc3lzdGVtX2hl YXBfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQoreworCXN0cnVjdCBzeXN0ZW1faGVhcF9i dWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwl2b2lkICp2YWRkcjsKKworCW11dGV4X2xv Y2soJmJ1ZmZlci0+bG9jayk7CisJaWYgKGJ1ZmZlci0+dm1hcF9jbnQpIHsKKwkJYnVmZmVyLT52 bWFwX2NudCsrOworCQl2YWRkciA9IGJ1ZmZlci0+dmFkZHI7CisJCWdvdG8gb3V0OworCX0KKwor CXZhZGRyID0gc3lzdGVtX2hlYXBfZG9fdm1hcChidWZmZXIpOworCWlmIChJU19FUlIodmFkZHIp KQorCQlnb3RvIG91dDsKKworCWJ1ZmZlci0+dmFkZHIgPSB2YWRkcjsKKwlidWZmZXItPnZtYXBf Y250Kys7CitvdXQ6CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIHZh ZGRyOworfQorCitzdGF0aWMgdm9pZCBzeXN0ZW1faGVhcF92dW5tYXAoc3RydWN0IGRtYV9idWYg KmRtYWJ1Ziwgdm9pZCAqdmFkZHIpCit7CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVm ZmVyID0gZG1hYnVmLT5wcml2OworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlpZiAo IS0tYnVmZmVyLT52bWFwX2NudCkgeworCQl2dW5tYXAoYnVmZmVyLT52YWRkcik7CisJCWJ1ZmZl ci0+dmFkZHIgPSBOVUxMOworCX0KKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7Cit9CisK K3N0YXRpYyB2b2lkIHN5c3RlbV9oZWFwX2RtYV9idWZfcmVsZWFzZShzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmKQoreworCXN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+ cHJpdjsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlOworCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7 CisJaW50IGk7CisKKwl0YWJsZSA9ICZidWZmZXItPnNnX3RhYmxlOworCWZvcl9lYWNoX3NndGFi bGVfc2codGFibGUsIHNnLCBpKQorCQlfX2ZyZWVfcGFnZShzZ19wYWdlKHNnKSk7CisJc2dfZnJl ZV90YWJsZSh0YWJsZSk7CiAJa2ZyZWUoYnVmZmVyKTsKIH0KIAorc3RhdGljIGNvbnN0IHN0cnVj dCBkbWFfYnVmX29wcyBzeXN0ZW1faGVhcF9idWZfb3BzID0geworCS5hdHRhY2ggPSBzeXN0ZW1f aGVhcF9hdHRhY2gsCisJLmRldGFjaCA9IHN5c3RlbV9oZWFwX2RldGF0Y2gsCisJLm1hcF9kbWFf YnVmID0gc3lzdGVtX2hlYXBfbWFwX2RtYV9idWYsCisJLnVubWFwX2RtYV9idWYgPSBzeXN0ZW1f aGVhcF91bm1hcF9kbWFfYnVmLAorCS5iZWdpbl9jcHVfYWNjZXNzID0gc3lzdGVtX2hlYXBfZG1h X2J1Zl9iZWdpbl9jcHVfYWNjZXNzLAorCS5lbmRfY3B1X2FjY2VzcyA9IHN5c3RlbV9oZWFwX2Rt YV9idWZfZW5kX2NwdV9hY2Nlc3MsCisJLm1tYXAgPSBzeXN0ZW1faGVhcF9tbWFwLAorCS52bWFw ID0gc3lzdGVtX2hlYXBfdm1hcCwKKwkudnVubWFwID0gc3lzdGVtX2hlYXBfdnVubWFwLAorCS5y ZWxlYXNlID0gc3lzdGVtX2hlYXBfZG1hX2J1Zl9yZWxlYXNlLAorfTsKKwogc3RhdGljIGludCBz eXN0ZW1faGVhcF9hbGxvY2F0ZShzdHJ1Y3QgZG1hX2hlYXAgKmhlYXAsCiAJCQkJdW5zaWduZWQg bG9uZyBsZW4sCiAJCQkJdW5zaWduZWQgbG9uZyBmZF9mbGFncywKIAkJCQl1bnNpZ25lZCBsb25n IGhlYXBfZmxhZ3MpCiB7Ci0Jc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZlciAqaGVscGVyX2J1ZmZl cjsKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZmZXI7CisJREVGSU5FX0RNQV9CVUZf RVhQT1JUX0lORk8oZXhwX2luZm8pOwogCXN0cnVjdCBkbWFfYnVmICpkbWFidWY7Ci0JaW50IHJl dCA9IC1FTk9NRU07CisJc3RydWN0IHNnX3RhYmxlICp0YWJsZTsKKwlzdHJ1Y3Qgc2NhdHRlcmxp c3QgKnNnOworCXBnb2ZmX3QgcGFnZWNvdW50OwogCXBnb2ZmX3QgcGc7CisJaW50IGksIHJldCA9 IC1FTk9NRU07CiAKLQloZWxwZXJfYnVmZmVyID0ga3phbGxvYyhzaXplb2YoKmhlbHBlcl9idWZm ZXIpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWhlbHBlcl9idWZmZXIpCisJYnVmZmVyID0ga3phbGxv YyhzaXplb2YoKmJ1ZmZlciksIEdGUF9LRVJORUwpOworCWlmICghYnVmZmVyKQogCQlyZXR1cm4g LUVOT01FTTsKIAotCWluaXRfaGVhcF9oZWxwZXJfYnVmZmVyKGhlbHBlcl9idWZmZXIsIHN5c3Rl bV9oZWFwX2ZyZWUpOwotCWhlbHBlcl9idWZmZXItPmhlYXAgPSBoZWFwOwotCWhlbHBlcl9idWZm ZXItPnNpemUgPSBsZW47Ci0KLQloZWxwZXJfYnVmZmVyLT5wYWdlY291bnQgPSBsZW4gLyBQQUdF X1NJWkU7Ci0JaGVscGVyX2J1ZmZlci0+cGFnZXMgPSBrbWFsbG9jX2FycmF5KGhlbHBlcl9idWZm ZXItPnBhZ2Vjb3VudCwKLQkJCQkJICAgICBzaXplb2YoKmhlbHBlcl9idWZmZXItPnBhZ2VzKSwK LQkJCQkJICAgICBHRlBfS0VSTkVMKTsKLQlpZiAoIWhlbHBlcl9idWZmZXItPnBhZ2VzKSB7Ci0J CXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyMDsKLQl9CisJSU5JVF9MSVNUX0hFQUQoJmJ1ZmZl ci0+YXR0YWNobWVudHMpOworCW11dGV4X2luaXQoJmJ1ZmZlci0+bG9jayk7CisJYnVmZmVyLT5o ZWFwID0gaGVhcDsKKwlidWZmZXItPmxlbiA9IGxlbjsKIAotCWZvciAocGcgPSAwOyBwZyA8IGhl bHBlcl9idWZmZXItPnBhZ2Vjb3VudDsgcGcrKykgeworCXRhYmxlID0gJmJ1ZmZlci0+c2dfdGFi bGU7CisJcGFnZWNvdW50ID0gbGVuIC8gUEFHRV9TSVpFOworCWlmIChzZ19hbGxvY190YWJsZSh0 YWJsZSwgcGFnZWNvdW50LCBHRlBfS0VSTkVMKSkKKwkJZ290byBmcmVlX2J1ZmZlcjsKKworCXNn ID0gdGFibGUtPnNnbDsKKwlmb3IgKHBnID0gMDsgcGcgPCBwYWdlY291bnQ7IHBnKyspIHsKKwkJ c3RydWN0IHBhZ2UgKnBhZ2U7CiAJCS8qCiAJCSAqIEF2b2lkIHRyeWluZyB0byBhbGxvY2F0ZSBt ZW1vcnkgaWYgdGhlIHByb2Nlc3MKLQkJICogaGFzIGJlZW4ga2lsbGVkIGJ5IGJ5IFNJR0tJTEwK KwkJICogaGFzIGJlZW4ga2lsbGVkIGJ5IFNJR0tJTEwKIAkJICovCiAJCWlmIChmYXRhbF9zaWdu YWxfcGVuZGluZyhjdXJyZW50KSkKLQkJCWdvdG8gZXJyMTsKLQotCQloZWxwZXJfYnVmZmVyLT5w YWdlc1twZ10gPSBhbGxvY19wYWdlKEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTsKLQkJaWYgKCFo ZWxwZXJfYnVmZmVyLT5wYWdlc1twZ10pCi0JCQlnb3RvIGVycjE7CisJCQlnb3RvIGZyZWVfcGFn ZXM7CisJCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwgfCBfX0dGUF9aRVJPKTsKKwkJaWYg KCFwYWdlKQorCQkJZ290byBmcmVlX3BhZ2VzOworCQlzZ19zZXRfcGFnZShzZywgcGFnZSwgcGFn ZV9zaXplKHBhZ2UpLCAwKTsKKwkJc2cgPSBzZ19uZXh0KHNnKTsKIAl9CiAKIAkvKiBjcmVhdGUg dGhlIGRtYWJ1ZiAqLwotCWRtYWJ1ZiA9IGhlYXBfaGVscGVyX2V4cG9ydF9kbWFidWYoaGVscGVy X2J1ZmZlciwgZmRfZmxhZ3MpOworCWV4cF9pbmZvLm9wcyA9ICZzeXN0ZW1faGVhcF9idWZfb3Bz OworCWV4cF9pbmZvLnNpemUgPSBidWZmZXItPmxlbjsKKwlleHBfaW5mby5mbGFncyA9IGZkX2Zs YWdzOworCWV4cF9pbmZvLnByaXYgPSBidWZmZXI7CisJZG1hYnVmID0gZG1hX2J1Zl9leHBvcnQo JmV4cF9pbmZvKTsKIAlpZiAoSVNfRVJSKGRtYWJ1ZikpIHsKIAkJcmV0ID0gUFRSX0VSUihkbWFi dWYpOwotCQlnb3RvIGVycjE7CisJCWdvdG8gZnJlZV9wYWdlczsKIAl9CiAKLQloZWxwZXJfYnVm ZmVyLT5kbWFidWYgPSBkbWFidWY7Ci0KIAlyZXQgPSBkbWFfYnVmX2ZkKGRtYWJ1ZiwgZmRfZmxh Z3MpOwogCWlmIChyZXQgPCAwKSB7CiAJCWRtYV9idWZfcHV0KGRtYWJ1Zik7CkBAIC05MCwxMiAr MzQzLDEyIEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBfYWxsb2NhdGUoc3RydWN0IGRtYV9oZWFw ICpoZWFwLAogCiAJcmV0dXJuIHJldDsKIAotZXJyMToKLQl3aGlsZSAocGcgPiAwKQotCQlfX2Zy ZWVfcGFnZShoZWxwZXJfYnVmZmVyLT5wYWdlc1stLXBnXSk7Ci0Ja2ZyZWUoaGVscGVyX2J1ZmZl ci0+cGFnZXMpOwotZXJyMDoKLQlrZnJlZShoZWxwZXJfYnVmZmVyKTsKK2ZyZWVfcGFnZXM6CisJ Zm9yX2VhY2hfc2d0YWJsZV9zZyh0YWJsZSwgc2csIGkpCisJCV9fZnJlZV9wYWdlKHNnX3BhZ2Uo c2cpKTsKKwlzZ19mcmVlX3RhYmxlKHRhYmxlKTsKK2ZyZWVfYnVmZmVyOgorCWtmcmVlKGJ1ZmZl cik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTA3LDcgKzM2MCw2IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZG1hX2hlYXBfb3BzIHN5c3RlbV9oZWFwX29wcyA9IHsKIHN0YXRpYyBpbnQgc3lzdGVt X2hlYXBfY3JlYXRlKHZvaWQpCiB7CiAJc3RydWN0IGRtYV9oZWFwX2V4cG9ydF9pbmZvIGV4cF9p bmZvOwotCWludCByZXQgPSAwOwogCiAJZXhwX2luZm8ubmFtZSA9ICJzeXN0ZW0iOwogCWV4cF9p bmZvLm9wcyA9ICZzeXN0ZW1faGVhcF9vcHM7CkBAIC0xMTUsOSArMzY3LDkgQEAgc3RhdGljIGlu dCBzeXN0ZW1faGVhcF9jcmVhdGUodm9pZCkKIAogCXN5c19oZWFwID0gZG1hX2hlYXBfYWRkKCZl eHBfaW5mbyk7CiAJaWYgKElTX0VSUihzeXNfaGVhcCkpCi0JCXJldCA9IFBUUl9FUlIoc3lzX2hl YXApOworCQlyZXR1cm4gUFRSX0VSUihzeXNfaGVhcCk7CiAKLQlyZXR1cm4gcmV0OworCXJldHVy biAwOwogfQogbW9kdWxlX2luaXQoc3lzdGVtX2hlYXBfY3JlYXRlKTsKIE1PRFVMRV9MSUNFTlNF KCJHUEwgdjIiKTsKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==