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 8D377C5519F for ; Sat, 21 Nov 2020 23:50:12 +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 4578B20A8B for ; Sat, 21 Nov 2020 23:50:12 +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="RIr1JS+k" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4578B20A8B 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 EB4E989958; Sat, 21 Nov 2020 23:50:09 +0000 (UTC) Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6791289958 for ; Sat, 21 Nov 2020 23:50:07 +0000 (UTC) Received: by mail-pf1-x442.google.com with SMTP id q5so11442977pfk.6 for ; Sat, 21 Nov 2020 15:50:07 -0800 (PST) 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=cC290nf8enMLM8rAxHbr5iOAHQKooj3C8Ih8Bf9vCkc=; b=RIr1JS+kQVQwy/K4Bv5vYVxBxczfwUZtxWP7+RBjPMw+bT4DGbcIKPX3uL65MqMFds gbdabkfXTqkooudHdWDCpEIO+lrDHjaaxAywTdZts4Znxmo1P4D6NALANBjCOktOs5/j MSgSG1l3FSUAxtXRmfp3lq3MVwduv7sjehQ/anyTbQS9MdU3GFpwibdJ7hs3P0NbF+tM r8rBIWMw3HTKEpIIWpODVlayESdmDCKrdHZmnmhrF681HZjbjzhtjXQhmnHraMK3egP6 7qiILQea9Z/AQ/mK7a+sx9BC+zbPg4+G9TZlPs4q1/WfmXwK8CX4oNCQoJfFyk36+M6q +cqg== 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=cC290nf8enMLM8rAxHbr5iOAHQKooj3C8Ih8Bf9vCkc=; b=RIMUUVOF9a3iiVeOLPH1GwH7YHkNGAMnkmQhXDChq4JKbyDlh7fcrlCgQ62NpZ89cf mmX+r5jfmE1SocCknzWlGYnW1MD41Q/hXycURsYX1vyE2EzyoeCxoE5rkI8+N+OETqvM 2xJakryz1FC7vIR7t8mTjZtEDvO9fFd4f5u6AkT1AmysmipgEZvZoEr1mHjv9UVi0hUi 1iNe16uHb0FVQkydf9F2iqGwmt1VxeOCCzNh6QsS380A2Cni2a1jjx8UMfbNXnRH6qGR eNmgCU9vxJAtIU3i/QuU/Fk960Q7EXpGtzYFITdV9P5oyaoTfqWMKM+RVc2dtFddHkYQ /7tA== X-Gm-Message-State: AOAM530wWVzhc71n51Y9NPBA2Z3c0JQBlPuD9tLnpTsbmGFvsCI37eYY pQxlRqbtT6wjF6OhsHGhzQ7piQ== X-Google-Smtp-Source: ABdhPJx/V8Wh/1VPP5h5/rI5/V42Fe7ux9/hTfuUgw+E82azm/ni8YV6k6OMaBJ97RuIBLX5Mskksg== X-Received: by 2002:a17:90a:5d93:: with SMTP id t19mr16859688pji.220.1606002607014; Sat, 21 Nov 2020 15:50:07 -0800 (PST) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id v126sm7882525pfb.137.2020.11.21.15.50.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 21 Nov 2020 15:50:06 -0800 (PST) From: John Stultz To: lkml Subject: [PATCH v7 1/5] dma-buf: system_heap: Rework system heap to use sgtables instead of pagelists Date: Sat, 21 Nov 2020 23:49:58 +0000 Message-Id: <20201121235002.69945-2-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201121235002.69945-1-john.stultz@linaro.org> References: <20201121235002.69945-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 , Chris Goldsworthy , Hridya Valsaraju , =?UTF-8?q?=C3=98rjan=20Eide?= , linux-media@vger.kernel.org, Suren Baghdasaryan , Daniel Mentz 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 cGF0aWxAZ29vZ2xlLmNvbT4KQ2M6IERhbmllbCBNZW50eiA8ZGFuaWVsbWVudHpAZ29vZ2xlLmNv bT4KQ2M6IENocmlzIEdvbGRzd29ydGh5IDxjZ29sZHN3b0Bjb2RlYXVyb3JhLm9yZz4KQ2M6IMOY cmphbiBFaWRlIDxvcmphbi5laWRlQGFybS5jb20+CkNjOiBSb2JpbiBNdXJwaHkgPHJvYmluLm11 cnBoeUBhcm0uY29tPgpDYzogRXplcXVpZWwgR2FyY2lhIDxlemVxdWllbEBjb2xsYWJvcmEuY29t PgpDYzogU2ltb24gU2VyIDxjb250YWN0QGVtZXJzaW9uLmZyPgpDYzogSmFtZXMgSm9uZXMgPGph am9uZXNAbnZpZGlhLmNvbT4KQ2M6IGxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwpDYzogZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpSZXZpZXdlZC1ieTogQnJpYW4gU3RhcmtleSA8 YnJpYW4uc3RhcmtleUBhcm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBKb2huIFN0dWx0eiA8am9obi5z dHVsdHpAbGluYXJvLm9yZz4KLS0tCnYyOgoqIEZpeCBsb2NraW5nIGlzc3VlIGFuZCBhbiB1bnVz ZWQgcmV0dXJuIHZhbHVlIFJlcG9ydGVkLWJ5OgogICAgIGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BA aW50ZWwuY29tPgogICAgIEp1bGlhIExhd2FsbCA8anVsaWEubGF3YWxsQGxpcDYuZnI+CiogTWFr ZSBzeXN0ZW1faGVhcF9idWZfb3BzIHN0YXRpYyBSZXBvcnRlZC1ieToKICAgICBrZXJuZWwgdGVz dCByb2JvdCA8bGtwQGludGVsLmNvbT4KdjM6CiogVXNlIHRoZSBuZXcgc2d0YWJsZSBtYXBwaW5n IGZ1bmN0aW9ucywgYXMgU3VnZ2VzdGVkLWJ5OgogICAgIERhbmllbCBNZW50eiA8ZGFuaWVsbWVu dHpAZ29vZ2xlLmNvbT4KdjQ6CiogTWFrZSBzeXNfaGVhcCBzdGF0aWMgKGluZGlyZWN0bHkpIFJl cG9ydGVkLWJ5OgogICAgIGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgoqIFNwZWxs aW5nIGZpeCBzdWdnZXN0ZWQgYnkgQnJpYW5TCnY2OgoqIEZpeHVwcyBhZ2FpbnN0IGRybS1taXNj LW5leHQsIGZyb20gU3VtaXQKdjc6CiogUmVkbyB0aGUgaW5jb3JyZWN0IGRtYS1idWYtbWFwIGFk YXB0YXRpb24gaW4gdGhlIGxhc3QgcmV2aXNpb24KLS0tCiBkcml2ZXJzL2RtYS1idWYvaGVhcHMv c3lzdGVtX2hlYXAuYyB8IDM0OSArKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUg Y2hhbmdlZCwgMzAzIGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jIGIvZHJpdmVycy9kbWEtYnVmL2hl YXBzL3N5c3RlbV9oZWFwLmMKaW5kZXggMGJmNjg4ZTNjMDIzLi5iMmQwMmY1MGY5ZWQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jCisrKyBiL2RyaXZlcnMv ZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jCkBAIC0zLDcgKzMsMTEgQEAKICAqIERNQUJVRiBT eXN0ZW0gaGVhcCBleHBvcnRlcgogICoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIElu Yy4KLSAqIENvcHlyaWdodCAoQykgMjAxOSBMaW5hcm8gTHRkLgorICogQ29weXJpZ2h0IChDKSAy MDE5LCAyMDIwIExpbmFybyBMdGQuCisgKgorICogUG9ydGlvbnMgYmFzZWQgb2ZmIG9mIEFuZHJl dyBEYXZpcycgU1JBTSBoZWFwOgorICogQ29weXJpZ2h0IChDKSAyMDE5IFRleGFzIEluc3RydW1l bnRzIEluY29ycG9yYXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoJQW5kcmV3IEYuIERhdmlz IDxhZmRAdGkuY29tPgogICovCiAKICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CkBAIC0xNSw3 MiArMTksMzI2IEBACiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgv c2NhdHRlcmxpc3QuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgv c2NoZWQvc2lnbmFsLmg+Ci0jaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxsaW51eC92 bWFsbG9jLmg+CisKK3N0YXRpYyBzdHJ1Y3QgZG1hX2hlYXAgKnN5c19oZWFwOwogCi0jaW5jbHVk ZSAiaGVhcC1oZWxwZXJzLmgiCitzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyIHsKKwlzdHJ1Y3Qg ZG1hX2hlYXAgKmhlYXA7CisJc3RydWN0IGxpc3RfaGVhZCBhdHRhY2htZW50czsKKwlzdHJ1Y3Qg bXV0ZXggbG9jazsKKwl1bnNpZ25lZCBsb25nIGxlbjsKKwlzdHJ1Y3Qgc2dfdGFibGUgc2dfdGFi bGU7CisJaW50IHZtYXBfY250OworCXZvaWQgKnZhZGRyOworfTsKIAotc3RydWN0IGRtYV9oZWFw ICpzeXNfaGVhcDsKK3N0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50IHsKKwlzdHJ1Y3QgZGV2aWNl ICpkZXY7CisJc3RydWN0IHNnX3RhYmxlICp0YWJsZTsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 Cit9OwogCi1zdGF0aWMgdm9pZCBzeXN0ZW1faGVhcF9mcmVlKHN0cnVjdCBoZWFwX2hlbHBlcl9i dWZmZXIgKmJ1ZmZlcikKK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKmR1cF9zZ190YWJsZShzdHJ1 Y3Qgc2dfdGFibGUgKnRhYmxlKQogewotCXBnb2ZmX3QgcGc7CisJc3RydWN0IHNnX3RhYmxlICpu ZXdfdGFibGU7CisJaW50IHJldCwgaTsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLCAqbmV3X3Nn OworCisJbmV3X3RhYmxlID0ga3phbGxvYyhzaXplb2YoKm5ld190YWJsZSksIEdGUF9LRVJORUwp OworCWlmICghbmV3X3RhYmxlKQorCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCXJldCA9 IHNnX2FsbG9jX3RhYmxlKG5ld190YWJsZSwgdGFibGUtPm9yaWdfbmVudHMsIEdGUF9LRVJORUwp OworCWlmIChyZXQpIHsKKwkJa2ZyZWUobmV3X3RhYmxlKTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7CisJfQorCisJbmV3X3NnID0gbmV3X3RhYmxlLT5zZ2w7CisJZm9yX2VhY2hfc2d0YWJs ZV9zZyh0YWJsZSwgc2csIGkpIHsKKwkJc2dfc2V0X3BhZ2UobmV3X3NnLCBzZ19wYWdlKHNnKSwg c2ctPmxlbmd0aCwgc2ctPm9mZnNldCk7CisJCW5ld19zZyA9IHNnX25leHQobmV3X3NnKTsKKwl9 CisKKwlyZXR1cm4gbmV3X3RhYmxlOworfQorCitzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2F0dGFj aChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJICAgICAgc3RydWN0IGRtYV9idWZfYXR0YWNo bWVudCAqYXR0YWNobWVudCkKK3sKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZmZXIg PSBkbWFidWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmE7CisJc3RydWN0 IHNnX3RhYmxlICp0YWJsZTsKKworCWEgPSBremFsbG9jKHNpemVvZigqYSksIEdGUF9LRVJORUwp OworCWlmICghYSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwl0YWJsZSA9IGR1cF9zZ190YWJsZSgm YnVmZmVyLT5zZ190YWJsZSk7CisJaWYgKElTX0VSUih0YWJsZSkpIHsKKwkJa2ZyZWUoYSk7CisJ CXJldHVybiAtRU5PTUVNOworCX0KKworCWEtPnRhYmxlID0gdGFibGU7CisJYS0+ZGV2ID0gYXR0 YWNobWVudC0+ZGV2OworCUlOSVRfTElTVF9IRUFEKCZhLT5saXN0KTsKKworCWF0dGFjaG1lbnQt PnByaXYgPSBhOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlsaXN0X2FkZCgmYS0+ bGlzdCwgJmJ1ZmZlci0+YXR0YWNobWVudHMpOworCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2Nr KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBzeXN0ZW1faGVhcF9kZXRhY2goc3Ry dWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCSAgICAgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICphdHRhY2htZW50KQoreworCXN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRt YWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgZG1hX2hlYXBfYXR0YWNobWVudCAqYSA9IGF0dGFjaG1lbnQt PnByaXY7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWxpc3RfZGVsKCZhLT5saXN0 KTsKKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlzZ19mcmVlX3RhYmxlKGEtPnRh YmxlKTsKKwlrZnJlZShhLT50YWJsZSk7CisJa2ZyZWUoYSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg c2dfdGFibGUgKnN5c3RlbV9oZWFwX21hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKmF0dGFjaG1lbnQsCisJCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24p Cit7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmEgPSBhdHRhY2htZW50LT5wcml2Owor CXN0cnVjdCBzZ190YWJsZSAqdGFibGUgPSBhLT50YWJsZTsKKwlpbnQgcmV0OworCisJcmV0ID0g ZG1hX21hcF9zZ3RhYmxlKGF0dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlvbiwgMCk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKworCXJldHVybiB0YWJsZTsKK30KKwor c3RhdGljIHZvaWQgc3lzdGVtX2hlYXBfdW5tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2htZW50ICphdHRhY2htZW50LAorCQkJCSAgICAgIHN0cnVjdCBzZ190YWJsZSAqdGFibGUsCisJ CQkJICAgICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCWRtYV91bm1h cF9zZ3RhYmxlKGF0dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlvbiwgMCk7Cit9CisKK3N0 YXRpYyBpbnQgc3lzdGVtX2hlYXBfZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsCisJCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7 CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0 cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50ICphOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2Nr KTsKKworCWlmIChidWZmZXItPnZtYXBfY250KQorCQlpbnZhbGlkYXRlX2tlcm5lbF92bWFwX3Jh bmdlKGJ1ZmZlci0+dmFkZHIsIGJ1ZmZlci0+bGVuKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnko YSwgJmJ1ZmZlci0+YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJZG1hX3N5bmNfc2d0YWJsZV9mb3Jf Y3B1KGEtPmRldiwgYS0+dGFibGUsIGRpcmVjdGlvbik7CisJfQorCW11dGV4X3VubG9jaygmYnVm ZmVyLT5sb2NrKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2Rt YV9idWZfZW5kX2NwdV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCQkJICAgICAg ZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCXN0cnVjdCBzeXN0ZW1faGVh cF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgZG1hX2hlYXBfYXR0YWNo bWVudCAqYTsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CiAKLQlmb3IgKHBnID0gMDsg cGcgPCBidWZmZXItPnBhZ2Vjb3VudDsgcGcrKykKLQkJX19mcmVlX3BhZ2UoYnVmZmVyLT5wYWdl c1twZ10pOwotCWtmcmVlKGJ1ZmZlci0+cGFnZXMpOworCWlmIChidWZmZXItPnZtYXBfY250KQor CQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5nZShidWZmZXItPnZhZGRyLCBidWZmZXItPmxlbik7CisK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGEsICZidWZmZXItPmF0dGFjaG1lbnRzLCBsaXN0KSB7CisJ CWRtYV9zeW5jX3NndGFibGVfZm9yX2RldmljZShhLT5kZXYsIGEtPnRhYmxlLCBkaXJlY3Rpb24p OworCX0KKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBzeXN0ZW1faGVhcF9tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVj dCB2bV9hcmVhX3N0cnVjdCAqdm1hKQoreworCXN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgKmJ1 ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlID0gJmJ1ZmZlci0+ c2dfdGFibGU7CisJdW5zaWduZWQgbG9uZyBhZGRyID0gdm1hLT52bV9zdGFydDsKKwlzdHJ1Y3Qg c2dfcGFnZV9pdGVyIHBpdGVyOworCWludCByZXQ7CisKKwlmb3JfZWFjaF9zZ3RhYmxlX3BhZ2Uo dGFibGUsICZwaXRlciwgdm1hLT52bV9wZ29mZikgeworCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHNn X3BhZ2VfaXRlcl9wYWdlKCZwaXRlcik7CisKKwkJcmV0ID0gcmVtYXBfcGZuX3JhbmdlKHZtYSwg YWRkciwgcGFnZV90b19wZm4ocGFnZSksIFBBR0VfU0laRSwKKwkJCQkgICAgICB2bWEtPnZtX3Bh Z2VfcHJvdCk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCQlhZGRyICs9IFBBR0VfU0la RTsKKwkJaWYgKGFkZHIgPj0gdm1hLT52bV9lbmQpCisJCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyB2b2lkICpzeXN0ZW1faGVhcF9kb192bWFwKHN0cnVjdCBzeXN0ZW1f aGVhcF9idWZmZXIgKmJ1ZmZlcikKK3sKKwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlID0gJmJ1ZmZl ci0+c2dfdGFibGU7CisJaW50IG5wYWdlcyA9IFBBR0VfQUxJR04oYnVmZmVyLT5sZW4pIC8gUEFH RV9TSVpFOworCXN0cnVjdCBwYWdlICoqcGFnZXMgPSB2bWFsbG9jKHNpemVvZihzdHJ1Y3QgcGFn ZSAqKSAqIG5wYWdlcyk7CisJc3RydWN0IHBhZ2UgKip0bXAgPSBwYWdlczsKKwlzdHJ1Y3Qgc2df cGFnZV9pdGVyIHBpdGVyOworCXZvaWQgKnZhZGRyOworCisJaWYgKCFwYWdlcykKKwkJcmV0dXJu IEVSUl9QVFIoLUVOT01FTSk7CisKKwlmb3JfZWFjaF9zZ3RhYmxlX3BhZ2UodGFibGUsICZwaXRl ciwgMCkgeworCQlXQVJOX09OKHRtcCAtIHBhZ2VzID49IG5wYWdlcyk7CisJCSp0bXArKyA9IHNn X3BhZ2VfaXRlcl9wYWdlKCZwaXRlcik7CisJfQorCisJdmFkZHIgPSB2bWFwKHBhZ2VzLCBucGFn ZXMsIFZNX01BUCwgUEFHRV9LRVJORUwpOworCXZmcmVlKHBhZ2VzKTsKKworCWlmICghdmFkZHIp CisJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCisJcmV0dXJuIHZhZGRyOworfQorCitzdGF0 aWMgaW50IHN5c3RlbV9oZWFwX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGRt YV9idWZfbWFwICptYXApCit7CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0g ZG1hYnVmLT5wcml2OworCXZvaWQgKnZhZGRyOworCWludCByZXQgPSAwOworCisJbXV0ZXhfbG9j aygmYnVmZmVyLT5sb2NrKTsKKwlpZiAoYnVmZmVyLT52bWFwX2NudCkgeworCQlidWZmZXItPnZt YXBfY250Kys7CisJCWRtYV9idWZfbWFwX3NldF92YWRkcihtYXAsIGJ1ZmZlci0+dmFkZHIpOwor CQlnb3RvIG91dDsKKwl9CisKKwl2YWRkciA9IHN5c3RlbV9oZWFwX2RvX3ZtYXAoYnVmZmVyKTsK KwlpZiAoSVNfRVJSKHZhZGRyKSkgeworCQlyZXQgPSBQVFJfRVJSKHZhZGRyKTsKKwkJZ290byBv dXQ7CisJfQorCisJYnVmZmVyLT52YWRkciA9IHZhZGRyOworCWJ1ZmZlci0+dm1hcF9jbnQrKzsK KwlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCBidWZmZXItPnZhZGRyKTsKK291dDoKKwltdXRl eF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9p ZCBzeXN0ZW1faGVhcF92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGRtYV9i dWZfbWFwICptYXApCit7CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1h YnVmLT5wcml2OworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlpZiAoIS0tYnVmZmVy LT52bWFwX2NudCkgeworCQl2dW5tYXAoYnVmZmVyLT52YWRkcik7CisJCWJ1ZmZlci0+dmFkZHIg PSBOVUxMOworCX0KKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7CisJZG1hX2J1Zl9tYXBf Y2xlYXIobWFwKTsKK30KKworc3RhdGljIHZvaWQgc3lzdGVtX2hlYXBfZG1hX2J1Zl9yZWxlYXNl KHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCit7CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAq YnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBzZ190YWJsZSAqdGFibGU7CisJc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZzsKKwlpbnQgaTsKKworCXRhYmxlID0gJmJ1ZmZlci0+c2dfdGFibGU7 CisJZm9yX2VhY2hfc2d0YWJsZV9zZyh0YWJsZSwgc2csIGkpCisJCV9fZnJlZV9wYWdlKHNnX3Bh Z2Uoc2cpKTsKKwlzZ19mcmVlX3RhYmxlKHRhYmxlKTsKIAlrZnJlZShidWZmZXIpOwogfQogCitz dGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIHN5c3RlbV9oZWFwX2J1Zl9vcHMgPSB7CisJ LmF0dGFjaCA9IHN5c3RlbV9oZWFwX2F0dGFjaCwKKwkuZGV0YWNoID0gc3lzdGVtX2hlYXBfZGV0 YWNoLAorCS5tYXBfZG1hX2J1ZiA9IHN5c3RlbV9oZWFwX21hcF9kbWFfYnVmLAorCS51bm1hcF9k bWFfYnVmID0gc3lzdGVtX2hlYXBfdW5tYXBfZG1hX2J1ZiwKKwkuYmVnaW5fY3B1X2FjY2VzcyA9 IHN5c3RlbV9oZWFwX2RtYV9idWZfYmVnaW5fY3B1X2FjY2VzcywKKwkuZW5kX2NwdV9hY2Nlc3Mg PSBzeXN0ZW1faGVhcF9kbWFfYnVmX2VuZF9jcHVfYWNjZXNzLAorCS5tbWFwID0gc3lzdGVtX2hl YXBfbW1hcCwKKwkudm1hcCA9IHN5c3RlbV9oZWFwX3ZtYXAsCisJLnZ1bm1hcCA9IHN5c3RlbV9o ZWFwX3Z1bm1hcCwKKwkucmVsZWFzZSA9IHN5c3RlbV9oZWFwX2RtYV9idWZfcmVsZWFzZSwKK307 CisKIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBfYWxsb2NhdGUoc3RydWN0IGRtYV9oZWFwICpoZWFw LAogCQkJCXVuc2lnbmVkIGxvbmcgbGVuLAogCQkJCXVuc2lnbmVkIGxvbmcgZmRfZmxhZ3MsCiAJ CQkJdW5zaWduZWQgbG9uZyBoZWFwX2ZsYWdzKQogewotCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZm ZXIgKmhlbHBlcl9idWZmZXI7CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyOwor CURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cF9pbmZvKTsKIAlzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmOwotCWludCByZXQgPSAtRU5PTUVNOworCXN0cnVjdCBzZ190YWJsZSAqdGFibGU7CisJ c3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKwlwZ29mZl90IHBhZ2Vjb3VudDsKIAlwZ29mZl90IHBn OworCWludCBpLCByZXQgPSAtRU5PTUVNOwogCi0JaGVscGVyX2J1ZmZlciA9IGt6YWxsb2Moc2l6 ZW9mKCpoZWxwZXJfYnVmZmVyKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFoZWxwZXJfYnVmZmVyKQor CWJ1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpidWZmZXIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1 ZmZlcikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlpbml0X2hlYXBfaGVscGVyX2J1ZmZlcihoZWxw ZXJfYnVmZmVyLCBzeXN0ZW1faGVhcF9mcmVlKTsKLQloZWxwZXJfYnVmZmVyLT5oZWFwID0gaGVh cDsKLQloZWxwZXJfYnVmZmVyLT5zaXplID0gbGVuOwotCi0JaGVscGVyX2J1ZmZlci0+cGFnZWNv dW50ID0gbGVuIC8gUEFHRV9TSVpFOwotCWhlbHBlcl9idWZmZXItPnBhZ2VzID0ga21hbGxvY19h cnJheShoZWxwZXJfYnVmZmVyLT5wYWdlY291bnQsCi0JCQkJCSAgICAgc2l6ZW9mKCpoZWxwZXJf YnVmZmVyLT5wYWdlcyksCi0JCQkJCSAgICAgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFoZWxwZXJfYnVm ZmVyLT5wYWdlcykgewotCQlyZXQgPSAtRU5PTUVNOwotCQlnb3RvIGVycjA7Ci0JfQorCUlOSVRf TElTVF9IRUFEKCZidWZmZXItPmF0dGFjaG1lbnRzKTsKKwltdXRleF9pbml0KCZidWZmZXItPmxv Y2spOworCWJ1ZmZlci0+aGVhcCA9IGhlYXA7CisJYnVmZmVyLT5sZW4gPSBsZW47CisKKwl0YWJs ZSA9ICZidWZmZXItPnNnX3RhYmxlOworCXBhZ2Vjb3VudCA9IGxlbiAvIFBBR0VfU0laRTsKKwlp ZiAoc2dfYWxsb2NfdGFibGUodGFibGUsIHBhZ2Vjb3VudCwgR0ZQX0tFUk5FTCkpCisJCWdvdG8g ZnJlZV9idWZmZXI7CiAKLQlmb3IgKHBnID0gMDsgcGcgPCBoZWxwZXJfYnVmZmVyLT5wYWdlY291 bnQ7IHBnKyspIHsKKwlzZyA9IHRhYmxlLT5zZ2w7CisJZm9yIChwZyA9IDA7IHBnIDwgcGFnZWNv dW50OyBwZysrKSB7CisJCXN0cnVjdCBwYWdlICpwYWdlOwogCQkvKgogCQkgKiBBdm9pZCB0cnlp bmcgdG8gYWxsb2NhdGUgbWVtb3J5IGlmIHRoZSBwcm9jZXNzCi0JCSAqIGhhcyBiZWVuIGtpbGxl ZCBieSBieSBTSUdLSUxMCisJCSAqIGhhcyBiZWVuIGtpbGxlZCBieSBTSUdLSUxMCiAJCSAqLwog CQlpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpCi0JCQlnb3RvIGVycjE7Ci0KLQkJ aGVscGVyX2J1ZmZlci0+cGFnZXNbcGddID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMIHwgX19HRlBf WkVSTyk7Ci0JCWlmICghaGVscGVyX2J1ZmZlci0+cGFnZXNbcGddKQotCQkJZ290byBlcnIxOwor CQkJZ290byBmcmVlX3BhZ2VzOworCQlwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMIHwgX19H RlBfWkVSTyk7CisJCWlmICghcGFnZSkKKwkJCWdvdG8gZnJlZV9wYWdlczsKKwkJc2dfc2V0X3Bh Z2Uoc2csIHBhZ2UsIHBhZ2Vfc2l6ZShwYWdlKSwgMCk7CisJCXNnID0gc2dfbmV4dChzZyk7CiAJ fQogCiAJLyogY3JlYXRlIHRoZSBkbWFidWYgKi8KLQlkbWFidWYgPSBoZWFwX2hlbHBlcl9leHBv cnRfZG1hYnVmKGhlbHBlcl9idWZmZXIsIGZkX2ZsYWdzKTsKKwlleHBfaW5mby5vcHMgPSAmc3lz dGVtX2hlYXBfYnVmX29wczsKKwlleHBfaW5mby5zaXplID0gYnVmZmVyLT5sZW47CisJZXhwX2lu Zm8uZmxhZ3MgPSBmZF9mbGFnczsKKwlleHBfaW5mby5wcml2ID0gYnVmZmVyOworCWRtYWJ1ZiA9 IGRtYV9idWZfZXhwb3J0KCZleHBfaW5mbyk7CiAJaWYgKElTX0VSUihkbWFidWYpKSB7CiAJCXJl dCA9IFBUUl9FUlIoZG1hYnVmKTsKLQkJZ290byBlcnIxOworCQlnb3RvIGZyZWVfcGFnZXM7CiAJ fQogCi0JaGVscGVyX2J1ZmZlci0+ZG1hYnVmID0gZG1hYnVmOwotCiAJcmV0ID0gZG1hX2J1Zl9m ZChkbWFidWYsIGZkX2ZsYWdzKTsKIAlpZiAocmV0IDwgMCkgewogCQlkbWFfYnVmX3B1dChkbWFi dWYpOwpAQCAtOTAsMTIgKzM0OCwxMiBAQCBzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2FsbG9jYXRl KHN0cnVjdCBkbWFfaGVhcCAqaGVhcCwKIAogCXJldHVybiByZXQ7CiAKLWVycjE6Ci0Jd2hpbGUg KHBnID4gMCkKLQkJX19mcmVlX3BhZ2UoaGVscGVyX2J1ZmZlci0+cGFnZXNbLS1wZ10pOwotCWtm cmVlKGhlbHBlcl9idWZmZXItPnBhZ2VzKTsKLWVycjA6Ci0Ja2ZyZWUoaGVscGVyX2J1ZmZlcik7 CitmcmVlX3BhZ2VzOgorCWZvcl9lYWNoX3NndGFibGVfc2codGFibGUsIHNnLCBpKQorCQlfX2Zy ZWVfcGFnZShzZ19wYWdlKHNnKSk7CisJc2dfZnJlZV90YWJsZSh0YWJsZSk7CitmcmVlX2J1ZmZl cjoKKwlrZnJlZShidWZmZXIpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTEwNyw3ICszNjUsNiBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9oZWFwX29wcyBzeXN0ZW1faGVhcF9vcHMgPSB7CiBz dGF0aWMgaW50IHN5c3RlbV9oZWFwX2NyZWF0ZSh2b2lkKQogewogCXN0cnVjdCBkbWFfaGVhcF9l eHBvcnRfaW5mbyBleHBfaW5mbzsKLQlpbnQgcmV0ID0gMDsKIAogCWV4cF9pbmZvLm5hbWUgPSAi c3lzdGVtIjsKIAlleHBfaW5mby5vcHMgPSAmc3lzdGVtX2hlYXBfb3BzOwpAQCAtMTE1LDkgKzM3 Miw5IEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBfY3JlYXRlKHZvaWQpCiAKIAlzeXNfaGVhcCA9 IGRtYV9oZWFwX2FkZCgmZXhwX2luZm8pOwogCWlmIChJU19FUlIoc3lzX2hlYXApKQotCQlyZXQg PSBQVFJfRVJSKHN5c19oZWFwKTsKKwkJcmV0dXJuIFBUUl9FUlIoc3lzX2hlYXApOwogCi0JcmV0 dXJuIHJldDsKKwlyZXR1cm4gMDsKIH0KIG1vZHVsZV9pbml0KHN5c3RlbV9oZWFwX2NyZWF0ZSk7 CiBNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=