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 EE2B8C388F9 for ; Sat, 21 Nov 2020 04:50:06 +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 7DD5321D46 for ; Sat, 21 Nov 2020 04:50:06 +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="C0W6VF+L" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7DD5321D46 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 237F36E966; Sat, 21 Nov 2020 04:50:05 +0000 (UTC) Received: from mail-pf1-x441.google.com (mail-pf1-x441.google.com [IPv6:2607:f8b0:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id 24FEE6E966 for ; Sat, 21 Nov 2020 04:50:02 +0000 (UTC) Received: by mail-pf1-x441.google.com with SMTP id t8so9851517pfg.8 for ; Fri, 20 Nov 2020 20:50:02 -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=rv2xwSmub3U43VaTRd/Lmk3ISquWamnBLLJ4tbYNzrM=; b=C0W6VF+Lh+PBzrnjLy3WYjQ9e1CAQpTIRJK+cjvn6X/t3dn3V80fuGesja0S2iR/Fh b/0prPOmZw5iKIwm54eN9/ylkbkJcOHS6mGkCM9xA0jkjI+dzhSlbNvzfXkJ1Q140ylM uaemnP2pQynaPjhfLujOlAS6a7eCOYD6RMjkYLicU4JXjrry6iK6b24fAVEvcMusYxKz AhYPFG7PgTiWJC7ZP68xImSZK83b8n1UmtoNC6yJjXRH/ejJBgy78pund8sL6qMqw8wH 5Zax2mtdUBjxYd5TP7xaGibGFOyTzDLip8lRYrQ1ys4hRCqh7MJyQeL2mi/AevnvKes8 J9ZQ== 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=rv2xwSmub3U43VaTRd/Lmk3ISquWamnBLLJ4tbYNzrM=; b=gdQ4r+cy0I2DgztiLlVhJiaUPF8TroVtVfoyoqLUsDGWvoTDgctvqGxspqMoIFvjts xdui8tx2LN+zpfMGsBZhcRtgrZP57mWiz4F4xokVynVq4PmpYo7VXDpq2Phg2jj1dB3e c9H/37/JTbec9MgmgQ7GfUG7qPnE0CdLp4DkFBZTvSboou24Ey/HT1aVcM6eDdSPfGPY +4oyKnIToU47llmFJ6yoFK9/T+ng9WAwXQRk8DkpYaRUR75QDnM+488x6EXzj7BAOs2C NwcVhdSFV0XMd+WDRi2W+i528kwFiU7rtPoSfh1cuThn4vvMZwST4iOPsqcD5qy+7GIb xNHQ== X-Gm-Message-State: AOAM5332jrP8uqfQJy6BNcxBSHiSnahz+jofPXXv7+hVDG0t4lJSFDed S01H8cS6tLSR/SovrZw+H7K57w== X-Google-Smtp-Source: ABdhPJxRZSGY2RTBYHVHuUTMk3XyzdL5HOWjt9fDPuC2L5EIr2oNqp8uSPvuKqHIudj1QH8wFsjG/w== X-Received: by 2002:a17:90a:c257:: with SMTP id d23mr13653965pjx.46.1605934201673; Fri, 20 Nov 2020 20:50:01 -0800 (PST) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id w196sm5407692pfd.177.2020.11.20.20.50.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Nov 2020 20:50:01 -0800 (PST) From: John Stultz To: lkml Subject: [PATCH v6 1/5] dma-buf: system_heap: Rework system heap to use sgtables instead of pagelists Date: Sat, 21 Nov 2020 04:49:51 +0000 Message-Id: <20201121044955.58215-2-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201121044955.58215-1-john.stultz@linaro.org> References: <20201121044955.58215-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 LW5leHQsIGZyb20gU3VtaXQKLS0tCiBkcml2ZXJzL2RtYS1idWYvaGVhcHMvc3lzdGVtX2hlYXAu YyB8IDM0NiArKysrKysrKysrKysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzAw IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1h LWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL3N5c3RlbV9o ZWFwLmMKaW5kZXggMGJmNjg4ZTNjMDIzLi5lNWY5Zjk2NGI5MTAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jCisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFw cy9zeXN0ZW1faGVhcC5jCkBAIC0zLDcgKzMsMTEgQEAKICAqIERNQUJVRiBTeXN0ZW0gaGVhcCBl eHBvcnRlcgogICoKICAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4KLSAqIENvcHly aWdodCAoQykgMjAxOSBMaW5hcm8gTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDE5LCAyMDIwIExp bmFybyBMdGQuCisgKgorICogUG9ydGlvbnMgYmFzZWQgb2ZmIG9mIEFuZHJldyBEYXZpcycgU1JB TSBoZWFwOgorICogQ29weXJpZ2h0IChDKSAyMDE5IFRleGFzIEluc3RydW1lbnRzIEluY29ycG9y YXRlZCAtIGh0dHA6Ly93d3cudGkuY29tLworICoJQW5kcmV3IEYuIERhdmlzIDxhZmRAdGkuY29t PgogICovCiAKICNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+CkBAIC0xNSw3MiArMTksMzIzIEBA CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8bGludXgvc2NhdHRlcmxpc3Qu aD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Ci0jaW5jbHVkZSA8bGludXgvc2NoZWQvc2lnbmFs Lmg+Ci0jaW5jbHVkZSA8YXNtL3BhZ2UuaD4KKyNpbmNsdWRlIDxsaW51eC92bWFsbG9jLmg+CisK K3N0YXRpYyBzdHJ1Y3QgZG1hX2hlYXAgKnN5c19oZWFwOwogCi0jaW5jbHVkZSAiaGVhcC1oZWxw ZXJzLmgiCitzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyIHsKKwlzdHJ1Y3QgZG1hX2hlYXAgKmhl YXA7CisJc3RydWN0IGxpc3RfaGVhZCBhdHRhY2htZW50czsKKwlzdHJ1Y3QgbXV0ZXggbG9jazsK Kwl1bnNpZ25lZCBsb25nIGxlbjsKKwlzdHJ1Y3Qgc2dfdGFibGUgc2dfdGFibGU7CisJaW50IHZt YXBfY250OworCXN0cnVjdCBkbWFfYnVmX21hcCAqbWFwOworfTsKIAotc3RydWN0IGRtYV9oZWFw 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+bWFwLT52YWRkciwgYnVmZmVyLT5sZW4pOworCisJbGlzdF9mb3JfZWFjaF9l bnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgeworCQlkbWFfc3luY19zZ3RhYmxl X2Zvcl9jcHUoYS0+ZGV2LCBhLT50YWJsZSwgZGlyZWN0aW9uKTsKKwl9CisJbXV0ZXhfdW5sb2Nr KCZidWZmZXItPmxvY2spOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgc3lzdGVtX2hl YXBfZG1hX2J1Zl9lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAorCQkJCQkg ICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisJc3RydWN0IHN5c3Rl bV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVjdCBkbWFfaGVhcF9h dHRhY2htZW50ICphOworCisJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKKworCWlmIChidWZm ZXItPnZtYXBfY250KQorCQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5nZShidWZmZXItPm1hcC0+dmFk ZHIsIGJ1ZmZlci0+bGVuKTsKIAotCWZvciAocGcgPSAwOyBwZyA8IGJ1ZmZlci0+cGFnZWNvdW50 OyBwZysrKQotCQlfX2ZyZWVfcGFnZShidWZmZXItPnBhZ2VzW3BnXSk7Ci0Ja2ZyZWUoYnVmZmVy LT5wYWdlcyk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywg bGlzdCkgeworCQlkbWFfc3luY19zZ3RhYmxlX2Zvcl9kZXZpY2UoYS0+ZGV2LCBhLT50YWJsZSwg ZGlyZWN0aW9uKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgc3lzdGVtX2hlYXBfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1h YnVmLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBf YnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJc3RydWN0IHNnX3RhYmxlICp0YWJsZSA9 ICZidWZmZXItPnNnX3RhYmxlOworCXVuc2lnbmVkIGxvbmcgYWRkciA9IHZtYS0+dm1fc3RhcnQ7 CisJc3RydWN0IHNnX3BhZ2VfaXRlciBwaXRlcjsKKwlpbnQgcmV0OworCisJZm9yX2VhY2hfc2d0 YWJsZV9wYWdlKHRhYmxlLCAmcGl0ZXIsIHZtYS0+dm1fcGdvZmYpIHsKKwkJc3RydWN0IHBhZ2Ug KnBhZ2UgPSBzZ19wYWdlX2l0ZXJfcGFnZSgmcGl0ZXIpOworCisJCXJldCA9IHJlbWFwX3Bmbl9y YW5nZSh2bWEsIGFkZHIsIHBhZ2VfdG9fcGZuKHBhZ2UpLCBQQUdFX1NJWkUsCisJCQkJICAgICAg dm1hLT52bV9wYWdlX3Byb3QpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwkJYWRkciAr PSBQQUdFX1NJWkU7CisJCWlmIChhZGRyID49IHZtYS0+dm1fZW5kKQorCQkJcmV0dXJuIDA7CisJ fQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2RvX3ZtYXAoc3RydWN0 IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKK3sK KwlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlID0gJmJ1ZmZlci0+c2dfdGFibGU7CisJaW50IG5wYWdl cyA9IFBBR0VfQUxJR04oYnVmZmVyLT5sZW4pIC8gUEFHRV9TSVpFOworCXN0cnVjdCBwYWdlICoq cGFnZXMgPSB2bWFsbG9jKHNpemVvZihzdHJ1Y3QgcGFnZSAqKSAqIG5wYWdlcyk7CisJc3RydWN0 IHBhZ2UgKip0bXAgPSBwYWdlczsKKwlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHBpdGVyOworCXZvaWQg KnZhZGRyOworCisJaWYgKCFwYWdlcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3JfZWFjaF9z Z3RhYmxlX3BhZ2UodGFibGUsICZwaXRlciwgMCkgeworCQlXQVJOX09OKHRtcCAtIHBhZ2VzID49 IG5wYWdlcyk7CisJCSp0bXArKyA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZwaXRlcik7CisJfQorCisJ dmFkZHIgPSB2bWFwKHBhZ2VzLCBucGFnZXMsIFZNX01BUCwgUEFHRV9LRVJORUwpOworCXZmcmVl KHBhZ2VzKTsKKworCWlmICghdmFkZHIpCisJCXJldHVybiAtRU5PTUVNOworCisJZG1hX2J1Zl9t YXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOworCWJ1ZmZlci0+bWFwID0gbWFwOworCisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgc3lzdGVtX2hlYXBfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1h YnVmLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKK3sKKwlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVm ZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisJaW50IHJldCA9IDA7CisKKwltdXRleF9sb2Nr KCZidWZmZXItPmxvY2spOworCWlmIChidWZmZXItPnZtYXBfY250KSB7CisJCWJ1ZmZlci0+dm1h cF9jbnQrKzsKKwkJbWFwID0gYnVmZmVyLT5tYXA7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9 IHN5c3RlbV9oZWFwX2RvX3ZtYXAoYnVmZmVyLCBtYXApOworCWlmIChyZXQpCisJCWdvdG8gb3V0 OworCisJYnVmZmVyLT52bWFwX2NudCsrOworb3V0OgorCW11dGV4X3VubG9jaygmYnVmZmVyLT5s b2NrKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHN5c3RlbV9oZWFwX3Z1bm1h cChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkKK3sKKwlz dHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7CisKKwltdXRl eF9sb2NrKCZidWZmZXItPmxvY2spOworCWlmICghLS1idWZmZXItPnZtYXBfY250KSB7CisJCXZ1 bm1hcChidWZmZXItPm1hcC0+dmFkZHIpOworCQlkbWFfYnVmX21hcF9jbGVhcihidWZmZXItPm1h cCk7CisJfQorCW11dGV4X3VubG9jaygmYnVmZmVyLT5sb2NrKTsKK30KKworc3RhdGljIHZvaWQg c3lzdGVtX2hlYXBfZG1hX2J1Zl9yZWxlYXNlKHN0cnVjdCBkbWFfYnVmICpkbWFidWYpCit7CisJ c3RydWN0IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2OworCXN0cnVj dCBzZ190YWJsZSAqdGFibGU7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKwlpbnQgaTsKKwor CXRhYmxlID0gJmJ1ZmZlci0+c2dfdGFibGU7CisJZm9yX2VhY2hfc2d0YWJsZV9zZyh0YWJsZSwg c2csIGkpCisJCV9fZnJlZV9wYWdlKHNnX3BhZ2Uoc2cpKTsKKwlzZ19mcmVlX3RhYmxlKHRhYmxl KTsKIAlrZnJlZShidWZmZXIpOwogfQogCitzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3Bz IHN5c3RlbV9oZWFwX2J1Zl9vcHMgPSB7CisJLmF0dGFjaCA9IHN5c3RlbV9oZWFwX2F0dGFjaCwK KwkuZGV0YWNoID0gc3lzdGVtX2hlYXBfZGV0YWNoLAorCS5tYXBfZG1hX2J1ZiA9IHN5c3RlbV9o ZWFwX21hcF9kbWFfYnVmLAorCS51bm1hcF9kbWFfYnVmID0gc3lzdGVtX2hlYXBfdW5tYXBfZG1h X2J1ZiwKKwkuYmVnaW5fY3B1X2FjY2VzcyA9IHN5c3RlbV9oZWFwX2RtYV9idWZfYmVnaW5fY3B1 X2FjY2VzcywKKwkuZW5kX2NwdV9hY2Nlc3MgPSBzeXN0ZW1faGVhcF9kbWFfYnVmX2VuZF9jcHVf YWNjZXNzLAorCS5tbWFwID0gc3lzdGVtX2hlYXBfbW1hcCwKKwkudm1hcCA9IHN5c3RlbV9oZWFw X3ZtYXAsCisJLnZ1bm1hcCA9IHN5c3RlbV9oZWFwX3Z1bm1hcCwKKwkucmVsZWFzZSA9IHN5c3Rl bV9oZWFwX2RtYV9idWZfcmVsZWFzZSwKK307CisKIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBfYWxs b2NhdGUoc3RydWN0IGRtYV9oZWFwICpoZWFwLAogCQkJCXVuc2lnbmVkIGxvbmcgbGVuLAogCQkJ CXVuc2lnbmVkIGxvbmcgZmRfZmxhZ3MsCiAJCQkJdW5zaWduZWQgbG9uZyBoZWFwX2ZsYWdzKQog ewotCXN0cnVjdCBoZWFwX2hlbHBlcl9idWZmZXIgKmhlbHBlcl9idWZmZXI7CisJc3RydWN0IHN5 c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyOworCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4 cF9pbmZvKTsKIAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwotCWludCByZXQgPSAtRU5PTUVNOwor CXN0cnVjdCBzZ190YWJsZSAqdGFibGU7CisJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKKwlwZ29m Zl90IHBhZ2Vjb3VudDsKIAlwZ29mZl90IHBnOworCWludCBpLCByZXQgPSAtRU5PTUVNOwogCi0J aGVscGVyX2J1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpoZWxwZXJfYnVmZmVyKSwgR0ZQX0tFUk5F TCk7Ci0JaWYgKCFoZWxwZXJfYnVmZmVyKQorCWJ1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpidWZm ZXIpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWJ1ZmZlcikKIAkJcmV0dXJuIC1FTk9NRU07CiAKLQlp bml0X2hlYXBfaGVscGVyX2J1ZmZlcihoZWxwZXJfYnVmZmVyLCBzeXN0ZW1faGVhcF9mcmVlKTsK LQloZWxwZXJfYnVmZmVyLT5oZWFwID0gaGVhcDsKLQloZWxwZXJfYnVmZmVyLT5zaXplID0gbGVu OwotCi0JaGVscGVyX2J1ZmZlci0+cGFnZWNvdW50ID0gbGVuIC8gUEFHRV9TSVpFOwotCWhlbHBl cl9idWZmZXItPnBhZ2VzID0ga21hbGxvY19hcnJheShoZWxwZXJfYnVmZmVyLT5wYWdlY291bnQs Ci0JCQkJCSAgICAgc2l6ZW9mKCpoZWxwZXJfYnVmZmVyLT5wYWdlcyksCi0JCQkJCSAgICAgR0ZQ X0tFUk5FTCk7Ci0JaWYgKCFoZWxwZXJfYnVmZmVyLT5wYWdlcykgewotCQlyZXQgPSAtRU5PTUVN OwotCQlnb3RvIGVycjA7Ci0JfQorCUlOSVRfTElTVF9IRUFEKCZidWZmZXItPmF0dGFjaG1lbnRz KTsKKwltdXRleF9pbml0KCZidWZmZXItPmxvY2spOworCWJ1ZmZlci0+aGVhcCA9IGhlYXA7CisJ YnVmZmVyLT5sZW4gPSBsZW47CiAKLQlmb3IgKHBnID0gMDsgcGcgPCBoZWxwZXJfYnVmZmVyLT5w YWdlY291bnQ7IHBnKyspIHsKKwl0YWJsZSA9ICZidWZmZXItPnNnX3RhYmxlOworCXBhZ2Vjb3Vu dCA9IGxlbiAvIFBBR0VfU0laRTsKKwlpZiAoc2dfYWxsb2NfdGFibGUodGFibGUsIHBhZ2Vjb3Vu dCwgR0ZQX0tFUk5FTCkpCisJCWdvdG8gZnJlZV9idWZmZXI7CisKKwlzZyA9IHRhYmxlLT5zZ2w7 CisJZm9yIChwZyA9IDA7IHBnIDwgcGFnZWNvdW50OyBwZysrKSB7CisJCXN0cnVjdCBwYWdlICpw YWdlOwogCQkvKgogCQkgKiBBdm9pZCB0cnlpbmcgdG8gYWxsb2NhdGUgbWVtb3J5IGlmIHRoZSBw cm9jZXNzCi0JCSAqIGhhcyBiZWVuIGtpbGxlZCBieSBieSBTSUdLSUxMCisJCSAqIGhhcyBiZWVu IGtpbGxlZCBieSBTSUdLSUxMCiAJCSAqLwogCQlpZiAoZmF0YWxfc2lnbmFsX3BlbmRpbmcoY3Vy cmVudCkpCi0JCQlnb3RvIGVycjE7Ci0KLQkJaGVscGVyX2J1ZmZlci0+cGFnZXNbcGddID0gYWxs b2NfcGFnZShHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7Ci0JCWlmICghaGVscGVyX2J1ZmZlci0+ cGFnZXNbcGddKQotCQkJZ290byBlcnIxOworCQkJZ290byBmcmVlX3BhZ2VzOworCQlwYWdlID0g YWxsb2NfcGFnZShHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7CisJCWlmICghcGFnZSkKKwkJCWdv dG8gZnJlZV9wYWdlczsKKwkJc2dfc2V0X3BhZ2Uoc2csIHBhZ2UsIHBhZ2Vfc2l6ZShwYWdlKSwg MCk7CisJCXNnID0gc2dfbmV4dChzZyk7CiAJfQogCiAJLyogY3JlYXRlIHRoZSBkbWFidWYgKi8K LQlkbWFidWYgPSBoZWFwX2hlbHBlcl9leHBvcnRfZG1hYnVmKGhlbHBlcl9idWZmZXIsIGZkX2Zs YWdzKTsKKwlleHBfaW5mby5vcHMgPSAmc3lzdGVtX2hlYXBfYnVmX29wczsKKwlleHBfaW5mby5z aXplID0gYnVmZmVyLT5sZW47CisJZXhwX2luZm8uZmxhZ3MgPSBmZF9mbGFnczsKKwlleHBfaW5m by5wcml2ID0gYnVmZmVyOworCWRtYWJ1ZiA9IGRtYV9idWZfZXhwb3J0KCZleHBfaW5mbyk7CiAJ aWYgKElTX0VSUihkbWFidWYpKSB7CiAJCXJldCA9IFBUUl9FUlIoZG1hYnVmKTsKLQkJZ290byBl cnIxOworCQlnb3RvIGZyZWVfcGFnZXM7CiAJfQogCi0JaGVscGVyX2J1ZmZlci0+ZG1hYnVmID0g ZG1hYnVmOwotCiAJcmV0ID0gZG1hX2J1Zl9mZChkbWFidWYsIGZkX2ZsYWdzKTsKIAlpZiAocmV0 IDwgMCkgewogCQlkbWFfYnVmX3B1dChkbWFidWYpOwpAQCAtOTAsMTIgKzM0NSwxMiBAQCBzdGF0 aWMgaW50IHN5c3RlbV9oZWFwX2FsbG9jYXRlKHN0cnVjdCBkbWFfaGVhcCAqaGVhcCwKIAogCXJl dHVybiByZXQ7CiAKLWVycjE6Ci0Jd2hpbGUgKHBnID4gMCkKLQkJX19mcmVlX3BhZ2UoaGVscGVy X2J1ZmZlci0+cGFnZXNbLS1wZ10pOwotCWtmcmVlKGhlbHBlcl9idWZmZXItPnBhZ2VzKTsKLWVy cjA6Ci0Ja2ZyZWUoaGVscGVyX2J1ZmZlcik7CitmcmVlX3BhZ2VzOgorCWZvcl9lYWNoX3NndGFi bGVfc2codGFibGUsIHNnLCBpKQorCQlfX2ZyZWVfcGFnZShzZ19wYWdlKHNnKSk7CisJc2dfZnJl ZV90YWJsZSh0YWJsZSk7CitmcmVlX2J1ZmZlcjoKKwlrZnJlZShidWZmZXIpOwogCiAJcmV0dXJu IHJldDsKIH0KQEAgLTEwNyw3ICszNjIsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9oZWFw X29wcyBzeXN0ZW1faGVhcF9vcHMgPSB7CiBzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2NyZWF0ZSh2 b2lkKQogewogCXN0cnVjdCBkbWFfaGVhcF9leHBvcnRfaW5mbyBleHBfaW5mbzsKLQlpbnQgcmV0 ID0gMDsKIAogCWV4cF9pbmZvLm5hbWUgPSAic3lzdGVtIjsKIAlleHBfaW5mby5vcHMgPSAmc3lz dGVtX2hlYXBfb3BzOwpAQCAtMTE1LDkgKzM2OSw5IEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBf Y3JlYXRlKHZvaWQpCiAKIAlzeXNfaGVhcCA9IGRtYV9oZWFwX2FkZCgmZXhwX2luZm8pOwogCWlm IChJU19FUlIoc3lzX2hlYXApKQotCQlyZXQgPSBQVFJfRVJSKHN5c19oZWFwKTsKKwkJcmV0dXJu IFBUUl9FUlIoc3lzX2hlYXApOwogCi0JcmV0dXJuIHJldDsKKwlyZXR1cm4gMDsKIH0KIG1vZHVs ZV9pbml0KHN5c3RlbV9oZWFwX2NyZWF0ZSk7CiBNT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7Ci0t IAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=