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_SIGNED, DKIM_VALID,DKIM_VALID_AU,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 7665EC47423 for ; Sat, 3 Oct 2020 04:03:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3EB0720829 for ; Sat, 3 Oct 2020 04:03:27 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="pumPlKkp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725862AbgJCED0 (ORCPT ); Sat, 3 Oct 2020 00:03:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725828AbgJCEDO (ORCPT ); Sat, 3 Oct 2020 00:03:14 -0400 Received: from mail-pf1-x444.google.com (mail-pf1-x444.google.com [IPv6:2607:f8b0:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F996C0613E2 for ; Fri, 2 Oct 2020 21:03:12 -0700 (PDT) Received: by mail-pf1-x444.google.com with SMTP id e10so2230129pfj.1 for ; Fri, 02 Oct 2020 21:03:12 -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=/3T6DtyMdgIaqBLXnI/IP8eViK4GR+w936JVTX0oqqo=; b=pumPlKkppWyU+6tvZrtcIGLQrPzfL7DZXw2xIEL7N1BD4bqnhs4eXFAUn64o4Nn+nX HrWqWdezJ7Iv0l61f5U1GYVetpPGokCd+2dreOx84XOxe9YfzLy6R20suB4EDD27mkjg uYJrTDRBihA/lhdcA91c68fBm2ljxvaovtymqyWtTs7sHeTgdwClFfSoXHReGV+pltU3 a2MU9TcOJDFuAPkf19EV/qr5VqEhwwpu+gtDWnIfFQTNyfbFjlrlBnSfd/qWeJMH99bz /B5ab7LGawktkvIzNmXHWHHvnogmlLssMAe/wpRtGOe16eviByyjRE4XlUqcHZocd4X6 JQ1g== 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=/3T6DtyMdgIaqBLXnI/IP8eViK4GR+w936JVTX0oqqo=; b=MSeF/4sVyR5jJZdAzU2fKxgW2sWe1M4tG3IskLSdYaRAcNLsZ8upH7g605x2N9+uuE INrRCCzH6Uohg4TKChnvhQaPS2h31dTH6ECEPbbAC8wzGFg3dydwhXvrUZwaJB0uJs4H epb/AudY+wmd3QsoASi+4sk+8ijoTXIIhocCP+dDB2Z5a6xRfCyHe4RQE3TBeNXjjC5q qCHrOr59IEgqS2fvEOuQSGaOA1kvamDjk84KoMVrKIMx9noqfZUBySyv3/qleZGFU0DQ xrz5sGP7BD3GMDHsNyT2+mFSNu+fA6DwvrXcCBNuISsPyhmnUjx/W76CrtEk9UlfL1os 72Ig== X-Gm-Message-State: AOAM532USRQT+AArf0FUOYx6cZfM/mMi0/kEHbkesExWfOlg0p1w5E2x 5RsROCRfA/b0aJwzU8237lWPQLrTBSqG1Q== X-Google-Smtp-Source: ABdhPJyC/0wtN9vlme0BdjUqwt1Gpcijj0nApYBm+ZJ5owlf/V7bA8Y3GedcktbkKhwMga2K22EpjQ== X-Received: by 2002:a63:a70d:: with SMTP id d13mr5033122pgf.65.1601697791699; Fri, 02 Oct 2020 21:03:11 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id 190sm3909290pfy.22.2020.10.02.21.03.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Oct 2020 21:03:11 -0700 (PDT) From: John Stultz To: lkml Cc: John Stultz , Sumit Semwal , Liam Mark , Laura Abbott , Brian Starkey , Hridya Valsaraju , Suren Baghdasaryan , Sandeep Patil , Daniel Mentz , Chris Goldsworthy , =?UTF-8?q?=C3=98rjan=20Eide?= , Robin Murphy , Ezequiel Garcia , Simon Ser , James Jones , linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org Subject: [PATCH v3 4/7] dma-buf: heaps: Skip sync if not mapped Date: Sat, 3 Oct 2020 04:02:54 +0000 Message-Id: <20201003040257.62768-5-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201003040257.62768-1-john.stultz@linaro.org> References: <20201003040257.62768-1-john.stultz@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch is basically a port of Ørjan Eide's similar patch for ION https://lore.kernel.org/lkml/20200414134629.54567-1-orjan.eide@arm.com/ Only sync the sg-list of dma-buf heap attachment when the attachment is actually mapped on the device. dma-bufs may be synced at any time. It can be reached from user space via DMA_BUF_IOCTL_SYNC, so there are no guarantees from callers on when syncs may be attempted, and dma_buf_end_cpu_access() and dma_buf_begin_cpu_access() may not be paired. Since the sg_list's dma_address isn't set up until the buffer is used on the device, and dma_map_sg() is called on it, the dma_address will be NULL if sync is attempted on the dma-buf before it's mapped on a device. Before v5.0 (commit 55897af63091 ("dma-direct: merge swiotlb_dma_ops into the dma_direct code")) this was a problem as the dma-api (at least the swiotlb_dma_ops on arm64) would use the potentially invalid dma_address. How that failed depended on how the device handled physical address 0. If 0 was a valid address to physical ram, that page would get flushed a lot, while the actual pages in the buffer would not get synced correctly. While if 0 is an invalid physical address it may cause a fault and trigger a crash. In v5.0 this was incidentally fixed by commit 55897af63091 ("dma-direct: merge swiotlb_dma_ops into the dma_direct code"), as this moved the dma-api to use the page pointer in the sg_list, and (for Ion buffers at least) this will always be valid if the sg_list exists at all. But, this issue is re-introduced in v5.3 with commit 449fa54d6815 ("dma-direct: correct the physical addr in dma_direct_sync_sg_for_cpu/device") moves the dma-api back to the old behaviour and picks the dma_address that may be invalid. dma-buf core doesn't ensure that the buffer is mapped on the device, and thus have a valid sg_list, before calling the exporter's begin_cpu_access. Logic and commit message originally by: Ørjan Eide Cc: Sumit Semwal Cc: Liam Mark Cc: Laura Abbott Cc: Brian Starkey Cc: Hridya Valsaraju Cc: Suren Baghdasaryan Cc: Sandeep Patil Cc: Daniel Mentz Cc: Chris Goldsworthy Cc: Ørjan Eide Cc: Robin Murphy Cc: Ezequiel Garcia Cc: Simon Ser Cc: James Jones Cc: linux-media@vger.kernel.org Cc: dri-devel@lists.freedesktop.org Signed-off-by: John Stultz --- drivers/dma-buf/heaps/cma_heap.c | 10 ++++++++++ drivers/dma-buf/heaps/system_heap.c | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c index 366963b94c72..fece9d7739ae 100644 --- a/drivers/dma-buf/heaps/cma_heap.c +++ b/drivers/dma-buf/heaps/cma_heap.c @@ -44,6 +44,7 @@ struct dma_heap_attachment { struct device *dev; struct sg_table table; struct list_head list; + bool mapped; }; static int cma_heap_attach(struct dma_buf *dmabuf, @@ -68,6 +69,7 @@ static int cma_heap_attach(struct dma_buf *dmabuf, a->dev = attachment->dev; INIT_LIST_HEAD(&a->list); + a->mapped = false; attachment->priv = a; @@ -102,6 +104,7 @@ static struct sg_table *cma_heap_map_dma_buf(struct dma_buf_attachment *attachme ret = dma_map_sgtable(attachment->dev, table, direction, 0); if (ret) return ERR_PTR(-ENOMEM); + a->mapped = true; return table; } @@ -109,6 +112,9 @@ static void cma_heap_unmap_dma_buf(struct dma_buf_attachment *attachment, struct sg_table *table, enum dma_data_direction direction) { + struct dma_heap_attachment *a = attachment->priv; + + a->mapped = false; dma_unmap_sgtable(attachment->dev, table, direction, 0); } @@ -123,6 +129,8 @@ static int cma_heap_dma_buf_begin_cpu_access(struct dma_buf *dmabuf, mutex_lock(&buffer->lock); list_for_each_entry(a, &buffer->attachments, list) { + if (!a->mapped) + continue; dma_sync_sgtable_for_cpu(a->dev, &a->table, direction); } mutex_unlock(&buffer->lock); @@ -141,6 +149,8 @@ static int cma_heap_dma_buf_end_cpu_access(struct dma_buf *dmabuf, mutex_lock(&buffer->lock); list_for_each_entry(a, &buffer->attachments, list) { + if (!a->mapped) + continue; dma_sync_sgtable_for_device(a->dev, &a->table, direction); } mutex_unlock(&buffer->lock); diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c index 00ed107b3b76..ef8d47e5a7ff 100644 --- a/drivers/dma-buf/heaps/system_heap.c +++ b/drivers/dma-buf/heaps/system_heap.c @@ -37,6 +37,7 @@ struct dma_heap_attachment { struct device *dev; struct sg_table *table; struct list_head list; + bool mapped; }; static struct sg_table *dup_sg_table(struct sg_table *table) @@ -84,6 +85,7 @@ static int system_heap_attach(struct dma_buf *dmabuf, a->table = table; a->dev = attachment->dev; INIT_LIST_HEAD(&a->list); + a->mapped = false; attachment->priv = a; @@ -120,6 +122,7 @@ static struct sg_table *system_heap_map_dma_buf(struct dma_buf_attachment *attac if (ret) return ERR_PTR(ret); + a->mapped = true; return table; } @@ -127,6 +130,9 @@ static void system_heap_unmap_dma_buf(struct dma_buf_attachment *attachment, struct sg_table *table, enum dma_data_direction direction) { + struct dma_heap_attachment *a = attachment->priv; + + a->mapped = false; dma_unmap_sgtable(attachment->dev, table, direction, 0); } @@ -142,6 +148,8 @@ static int system_heap_dma_buf_begin_cpu_access(struct dma_buf *dmabuf, invalidate_kernel_vmap_range(buffer->vaddr, buffer->len); list_for_each_entry(a, &buffer->attachments, list) { + if (!a->mapped) + continue; dma_sync_sgtable_for_cpu(a->dev, a->table, direction); } mutex_unlock(&buffer->lock); @@ -161,6 +169,8 @@ static int system_heap_dma_buf_end_cpu_access(struct dma_buf *dmabuf, flush_kernel_vmap_range(buffer->vaddr, buffer->len); list_for_each_entry(a, &buffer->attachments, list) { + if (!a->mapped) + continue; dma_sync_sgtable_for_device(a->dev, a->table, direction); } mutex_unlock(&buffer->lock); -- 2.17.1 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.5 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 42F68C46466 for ; Sat, 3 Oct 2020 04:03: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 EDC9F206C3 for ; Sat, 3 Oct 2020 04:03:15 +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="pumPlKkp" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EDC9F206C3 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 622FD6EA36; Sat, 3 Oct 2020 04:03:13 +0000 (UTC) Received: from mail-pg1-x544.google.com (mail-pg1-x544.google.com [IPv6:2607:f8b0:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 301D66EA36 for ; Sat, 3 Oct 2020 04:03:12 +0000 (UTC) Received: by mail-pg1-x544.google.com with SMTP id d13so2177107pgl.6 for ; Fri, 02 Oct 2020 21:03:12 -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=/3T6DtyMdgIaqBLXnI/IP8eViK4GR+w936JVTX0oqqo=; b=pumPlKkppWyU+6tvZrtcIGLQrPzfL7DZXw2xIEL7N1BD4bqnhs4eXFAUn64o4Nn+nX HrWqWdezJ7Iv0l61f5U1GYVetpPGokCd+2dreOx84XOxe9YfzLy6R20suB4EDD27mkjg uYJrTDRBihA/lhdcA91c68fBm2ljxvaovtymqyWtTs7sHeTgdwClFfSoXHReGV+pltU3 a2MU9TcOJDFuAPkf19EV/qr5VqEhwwpu+gtDWnIfFQTNyfbFjlrlBnSfd/qWeJMH99bz /B5ab7LGawktkvIzNmXHWHHvnogmlLssMAe/wpRtGOe16eviByyjRE4XlUqcHZocd4X6 JQ1g== 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=/3T6DtyMdgIaqBLXnI/IP8eViK4GR+w936JVTX0oqqo=; b=k9DXZF424779VHQKo0dzyOjO3al1bk46RiuIlcw0EimZgczM0H38ktC+KzWlfjIbTU A9Z80xaLJAKuU8N26kdxLdwPIiG9u8YboXhJ/XmXgOzAoxYIPt4NI1B72tz4+tzQ9430 Ob4Yik6UcIQArpB9OsPXCTKEU6Uavw/+h8AQhAM0ZcOVtl/6B3rJoz051rIOs7gFUyo4 4GM1/hBX3Lk8x/GwUN8sKmQEcSM8LI4u1skLxEFH+vU0pbDpb6F8IvVau0cfyYXMicZ+ gC+AojOrZg9EHoDaptZgoJxKEduVUYwF16mbEZ89NqmvAUTpxIVM+yYYoZ4EMpPwxzgD XOCw== X-Gm-Message-State: AOAM530HBbDQuNxIKoZNyfSwIz9+N72Yq+508AZG/tXAfR4Agb8RfuWW fdN4HGysoZZThnVY+MYmqfGTtA== X-Google-Smtp-Source: ABdhPJyC/0wtN9vlme0BdjUqwt1Gpcijj0nApYBm+ZJ5owlf/V7bA8Y3GedcktbkKhwMga2K22EpjQ== X-Received: by 2002:a63:a70d:: with SMTP id d13mr5033122pgf.65.1601697791699; Fri, 02 Oct 2020 21:03:11 -0700 (PDT) Received: from localhost.localdomain ([2601:1c2:680:1319:692:26ff:feda:3a81]) by smtp.gmail.com with ESMTPSA id 190sm3909290pfy.22.2020.10.02.21.03.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 Oct 2020 21:03:11 -0700 (PDT) From: John Stultz To: lkml Subject: [PATCH v3 4/7] dma-buf: heaps: Skip sync if not mapped Date: Sat, 3 Oct 2020 04:02:54 +0000 Message-Id: <20201003040257.62768-5-john.stultz@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201003040257.62768-1-john.stultz@linaro.org> References: <20201003040257.62768-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" VGhpcyBwYXRjaCBpcyBiYXNpY2FsbHkgYSBwb3J0IG9mIMOYcmphbiBFaWRlJ3Mgc2ltaWxhciBw YXRjaCBmb3IgSU9OCiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzIwMjAwNDE0MTM0NjI5 LjU0NTY3LTEtb3JqYW4uZWlkZUBhcm0uY29tLwoKT25seSBzeW5jIHRoZSBzZy1saXN0IG9mIGRt YS1idWYgaGVhcCBhdHRhY2htZW50IHdoZW4gdGhlIGF0dGFjaG1lbnQKaXMgYWN0dWFsbHkgbWFw cGVkIG9uIHRoZSBkZXZpY2UuCgpkbWEtYnVmcyBtYXkgYmUgc3luY2VkIGF0IGFueSB0aW1lLiBJ dCBjYW4gYmUgcmVhY2hlZCBmcm9tIHVzZXIgc3BhY2UKdmlhIERNQV9CVUZfSU9DVExfU1lOQywg c28gdGhlcmUgYXJlIG5vIGd1YXJhbnRlZXMgZnJvbSBjYWxsZXJzIG9uIHdoZW4Kc3luY3MgbWF5 IGJlIGF0dGVtcHRlZCwgYW5kIGRtYV9idWZfZW5kX2NwdV9hY2Nlc3MoKSBhbmQKZG1hX2J1Zl9i ZWdpbl9jcHVfYWNjZXNzKCkgbWF5IG5vdCBiZSBwYWlyZWQuCgpTaW5jZSB0aGUgc2dfbGlzdCdz IGRtYV9hZGRyZXNzIGlzbid0IHNldCB1cCB1bnRpbCB0aGUgYnVmZmVyIGlzIHVzZWQKb24gdGhl IGRldmljZSwgYW5kIGRtYV9tYXBfc2coKSBpcyBjYWxsZWQgb24gaXQsIHRoZSBkbWFfYWRkcmVz cyB3aWxsIGJlCk5VTEwgaWYgc3luYyBpcyBhdHRlbXB0ZWQgb24gdGhlIGRtYS1idWYgYmVmb3Jl IGl0J3MgbWFwcGVkIG9uIGEgZGV2aWNlLgoKQmVmb3JlIHY1LjAgKGNvbW1pdCA1NTg5N2FmNjMw OTEgKCJkbWEtZGlyZWN0OiBtZXJnZSBzd2lvdGxiX2RtYV9vcHMKaW50byB0aGUgZG1hX2RpcmVj dCBjb2RlIikpIHRoaXMgd2FzIGEgcHJvYmxlbSBhcyB0aGUgZG1hLWFwaSAoYXQgbGVhc3QKdGhl IHN3aW90bGJfZG1hX29wcyBvbiBhcm02NCkgd291bGQgdXNlIHRoZSBwb3RlbnRpYWxseSBpbnZh bGlkCmRtYV9hZGRyZXNzLiBIb3cgdGhhdCBmYWlsZWQgZGVwZW5kZWQgb24gaG93IHRoZSBkZXZp Y2UgaGFuZGxlZCBwaHlzaWNhbAphZGRyZXNzIDAuIElmIDAgd2FzIGEgdmFsaWQgYWRkcmVzcyB0 byBwaHlzaWNhbCByYW0sIHRoYXQgcGFnZSB3b3VsZCBnZXQKZmx1c2hlZCBhIGxvdCwgd2hpbGUg dGhlIGFjdHVhbCBwYWdlcyBpbiB0aGUgYnVmZmVyIHdvdWxkIG5vdCBnZXQgc3luY2VkCmNvcnJl Y3RseS4gV2hpbGUgaWYgMCBpcyBhbiBpbnZhbGlkIHBoeXNpY2FsIGFkZHJlc3MgaXQgbWF5IGNh dXNlIGEKZmF1bHQgYW5kIHRyaWdnZXIgYSBjcmFzaC4KCkluIHY1LjAgdGhpcyB3YXMgaW5jaWRl bnRhbGx5IGZpeGVkIGJ5IGNvbW1pdCA1NTg5N2FmNjMwOTEgKCJkbWEtZGlyZWN0OgptZXJnZSBz d2lvdGxiX2RtYV9vcHMgaW50byB0aGUgZG1hX2RpcmVjdCBjb2RlIiksIGFzIHRoaXMgbW92ZWQg dGhlCmRtYS1hcGkgdG8gdXNlIHRoZSBwYWdlIHBvaW50ZXIgaW4gdGhlIHNnX2xpc3QsIGFuZCAo Zm9yIElvbiBidWZmZXJzIGF0CmxlYXN0KSB0aGlzIHdpbGwgYWx3YXlzIGJlIHZhbGlkIGlmIHRo ZSBzZ19saXN0IGV4aXN0cyBhdCBhbGwuCgpCdXQsIHRoaXMgaXNzdWUgaXMgcmUtaW50cm9kdWNl ZCBpbiB2NS4zIHdpdGgKY29tbWl0IDQ0OWZhNTRkNjgxNSAoImRtYS1kaXJlY3Q6IGNvcnJlY3Qg dGhlIHBoeXNpY2FsIGFkZHIgaW4KZG1hX2RpcmVjdF9zeW5jX3NnX2Zvcl9jcHUvZGV2aWNlIikg bW92ZXMgdGhlIGRtYS1hcGkgYmFjayB0byB0aGUgb2xkCmJlaGF2aW91ciBhbmQgcGlja3MgdGhl IGRtYV9hZGRyZXNzIHRoYXQgbWF5IGJlIGludmFsaWQuCgpkbWEtYnVmIGNvcmUgZG9lc24ndCBl bnN1cmUgdGhhdCB0aGUgYnVmZmVyIGlzIG1hcHBlZCBvbiB0aGUgZGV2aWNlLCBhbmQKdGh1cyBo YXZlIGEgdmFsaWQgc2dfbGlzdCwgYmVmb3JlIGNhbGxpbmcgdGhlIGV4cG9ydGVyJ3MKYmVnaW5f Y3B1X2FjY2Vzcy4KCkxvZ2ljIGFuZCBjb21taXQgbWVzc2FnZSBvcmlnaW5hbGx5IGJ5OiDDmHJq YW4gRWlkZSA8b3JqYW4uZWlkZUBhcm0uY29tPgoKQ2M6IFN1bWl0IFNlbXdhbCA8c3VtaXQuc2Vt d2FsQGxpbmFyby5vcmc+CkNjOiBMaWFtIE1hcmsgPGxtYXJrQGNvZGVhdXJvcmEub3JnPgpDYzog TGF1cmEgQWJib3R0IDxsYWJib3R0QGtlcm5lbC5vcmc+CkNjOiBCcmlhbiBTdGFya2V5IDxCcmlh bi5TdGFya2V5QGFybS5jb20+CkNjOiBIcmlkeWEgVmFsc2FyYWp1IDxocmlkeWFAZ29vZ2xlLmNv bT4KQ2M6IFN1cmVuIEJhZ2hkYXNhcnlhbiA8c3VyZW5iQGdvb2dsZS5jb20+CkNjOiBTYW5kZWVw IFBhdGlsIDxzc3BhdGlsQGdvb2dsZS5jb20+CkNjOiBEYW5pZWwgTWVudHogPGRhbmllbG1lbnR6 QGdvb2dsZS5jb20+CkNjOiBDaHJpcyBHb2xkc3dvcnRoeSA8Y2dvbGRzd29AY29kZWF1cm9yYS5v cmc+CkNjOiDDmHJqYW4gRWlkZSA8b3JqYW4uZWlkZUBhcm0uY29tPgpDYzogUm9iaW4gTXVycGh5 IDxyb2Jpbi5tdXJwaHlAYXJtLmNvbT4KQ2M6IEV6ZXF1aWVsIEdhcmNpYSA8ZXplcXVpZWxAY29s bGFib3JhLmNvbT4KQ2M6IFNpbW9uIFNlciA8Y29udGFjdEBlbWVyc2lvbi5mcj4KQ2M6IEphbWVz IEpvbmVzIDxqYWpvbmVzQG52aWRpYS5jb20+CkNjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v cmcKQ2M6IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKU2lnbmVkLW9mZi1ieTogSm9o biBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+Ci0tLQogZHJpdmVycy9kbWEtYnVmL2hl YXBzL2NtYV9oZWFwLmMgICAgfCAxMCArKysrKysrKysrCiBkcml2ZXJzL2RtYS1idWYvaGVhcHMv c3lzdGVtX2hlYXAuYyB8IDEwICsrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0 aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9jbWFfaGVhcC5jIGIv ZHJpdmVycy9kbWEtYnVmL2hlYXBzL2NtYV9oZWFwLmMKaW5kZXggMzY2OTYzYjk0YzcyLi5mZWNl OWQ3NzM5YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9jbWFfaGVhcC5jCisr KyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9jbWFfaGVhcC5jCkBAIC00NCw2ICs0NCw3IEBAIHN0 cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50IHsKIAlzdHJ1Y3QgZGV2aWNlICpkZXY7CiAJc3RydWN0 IHNnX3RhYmxlIHRhYmxlOwogCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKKwlib29sIG1hcHBlZDsK IH07CiAKIHN0YXRpYyBpbnQgY21hX2hlYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYs CkBAIC02OCw2ICs2OSw3IEBAIHN0YXRpYyBpbnQgY21hX2hlYXBfYXR0YWNoKHN0cnVjdCBkbWFf YnVmICpkbWFidWYsCiAKIAlhLT5kZXYgPSBhdHRhY2htZW50LT5kZXY7CiAJSU5JVF9MSVNUX0hF QUQoJmEtPmxpc3QpOworCWEtPm1hcHBlZCA9IGZhbHNlOwogCiAJYXR0YWNobWVudC0+cHJpdiA9 IGE7CiAKQEAgLTEwMiw2ICsxMDQsNyBAQCBzdGF0aWMgc3RydWN0IHNnX3RhYmxlICpjbWFfaGVh cF9tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZQogCXJldCA9 IGRtYV9tYXBfc2d0YWJsZShhdHRhY2htZW50LT5kZXYsIHRhYmxlLCBkaXJlY3Rpb24sIDApOwog CWlmIChyZXQpCiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOworCWEtPm1hcHBlZCA9IHRydWU7 CiAJcmV0dXJuIHRhYmxlOwogfQogCkBAIC0xMDksNiArMTEyLDkgQEAgc3RhdGljIHZvaWQgY21h X2hlYXBfdW5tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50 LAogCQkJCSAgIHN0cnVjdCBzZ190YWJsZSAqdGFibGUsCiAJCQkJICAgZW51bSBkbWFfZGF0YV9k aXJlY3Rpb24gZGlyZWN0aW9uKQogeworCXN0cnVjdCBkbWFfaGVhcF9hdHRhY2htZW50ICphID0g YXR0YWNobWVudC0+cHJpdjsKKworCWEtPm1hcHBlZCA9IGZhbHNlOwogCWRtYV91bm1hcF9zZ3Rh YmxlKGF0dGFjaG1lbnQtPmRldiwgdGFibGUsIGRpcmVjdGlvbiwgMCk7CiB9CiAKQEAgLTEyMyw2 ICsxMjksOCBAQCBzdGF0aWMgaW50IGNtYV9oZWFwX2RtYV9idWZfYmVnaW5fY3B1X2FjY2Vzcyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAogCiAJbXV0ZXhfbG9jaygmYnVmZmVyLT5sb2NrKTsKIAls aXN0X2Zvcl9lYWNoX2VudHJ5KGEsICZidWZmZXItPmF0dGFjaG1lbnRzLCBsaXN0KSB7CisJCWlm ICghYS0+bWFwcGVkKQorCQkJY29udGludWU7CiAJCWRtYV9zeW5jX3NndGFibGVfZm9yX2NwdShh LT5kZXYsICZhLT50YWJsZSwgZGlyZWN0aW9uKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZidWZmZXIt PmxvY2spOwpAQCAtMTQxLDYgKzE0OSw4IEBAIHN0YXRpYyBpbnQgY21hX2hlYXBfZG1hX2J1Zl9l bmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAogCiAJbXV0ZXhfbG9jaygmYnVm ZmVyLT5sb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGEsICZidWZmZXItPmF0dGFjaG1lbnRz LCBsaXN0KSB7CisJCWlmICghYS0+bWFwcGVkKQorCQkJY29udGludWU7CiAJCWRtYV9zeW5jX3Nn dGFibGVfZm9yX2RldmljZShhLT5kZXYsICZhLT50YWJsZSwgZGlyZWN0aW9uKTsKIAl9CiAJbXV0 ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2hl YXBzL3N5c3RlbV9oZWFwLmMgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvc3lzdGVtX2hlYXAuYwpp bmRleCAwMGVkMTA3YjNiNzYuLmVmOGQ0N2U1YTdmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEt YnVmL2hlYXBzL3N5c3RlbV9oZWFwLmMKKysrIGIvZHJpdmVycy9kbWEtYnVmL2hlYXBzL3N5c3Rl bV9oZWFwLmMKQEAgLTM3LDYgKzM3LDcgQEAgc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQgewog CXN0cnVjdCBkZXZpY2UgKmRldjsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlOwogCXN0cnVjdCBs aXN0X2hlYWQgbGlzdDsKKwlib29sIG1hcHBlZDsKIH07CiAKIHN0YXRpYyBzdHJ1Y3Qgc2dfdGFi bGUgKmR1cF9zZ190YWJsZShzdHJ1Y3Qgc2dfdGFibGUgKnRhYmxlKQpAQCAtODQsNiArODUsNyBA QCBzdGF0aWMgaW50IHN5c3RlbV9oZWFwX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAog CWEtPnRhYmxlID0gdGFibGU7CiAJYS0+ZGV2ID0gYXR0YWNobWVudC0+ZGV2OwogCUlOSVRfTElT VF9IRUFEKCZhLT5saXN0KTsKKwlhLT5tYXBwZWQgPSBmYWxzZTsKIAogCWF0dGFjaG1lbnQtPnBy aXYgPSBhOwogCkBAIC0xMjAsNiArMTIyLDcgQEAgc3RhdGljIHN0cnVjdCBzZ190YWJsZSAqc3lz dGVtX2hlYXBfbWFwX2RtYV9idWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWMKIAlp ZiAocmV0KQogCQlyZXR1cm4gRVJSX1BUUihyZXQpOwogCisJYS0+bWFwcGVkID0gdHJ1ZTsKIAly ZXR1cm4gdGFibGU7CiB9CiAKQEAgLTEyNyw2ICsxMzAsOSBAQCBzdGF0aWMgdm9pZCBzeXN0ZW1f aGVhcF91bm1hcF9kbWFfYnVmKHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaG1lbnQs CiAJCQkJICAgICAgc3RydWN0IHNnX3RhYmxlICp0YWJsZSwKIAkJCQkgICAgICBlbnVtIGRtYV9k YXRhX2RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CisJc3RydWN0IGRtYV9oZWFwX2F0dGFjaG1lbnQg KmEgPSBhdHRhY2htZW50LT5wcml2OworCisJYS0+bWFwcGVkID0gZmFsc2U7CiAJZG1hX3VubWFw X3NndGFibGUoYXR0YWNobWVudC0+ZGV2LCB0YWJsZSwgZGlyZWN0aW9uLCAwKTsKIH0KIApAQCAt MTQyLDYgKzE0OCw4IEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBfZG1hX2J1Zl9iZWdpbl9jcHVf YWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCiAJCWludmFsaWRhdGVfa2VybmVsX3ZtYXBf cmFuZ2UoYnVmZmVyLT52YWRkciwgYnVmZmVyLT5sZW4pOwogCiAJbGlzdF9mb3JfZWFjaF9lbnRy eShhLCAmYnVmZmVyLT5hdHRhY2htZW50cywgbGlzdCkgeworCQlpZiAoIWEtPm1hcHBlZCkKKwkJ CWNvbnRpbnVlOwogCQlkbWFfc3luY19zZ3RhYmxlX2Zvcl9jcHUoYS0+ZGV2LCBhLT50YWJsZSwg ZGlyZWN0aW9uKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxvY2spOwpAQCAtMTYxLDYg KzE2OSw4IEBAIHN0YXRpYyBpbnQgc3lzdGVtX2hlYXBfZG1hX2J1Zl9lbmRfY3B1X2FjY2Vzcyhz dHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAogCQlmbHVzaF9rZXJuZWxfdm1hcF9yYW5nZShidWZmZXIt PnZhZGRyLCBidWZmZXItPmxlbik7CiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGEsICZidWZmZXIt PmF0dGFjaG1lbnRzLCBsaXN0KSB7CisJCWlmICghYS0+bWFwcGVkKQorCQkJY29udGludWU7CiAJ CWRtYV9zeW5jX3NndGFibGVfZm9yX2RldmljZShhLT5kZXYsIGEtPnRhYmxlLCBkaXJlY3Rpb24p OwogCX0KIAltdXRleF91bmxvY2soJmJ1ZmZlci0+bG9jayk7Ci0tIAoyLjE3LjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=