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.6 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 7FEB6C388F7 for ; Tue, 10 Nov 2020 03:49:44 +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 16A0620721 for ; Tue, 10 Nov 2020 03:49:44 +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="z1CZNeDF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 16A0620721 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 7E8E589786; Tue, 10 Nov 2020 03:49:41 +0000 (UTC) Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by gabe.freedesktop.org (Postfix) with ESMTPS id EFAB989786 for ; Tue, 10 Nov 2020 03:49:39 +0000 (UTC) Received: by mail-pg1-x543.google.com with SMTP id w4so8971583pgg.13 for ; Mon, 09 Nov 2020 19:49:39 -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=5JS+ofakZjaBRclqK0JsnBtbw/MSyxiaxYZw7ITSz8A=; b=z1CZNeDF4gVBgStctDJWylJUm0vml6uUcG2q7ms6MQ+QnoPq47FVs+nyEg0ZTvL5tm CLL9FGLoSeDjFzZYoKjZphzrzq8It0MAVIej2CQy3qSdhh4eDNE+e3mm7KDvR0WIxXUP 2CvEJo2PJF3TxGHqS7wtWZNIYnXtNyDFqcoG/AMaMLIm8GdDjurEhVAQQOTi+LYMXS3a EZS1KvTPtIa18d5/B20dbmU1aVAaZw0LNG9bGrgiVPMGlPFiHyEBsIYnlJqdtLweridh B4576urS8dHJBawTuDfbeU1/D3s/li9pGGCqqRKK3L4TLcjQoWeRzkc2nQR0wGGMo64n 2kcg== 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=5JS+ofakZjaBRclqK0JsnBtbw/MSyxiaxYZw7ITSz8A=; b=eXaiH1yH0tAG42uaDeEdZb8MCX8tFl3ojU8vVU+jgqU1knyX+bBT0Aqu/jMEEbHbjL JetZSggYKbxdlNdmlLFe/38dhTeZeOvlTIva7BEU8XGj/eDNp+4XMXNx1hp8+iwrd6MV xPALoammKhQMZTWjz3rdBub2AShgYYMekCGj7EMgcTDBADvgS/ly3VidczsW3kVgaJI0 MN/scnXAEwX1sPoHTTzq7cXED3dTdF2wGK9t6xHibYjQwlLvQ0eI0LMAoZFXsVMouqzo jRhAVHYv59E7JLThI5UVU4kzMFbycfA1TbuoTHVtH2bocTmm3WVUXXRqNfm5mCDBO9zb TYbA== X-Gm-Message-State: AOAM530Yvg0aLW2/eKmQg95YObQ4UK5oHvEYhvXTyGwSBv8D5VHU/42l ONl/8hxtpGdQKsnFXl87IXfRpA== X-Google-Smtp-Source: ABdhPJzK0TJxjL4le0FscfYuhpiurYELarC5Jm3Ca/GU58U+6aO/H7jMeHWknS016GMXmkGJ3+/vBA== X-Received: by 2002:a17:90b:4c8d:: with SMTP id my13mr2598322pjb.45.1604980179583; Mon, 09 Nov 2020 19:49:39 -0800 (PST) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id b4sm12380693pfi.208.2020.11.09.19.49.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2020 19:49:38 -0800 (PST) From: John Stultz To: lkml Subject: [PATCH v5 1/7] dma-buf: system_heap: Rework system heap to use sgtables instead of pagelists Date: Tue, 10 Nov 2020 03:49:28 +0000 Message-Id: <20201110034934.70898-2-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201110034934.70898-1-john.stultz@linaro.org> References: <20201110034934.70898-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 aW5nIGZpeCBzdWdnZXN0ZWQgYnkgQnJpYW5TCi0tLQogZHJpdmVycy9kbWEtYnVmL2hlYXBzL3N5 c3RlbV9oZWFwLmMgfCAzNDQgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNo YW5nZWQsIDI5OCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2RtYS1idWYvaGVhcHMvc3lzdGVtX2hlYXAuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFw cy9zeXN0ZW1faGVhcC5jCmluZGV4IDBiZjY4OGUzYzAyMy4uNWM0NGY5YzA2ODA3IDEwMDY0NAot LS0gYS9kcml2ZXJzL2RtYS1idWYvaGVhcHMvc3lzdGVtX2hlYXAuYworKysgYi9kcml2ZXJzL2Rt YS1idWYvaGVhcHMvc3lzdGVtX2hlYXAuYwpAQCAtMyw3ICszLDExIEBACiAgKiBETUFCVUYgU3lz dGVtIGhlYXAgZXhwb3J0ZXIKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMu Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgTGluYXJvIEx0ZC4KKyAqIENvcHlyaWdodCAoQykgMjAx OSwgMjAyMCBMaW5hcm8gTHRkLgorICoKKyAqIFBvcnRpb25zIGJhc2VkIG9mZiBvZiBBbmRyZXcg RGF2aXMnIFNSQU0gaGVhcDoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBUZXhhcyBJbnN0cnVtZW50 cyBJbmNvcnBvcmF0ZWQgLSBodHRwOi8vd3d3LnRpLmNvbS8KKyAqCUFuZHJldyBGLiBEYXZpcyA8 YWZkQHRpLmNvbT4KICAqLwogCiAjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgpAQCAtMTUsNzIg KzE5LDMyMSBAQAogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3Nj YXR0ZXJsaXN0Lmg+CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgotI2luY2x1ZGUgPGxpbnV4L3Nj aGVkL3NpZ25hbC5oPgotI2luY2x1ZGUgPGFzbS9wYWdlLmg+CisjaW5jbHVkZSA8bGludXgvdm1h bGxvYy5oPgorCitzdGF0aWMgc3RydWN0IGRtYV9oZWFwICpzeXNfaGVhcDsKIAotI2luY2x1ZGUg ImhlYXAtaGVscGVycy5oIgorc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciB7CisJc3RydWN0IGRt YV9oZWFwICpoZWFwOworCXN0cnVjdCBsaXN0X2hlYWQgYXR0YWNobWVudHM7CisJc3RydWN0IG11 dGV4IGxvY2s7CisJdW5zaWduZWQgbG9uZyBsZW47CisJc3RydWN0IHNnX3RhYmxlIHNnX3RhYmxl OworCWludCB2bWFwX2NudDsKKwl2b2lkICp2YWRkcjsKK307CiAKLXN0cnVjdCBkbWFfaGVhcCAq c3lzX2hlYXA7CitzdHJ1Y3QgZG1hX2hlYXBfYXR0YWNobWVudCB7CisJc3RydWN0IGRldmljZSAq ZGV2OworCXN0cnVjdCBzZ190YWJsZSAqdGFibGU7CisJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owor fTsKIAotc3RhdGljIHZvaWQgc3lzdGVtX2hlYXBfZnJlZShzdHJ1Y3QgaGVhcF9oZWxwZXJfYnVm ZmVyICpidWZmZXIpCitzdGF0aWMgc3RydWN0IHNnX3RhYmxlICpkdXBfc2dfdGFibGUoc3RydWN0 IHNnX3RhYmxlICp0YWJsZSkKIHsKLQlwZ29mZl90IHBnOworCXN0cnVjdCBzZ190YWJsZSAqbmV3 X3RhYmxlOworCWludCByZXQsIGk7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywgKm5ld19zZzsK KworCW5ld190YWJsZSA9IGt6YWxsb2Moc2l6ZW9mKCpuZXdfdGFibGUpLCBHRlBfS0VSTkVMKTsK KwlpZiAoIW5ld190YWJsZSkKKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisKKwlyZXQgPSBz Z19hbGxvY190YWJsZShuZXdfdGFibGUsIHRhYmxlLT5vcmlnX25lbnRzLCBHRlBfS0VSTkVMKTsK KwlpZiAocmV0KSB7CisJCWtmcmVlKG5ld190YWJsZSk7CisJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOworCX0KKworCW5ld19zZyA9IG5ld190YWJsZS0+c2dsOworCWZvcl9lYWNoX3NndGFibGVf c2codGFibGUsIHNnLCBpKSB7CisJCXNnX3NldF9wYWdlKG5ld19zZywgc2dfcGFnZShzZyksIHNn LT5sZW5ndGgsIHNnLT5vZmZzZXQpOworCQluZXdfc2cgPSBzZ19uZXh0KG5ld19zZyk7CisJfQor CisJcmV0dXJuIG5ld190YWJsZTsKK30KKworc3RhdGljIGludCBzeXN0ZW1faGVhcF9hdHRhY2go c3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCSAgICAgIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKmF0dGFjaG1lbnQpCit7CisJc3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0g ZG1hYnVmLT5wcml2OworCXN0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50ICphOworCXN0cnVjdCBz Z190YWJsZSAqdGFibGU7CisKKwlhID0ga3phbGxvYyhzaXplb2YoKmEpLCBHRlBfS0VSTkVMKTsK KwlpZiAoIWEpCisJCXJldHVybiAtRU5PTUVNOworCisJdGFibGUgPSBkdXBfc2dfdGFibGUoJmJ1 ZmZlci0+c2dfdGFibGUpOworCWlmIChJU19FUlIodGFibGUpKSB7CisJCWtmcmVlKGEpOworCQly ZXR1cm4gLUVOT01FTTsKKwl9CisKKwlhLT50YWJsZSA9IHRhYmxlOworCWEtPmRldiA9IGF0dGFj aG1lbnQtPmRldjsKKwlJTklUX0xJU1RfSEVBRCgmYS0+bGlzdCk7CisKKwlhdHRhY2htZW50LT5w cml2ID0gYTsKKworCW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisJbGlzdF9hZGQoJmEtPmxp c3QsICZidWZmZXItPmF0dGFjaG1lbnRzKTsKKwltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgc3lzdGVtX2hlYXBfZGV0YWNoKHN0cnVj dCBkbWFfYnVmICpkbWFidWYsCisJCQkgICAgICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq YXR0YWNobWVudCkKK3sKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFi dWYtPnByaXY7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmEgPSBhdHRhY2htZW50LT5w cml2OworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKwlsaXN0X2RlbCgmYS0+bGlzdCk7 CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJc2dfZnJlZV90YWJsZShhLT50YWJs ZSk7CisJa2ZyZWUoYS0+dGFibGUpOworCWtmcmVlKGEpOworfQogCi0JZm9yIChwZyA9IDA7IHBn IDwgYnVmZmVyLT5wYWdlY291bnQ7IHBnKyspCi0JCV9fZnJlZV9wYWdlKGJ1ZmZlci0+cGFnZXNb cGddKTsKLQlrZnJlZShidWZmZXItPnBhZ2VzKTsKK3N0YXRpYyBzdHJ1Y3Qgc2dfdGFibGUgKnN5 c3RlbV9oZWFwX21hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1l bnQsCisJCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisJc3RydWN0 IGRtYV9oZWFwX2F0dGFjaG1lbnQgKmEgPSBhdHRhY2htZW50LT5wcml2OworCXN0cnVjdCBzZ190 YWJsZSAqdGFibGUgPSBhLT50YWJsZTsKKwlpbnQgcmV0OworCisJcmV0ID0gZG1hX21hcF9zZ3Rh YmxlKGF0dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlvbiwgMCk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIEVSUl9QVFIocmV0KTsKKworCXJldHVybiB0YWJsZTsKK30KKworc3RhdGljIHZvaWQg c3lzdGVtX2hlYXBfdW5tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRh Y2htZW50LAorCQkJCSAgICAgIHN0cnVjdCBzZ190YWJsZSAqdGFibGUsCisJCQkJICAgICAgZW51 bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCWRtYV91bm1hcF9zZ3RhYmxlKGF0 dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlvbiwgMCk7Cit9CisKK3N0YXRpYyBpbnQgc3lz dGVtX2hlYXBfZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYs CisJCQkJCQllbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisJc3RydWN0IHN5 c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBkbWFfaGVh cF9hdHRhY2htZW50ICphOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKworCWlmIChi dWZmZXItPnZtYXBfY250KQorCQlpbnZhbGlkYXRlX2tlcm5lbF92bWFwX3JhbmdlKGJ1ZmZlci0+ dmFkZHIsIGJ1ZmZlci0+bGVuKTsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkoYSwgJmJ1ZmZlci0+ YXR0YWNobWVudHMsIGxpc3QpIHsKKwkJZG1hX3N5bmNfc2d0YWJsZV9mb3JfY3B1KGEtPmRldiwg YS0+dGFibGUsIGRpcmVjdGlvbik7CisJfQorCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsK KworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2RtYV9idWZfZW5kX2Nw dV9hY2Nlc3Moc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKKwkJCQkJICAgICAgZW51bSBkbWFfZGF0 YV9kaXJlY3Rpb24gZGlyZWN0aW9uKQoreworCXN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgKmJ1 ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKwlzdHJ1Y3QgZG1hX2hlYXBfYXR0YWNobWVudCAqYTsKKwor CW11dGV4X2xvY2soJmJ1ZmZlci0+bG9jayk7CisKKwlpZiAoYnVmZmVyLT52bWFwX2NudCkKKwkJ Zmx1c2hfa2VybmVsX3ZtYXBfcmFuZ2UoYnVmZmVyLT52YWRkciwgYnVmZmVyLT5sZW4pOworCisJ bGlzdF9mb3JfZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgeworCQlk bWFfc3luY19zZ3RhYmxlX2Zvcl9kZXZpY2UoYS0+ZGV2LCBhLT50YWJsZSwgZGlyZWN0aW9uKTsK Kwl9CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgc3lzdGVtX2hlYXBfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3Qg dm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZm ZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IHNnX3RhYmxlICp0YWJsZSA9ICZidWZmZXItPnNn X3RhYmxlOworCXVuc2lnbmVkIGxvbmcgYWRkciA9IHZtYS0+dm1fc3RhcnQ7CisJc3RydWN0IHNn X3BhZ2VfaXRlciBwaXRlcjsKKwlpbnQgcmV0OworCisJZm9yX2VhY2hfc2d0YWJsZV9wYWdlKHRh YmxlLCAmcGl0ZXIsIHZtYS0+dm1fcGdvZmYpIHsKKwkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBzZ19w YWdlX2l0ZXJfcGFnZSgmcGl0ZXIpOworCisJCXJldCA9IHJlbWFwX3Bmbl9yYW5nZSh2bWEsIGFk ZHIsIHBhZ2VfdG9fcGZuKHBhZ2UpLCBQQUdFX1NJWkUsCisJCQkJICAgICAgdm1hLT52bV9wYWdl X3Byb3QpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwkJYWRkciArPSBQQUdFX1NJWkU7 CisJCWlmIChhZGRyID49IHZtYS0+dm1fZW5kKQorCQkJcmV0dXJuIDA7CisJfQorCXJldHVybiAw OworfQorCitzdGF0aWMgdm9pZCAqc3lzdGVtX2hlYXBfZG9fdm1hcChzdHJ1Y3Qgc3lzdGVtX2hl YXBfYnVmZmVyICpidWZmZXIpCit7CisJc3RydWN0IHNnX3RhYmxlICp0YWJsZSA9ICZidWZmZXIt PnNnX3RhYmxlOworCWludCBucGFnZXMgPSBQQUdFX0FMSUdOKGJ1ZmZlci0+bGVuKSAvIFBBR0Vf U0laRTsKKwlzdHJ1Y3QgcGFnZSAqKnBhZ2VzID0gdm1hbGxvYyhzaXplb2Yoc3RydWN0IHBhZ2Ug KikgKiBucGFnZXMpOworCXN0cnVjdCBwYWdlICoqdG1wID0gcGFnZXM7CisJc3RydWN0IHNnX3Bh Z2VfaXRlciBwaXRlcjsKKwl2b2lkICp2YWRkcjsKKworCWlmICghcGFnZXMpCisJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOworCisJZm9yX2VhY2hfc2d0YWJsZV9wYWdlKHRhYmxlLCAmcGl0ZXIs IDApIHsKKwkJV0FSTl9PTih0bXAgLSBwYWdlcyA+PSBucGFnZXMpOworCQkqdG1wKysgPSBzZ19w YWdlX2l0ZXJfcGFnZSgmcGl0ZXIpOworCX0KKworCXZhZGRyID0gdm1hcChwYWdlcywgbnBhZ2Vz LCBWTV9NQVAsIFBBR0VfS0VSTkVMKTsKKwl2ZnJlZShwYWdlcyk7CisKKwlpZiAoIXZhZGRyKQor CQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCXJldHVybiB2YWRkcjsKK30KKworc3RhdGlj IHZvaWQgKnN5c3RlbV9oZWFwX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKK3sKKwlzdHJ1 Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJdm9pZCAqdmFk ZHI7CisKKwltdXRleF9sb2NrKCZidWZmZXItPmxvY2spOworCWlmIChidWZmZXItPnZtYXBfY250 KSB7CisJCWJ1ZmZlci0+dm1hcF9jbnQrKzsKKwkJdmFkZHIgPSBidWZmZXItPnZhZGRyOworCQln b3RvIG91dDsKKwl9CisKKwl2YWRkciA9IHN5c3RlbV9oZWFwX2RvX3ZtYXAoYnVmZmVyKTsKKwlp ZiAoSVNfRVJSKHZhZGRyKSkKKwkJZ290byBvdXQ7CisKKwlidWZmZXItPnZhZGRyID0gdmFkZHI7 CisJYnVmZmVyLT52bWFwX2NudCsrOworb3V0OgorCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2Nr KTsKKworCXJldHVybiB2YWRkcjsKK30KKworc3RhdGljIHZvaWQgc3lzdGVtX2hlYXBfdnVubWFw KHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHZvaWQgKnZhZGRyKQoreworCXN0cnVjdCBzeXN0ZW1f aGVhcF9idWZmZXIgKmJ1ZmZlciA9IGRtYWJ1Zi0+cHJpdjsKKworCW11dGV4X2xvY2soJmJ1ZmZl ci0+bG9jayk7CisJaWYgKCEtLWJ1ZmZlci0+dm1hcF9jbnQpIHsKKwkJdnVubWFwKGJ1ZmZlci0+ dmFkZHIpOworCQlidWZmZXItPnZhZGRyID0gTlVMTDsKKwl9CisJbXV0ZXhfdW5sb2NrKCZidWZm ZXItPmxvY2spOworfQorCitzdGF0aWMgdm9pZCBzeXN0ZW1faGVhcF9kbWFfYnVmX3JlbGVhc2Uo c3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKK3sKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpi dWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IHNnX3RhYmxlICp0YWJsZTsKKwlzdHJ1Y3Qg c2NhdHRlcmxpc3QgKnNnOworCWludCBpOworCisJdGFibGUgPSAmYnVmZmVyLT5zZ190YWJsZTsK Kwlmb3JfZWFjaF9zZ3RhYmxlX3NnKHRhYmxlLCBzZywgaSkKKwkJX19mcmVlX3BhZ2Uoc2dfcGFn ZShzZykpOworCXNnX2ZyZWVfdGFibGUodGFibGUpOwogCWtmcmVlKGJ1ZmZlcik7CiB9CiAKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgc3lzdGVtX2hlYXBfYnVmX29wcyA9IHsKKwku YXR0YWNoID0gc3lzdGVtX2hlYXBfYXR0YWNoLAorCS5kZXRhY2ggPSBzeXN0ZW1faGVhcF9kZXRh Y2gsCisJLm1hcF9kbWFfYnVmID0gc3lzdGVtX2hlYXBfbWFwX2RtYV9idWYsCisJLnVubWFwX2Rt YV9idWYgPSBzeXN0ZW1faGVhcF91bm1hcF9kbWFfYnVmLAorCS5iZWdpbl9jcHVfYWNjZXNzID0g c3lzdGVtX2hlYXBfZG1hX2J1Zl9iZWdpbl9jcHVfYWNjZXNzLAorCS5lbmRfY3B1X2FjY2VzcyA9 IHN5c3RlbV9oZWFwX2RtYV9idWZfZW5kX2NwdV9hY2Nlc3MsCisJLm1tYXAgPSBzeXN0ZW1faGVh cF9tbWFwLAorCS52bWFwID0gc3lzdGVtX2hlYXBfdm1hcCwKKwkudnVubWFwID0gc3lzdGVtX2hl YXBfdnVubWFwLAorCS5yZWxlYXNlID0gc3lzdGVtX2hlYXBfZG1hX2J1Zl9yZWxlYXNlLAorfTsK Kwogc3RhdGljIGludCBzeXN0ZW1faGVhcF9hbGxvY2F0ZShzdHJ1Y3QgZG1hX2hlYXAgKmhlYXAs CiAJCQkJdW5zaWduZWQgbG9uZyBsZW4sCiAJCQkJdW5zaWduZWQgbG9uZyBmZF9mbGFncywKIAkJ CQl1bnNpZ25lZCBsb25nIGhlYXBfZmxhZ3MpCiB7Ci0Jc3RydWN0IGhlYXBfaGVscGVyX2J1ZmZl ciAqaGVscGVyX2J1ZmZlcjsKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZmZXI7CisJ REVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8pOwogCXN0cnVjdCBkbWFfYnVmICpk bWFidWY7Ci0JaW50IHJldCA9IC1FTk9NRU07CisJc3RydWN0IHNnX3RhYmxlICp0YWJsZTsKKwlz dHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCXBnb2ZmX3QgcGFnZWNvdW50OwogCXBnb2ZmX3QgcGc7 CisJaW50IGksIHJldCA9IC1FTk9NRU07CiAKLQloZWxwZXJfYnVmZmVyID0ga3phbGxvYyhzaXpl b2YoKmhlbHBlcl9idWZmZXIpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIWhlbHBlcl9idWZmZXIpCisJ YnVmZmVyID0ga3phbGxvYyhzaXplb2YoKmJ1ZmZlciksIEdGUF9LRVJORUwpOworCWlmICghYnVm ZmVyKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCWluaXRfaGVhcF9oZWxwZXJfYnVmZmVyKGhlbHBl cl9idWZmZXIsIHN5c3RlbV9oZWFwX2ZyZWUpOwotCWhlbHBlcl9idWZmZXItPmhlYXAgPSBoZWFw OwotCWhlbHBlcl9idWZmZXItPnNpemUgPSBsZW47Ci0KLQloZWxwZXJfYnVmZmVyLT5wYWdlY291 bnQgPSBsZW4gLyBQQUdFX1NJWkU7Ci0JaGVscGVyX2J1ZmZlci0+cGFnZXMgPSBrbWFsbG9jX2Fy cmF5KGhlbHBlcl9idWZmZXItPnBhZ2Vjb3VudCwKLQkJCQkJICAgICBzaXplb2YoKmhlbHBlcl9i dWZmZXItPnBhZ2VzKSwKLQkJCQkJICAgICBHRlBfS0VSTkVMKTsKLQlpZiAoIWhlbHBlcl9idWZm ZXItPnBhZ2VzKSB7Ci0JCXJldCA9IC1FTk9NRU07Ci0JCWdvdG8gZXJyMDsKLQl9CisJSU5JVF9M SVNUX0hFQUQoJmJ1ZmZlci0+YXR0YWNobWVudHMpOworCW11dGV4X2luaXQoJmJ1ZmZlci0+bG9j ayk7CisJYnVmZmVyLT5oZWFwID0gaGVhcDsKKwlidWZmZXItPmxlbiA9IGxlbjsKIAotCWZvciAo cGcgPSAwOyBwZyA8IGhlbHBlcl9idWZmZXItPnBhZ2Vjb3VudDsgcGcrKykgeworCXRhYmxlID0g JmJ1ZmZlci0+c2dfdGFibGU7CisJcGFnZWNvdW50ID0gbGVuIC8gUEFHRV9TSVpFOworCWlmIChz Z19hbGxvY190YWJsZSh0YWJsZSwgcGFnZWNvdW50LCBHRlBfS0VSTkVMKSkKKwkJZ290byBmcmVl X2J1ZmZlcjsKKworCXNnID0gdGFibGUtPnNnbDsKKwlmb3IgKHBnID0gMDsgcGcgPCBwYWdlY291 bnQ7IHBnKyspIHsKKwkJc3RydWN0IHBhZ2UgKnBhZ2U7CiAJCS8qCiAJCSAqIEF2b2lkIHRyeWlu ZyB0byBhbGxvY2F0ZSBtZW1vcnkgaWYgdGhlIHByb2Nlc3MKLQkJICogaGFzIGJlZW4ga2lsbGVk IGJ5IGJ5IFNJR0tJTEwKKwkJICogaGFzIGJlZW4ga2lsbGVkIGJ5IFNJR0tJTEwKIAkJICovCiAJ CWlmIChmYXRhbF9zaWduYWxfcGVuZGluZyhjdXJyZW50KSkKLQkJCWdvdG8gZXJyMTsKLQotCQlo ZWxwZXJfYnVmZmVyLT5wYWdlc1twZ10gPSBhbGxvY19wYWdlKEdGUF9LRVJORUwgfCBfX0dGUF9a RVJPKTsKLQkJaWYgKCFoZWxwZXJfYnVmZmVyLT5wYWdlc1twZ10pCi0JCQlnb3RvIGVycjE7CisJ CQlnb3RvIGZyZWVfcGFnZXM7CisJCXBhZ2UgPSBhbGxvY19wYWdlKEdGUF9LRVJORUwgfCBfX0dG UF9aRVJPKTsKKwkJaWYgKCFwYWdlKQorCQkJZ290byBmcmVlX3BhZ2VzOworCQlzZ19zZXRfcGFn ZShzZywgcGFnZSwgcGFnZV9zaXplKHBhZ2UpLCAwKTsKKwkJc2cgPSBzZ19uZXh0KHNnKTsKIAl9 CiAKIAkvKiBjcmVhdGUgdGhlIGRtYWJ1ZiAqLwotCWRtYWJ1ZiA9IGhlYXBfaGVscGVyX2V4cG9y dF9kbWFidWYoaGVscGVyX2J1ZmZlciwgZmRfZmxhZ3MpOworCWV4cF9pbmZvLm9wcyA9ICZzeXN0 ZW1faGVhcF9idWZfb3BzOworCWV4cF9pbmZvLnNpemUgPSBidWZmZXItPmxlbjsKKwlleHBfaW5m by5mbGFncyA9IGZkX2ZsYWdzOworCWV4cF9pbmZvLnByaXYgPSBidWZmZXI7CisJZG1hYnVmID0g ZG1hX2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKIAlpZiAoSVNfRVJSKGRtYWJ1ZikpIHsKIAkJcmV0 ID0gUFRSX0VSUihkbWFidWYpOwotCQlnb3RvIGVycjE7CisJCWdvdG8gZnJlZV9wYWdlczsKIAl9 CiAKLQloZWxwZXJfYnVmZmVyLT5kbWFidWYgPSBkbWFidWY7Ci0KIAlyZXQgPSBkbWFfYnVmX2Zk KGRtYWJ1ZiwgZmRfZmxhZ3MpOwogCWlmIChyZXQgPCAwKSB7CiAJCWRtYV9idWZfcHV0KGRtYWJ1 Zik7CkBAIC05MCwxMiArMzQzLDEyIEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBfYWxsb2NhdGUo c3RydWN0IGRtYV9oZWFwICpoZWFwLAogCiAJcmV0dXJuIHJldDsKIAotZXJyMToKLQl3aGlsZSAo cGcgPiAwKQotCQlfX2ZyZWVfcGFnZShoZWxwZXJfYnVmZmVyLT5wYWdlc1stLXBnXSk7Ci0Ja2Zy ZWUoaGVscGVyX2J1ZmZlci0+cGFnZXMpOwotZXJyMDoKLQlrZnJlZShoZWxwZXJfYnVmZmVyKTsK K2ZyZWVfcGFnZXM6CisJZm9yX2VhY2hfc2d0YWJsZV9zZyh0YWJsZSwgc2csIGkpCisJCV9fZnJl ZV9wYWdlKHNnX3BhZ2Uoc2cpKTsKKwlzZ19mcmVlX3RhYmxlKHRhYmxlKTsKK2ZyZWVfYnVmZmVy OgorCWtmcmVlKGJ1ZmZlcik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTA3LDcgKzM2MCw2IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2hlYXBfb3BzIHN5c3RlbV9oZWFwX29wcyA9IHsKIHN0 YXRpYyBpbnQgc3lzdGVtX2hlYXBfY3JlYXRlKHZvaWQpCiB7CiAJc3RydWN0IGRtYV9oZWFwX2V4 cG9ydF9pbmZvIGV4cF9pbmZvOwotCWludCByZXQgPSAwOwogCiAJZXhwX2luZm8ubmFtZSA9ICJz eXN0ZW0iOwogCWV4cF9pbmZvLm9wcyA9ICZzeXN0ZW1faGVhcF9vcHM7CkBAIC0xMTUsOSArMzY3 LDkgQEAgc3RhdGljIGludCBzeXN0ZW1faGVhcF9jcmVhdGUodm9pZCkKIAogCXN5c19oZWFwID0g ZG1hX2hlYXBfYWRkKCZleHBfaW5mbyk7CiAJaWYgKElTX0VSUihzeXNfaGVhcCkpCi0JCXJldCA9 IFBUUl9FUlIoc3lzX2hlYXApOworCQlyZXR1cm4gUFRSX0VSUihzeXNfaGVhcCk7CiAKLQlyZXR1 cm4gcmV0OworCXJldHVybiAwOwogfQogbW9kdWxlX2luaXQoc3lzdGVtX2hlYXBfY3JlYXRlKTsK IE1PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==