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=unavailable 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 DDBB2C35269 for ; Fri, 9 Oct 2020 08:01:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 827D022276 for ; Fri, 9 Oct 2020 08:01:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="SipLyVLu" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732843AbgJIIBD (ORCPT ); Fri, 9 Oct 2020 04:01:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732748AbgJIIAN (ORCPT ); Fri, 9 Oct 2020 04:00:13 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CE81C0613D5 for ; Fri, 9 Oct 2020 01:00:13 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id t9so9227149wrq.11 for ; Fri, 09 Oct 2020 01:00:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=H+w/Nn7YNzQtL1R8HRvtzmLcceEG02qI4DQoPSHvskY=; b=SipLyVLu1maT+t1abz+yr4JywllfndSf6j6ENSrLq2AfSPXsjK05ajnSvbgqsompuC 1UhyDtuQjFpLpdHPLuaPJ1Y5re9PD8a0kaqxKFb6bu6P7peJGTnfxqpJ9GUn/cQVjw0m wfneMt3tfvx7mL59KoMFPgFV7khypHJ1pv88Y= 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=H+w/Nn7YNzQtL1R8HRvtzmLcceEG02qI4DQoPSHvskY=; b=foPqb1vb+1GrYuxBSWPdrl/dnMbw9gqdOmVVBTFosUsR1vMyYKl1NzTzqC6IHMdYy7 FSba6Lps+GIr6vQo9UqJPbFPGBeXMpg5WXYkAUYbC5lccasgqfrbLnobd/NHfBBl6ot1 fNuDSS39CkY8ljcPHgfCiGqNv10oxZl9WQVMp6SLGPTAOP0cuUDv2Ny0euJRt9VnMamr VBE4IjHEBByizmRwjr9mf9QaAk2SAa3ba1AzhzAuMtfRPDhutrPKu26Spw5WW9f5EHdS LwYOdFGquiGJmcxIy+KRuWn3nipVt28Hz4xoOPuFNbkkOCfC+c4pcQIjNI6241KWLbHQ YSMQ== X-Gm-Message-State: AOAM533bV4SXn3kj5DirIwOnWGF2jcrSetBOUmKvT890rpWCNeC6OLyh KgcyuVDGlyccc12JsX3UPNrulg== X-Google-Smtp-Source: ABdhPJwb1srE61RQrgeCbJO2ZU0Hri/NPq8TLZEHtmQEdkQpUeTbudhLIlI6H1MTzcH4vFJipHM18Q== X-Received: by 2002:adf:df91:: with SMTP id z17mr5138518wrl.379.1602230412191; Fri, 09 Oct 2020 01:00:12 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id u17sm11634118wri.45.2020.10.09.01.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Oct 2020 01:00:11 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Cc: kvm@vger.kernel.org, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-s390@vger.kernel.org, Daniel Vetter , Daniel Vetter , Jason Gunthorpe , Kees Cook , Dan Williams , Andrew Morton , John Hubbard , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Jan Kara , Arnd Bergmann , Greg Kroah-Hartman , David Hildenbrand , "Rafael J. Wysocki" Subject: [PATCH v2 14/17] resource: Move devmem revoke code to resource framework Date: Fri, 9 Oct 2020 09:59:31 +0200 Message-Id: <20201009075934.3509076-15-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> 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 We want all iomem mmaps to consistently revoke ptes when the kernel takes over and CONFIG_IO_STRICT_DEVMEM is enabled. This includes the pci bar mmaps available through procfs and sysfs, which currently do not revoke mappings. To prepare for this, move the code from the /dev/kmem driver to kernel/resource.c. Signed-off-by: Daniel Vetter Cc: Jason Gunthorpe Cc: Kees Cook Cc: Dan Williams Cc: Andrew Morton Cc: John Hubbard Cc: Jérôme Glisse Cc: Jan Kara Cc: Dan Williams Cc: linux-mm@kvack.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-samsung-soc@vger.kernel.org Cc: linux-media@vger.kernel.org Cc: Arnd Bergmann Cc: Greg Kroah-Hartman Cc: Daniel Vetter Cc: David Hildenbrand Cc: "Rafael J. Wysocki" --- drivers/char/mem.c | 85 +------------------------------------ include/linux/ioport.h | 6 +-- kernel/resource.c | 95 +++++++++++++++++++++++++++++++++++++++++- 3 files changed, 96 insertions(+), 90 deletions(-) diff --git a/drivers/char/mem.c b/drivers/char/mem.c index 5502f56f3655..53338aad8d28 100644 --- a/drivers/char/mem.c +++ b/drivers/char/mem.c @@ -31,9 +31,6 @@ #include #include #include -#include -#include -#include #ifdef CONFIG_IA64 # include @@ -809,42 +806,6 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig) return ret; } -static struct inode *devmem_inode; - -#ifdef CONFIG_IO_STRICT_DEVMEM -void revoke_devmem(struct resource *res) -{ - /* pairs with smp_store_release() in devmem_init_inode() */ - struct inode *inode = smp_load_acquire(&devmem_inode); - - /* - * Check that the initialization has completed. Losing the race - * is ok because it means drivers are claiming resources before - * the fs_initcall level of init and prevent /dev/mem from - * establishing mappings. - */ - if (!inode) - return; - - /* - * The expectation is that the driver has successfully marked - * the resource busy by this point, so devmem_is_allowed() - * should start returning false, however for performance this - * does not iterate the entire resource range. - */ - if (devmem_is_allowed(PHYS_PFN(res->start)) && - devmem_is_allowed(PHYS_PFN(res->end))) { - /* - * *cringe* iomem=relaxed says "go ahead, what's the - * worst that can happen?" - */ - return; - } - - unmap_mapping_range(inode->i_mapping, res->start, resource_size(res), 1); -} -#endif - static int open_port(struct inode *inode, struct file *filp) { int rc; @@ -864,7 +825,7 @@ static int open_port(struct inode *inode, struct file *filp) * revocations when drivers want to take over a /dev/mem mapped * range. */ - filp->f_mapping = inode->i_mapping; + filp->f_mapping = iomem_get_mapping(); return 0; } @@ -995,48 +956,6 @@ static char *mem_devnode(struct device *dev, umode_t *mode) static struct class *mem_class; -static int devmem_fs_init_fs_context(struct fs_context *fc) -{ - return init_pseudo(fc, DEVMEM_MAGIC) ? 0 : -ENOMEM; -} - -static struct file_system_type devmem_fs_type = { - .name = "devmem", - .owner = THIS_MODULE, - .init_fs_context = devmem_fs_init_fs_context, - .kill_sb = kill_anon_super, -}; - -static int devmem_init_inode(void) -{ - static struct vfsmount *devmem_vfs_mount; - static int devmem_fs_cnt; - struct inode *inode; - int rc; - - rc = simple_pin_fs(&devmem_fs_type, &devmem_vfs_mount, &devmem_fs_cnt); - if (rc < 0) { - pr_err("Cannot mount /dev/mem pseudo filesystem: %d\n", rc); - return rc; - } - - inode = alloc_anon_inode(devmem_vfs_mount->mnt_sb); - if (IS_ERR(inode)) { - rc = PTR_ERR(inode); - pr_err("Cannot allocate inode for /dev/mem: %d\n", rc); - simple_release_fs(&devmem_vfs_mount, &devmem_fs_cnt); - return rc; - } - - /* - * Publish /dev/mem initialized. - * Pairs with smp_load_acquire() in revoke_devmem(). - */ - smp_store_release(&devmem_inode, inode); - - return 0; -} - static int __init chr_dev_init(void) { int minor; @@ -1058,8 +977,6 @@ static int __init chr_dev_init(void) */ if ((minor == DEVPORT_MINOR) && !arch_has_dev_port()) continue; - if ((minor == DEVMEM_MINOR) && devmem_init_inode() != 0) - continue; device_create(mem_class, NULL, MKDEV(MEM_MAJOR, minor), NULL, devlist[minor].name); diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 6c2b06fe8beb..8ffb61b36606 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h @@ -302,11 +302,7 @@ struct resource *devm_request_free_mem_region(struct device *dev, struct resource *request_free_mem_region(struct resource *base, unsigned long size, const char *name); -#ifdef CONFIG_IO_STRICT_DEVMEM -void revoke_devmem(struct resource *res); -#else -static inline void revoke_devmem(struct resource *res) { }; -#endif +extern struct address_space *iomem_get_mapping(void); #endif /* __ASSEMBLY__ */ #endif /* _LINUX_IOPORT_H */ diff --git a/kernel/resource.c b/kernel/resource.c index 841737bbda9e..22153fdec4f5 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -18,12 +18,15 @@ #include #include #include +#include #include #include #include #include #include +#include #include +#include #include @@ -1112,6 +1115,52 @@ resource_size_t resource_alignment(struct resource *res) static DECLARE_WAIT_QUEUE_HEAD(muxed_resource_wait); +static struct inode *iomem_inode; + +#ifdef CONFIG_IO_STRICT_DEVMEM +static void revoke_iomem(struct resource *res) +{ + /* pairs with smp_store_release() in iomem_init_inode() */ + struct inode *inode = smp_load_acquire(&iomem_inode); + + /* + * Check that the initialization has completed. Losing the race + * is ok because it means drivers are claiming resources before + * the fs_initcall level of init and prevent /dev/mem from + * establishing mappings. + */ + if (!inode) + return; + + /* + * The expectation is that the driver has successfully marked + * the resource busy by this point, so devmem_is_allowed() + * should start returning false, however for performance this + * does not iterate the entire resource range. + */ + if (devmem_is_allowed(PHYS_PFN(res->start)) && + devmem_is_allowed(PHYS_PFN(res->end))) { + /* + * *cringe* iomem=relaxed says "go ahead, what's the + * worst that can happen?" + */ + return; + } + + unmap_mapping_range(inode->i_mapping, res->start, resource_size(res), 1); +} +struct address_space *iomem_get_mapping(void) +{ + return iomem_inode->i_mapping; +} +#else +static void revoke_iomem(struct resource *res) {} +struct address_space *iomem_get_mapping(void) +{ + return NULL; +} +#endif + /** * __request_region - create a new busy resource region * @parent: parent resource descriptor @@ -1179,7 +1228,7 @@ struct resource * __request_region(struct resource *parent, write_unlock(&resource_lock); if (res && orig_parent == &iomem_resource) - revoke_devmem(res); + revoke_iomem(res); return res; } @@ -1713,4 +1762,48 @@ static int __init strict_iomem(char *str) return 1; } +static int iomem_fs_init_fs_context(struct fs_context *fc) +{ + return init_pseudo(fc, DEVMEM_MAGIC) ? 0 : -ENOMEM; +} + +static struct file_system_type iomem_fs_type = { + .name = "iomem", + .owner = THIS_MODULE, + .init_fs_context = iomem_fs_init_fs_context, + .kill_sb = kill_anon_super, +}; + +static int __init iomem_init_inode(void) +{ + static struct vfsmount *iomem_vfs_mount; + static int iomem_fs_cnt; + struct inode *inode; + int rc; + + rc = simple_pin_fs(&iomem_fs_type, &iomem_vfs_mount, &iomem_fs_cnt); + if (rc < 0) { + pr_err("Cannot mount iomem pseudo filesystem: %d\n", rc); + return rc; + } + + inode = alloc_anon_inode(iomem_vfs_mount->mnt_sb); + if (IS_ERR(inode)) { + rc = PTR_ERR(inode); + pr_err("Cannot allocate inode for iomem: %d\n", rc); + simple_release_fs(&iomem_vfs_mount, &iomem_fs_cnt); + return rc; + } + + /* + * Publish /dev/mem initialized. + * Pairs with smp_load_acquire() in revoke_iomem(). + */ + smp_store_release(&iomem_inode, inode); + + return 0; +} + +fs_initcall(iomem_init_inode); + __setup("iomem=", strict_iomem); -- 2.28.0 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,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable 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 09026C43457 for ; Fri, 9 Oct 2020 08:05:43 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 71F69221FC for ; Fri, 9 Oct 2020 08:05:42 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="qLIoTqVv"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="SipLyVLu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 71F69221FC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=unA8Dwo9qGvE/GkWD2FdzqBDlKlYvn+CtQ03gUHkuD4=; b=qLIoTqVvw8b/umzMyp8BNdbPU dcnB5fj0I40afOm8YsPJny7+GCIeKvNwT0M568zXGdsg0zI8i5sdW8wv4cUAQpmxFcLufWD/SpfaM 4KyH4qgvlNr8+d5uUCt9GPZSHZ/caeld8eyokymOZE5u/WEZXCiGW26gF+z3aDQP6z8yGkjOIGCg/ Jl/cuQqfwizN8+DNv2NQxZVbj45LEU4+xZxLUDKyMUStEL0K25FMlUhma18bB9LW1I6WIJAKo+hb6 PvZkq8KKFXh8rO019V3GJiFeXFgqV54jOM2a5c8Jq4sVQ0LY+nwRPV5HX7gxO6TcQBjO9sbf1OxoR DcYVhd6zg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQnNI-0004GP-Tq; Fri, 09 Oct 2020 08:03:37 +0000 Received: from mail-wr1-x444.google.com ([2a00:1450:4864:20::444]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQnK1-0002Z4-TO for linux-arm-kernel@lists.infradead.org; Fri, 09 Oct 2020 08:00:33 +0000 Received: by mail-wr1-x444.google.com with SMTP id w5so9235010wrp.8 for ; Fri, 09 Oct 2020 01:00:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=H+w/Nn7YNzQtL1R8HRvtzmLcceEG02qI4DQoPSHvskY=; b=SipLyVLu1maT+t1abz+yr4JywllfndSf6j6ENSrLq2AfSPXsjK05ajnSvbgqsompuC 1UhyDtuQjFpLpdHPLuaPJ1Y5re9PD8a0kaqxKFb6bu6P7peJGTnfxqpJ9GUn/cQVjw0m wfneMt3tfvx7mL59KoMFPgFV7khypHJ1pv88Y= 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=H+w/Nn7YNzQtL1R8HRvtzmLcceEG02qI4DQoPSHvskY=; b=ZUN52PEpOVQu3GmIWtonVCvyu1269MZoQub5elvls5B8/rBsaeh6djLdJILHlOjKbX gHwwriu5FjkGIALniNxYe0TnSIUPMVTO78AAuBhcJAJkkmqL/fM9JuuDb3tZsHDrj7H+ hFpygIrVNJ8rZGzBoj8bMvz4DyAi67c53D4Tw1RSkilXZIEGI2NYl2CTAY7ieBT9B0Hb gJDxnozEQK0F9XRfnxAzJShnjJCJlo+GpnlUUqkAG0zRoInHeF7dhT0LQ4Vk3RsgMrOC OQee321tUGN2f74uNfFxFv1NDpcMkoXAIyyooUr/t90bcJqoc9QnGbxlhALy0lhiNFju vbPg== X-Gm-Message-State: AOAM531sLKB4jAZdF5GugcZPal/uOk+fXzV3AcHBgA96jU+6BZsw6LDE c5Q87PgHCeZhjvquSjkfcVC4Lg== X-Google-Smtp-Source: ABdhPJwb1srE61RQrgeCbJO2ZU0Hri/NPq8TLZEHtmQEdkQpUeTbudhLIlI6H1MTzcH4vFJipHM18Q== X-Received: by 2002:adf:df91:: with SMTP id z17mr5138518wrl.379.1602230412191; Fri, 09 Oct 2020 01:00:12 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id u17sm11634118wri.45.2020.10.09.01.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Oct 2020 01:00:11 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v2 14/17] resource: Move devmem revoke code to resource framework Date: Fri, 9 Oct 2020 09:59:31 +0200 Message-Id: <20201009075934.3509076-15-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201009_040014_071922_ACA6C4D7 X-CRM114-Status: GOOD ( 29.39 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Jan Kara , Kees Cook , kvm@vger.kernel.org, Jason Gunthorpe , Daniel Vetter , David Hildenbrand , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Arnd Bergmann , John Hubbard , Daniel Vetter , Dan Williams , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org V2Ugd2FudCBhbGwgaW9tZW0gbW1hcHMgdG8gY29uc2lzdGVudGx5IHJldm9rZSBwdGVzIHdoZW4g dGhlIGtlcm5lbAp0YWtlcyBvdmVyIGFuZCBDT05GSUdfSU9fU1RSSUNUX0RFVk1FTSBpcyBlbmFi bGVkLiBUaGlzIGluY2x1ZGVzIHRoZQpwY2kgYmFyIG1tYXBzIGF2YWlsYWJsZSB0aHJvdWdoIHBy b2NmcyBhbmQgc3lzZnMsIHdoaWNoIGN1cnJlbnRseSBkbwpub3QgcmV2b2tlIG1hcHBpbmdzLgoK VG8gcHJlcGFyZSBmb3IgdGhpcywgbW92ZSB0aGUgY29kZSBmcm9tIHRoZSAvZGV2L2ttZW0gZHJp dmVyIHRvCmtlcm5lbC9yZXNvdXJjZS5jLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8 ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+CkNjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0B6aWVwZS5j YT4KQ2M6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPgpDYzogRGFuIFdpbGxpYW1z IDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4 LWZvdW5kYXRpb24ub3JnPgpDYzogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEuY29tPgpD YzogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CkNjOiBKYW4gS2FyYSA8amFj a0BzdXNlLmN6PgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNj OiBsaW51eC1tbUBrdmFjay5vcmcKQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpDYzogbGludXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1tZWRp YUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+CkNjOiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQ2M6IERhdmlkIEhpbGRlbmJyYW5kIDxk YXZpZEByZWRoYXQuY29tPgpDYzogIlJhZmFlbCBKLiBXeXNvY2tpIiA8cmFmYWVsLmoud3lzb2Nr aUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9jaGFyL21lbS5jICAgICB8IDg1ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvaW9wb3J0LmggfCAgNiAr LS0KIGtlcm5lbC9yZXNvdXJjZS5jICAgICAgfCA5NSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgOTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL21lbS5jIGIvZHJpdmVycy9j aGFyL21lbS5jCmluZGV4IDU1MDJmNTZmMzY1NS4uNTMzMzhhYWQ4ZDI4IDEwMDY0NAotLS0gYS9k cml2ZXJzL2NoYXIvbWVtLmMKKysrIGIvZHJpdmVycy9jaGFyL21lbS5jCkBAIC0zMSw5ICszMSw2 IEBACiAjaW5jbHVkZSA8bGludXgvdWlvLmg+CiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgog I2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+Ci0jaW5jbHVkZSA8bGludXgvcHNldWRvX2ZzLmg+ Ci0jaW5jbHVkZSA8dWFwaS9saW51eC9tYWdpYy5oPgotI2luY2x1ZGUgPGxpbnV4L21vdW50Lmg+ CiAKICNpZmRlZiBDT05GSUdfSUE2NAogIyBpbmNsdWRlIDxsaW51eC9lZmkuaD4KQEAgLTgwOSw0 MiArODA2LDYgQEAgc3RhdGljIGxvZmZfdCBtZW1vcnlfbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUs IGxvZmZfdCBvZmZzZXQsIGludCBvcmlnKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBzdHJ1 Y3QgaW5vZGUgKmRldm1lbV9pbm9kZTsKLQotI2lmZGVmIENPTkZJR19JT19TVFJJQ1RfREVWTUVN Ci12b2lkIHJldm9rZV9kZXZtZW0oc3RydWN0IHJlc291cmNlICpyZXMpCi17Ci0JLyogcGFpcnMg d2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGRldm1lbV9pbml0X2lub2RlKCkgKi8KLQlzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmZGV2bWVtX2lub2RlKTsKLQotCS8q Ci0JICogQ2hlY2sgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaGFzIGNvbXBsZXRlZC4gTG9zaW5n IHRoZSByYWNlCi0JICogaXMgb2sgYmVjYXVzZSBpdCBtZWFucyBkcml2ZXJzIGFyZSBjbGFpbWlu ZyByZXNvdXJjZXMgYmVmb3JlCi0JICogdGhlIGZzX2luaXRjYWxsIGxldmVsIG9mIGluaXQgYW5k IHByZXZlbnQgL2Rldi9tZW0gZnJvbQotCSAqIGVzdGFibGlzaGluZyBtYXBwaW5ncy4KLQkgKi8K LQlpZiAoIWlub2RlKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIFRoZSBleHBlY3RhdGlvbiBpcyB0 aGF0IHRoZSBkcml2ZXIgaGFzIHN1Y2Nlc3NmdWxseSBtYXJrZWQKLQkgKiB0aGUgcmVzb3VyY2Ug YnVzeSBieSB0aGlzIHBvaW50LCBzbyBkZXZtZW1faXNfYWxsb3dlZCgpCi0JICogc2hvdWxkIHN0 YXJ0IHJldHVybmluZyBmYWxzZSwgaG93ZXZlciBmb3IgcGVyZm9ybWFuY2UgdGhpcwotCSAqIGRv ZXMgbm90IGl0ZXJhdGUgdGhlIGVudGlyZSByZXNvdXJjZSByYW5nZS4KLQkgKi8KLQlpZiAoZGV2 bWVtX2lzX2FsbG93ZWQoUEhZU19QRk4ocmVzLT5zdGFydCkpICYmCi0JICAgIGRldm1lbV9pc19h bGxvd2VkKFBIWVNfUEZOKHJlcy0+ZW5kKSkpIHsKLQkJLyoKLQkJICogKmNyaW5nZSogaW9tZW09 cmVsYXhlZCBzYXlzICJnbyBhaGVhZCwgd2hhdCdzIHRoZQotCQkgKiB3b3JzdCB0aGF0IGNhbiBo YXBwZW4/IgotCQkgKi8KLQkJcmV0dXJuOwotCX0KLQotCXVubWFwX21hcHBpbmdfcmFuZ2UoaW5v ZGUtPmlfbWFwcGluZywgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShyZXMpLCAxKTsKLX0KLSNl bmRpZgotCiBzdGF0aWMgaW50IG9wZW5fcG9ydChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlscCkKIHsKIAlpbnQgcmM7CkBAIC04NjQsNyArODI1LDcgQEAgc3RhdGljIGludCBv cGVuX3BvcnQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiAJICogcmV2 b2NhdGlvbnMgd2hlbiBkcml2ZXJzIHdhbnQgdG8gdGFrZSBvdmVyIGEgL2Rldi9tZW0gbWFwcGVk CiAJICogcmFuZ2UuCiAJICovCi0JZmlscC0+Zl9tYXBwaW5nID0gaW5vZGUtPmlfbWFwcGluZzsK KwlmaWxwLT5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC05OTUsNDggKzk1Niw2IEBAIHN0YXRpYyBjaGFyICptZW1fZGV2bm9kZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIHVtb2RlX3QgKm1vZGUpCiAKIHN0YXRpYyBzdHJ1Y3QgY2xhc3MgKm1lbV9jbGFz czsKIAotc3RhdGljIGludCBkZXZtZW1fZnNfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250 ZXh0ICpmYykKLXsKLQlyZXR1cm4gaW5pdF9wc2V1ZG8oZmMsIERFVk1FTV9NQUdJQykgPyAwIDog LUVOT01FTTsKLX0KLQotc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGRldm1lbV9mc190 eXBlID0gewotCS5uYW1lCQk9ICJkZXZtZW0iLAotCS5vd25lcgkJPSBUSElTX01PRFVMRSwKLQku aW5pdF9mc19jb250ZXh0ID0gZGV2bWVtX2ZzX2luaXRfZnNfY29udGV4dCwKLQkua2lsbF9zYgk9 IGtpbGxfYW5vbl9zdXBlciwKLX07Ci0KLXN0YXRpYyBpbnQgZGV2bWVtX2luaXRfaW5vZGUodm9p ZCkKLXsKLQlzdGF0aWMgc3RydWN0IHZmc21vdW50ICpkZXZtZW1fdmZzX21vdW50OwotCXN0YXRp YyBpbnQgZGV2bWVtX2ZzX2NudDsKLQlzdHJ1Y3QgaW5vZGUgKmlub2RlOwotCWludCByYzsKLQot CXJjID0gc2ltcGxlX3Bpbl9mcygmZGV2bWVtX2ZzX3R5cGUsICZkZXZtZW1fdmZzX21vdW50LCAm ZGV2bWVtX2ZzX2NudCk7Ci0JaWYgKHJjIDwgMCkgewotCQlwcl9lcnIoIkNhbm5vdCBtb3VudCAv ZGV2L21lbSBwc2V1ZG8gZmlsZXN5c3RlbTogJWRcbiIsIHJjKTsKLQkJcmV0dXJuIHJjOwotCX0K LQotCWlub2RlID0gYWxsb2NfYW5vbl9pbm9kZShkZXZtZW1fdmZzX21vdW50LT5tbnRfc2IpOwot CWlmIChJU19FUlIoaW5vZGUpKSB7Ci0JCXJjID0gUFRSX0VSUihpbm9kZSk7Ci0JCXByX2Vycigi Q2Fubm90IGFsbG9jYXRlIGlub2RlIGZvciAvZGV2L21lbTogJWRcbiIsIHJjKTsKLQkJc2ltcGxl X3JlbGVhc2VfZnMoJmRldm1lbV92ZnNfbW91bnQsICZkZXZtZW1fZnNfY250KTsKLQkJcmV0dXJu IHJjOwotCX0KLQotCS8qCi0JICogUHVibGlzaCAvZGV2L21lbSBpbml0aWFsaXplZC4KLQkgKiBQ YWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiByZXZva2VfZGV2bWVtKCkuCi0JICovCi0J c21wX3N0b3JlX3JlbGVhc2UoJmRldm1lbV9pbm9kZSwgaW5vZGUpOwotCi0JcmV0dXJuIDA7Ci19 Ci0KIHN0YXRpYyBpbnQgX19pbml0IGNocl9kZXZfaW5pdCh2b2lkKQogewogCWludCBtaW5vcjsK QEAgLTEwNTgsOCArOTc3LDYgQEAgc3RhdGljIGludCBfX2luaXQgY2hyX2Rldl9pbml0KHZvaWQp CiAJCSAqLwogCQlpZiAoKG1pbm9yID09IERFVlBPUlRfTUlOT1IpICYmICFhcmNoX2hhc19kZXZf cG9ydCgpKQogCQkJY29udGludWU7Ci0JCWlmICgobWlub3IgPT0gREVWTUVNX01JTk9SKSAmJiBk ZXZtZW1faW5pdF9pbm9kZSgpICE9IDApCi0JCQljb250aW51ZTsKIAogCQlkZXZpY2VfY3JlYXRl KG1lbV9jbGFzcywgTlVMTCwgTUtERVYoTUVNX01BSk9SLCBtaW5vciksCiAJCQkgICAgICBOVUxM LCBkZXZsaXN0W21pbm9yXS5uYW1lKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW9wb3J0 LmggYi9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCmluZGV4IDZjMmIwNmZlOGJlYi4uOGZmYjYxYjM2 NjA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCisrKyBiL2luY2x1ZGUvbGlu dXgvaW9wb3J0LmgKQEAgLTMwMiwxMSArMzAyLDcgQEAgc3RydWN0IHJlc291cmNlICpkZXZtX3Jl cXVlc3RfZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCBkZXZpY2UgKmRldiwKIHN0cnVjdCByZXNvdXJj ZSAqcmVxdWVzdF9mcmVlX21lbV9yZWdpb24oc3RydWN0IHJlc291cmNlICpiYXNlLAogCQl1bnNp Z25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi0jaWZkZWYgQ09ORklHX0lPX1NU UklDVF9ERVZNRU0KLXZvaWQgcmV2b2tlX2Rldm1lbShzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7Ci0j ZWxzZQotc3RhdGljIGlubGluZSB2b2lkIHJldm9rZV9kZXZtZW0oc3RydWN0IHJlc291cmNlICpy ZXMpIHsgfTsKLSNlbmRpZgorZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlICppb21lbV9nZXRf bWFwcGluZyh2b2lkKTsKIAogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwogI2VuZGlmCS8qIF9M SU5VWF9JT1BPUlRfSCAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3Jlc291cmNlLmMgYi9rZXJuZWwv cmVzb3VyY2UuYwppbmRleCA4NDE3MzdiYmRhOWUuLjIyMTUzZmRlYzRmNSAxMDA2NDQKLS0tIGEv a2VybmVsL3Jlc291cmNlLmMKKysrIGIva2VybmVsL3Jlc291cmNlLmMKQEAgLTE4LDEyICsxOCwx NSBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvZnMuaD4K ICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CisjaW5jbHVkZSA8bGludXgvcHNldWRvX2ZzLmg+ CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgog I2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3Bmbi5oPgogI2luY2x1 ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW91bnQuaD4KICNpbmNsdWRlIDxsaW51 eC9yZXNvdXJjZV9leHQuaD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L21hZ2ljLmg+CiAjaW5jbHVk ZSA8YXNtL2lvLmg+CiAKIApAQCAtMTExMiw2ICsxMTE1LDUyIEBAIHJlc291cmNlX3NpemVfdCBy ZXNvdXJjZV9hbGlnbm1lbnQoc3RydWN0IHJlc291cmNlICpyZXMpCiAKIHN0YXRpYyBERUNMQVJF X1dBSVRfUVVFVUVfSEVBRChtdXhlZF9yZXNvdXJjZV93YWl0KTsKIAorc3RhdGljIHN0cnVjdCBp bm9kZSAqaW9tZW1faW5vZGU7CisKKyNpZmRlZiBDT05GSUdfSU9fU1RSSUNUX0RFVk1FTQorc3Rh dGljIHZvaWQgcmV2b2tlX2lvbWVtKHN0cnVjdCByZXNvdXJjZSAqcmVzKQoreworCS8qIHBhaXJz IHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBpb21lbV9pbml0X2lub2RlKCkgKi8KKwlzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmaW9tZW1faW5vZGUpOworCisJLyoK KwkgKiBDaGVjayB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBoYXMgY29tcGxldGVkLiBMb3Npbmcg dGhlIHJhY2UKKwkgKiBpcyBvayBiZWNhdXNlIGl0IG1lYW5zIGRyaXZlcnMgYXJlIGNsYWltaW5n IHJlc291cmNlcyBiZWZvcmUKKwkgKiB0aGUgZnNfaW5pdGNhbGwgbGV2ZWwgb2YgaW5pdCBhbmQg cHJldmVudCAvZGV2L21lbSBmcm9tCisJICogZXN0YWJsaXNoaW5nIG1hcHBpbmdzLgorCSAqLwor CWlmICghaW5vZGUpCisJCXJldHVybjsKKworCS8qCisJICogVGhlIGV4cGVjdGF0aW9uIGlzIHRo YXQgdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZAorCSAqIHRoZSByZXNvdXJjZSBi dXN5IGJ5IHRoaXMgcG9pbnQsIHNvIGRldm1lbV9pc19hbGxvd2VkKCkKKwkgKiBzaG91bGQgc3Rh cnQgcmV0dXJuaW5nIGZhbHNlLCBob3dldmVyIGZvciBwZXJmb3JtYW5jZSB0aGlzCisJICogZG9l cyBub3QgaXRlcmF0ZSB0aGUgZW50aXJlIHJlc291cmNlIHJhbmdlLgorCSAqLworCWlmIChkZXZt ZW1faXNfYWxsb3dlZChQSFlTX1BGTihyZXMtPnN0YXJ0KSkgJiYKKwkgICAgZGV2bWVtX2lzX2Fs bG93ZWQoUEhZU19QRk4ocmVzLT5lbmQpKSkgeworCQkvKgorCQkgKiAqY3JpbmdlKiBpb21lbT1y ZWxheGVkIHNheXMgImdvIGFoZWFkLCB3aGF0J3MgdGhlCisJCSAqIHdvcnN0IHRoYXQgY2FuIGhh cHBlbj8iCisJCSAqLworCQlyZXR1cm47CisJfQorCisJdW5tYXBfbWFwcGluZ19yYW5nZShpbm9k ZS0+aV9tYXBwaW5nLCByZXMtPnN0YXJ0LCByZXNvdXJjZV9zaXplKHJlcyksIDEpOworfQorc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKmlvbWVtX2dldF9tYXBwaW5nKHZvaWQpCit7CisJcmV0dXJuIGlv bWVtX2lub2RlLT5pX21hcHBpbmc7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgcmV2b2tlX2lvbWVt KHN0cnVjdCByZXNvdXJjZSAqcmVzKSB7fQorc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmlvbWVtX2dl dF9tYXBwaW5nKHZvaWQpCit7CisJcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKwogLyoqCiAgKiBf X3JlcXVlc3RfcmVnaW9uIC0gY3JlYXRlIGEgbmV3IGJ1c3kgcmVzb3VyY2UgcmVnaW9uCiAgKiBA cGFyZW50OiBwYXJlbnQgcmVzb3VyY2UgZGVzY3JpcHRvcgpAQCAtMTE3OSw3ICsxMjI4LDcgQEAg c3RydWN0IHJlc291cmNlICogX19yZXF1ZXN0X3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVu dCwKIAl3cml0ZV91bmxvY2soJnJlc291cmNlX2xvY2spOwogCiAJaWYgKHJlcyAmJiBvcmlnX3Bh cmVudCA9PSAmaW9tZW1fcmVzb3VyY2UpCi0JCXJldm9rZV9kZXZtZW0ocmVzKTsKKwkJcmV2b2tl X2lvbWVtKHJlcyk7CiAKIAlyZXR1cm4gcmVzOwogfQpAQCAtMTcxMyw0ICsxNzYyLDQ4IEBAIHN0 YXRpYyBpbnQgX19pbml0IHN0cmljdF9pb21lbShjaGFyICpzdHIpCiAJcmV0dXJuIDE7CiB9CiAK K3N0YXRpYyBpbnQgaW9tZW1fZnNfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpm YykKK3sKKwlyZXR1cm4gaW5pdF9wc2V1ZG8oZmMsIERFVk1FTV9NQUdJQykgPyAwIDogLUVOT01F TTsKK30KKworc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGlvbWVtX2ZzX3R5cGUgPSB7 CisJLm5hbWUJCT0gImlvbWVtIiwKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLmluaXRfZnNf Y29udGV4dCA9IGlvbWVtX2ZzX2luaXRfZnNfY29udGV4dCwKKwkua2lsbF9zYgk9IGtpbGxfYW5v bl9zdXBlciwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGlvbWVtX2luaXRfaW5vZGUodm9pZCkK K3sKKwlzdGF0aWMgc3RydWN0IHZmc21vdW50ICppb21lbV92ZnNfbW91bnQ7CisJc3RhdGljIGlu dCBpb21lbV9mc19jbnQ7CisJc3RydWN0IGlub2RlICppbm9kZTsKKwlpbnQgcmM7CisKKwlyYyA9 IHNpbXBsZV9waW5fZnMoJmlvbWVtX2ZzX3R5cGUsICZpb21lbV92ZnNfbW91bnQsICZpb21lbV9m c19jbnQpOworCWlmIChyYyA8IDApIHsKKwkJcHJfZXJyKCJDYW5ub3QgbW91bnQgaW9tZW0gcHNl dWRvIGZpbGVzeXN0ZW06ICVkXG4iLCByYyk7CisJCXJldHVybiByYzsKKwl9CisKKwlpbm9kZSA9 IGFsbG9jX2Fub25faW5vZGUoaW9tZW1fdmZzX21vdW50LT5tbnRfc2IpOworCWlmIChJU19FUlIo aW5vZGUpKSB7CisJCXJjID0gUFRSX0VSUihpbm9kZSk7CisJCXByX2VycigiQ2Fubm90IGFsbG9j YXRlIGlub2RlIGZvciBpb21lbTogJWRcbiIsIHJjKTsKKwkJc2ltcGxlX3JlbGVhc2VfZnMoJmlv bWVtX3Zmc19tb3VudCwgJmlvbWVtX2ZzX2NudCk7CisJCXJldHVybiByYzsKKwl9CisKKwkvKgor CSAqIFB1Ymxpc2ggL2Rldi9tZW0gaW5pdGlhbGl6ZWQuCisJICogUGFpcnMgd2l0aCBzbXBfbG9h ZF9hY3F1aXJlKCkgaW4gcmV2b2tlX2lvbWVtKCkuCisJICovCisJc21wX3N0b3JlX3JlbGVhc2Uo JmlvbWVtX2lub2RlLCBpbm9kZSk7CisKKwlyZXR1cm4gMDsKK30KKworZnNfaW5pdGNhbGwoaW9t ZW1faW5pdF9pbm9kZSk7CisKIF9fc2V0dXAoImlvbWVtPSIsIHN0cmljdF9pb21lbSk7Ci0tIAoy LjI4LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwps aW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1hcm0ta2VybmVsCg== 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 F21FFC3815A for ; Fri, 9 Oct 2020 08:00:29 +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 96B8122269 for ; Fri, 9 Oct 2020 08:00:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="SipLyVLu" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 96B8122269 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch 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 C08C96EC76; Fri, 9 Oct 2020 08:00:19 +0000 (UTC) Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by gabe.freedesktop.org (Postfix) with ESMTPS id D50996EC7A for ; Fri, 9 Oct 2020 08:00:13 +0000 (UTC) Received: by mail-wr1-x441.google.com with SMTP id j2so9240514wrx.7 for ; Fri, 09 Oct 2020 01:00:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=H+w/Nn7YNzQtL1R8HRvtzmLcceEG02qI4DQoPSHvskY=; b=SipLyVLu1maT+t1abz+yr4JywllfndSf6j6ENSrLq2AfSPXsjK05ajnSvbgqsompuC 1UhyDtuQjFpLpdHPLuaPJ1Y5re9PD8a0kaqxKFb6bu6P7peJGTnfxqpJ9GUn/cQVjw0m wfneMt3tfvx7mL59KoMFPgFV7khypHJ1pv88Y= 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=H+w/Nn7YNzQtL1R8HRvtzmLcceEG02qI4DQoPSHvskY=; b=Y+bHmhmVuMS0fqYAGo6OnZPI/Hq6ndtrn6E6FKbhTZygwx0zpAzwp19LfK+opOSo4x RS4GwQxEOrA5uPLtXGg9yXJblw0VWRYn39UIGkgox0Cxun8FMIRTjP7WV5YvpFaxfXtW Jua3ZwQe2RsYHFF3Zr0hmF0aOzQcTaga9WuwO4ALyM/MQ5y+CnupYhyoRoDSFmqBKrs4 4wkPilwpBavEaZfkTnVJGPvrA3MroOjxOa4xC4kCp7QYIyWnhe6+Yef5whVY1E9EmM2u /6Io8iaMxG2UlZzQuSG5Zo9yK+z88s+3Q3E2JhIQcKC4NTJjHZPq0jThkAoQg4x/xQ3p AVZA== X-Gm-Message-State: AOAM533VcHTp674SQF9NGzChNVI4plJPF7AlylFvIcIBy5W38pCFmzQJ 04Z715XTR3jc6rhemvIwj9xWEVCTD8lZGRpM X-Google-Smtp-Source: ABdhPJwb1srE61RQrgeCbJO2ZU0Hri/NPq8TLZEHtmQEdkQpUeTbudhLIlI6H1MTzcH4vFJipHM18Q== X-Received: by 2002:adf:df91:: with SMTP id z17mr5138518wrl.379.1602230412191; Fri, 09 Oct 2020 01:00:12 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id u17sm11634118wri.45.2020.10.09.01.00.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Oct 2020 01:00:11 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v2 14/17] resource: Move devmem revoke code to resource framework Date: Fri, 9 Oct 2020 09:59:31 +0200 Message-Id: <20201009075934.3509076-15-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> References: <20201009075934.3509076-1-daniel.vetter@ffwll.ch> 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: linux-s390@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Jan Kara , Kees Cook , kvm@vger.kernel.org, Jason Gunthorpe , Daniel Vetter , David Hildenbrand , Greg Kroah-Hartman , "Rafael J. Wysocki" , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Arnd Bergmann , John Hubbard , Daniel Vetter , Dan Williams , Andrew Morton , linux-arm-kernel@lists.infradead.org, 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" V2Ugd2FudCBhbGwgaW9tZW0gbW1hcHMgdG8gY29uc2lzdGVudGx5IHJldm9rZSBwdGVzIHdoZW4g dGhlIGtlcm5lbAp0YWtlcyBvdmVyIGFuZCBDT05GSUdfSU9fU1RSSUNUX0RFVk1FTSBpcyBlbmFi bGVkLiBUaGlzIGluY2x1ZGVzIHRoZQpwY2kgYmFyIG1tYXBzIGF2YWlsYWJsZSB0aHJvdWdoIHBy b2NmcyBhbmQgc3lzZnMsIHdoaWNoIGN1cnJlbnRseSBkbwpub3QgcmV2b2tlIG1hcHBpbmdzLgoK VG8gcHJlcGFyZSBmb3IgdGhpcywgbW92ZSB0aGUgY29kZSBmcm9tIHRoZSAvZGV2L2ttZW0gZHJp dmVyIHRvCmtlcm5lbC9yZXNvdXJjZS5jLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRlciA8 ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+CkNjOiBKYXNvbiBHdW50aG9ycGUgPGpnZ0B6aWVwZS5j YT4KQ2M6IEtlZXMgQ29vayA8a2Vlc2Nvb2tAY2hyb21pdW0ub3JnPgpDYzogRGFuIFdpbGxpYW1z IDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNjOiBBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4 LWZvdW5kYXRpb24ub3JnPgpDYzogSm9obiBIdWJiYXJkIDxqaHViYmFyZEBudmlkaWEuY29tPgpD YzogSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CkNjOiBKYW4gS2FyYSA8amFj a0BzdXNlLmN6PgpDYzogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+CkNj OiBsaW51eC1tbUBrdmFjay5vcmcKQ2M6IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk Lm9yZwpDYzogbGludXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJuZWwub3JnCkNjOiBsaW51eC1tZWRp YUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IEFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+CkNjOiBH cmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgpDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KQ2M6IERhdmlkIEhpbGRlbmJyYW5kIDxk YXZpZEByZWRoYXQuY29tPgpDYzogIlJhZmFlbCBKLiBXeXNvY2tpIiA8cmFmYWVsLmoud3lzb2Nr aUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9jaGFyL21lbS5jICAgICB8IDg1ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvaW9wb3J0LmggfCAgNiAr LS0KIGtlcm5lbC9yZXNvdXJjZS5jICAgICAgfCA5NSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIDMgZmlsZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgOTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL21lbS5jIGIvZHJpdmVycy9j aGFyL21lbS5jCmluZGV4IDU1MDJmNTZmMzY1NS4uNTMzMzhhYWQ4ZDI4IDEwMDY0NAotLS0gYS9k cml2ZXJzL2NoYXIvbWVtLmMKKysrIGIvZHJpdmVycy9jaGFyL21lbS5jCkBAIC0zMSw5ICszMSw2 IEBACiAjaW5jbHVkZSA8bGludXgvdWlvLmg+CiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgog I2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+Ci0jaW5jbHVkZSA8bGludXgvcHNldWRvX2ZzLmg+ Ci0jaW5jbHVkZSA8dWFwaS9saW51eC9tYWdpYy5oPgotI2luY2x1ZGUgPGxpbnV4L21vdW50Lmg+ CiAKICNpZmRlZiBDT05GSUdfSUE2NAogIyBpbmNsdWRlIDxsaW51eC9lZmkuaD4KQEAgLTgwOSw0 MiArODA2LDYgQEAgc3RhdGljIGxvZmZfdCBtZW1vcnlfbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUs IGxvZmZfdCBvZmZzZXQsIGludCBvcmlnKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBzdHJ1 Y3QgaW5vZGUgKmRldm1lbV9pbm9kZTsKLQotI2lmZGVmIENPTkZJR19JT19TVFJJQ1RfREVWTUVN Ci12b2lkIHJldm9rZV9kZXZtZW0oc3RydWN0IHJlc291cmNlICpyZXMpCi17Ci0JLyogcGFpcnMg d2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGRldm1lbV9pbml0X2lub2RlKCkgKi8KLQlzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmZGV2bWVtX2lub2RlKTsKLQotCS8q Ci0JICogQ2hlY2sgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaGFzIGNvbXBsZXRlZC4gTG9zaW5n IHRoZSByYWNlCi0JICogaXMgb2sgYmVjYXVzZSBpdCBtZWFucyBkcml2ZXJzIGFyZSBjbGFpbWlu ZyByZXNvdXJjZXMgYmVmb3JlCi0JICogdGhlIGZzX2luaXRjYWxsIGxldmVsIG9mIGluaXQgYW5k IHByZXZlbnQgL2Rldi9tZW0gZnJvbQotCSAqIGVzdGFibGlzaGluZyBtYXBwaW5ncy4KLQkgKi8K LQlpZiAoIWlub2RlKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIFRoZSBleHBlY3RhdGlvbiBpcyB0 aGF0IHRoZSBkcml2ZXIgaGFzIHN1Y2Nlc3NmdWxseSBtYXJrZWQKLQkgKiB0aGUgcmVzb3VyY2Ug YnVzeSBieSB0aGlzIHBvaW50LCBzbyBkZXZtZW1faXNfYWxsb3dlZCgpCi0JICogc2hvdWxkIHN0 YXJ0IHJldHVybmluZyBmYWxzZSwgaG93ZXZlciBmb3IgcGVyZm9ybWFuY2UgdGhpcwotCSAqIGRv ZXMgbm90IGl0ZXJhdGUgdGhlIGVudGlyZSByZXNvdXJjZSByYW5nZS4KLQkgKi8KLQlpZiAoZGV2 bWVtX2lzX2FsbG93ZWQoUEhZU19QRk4ocmVzLT5zdGFydCkpICYmCi0JICAgIGRldm1lbV9pc19h bGxvd2VkKFBIWVNfUEZOKHJlcy0+ZW5kKSkpIHsKLQkJLyoKLQkJICogKmNyaW5nZSogaW9tZW09 cmVsYXhlZCBzYXlzICJnbyBhaGVhZCwgd2hhdCdzIHRoZQotCQkgKiB3b3JzdCB0aGF0IGNhbiBo YXBwZW4/IgotCQkgKi8KLQkJcmV0dXJuOwotCX0KLQotCXVubWFwX21hcHBpbmdfcmFuZ2UoaW5v ZGUtPmlfbWFwcGluZywgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShyZXMpLCAxKTsKLX0KLSNl bmRpZgotCiBzdGF0aWMgaW50IG9wZW5fcG9ydChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlscCkKIHsKIAlpbnQgcmM7CkBAIC04NjQsNyArODI1LDcgQEAgc3RhdGljIGludCBv cGVuX3BvcnQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiAJICogcmV2 b2NhdGlvbnMgd2hlbiBkcml2ZXJzIHdhbnQgdG8gdGFrZSBvdmVyIGEgL2Rldi9tZW0gbWFwcGVk CiAJICogcmFuZ2UuCiAJICovCi0JZmlscC0+Zl9tYXBwaW5nID0gaW5vZGUtPmlfbWFwcGluZzsK KwlmaWxwLT5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC05OTUsNDggKzk1Niw2IEBAIHN0YXRpYyBjaGFyICptZW1fZGV2bm9kZShzdHJ1Y3QgZGV2 aWNlICpkZXYsIHVtb2RlX3QgKm1vZGUpCiAKIHN0YXRpYyBzdHJ1Y3QgY2xhc3MgKm1lbV9jbGFz czsKIAotc3RhdGljIGludCBkZXZtZW1fZnNfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250 ZXh0ICpmYykKLXsKLQlyZXR1cm4gaW5pdF9wc2V1ZG8oZmMsIERFVk1FTV9NQUdJQykgPyAwIDog LUVOT01FTTsKLX0KLQotc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGRldm1lbV9mc190 eXBlID0gewotCS5uYW1lCQk9ICJkZXZtZW0iLAotCS5vd25lcgkJPSBUSElTX01PRFVMRSwKLQku aW5pdF9mc19jb250ZXh0ID0gZGV2bWVtX2ZzX2luaXRfZnNfY29udGV4dCwKLQkua2lsbF9zYgk9 IGtpbGxfYW5vbl9zdXBlciwKLX07Ci0KLXN0YXRpYyBpbnQgZGV2bWVtX2luaXRfaW5vZGUodm9p ZCkKLXsKLQlzdGF0aWMgc3RydWN0IHZmc21vdW50ICpkZXZtZW1fdmZzX21vdW50OwotCXN0YXRp YyBpbnQgZGV2bWVtX2ZzX2NudDsKLQlzdHJ1Y3QgaW5vZGUgKmlub2RlOwotCWludCByYzsKLQot CXJjID0gc2ltcGxlX3Bpbl9mcygmZGV2bWVtX2ZzX3R5cGUsICZkZXZtZW1fdmZzX21vdW50LCAm ZGV2bWVtX2ZzX2NudCk7Ci0JaWYgKHJjIDwgMCkgewotCQlwcl9lcnIoIkNhbm5vdCBtb3VudCAv ZGV2L21lbSBwc2V1ZG8gZmlsZXN5c3RlbTogJWRcbiIsIHJjKTsKLQkJcmV0dXJuIHJjOwotCX0K LQotCWlub2RlID0gYWxsb2NfYW5vbl9pbm9kZShkZXZtZW1fdmZzX21vdW50LT5tbnRfc2IpOwot CWlmIChJU19FUlIoaW5vZGUpKSB7Ci0JCXJjID0gUFRSX0VSUihpbm9kZSk7Ci0JCXByX2Vycigi Q2Fubm90IGFsbG9jYXRlIGlub2RlIGZvciAvZGV2L21lbTogJWRcbiIsIHJjKTsKLQkJc2ltcGxl X3JlbGVhc2VfZnMoJmRldm1lbV92ZnNfbW91bnQsICZkZXZtZW1fZnNfY250KTsKLQkJcmV0dXJu IHJjOwotCX0KLQotCS8qCi0JICogUHVibGlzaCAvZGV2L21lbSBpbml0aWFsaXplZC4KLQkgKiBQ YWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiByZXZva2VfZGV2bWVtKCkuCi0JICovCi0J c21wX3N0b3JlX3JlbGVhc2UoJmRldm1lbV9pbm9kZSwgaW5vZGUpOwotCi0JcmV0dXJuIDA7Ci19 Ci0KIHN0YXRpYyBpbnQgX19pbml0IGNocl9kZXZfaW5pdCh2b2lkKQogewogCWludCBtaW5vcjsK QEAgLTEwNTgsOCArOTc3LDYgQEAgc3RhdGljIGludCBfX2luaXQgY2hyX2Rldl9pbml0KHZvaWQp CiAJCSAqLwogCQlpZiAoKG1pbm9yID09IERFVlBPUlRfTUlOT1IpICYmICFhcmNoX2hhc19kZXZf cG9ydCgpKQogCQkJY29udGludWU7Ci0JCWlmICgobWlub3IgPT0gREVWTUVNX01JTk9SKSAmJiBk ZXZtZW1faW5pdF9pbm9kZSgpICE9IDApCi0JCQljb250aW51ZTsKIAogCQlkZXZpY2VfY3JlYXRl KG1lbV9jbGFzcywgTlVMTCwgTUtERVYoTUVNX01BSk9SLCBtaW5vciksCiAJCQkgICAgICBOVUxM LCBkZXZsaXN0W21pbm9yXS5uYW1lKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW9wb3J0 LmggYi9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCmluZGV4IDZjMmIwNmZlOGJlYi4uOGZmYjYxYjM2 NjA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCisrKyBiL2luY2x1ZGUvbGlu dXgvaW9wb3J0LmgKQEAgLTMwMiwxMSArMzAyLDcgQEAgc3RydWN0IHJlc291cmNlICpkZXZtX3Jl cXVlc3RfZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCBkZXZpY2UgKmRldiwKIHN0cnVjdCByZXNvdXJj ZSAqcmVxdWVzdF9mcmVlX21lbV9yZWdpb24oc3RydWN0IHJlc291cmNlICpiYXNlLAogCQl1bnNp Z25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi0jaWZkZWYgQ09ORklHX0lPX1NU UklDVF9ERVZNRU0KLXZvaWQgcmV2b2tlX2Rldm1lbShzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7Ci0j ZWxzZQotc3RhdGljIGlubGluZSB2b2lkIHJldm9rZV9kZXZtZW0oc3RydWN0IHJlc291cmNlICpy ZXMpIHsgfTsKLSNlbmRpZgorZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3NwYWNlICppb21lbV9nZXRf bWFwcGluZyh2b2lkKTsKIAogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwogI2VuZGlmCS8qIF9M SU5VWF9JT1BPUlRfSCAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3Jlc291cmNlLmMgYi9rZXJuZWwv cmVzb3VyY2UuYwppbmRleCA4NDE3MzdiYmRhOWUuLjIyMTUzZmRlYzRmNSAxMDA2NDQKLS0tIGEv a2VybmVsL3Jlc291cmNlLmMKKysrIGIva2VybmVsL3Jlc291cmNlLmMKQEAgLTE4LDEyICsxOCwx NSBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVkZSA8bGludXgvZnMuaD4K ICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CisjaW5jbHVkZSA8bGludXgvcHNldWRvX2ZzLmg+ CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51eC9zZXFfZmlsZS5oPgog I2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L3Bmbi5oPgogI2luY2x1 ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW91bnQuaD4KICNpbmNsdWRlIDxsaW51 eC9yZXNvdXJjZV9leHQuaD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L21hZ2ljLmg+CiAjaW5jbHVk ZSA8YXNtL2lvLmg+CiAKIApAQCAtMTExMiw2ICsxMTE1LDUyIEBAIHJlc291cmNlX3NpemVfdCBy ZXNvdXJjZV9hbGlnbm1lbnQoc3RydWN0IHJlc291cmNlICpyZXMpCiAKIHN0YXRpYyBERUNMQVJF X1dBSVRfUVVFVUVfSEVBRChtdXhlZF9yZXNvdXJjZV93YWl0KTsKIAorc3RhdGljIHN0cnVjdCBp bm9kZSAqaW9tZW1faW5vZGU7CisKKyNpZmRlZiBDT05GSUdfSU9fU1RSSUNUX0RFVk1FTQorc3Rh dGljIHZvaWQgcmV2b2tlX2lvbWVtKHN0cnVjdCByZXNvdXJjZSAqcmVzKQoreworCS8qIHBhaXJz IHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBpb21lbV9pbml0X2lub2RlKCkgKi8KKwlzdHJ1 Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmaW9tZW1faW5vZGUpOworCisJLyoK KwkgKiBDaGVjayB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBoYXMgY29tcGxldGVkLiBMb3Npbmcg dGhlIHJhY2UKKwkgKiBpcyBvayBiZWNhdXNlIGl0IG1lYW5zIGRyaXZlcnMgYXJlIGNsYWltaW5n IHJlc291cmNlcyBiZWZvcmUKKwkgKiB0aGUgZnNfaW5pdGNhbGwgbGV2ZWwgb2YgaW5pdCBhbmQg cHJldmVudCAvZGV2L21lbSBmcm9tCisJICogZXN0YWJsaXNoaW5nIG1hcHBpbmdzLgorCSAqLwor CWlmICghaW5vZGUpCisJCXJldHVybjsKKworCS8qCisJICogVGhlIGV4cGVjdGF0aW9uIGlzIHRo YXQgdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1bGx5IG1hcmtlZAorCSAqIHRoZSByZXNvdXJjZSBi dXN5IGJ5IHRoaXMgcG9pbnQsIHNvIGRldm1lbV9pc19hbGxvd2VkKCkKKwkgKiBzaG91bGQgc3Rh cnQgcmV0dXJuaW5nIGZhbHNlLCBob3dldmVyIGZvciBwZXJmb3JtYW5jZSB0aGlzCisJICogZG9l cyBub3QgaXRlcmF0ZSB0aGUgZW50aXJlIHJlc291cmNlIHJhbmdlLgorCSAqLworCWlmIChkZXZt ZW1faXNfYWxsb3dlZChQSFlTX1BGTihyZXMtPnN0YXJ0KSkgJiYKKwkgICAgZGV2bWVtX2lzX2Fs bG93ZWQoUEhZU19QRk4ocmVzLT5lbmQpKSkgeworCQkvKgorCQkgKiAqY3JpbmdlKiBpb21lbT1y ZWxheGVkIHNheXMgImdvIGFoZWFkLCB3aGF0J3MgdGhlCisJCSAqIHdvcnN0IHRoYXQgY2FuIGhh cHBlbj8iCisJCSAqLworCQlyZXR1cm47CisJfQorCisJdW5tYXBfbWFwcGluZ19yYW5nZShpbm9k ZS0+aV9tYXBwaW5nLCByZXMtPnN0YXJ0LCByZXNvdXJjZV9zaXplKHJlcyksIDEpOworfQorc3Ry dWN0IGFkZHJlc3Nfc3BhY2UgKmlvbWVtX2dldF9tYXBwaW5nKHZvaWQpCit7CisJcmV0dXJuIGlv bWVtX2lub2RlLT5pX21hcHBpbmc7Cit9CisjZWxzZQorc3RhdGljIHZvaWQgcmV2b2tlX2lvbWVt KHN0cnVjdCByZXNvdXJjZSAqcmVzKSB7fQorc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmlvbWVtX2dl dF9tYXBwaW5nKHZvaWQpCit7CisJcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKwogLyoqCiAgKiBf X3JlcXVlc3RfcmVnaW9uIC0gY3JlYXRlIGEgbmV3IGJ1c3kgcmVzb3VyY2UgcmVnaW9uCiAgKiBA cGFyZW50OiBwYXJlbnQgcmVzb3VyY2UgZGVzY3JpcHRvcgpAQCAtMTE3OSw3ICsxMjI4LDcgQEAg c3RydWN0IHJlc291cmNlICogX19yZXF1ZXN0X3JlZ2lvbihzdHJ1Y3QgcmVzb3VyY2UgKnBhcmVu dCwKIAl3cml0ZV91bmxvY2soJnJlc291cmNlX2xvY2spOwogCiAJaWYgKHJlcyAmJiBvcmlnX3Bh cmVudCA9PSAmaW9tZW1fcmVzb3VyY2UpCi0JCXJldm9rZV9kZXZtZW0ocmVzKTsKKwkJcmV2b2tl X2lvbWVtKHJlcyk7CiAKIAlyZXR1cm4gcmVzOwogfQpAQCAtMTcxMyw0ICsxNzYyLDQ4IEBAIHN0 YXRpYyBpbnQgX19pbml0IHN0cmljdF9pb21lbShjaGFyICpzdHIpCiAJcmV0dXJuIDE7CiB9CiAK K3N0YXRpYyBpbnQgaW9tZW1fZnNfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpm YykKK3sKKwlyZXR1cm4gaW5pdF9wc2V1ZG8oZmMsIERFVk1FTV9NQUdJQykgPyAwIDogLUVOT01F TTsKK30KKworc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGlvbWVtX2ZzX3R5cGUgPSB7 CisJLm5hbWUJCT0gImlvbWVtIiwKKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCisJLmluaXRfZnNf Y29udGV4dCA9IGlvbWVtX2ZzX2luaXRfZnNfY29udGV4dCwKKwkua2lsbF9zYgk9IGtpbGxfYW5v bl9zdXBlciwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IGlvbWVtX2luaXRfaW5vZGUodm9pZCkK K3sKKwlzdGF0aWMgc3RydWN0IHZmc21vdW50ICppb21lbV92ZnNfbW91bnQ7CisJc3RhdGljIGlu dCBpb21lbV9mc19jbnQ7CisJc3RydWN0IGlub2RlICppbm9kZTsKKwlpbnQgcmM7CisKKwlyYyA9 IHNpbXBsZV9waW5fZnMoJmlvbWVtX2ZzX3R5cGUsICZpb21lbV92ZnNfbW91bnQsICZpb21lbV9m c19jbnQpOworCWlmIChyYyA8IDApIHsKKwkJcHJfZXJyKCJDYW5ub3QgbW91bnQgaW9tZW0gcHNl dWRvIGZpbGVzeXN0ZW06ICVkXG4iLCByYyk7CisJCXJldHVybiByYzsKKwl9CisKKwlpbm9kZSA9 IGFsbG9jX2Fub25faW5vZGUoaW9tZW1fdmZzX21vdW50LT5tbnRfc2IpOworCWlmIChJU19FUlIo aW5vZGUpKSB7CisJCXJjID0gUFRSX0VSUihpbm9kZSk7CisJCXByX2VycigiQ2Fubm90IGFsbG9j YXRlIGlub2RlIGZvciBpb21lbTogJWRcbiIsIHJjKTsKKwkJc2ltcGxlX3JlbGVhc2VfZnMoJmlv bWVtX3Zmc19tb3VudCwgJmlvbWVtX2ZzX2NudCk7CisJCXJldHVybiByYzsKKwl9CisKKwkvKgor CSAqIFB1Ymxpc2ggL2Rldi9tZW0gaW5pdGlhbGl6ZWQuCisJICogUGFpcnMgd2l0aCBzbXBfbG9h ZF9hY3F1aXJlKCkgaW4gcmV2b2tlX2lvbWVtKCkuCisJICovCisJc21wX3N0b3JlX3JlbGVhc2Uo JmlvbWVtX2lub2RlLCBpbm9kZSk7CisKKwlyZXR1cm4gMDsKK30KKworZnNfaW5pdGNhbGwoaW9t ZW1faW5pdF9pbm9kZSk7CisKIF9fc2V0dXAoImlvbWVtPSIsIHN0cmljdF9pb21lbSk7Ci0tIAoy LjI4LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=