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 3BFB0C5DF9E for ; Mon, 26 Oct 2020 10:59:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E1C6122450 for ; Mon, 26 Oct 2020 10:59:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="jSxXw1bd" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1772888AbgJZK67 (ORCPT ); Mon, 26 Oct 2020 06:58:59 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:34131 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1772843AbgJZK6t (ORCPT ); Mon, 26 Oct 2020 06:58:49 -0400 Received: by mail-wm1-f66.google.com with SMTP id k21so5435366wmi.1 for ; Mon, 26 Oct 2020 03:58:45 -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=Eh+QFd2rUGVvEdUIq62q2ZCwC5wIklTNSjxdtgUk2/Y=; b=jSxXw1bdLmRXLhowjIdJTAeFXSixknzvMUIhBtEkBTKblKK8gZhTBOmABTDpvK2mRK CHL6hpUwxkbtVwWsXHHKBuwfNXMjDvNqE7BjTsIdEhpavhGAohvQkJxPMZhKyjjQLw4S LLb4iUCkIVz3tAmLqVziqEiqntHi77N/25Lzw= 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=Eh+QFd2rUGVvEdUIq62q2ZCwC5wIklTNSjxdtgUk2/Y=; b=I5+oAkt+lMm//7Iaksfktn0ub9iiJzqKmydF1pqNBzc8TDXBiRPRHwZY5m7wHCjla2 hyaWdpL5y1Cm3xo+fVOI+JgRloPQg5fK1XRXTRKvS+wNjKejt2XmIz7EVw3+ercFnJ6A ZqH4MXt0TNK7+h+SOSvROKb2fbo/Vgq9YOmCEL28Yo+64/HlHicK4ko8MHDShnNaOiSH HjWJKZnRX1qWfafCQ/zb3A8xeZ1UXbjOssDghDwffcCdL3v2Aok+g1u0B0gBzcjGUV5b 01NHQJR+DxfAEgTqWmPW3Wde1R4AIglEK9IgYXknyeGY8OLv971jATBCmd00mwlo8L1/ 3k9w== X-Gm-Message-State: AOAM533691GdiXqyRcCEfal/c/FtZq7OYrQ5rkAks05OJZB1WxeukvLE iTY2B0IZyHWbW+9rFCVmthtjxA== X-Google-Smtp-Source: ABdhPJwZtspo4YWDyrf5aVA+XBuFLqv6jVzUzeHUWGaCCCiq+U0MVt5sAZLIvYoPnIbBSWUE2POZhg== X-Received: by 2002:a1c:7707:: with SMTP id t7mr16302030wmi.54.1603709924198; Mon, 26 Oct 2020 03:58:44 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id w83sm21165156wmg.48.2020.10.26.03.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:43 -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 , Greg Kroah-Hartman , 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 , David Hildenbrand , "Rafael J. Wysocki" Subject: [PATCH v4 13/15] resource: Move devmem revoke code to resource framework Date: Mon, 26 Oct 2020 11:58:16 +0100 Message-Id: <20201026105818.2585306-14-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> References: <20201026105818.2585306-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. Reviewed-by: Greg Kroah-Hartman 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" Signed-off-by: Daniel Vetter -- v3: - add barrier for consistency and document why we don't have to check for NULL (Jason) v4 - Adjust comments to reflect the general nature of this iomem revoke code now (Dan) --- drivers/char/mem.c | 85 +--------------------------------- include/linux/ioport.h | 6 +-- kernel/resource.c | 101 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 102 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..a800acbc578c 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,58 @@ 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 iomem_get_mapping users + * 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) +{ + /* + * This function is only called from file open paths, hence guaranteed + * that fs_initcalls have completed and no need to check for NULL. But + * since revoke_iomem can be called before the initcall we still need + * the barrier to appease checkers. + */ + return smp_load_acquire(&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 +1234,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 +1768,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 iomem revocation inode 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 D8D10C4363A for ; Mon, 26 Oct 2020 11:17:32 +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 73CED21BE5 for ; Mon, 26 Oct 2020 11:17:32 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="GMGLwoKu"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="fyFzONGv"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="jSxXw1bd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 73CED21BE5 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=ohXieux9PguNa2gr7dZyIRWly55tHrI2vN48vnO5cN8=; b=GMGLwoKuDwJfCHcvtySyYdTm5 f282rM80O+1FKYFsaJqVoJ/Atz5RduqG/QNmb7fWfXkcEtFFJFyDbogcg/kvBBUWnGOCYPt1c485C UgNByMvWJ7r+JxP1zWuChoJTU43LSBFrIOLVEr07kHpR6yJIjCoVTN45n/rfar6I757S9KOHefj9q VNw8SoyOw8RYHCv5rixwPcagMxXSSMal8k3mxINypqqhNQpDGYzjIL/5GmHThlfwihdCzPPuHCH13 HPkaDUPhQ2R5tjWBDL2v6c7zt/I87zISTYctqjOS/4knB8RjbeW0Vu2uRbT09EhRZ1aMUYaWX9VR+ 27Mno3ZAQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX0Sx-0000aG-Pe; Mon, 26 Oct 2020 11:15:07 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX0Sl-0000B8-85 for linux-arm-kernel@merlin.infradead.org; Mon, 26 Oct 2020 11:14:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-ID:Content-Description; bh=Eh+QFd2rUGVvEdUIq62q2ZCwC5wIklTNSjxdtgUk2/Y=; b=fyFzONGvWpC969VwTqDicjWW1v bOgqv69hBkanmLWlvEelroqihs/6/HwOwx0RF+2PcgjEQ/YCPHQyjmpElnNbOf3C9BZXSrGhf9LKI N+vBqjhVEz/hVegG5f9LLSD2JSN1fKQGtI/zYcGoDZKJLpdT5g0BTCx98AgHNAvl7xpEKiADfhWeS +A6mwf/9quqVGmphSJp3D6b3Zw7Y5/vJvcokGe1dKk/t+b3Ha7V9zpWbmYcexOCtK29g5zagaiSS9 1NEFkJgowOgbOmb2at0V3YssdLeTY8lD2+tGaE0y9Sj16xCryRSnd0ZXc/u/nf7aIgaoyR94vzmN6 YlkrEr5g==; Received: from mail-wm1-x344.google.com ([2a00:1450:4864:20::344]) by casper.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX0D8-0005d2-3i for linux-arm-kernel@lists.infradead.org; Mon, 26 Oct 2020 10:58:54 +0000 Received: by mail-wm1-x344.google.com with SMTP id w23so10050783wmi.4 for ; Mon, 26 Oct 2020 03:58:45 -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=Eh+QFd2rUGVvEdUIq62q2ZCwC5wIklTNSjxdtgUk2/Y=; b=jSxXw1bdLmRXLhowjIdJTAeFXSixknzvMUIhBtEkBTKblKK8gZhTBOmABTDpvK2mRK CHL6hpUwxkbtVwWsXHHKBuwfNXMjDvNqE7BjTsIdEhpavhGAohvQkJxPMZhKyjjQLw4S LLb4iUCkIVz3tAmLqVziqEiqntHi77N/25Lzw= 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=Eh+QFd2rUGVvEdUIq62q2ZCwC5wIklTNSjxdtgUk2/Y=; b=OvG+gJi0boz7mtxlnRSWGerim0onVyJWz9jwf0iATy27iLU/3nW8fJ1rJfuLhCkD2H NUGTbP0RfS+bl+sqM+2nQnvHUerfwILdKvvHCZWxEfE+LEai4BxiUPEAo8utt9FsZMop 0KU37leEGMSqtPWMIQkOOazlMPZb95kApQPLysoIgBK7O090XfqwRIVrbEOAjKlh8+ZR M5nZxgBybnoewUe+N80myZ72xIt7b20gH4E7nJXATHzdmL6raICOTR/Q7iHgvbyWfsBP u+gjoUX7S4cHpHoaTj0vfrXLIHl2CpmjeGCAnXEoqTdumpuYDgMyK2M1Yq3dCmv4mYkX 4lXQ== X-Gm-Message-State: AOAM530LVFwkJD+2R3r/nsvD72+Au+x3FGfboBQNXlMasZ0AZ2t8TqUE NIRrNIop8+0ZeN6dqXR0l4yQmg== X-Google-Smtp-Source: ABdhPJwZtspo4YWDyrf5aVA+XBuFLqv6jVzUzeHUWGaCCCiq+U0MVt5sAZLIvYoPnIbBSWUE2POZhg== X-Received: by 2002:a1c:7707:: with SMTP id t7mr16302030wmi.54.1603709924198; Mon, 26 Oct 2020 03:58:44 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id w83sm21165156wmg.48.2020.10.26.03.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:43 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v4 13/15] resource: Move devmem revoke code to resource framework Date: Mon, 26 Oct 2020 11:58:16 +0100 Message-Id: <20201026105818.2585306-14-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> References: <20201026105818.2585306-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-20201026_105846_546904_8DDE332B X-CRM114-Status: GOOD ( 31.43 ) 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 , "Rafael J. Wysocki" , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Arnd Bergmann , John Hubbard , Greg Kroah-Hartman , 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 dmVyIHRvCmtlcm5lbC9yZXNvdXJjZS5jLgoKUmV2aWV3ZWQtYnk6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgpDYzogSmFzb24gR3VudGhvcnBlIDxqZ2dAemll cGUuY2E+CkNjOiBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4KQ2M6IERhbiBXaWxs aWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBs aW51eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IEpvaG4gSHViYmFyZCA8amh1YmJhcmRAbnZpZGlhLmNv bT4KQ2M6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpDYzogSmFuIEthcmEg PGphY2tAc3VzZS5jej4KQ2M6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29t PgpDYzogbGludXgtbW1Aa3ZhY2sub3JnCkNjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKQ2M6IGxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgt bWVkaWFAdmdlci5rZXJuZWwub3JnCkNjOiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgpD YzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBEYXZpZCBIaWxkZW5icmFu ZCA8ZGF2aWRAcmVkaGF0LmNvbT4KQ2M6ICJSYWZhZWwgSi4gV3lzb2NraSIgPHJhZmFlbC5qLnd5 c29ja2lAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPgotLQp2MzoKLSBhZGQgYmFycmllciBmb3IgY29uc2lzdGVuY3kgYW5kIGRv Y3VtZW50IHdoeSB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrCiAgZm9yIE5VTEwgKEphc29uKQp2NAot IEFkanVzdCBjb21tZW50cyB0byByZWZsZWN0IHRoZSBnZW5lcmFsIG5hdHVyZSBvZiB0aGlzIGlv bWVtIHJldm9rZQogIGNvZGUgbm93IChEYW4pCi0tLQogZHJpdmVycy9jaGFyL21lbS5jICAgICB8 ICA4NSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2lv cG9ydC5oIHwgICA2ICstLQoga2VybmVsL3Jlc291cmNlLmMgICAgICB8IDEwMSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5z ZXJ0aW9ucygrKSwgOTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL21l bS5jIGIvZHJpdmVycy9jaGFyL21lbS5jCmluZGV4IDU1MDJmNTZmMzY1NS4uNTMzMzhhYWQ4ZDI4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvbWVtLmMKKysrIGIvZHJpdmVycy9jaGFyL21lbS5j CkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSA8bGludXgvdWlvLmg+CiAjaW5jbHVkZSA8bGlu dXgvdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+Ci0jaW5jbHVkZSA8bGlu dXgvcHNldWRvX2ZzLmg+Ci0jaW5jbHVkZSA8dWFwaS9saW51eC9tYWdpYy5oPgotI2luY2x1ZGUg PGxpbnV4L21vdW50Lmg+CiAKICNpZmRlZiBDT05GSUdfSUE2NAogIyBpbmNsdWRlIDxsaW51eC9l ZmkuaD4KQEAgLTgwOSw0MiArODA2LDYgQEAgc3RhdGljIGxvZmZfdCBtZW1vcnlfbHNlZWsoc3Ry dWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCBvcmlnKQogCXJldHVybiByZXQ7CiB9 CiAKLXN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmRldm1lbV9pbm9kZTsKLQotI2lmZGVmIENPTkZJR19J T19TVFJJQ1RfREVWTUVNCi12b2lkIHJldm9rZV9kZXZtZW0oc3RydWN0IHJlc291cmNlICpyZXMp Ci17Ci0JLyogcGFpcnMgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGRldm1lbV9pbml0X2lu b2RlKCkgKi8KLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmZGV2bWVt X2lub2RlKTsKLQotCS8qCi0JICogQ2hlY2sgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaGFzIGNv bXBsZXRlZC4gTG9zaW5nIHRoZSByYWNlCi0JICogaXMgb2sgYmVjYXVzZSBpdCBtZWFucyBkcml2 ZXJzIGFyZSBjbGFpbWluZyByZXNvdXJjZXMgYmVmb3JlCi0JICogdGhlIGZzX2luaXRjYWxsIGxl dmVsIG9mIGluaXQgYW5kIHByZXZlbnQgL2Rldi9tZW0gZnJvbQotCSAqIGVzdGFibGlzaGluZyBt YXBwaW5ncy4KLQkgKi8KLQlpZiAoIWlub2RlKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIFRoZSBl eHBlY3RhdGlvbiBpcyB0aGF0IHRoZSBkcml2ZXIgaGFzIHN1Y2Nlc3NmdWxseSBtYXJrZWQKLQkg KiB0aGUgcmVzb3VyY2UgYnVzeSBieSB0aGlzIHBvaW50LCBzbyBkZXZtZW1faXNfYWxsb3dlZCgp Ci0JICogc2hvdWxkIHN0YXJ0IHJldHVybmluZyBmYWxzZSwgaG93ZXZlciBmb3IgcGVyZm9ybWFu Y2UgdGhpcwotCSAqIGRvZXMgbm90IGl0ZXJhdGUgdGhlIGVudGlyZSByZXNvdXJjZSByYW5nZS4K LQkgKi8KLQlpZiAoZGV2bWVtX2lzX2FsbG93ZWQoUEhZU19QRk4ocmVzLT5zdGFydCkpICYmCi0J ICAgIGRldm1lbV9pc19hbGxvd2VkKFBIWVNfUEZOKHJlcy0+ZW5kKSkpIHsKLQkJLyoKLQkJICog KmNyaW5nZSogaW9tZW09cmVsYXhlZCBzYXlzICJnbyBhaGVhZCwgd2hhdCdzIHRoZQotCQkgKiB3 b3JzdCB0aGF0IGNhbiBoYXBwZW4/IgotCQkgKi8KLQkJcmV0dXJuOwotCX0KLQotCXVubWFwX21h cHBpbmdfcmFuZ2UoaW5vZGUtPmlfbWFwcGluZywgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShy ZXMpLCAxKTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgaW50IG9wZW5fcG9ydChzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKIAlpbnQgcmM7CkBAIC04NjQsNyArODI1LDcg QEAgc3RhdGljIGludCBvcGVuX3BvcnQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbHApCiAJICogcmV2b2NhdGlvbnMgd2hlbiBkcml2ZXJzIHdhbnQgdG8gdGFrZSBvdmVyIGEg L2Rldi9tZW0gbWFwcGVkCiAJICogcmFuZ2UuCiAJICovCi0JZmlscC0+Zl9tYXBwaW5nID0gaW5v ZGUtPmlfbWFwcGluZzsKKwlmaWxwLT5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpOwog CiAJcmV0dXJuIDA7CiB9CkBAIC05OTUsNDggKzk1Niw2IEBAIHN0YXRpYyBjaGFyICptZW1fZGV2 bm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVtb2RlX3QgKm1vZGUpCiAKIHN0YXRpYyBzdHJ1Y3Qg Y2xhc3MgKm1lbV9jbGFzczsKIAotc3RhdGljIGludCBkZXZtZW1fZnNfaW5pdF9mc19jb250ZXh0 KHN0cnVjdCBmc19jb250ZXh0ICpmYykKLXsKLQlyZXR1cm4gaW5pdF9wc2V1ZG8oZmMsIERFVk1F TV9NQUdJQykgPyAwIDogLUVOT01FTTsKLX0KLQotc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90 eXBlIGRldm1lbV9mc190eXBlID0gewotCS5uYW1lCQk9ICJkZXZtZW0iLAotCS5vd25lcgkJPSBU SElTX01PRFVMRSwKLQkuaW5pdF9mc19jb250ZXh0ID0gZGV2bWVtX2ZzX2luaXRfZnNfY29udGV4 dCwKLQkua2lsbF9zYgk9IGtpbGxfYW5vbl9zdXBlciwKLX07Ci0KLXN0YXRpYyBpbnQgZGV2bWVt X2luaXRfaW5vZGUodm9pZCkKLXsKLQlzdGF0aWMgc3RydWN0IHZmc21vdW50ICpkZXZtZW1fdmZz X21vdW50OwotCXN0YXRpYyBpbnQgZGV2bWVtX2ZzX2NudDsKLQlzdHJ1Y3QgaW5vZGUgKmlub2Rl OwotCWludCByYzsKLQotCXJjID0gc2ltcGxlX3Bpbl9mcygmZGV2bWVtX2ZzX3R5cGUsICZkZXZt ZW1fdmZzX21vdW50LCAmZGV2bWVtX2ZzX2NudCk7Ci0JaWYgKHJjIDwgMCkgewotCQlwcl9lcnIo IkNhbm5vdCBtb3VudCAvZGV2L21lbSBwc2V1ZG8gZmlsZXN5c3RlbTogJWRcbiIsIHJjKTsKLQkJ cmV0dXJuIHJjOwotCX0KLQotCWlub2RlID0gYWxsb2NfYW5vbl9pbm9kZShkZXZtZW1fdmZzX21v dW50LT5tbnRfc2IpOwotCWlmIChJU19FUlIoaW5vZGUpKSB7Ci0JCXJjID0gUFRSX0VSUihpbm9k ZSk7Ci0JCXByX2VycigiQ2Fubm90IGFsbG9jYXRlIGlub2RlIGZvciAvZGV2L21lbTogJWRcbiIs IHJjKTsKLQkJc2ltcGxlX3JlbGVhc2VfZnMoJmRldm1lbV92ZnNfbW91bnQsICZkZXZtZW1fZnNf Y250KTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCS8qCi0JICogUHVibGlzaCAvZGV2L21lbSBpbml0 aWFsaXplZC4KLQkgKiBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiByZXZva2VfZGV2 bWVtKCkuCi0JICovCi0Jc21wX3N0b3JlX3JlbGVhc2UoJmRldm1lbV9pbm9kZSwgaW5vZGUpOwot Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgX19pbml0IGNocl9kZXZfaW5pdCh2b2lkKQog ewogCWludCBtaW5vcjsKQEAgLTEwNTgsOCArOTc3LDYgQEAgc3RhdGljIGludCBfX2luaXQgY2hy X2Rldl9pbml0KHZvaWQpCiAJCSAqLwogCQlpZiAoKG1pbm9yID09IERFVlBPUlRfTUlOT1IpICYm ICFhcmNoX2hhc19kZXZfcG9ydCgpKQogCQkJY29udGludWU7Ci0JCWlmICgobWlub3IgPT0gREVW TUVNX01JTk9SKSAmJiBkZXZtZW1faW5pdF9pbm9kZSgpICE9IDApCi0JCQljb250aW51ZTsKIAog CQlkZXZpY2VfY3JlYXRlKG1lbV9jbGFzcywgTlVMTCwgTUtERVYoTUVNX01BSk9SLCBtaW5vciks CiAJCQkgICAgICBOVUxMLCBkZXZsaXN0W21pbm9yXS5uYW1lKTsKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgvaW9wb3J0LmggYi9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCmluZGV4IDZjMmIwNmZl OGJlYi4uOGZmYjYxYjM2NjA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCisr KyBiL2luY2x1ZGUvbGludXgvaW9wb3J0LmgKQEAgLTMwMiwxMSArMzAyLDcgQEAgc3RydWN0IHJl c291cmNlICpkZXZtX3JlcXVlc3RfZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCBkZXZpY2UgKmRldiwK IHN0cnVjdCByZXNvdXJjZSAqcmVxdWVzdF9mcmVlX21lbV9yZWdpb24oc3RydWN0IHJlc291cmNl ICpiYXNlLAogCQl1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi0jaWZk ZWYgQ09ORklHX0lPX1NUUklDVF9ERVZNRU0KLXZvaWQgcmV2b2tlX2Rldm1lbShzdHJ1Y3QgcmVz b3VyY2UgKnJlcyk7Ci0jZWxzZQotc3RhdGljIGlubGluZSB2b2lkIHJldm9rZV9kZXZtZW0oc3Ry dWN0IHJlc291cmNlICpyZXMpIHsgfTsKLSNlbmRpZgorZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3Nw YWNlICppb21lbV9nZXRfbWFwcGluZyh2b2lkKTsKIAogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAq LwogI2VuZGlmCS8qIF9MSU5VWF9JT1BPUlRfSCAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3Jlc291 cmNlLmMgYi9rZXJuZWwvcmVzb3VyY2UuYwppbmRleCA4NDE3MzdiYmRhOWUuLmE4MDBhY2JjNTc4 YyAxMDA2NDQKLS0tIGEva2VybmVsL3Jlc291cmNlLmMKKysrIGIva2VybmVsL3Jlc291cmNlLmMK QEAgLTE4LDEyICsxOCwxNSBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVk ZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CisjaW5jbHVkZSA8bGlu dXgvcHNldWRvX2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51 eC9zZXFfZmlsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4 L3Bmbi5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW91bnQuaD4K ICNpbmNsdWRlIDxsaW51eC9yZXNvdXJjZV9leHQuaD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L21h Z2ljLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKIApAQCAtMTExMiw2ICsxMTE1LDU4IEBAIHJl c291cmNlX3NpemVfdCByZXNvdXJjZV9hbGlnbm1lbnQoc3RydWN0IHJlc291cmNlICpyZXMpCiAK IHN0YXRpYyBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChtdXhlZF9yZXNvdXJjZV93YWl0KTsKIAor c3RhdGljIHN0cnVjdCBpbm9kZSAqaW9tZW1faW5vZGU7CisKKyNpZmRlZiBDT05GSUdfSU9fU1RS SUNUX0RFVk1FTQorc3RhdGljIHZvaWQgcmV2b2tlX2lvbWVtKHN0cnVjdCByZXNvdXJjZSAqcmVz KQoreworCS8qIHBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBpb21lbV9pbml0X2lu b2RlKCkgKi8KKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmaW9tZW1f aW5vZGUpOworCisJLyoKKwkgKiBDaGVjayB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBoYXMgY29t cGxldGVkLiBMb3NpbmcgdGhlIHJhY2UKKwkgKiBpcyBvayBiZWNhdXNlIGl0IG1lYW5zIGRyaXZl cnMgYXJlIGNsYWltaW5nIHJlc291cmNlcyBiZWZvcmUKKwkgKiB0aGUgZnNfaW5pdGNhbGwgbGV2 ZWwgb2YgaW5pdCBhbmQgcHJldmVudCBpb21lbV9nZXRfbWFwcGluZyB1c2VycworCSAqIGZyb20g ZXN0YWJsaXNoaW5nIG1hcHBpbmdzLgorCSAqLworCWlmICghaW5vZGUpCisJCXJldHVybjsKKwor CS8qCisJICogVGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1 bGx5IG1hcmtlZAorCSAqIHRoZSByZXNvdXJjZSBidXN5IGJ5IHRoaXMgcG9pbnQsIHNvIGRldm1l bV9pc19hbGxvd2VkKCkKKwkgKiBzaG91bGQgc3RhcnQgcmV0dXJuaW5nIGZhbHNlLCBob3dldmVy IGZvciBwZXJmb3JtYW5jZSB0aGlzCisJICogZG9lcyBub3QgaXRlcmF0ZSB0aGUgZW50aXJlIHJl c291cmNlIHJhbmdlLgorCSAqLworCWlmIChkZXZtZW1faXNfYWxsb3dlZChQSFlTX1BGTihyZXMt PnN0YXJ0KSkgJiYKKwkgICAgZGV2bWVtX2lzX2FsbG93ZWQoUEhZU19QRk4ocmVzLT5lbmQpKSkg eworCQkvKgorCQkgKiAqY3JpbmdlKiBpb21lbT1yZWxheGVkIHNheXMgImdvIGFoZWFkLCB3aGF0 J3MgdGhlCisJCSAqIHdvcnN0IHRoYXQgY2FuIGhhcHBlbj8iCisJCSAqLworCQlyZXR1cm47CisJ fQorCisJdW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS0+aV9tYXBwaW5nLCByZXMtPnN0YXJ0LCBy ZXNvdXJjZV9zaXplKHJlcyksIDEpOworfQorc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmlvbWVtX2dl dF9tYXBwaW5nKHZvaWQpCit7CisJLyoKKwkgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVk IGZyb20gZmlsZSBvcGVuIHBhdGhzLCBoZW5jZSBndWFyYW50ZWVkCisJICogdGhhdCBmc19pbml0 Y2FsbHMgaGF2ZSBjb21wbGV0ZWQgYW5kIG5vIG5lZWQgdG8gY2hlY2sgZm9yIE5VTEwuIEJ1dAor CSAqIHNpbmNlIHJldm9rZV9pb21lbSBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgaW5pdGNhbGwg d2Ugc3RpbGwgbmVlZAorCSAqIHRoZSBiYXJyaWVyIHRvIGFwcGVhc2UgY2hlY2tlcnMuCisJICov CisJcmV0dXJuIHNtcF9sb2FkX2FjcXVpcmUoJmlvbWVtX2lub2RlKS0+aV9tYXBwaW5nOworfQor I2Vsc2UKK3N0YXRpYyB2b2lkIHJldm9rZV9pb21lbShzdHJ1Y3QgcmVzb3VyY2UgKnJlcykge30K K3N0cnVjdCBhZGRyZXNzX3NwYWNlICppb21lbV9nZXRfbWFwcGluZyh2b2lkKQoreworCXJldHVy biBOVUxMOworfQorI2VuZGlmCisKIC8qKgogICogX19yZXF1ZXN0X3JlZ2lvbiAtIGNyZWF0ZSBh IG5ldyBidXN5IHJlc291cmNlIHJlZ2lvbgogICogQHBhcmVudDogcGFyZW50IHJlc291cmNlIGRl c2NyaXB0b3IKQEAgLTExNzksNyArMTIzNCw3IEBAIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVz dF9yZWdpb24oc3RydWN0IHJlc291cmNlICpwYXJlbnQsCiAJd3JpdGVfdW5sb2NrKCZyZXNvdXJj ZV9sb2NrKTsKIAogCWlmIChyZXMgJiYgb3JpZ19wYXJlbnQgPT0gJmlvbWVtX3Jlc291cmNlKQot CQlyZXZva2VfZGV2bWVtKHJlcyk7CisJCXJldm9rZV9pb21lbShyZXMpOwogCiAJcmV0dXJuIHJl czsKIH0KQEAgLTE3MTMsNCArMTc2OCw0OCBAQCBzdGF0aWMgaW50IF9faW5pdCBzdHJpY3RfaW9t ZW0oY2hhciAqc3RyKQogCXJldHVybiAxOwogfQogCitzdGF0aWMgaW50IGlvbWVtX2ZzX2luaXRf ZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCit7CisJcmV0dXJuIGluaXRfcHNldWRv KGZjLCBERVZNRU1fTUFHSUMpID8gMCA6IC1FTk9NRU07Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmls ZV9zeXN0ZW1fdHlwZSBpb21lbV9mc190eXBlID0geworCS5uYW1lCQk9ICJpb21lbSIsCisJLm93 bmVyCQk9IFRISVNfTU9EVUxFLAorCS5pbml0X2ZzX2NvbnRleHQgPSBpb21lbV9mc19pbml0X2Zz X2NvbnRleHQsCisJLmtpbGxfc2IJPSBraWxsX2Fub25fc3VwZXIsCit9OworCitzdGF0aWMgaW50 IF9faW5pdCBpb21lbV9pbml0X2lub2RlKHZvaWQpCit7CisJc3RhdGljIHN0cnVjdCB2ZnNtb3Vu dCAqaW9tZW1fdmZzX21vdW50OworCXN0YXRpYyBpbnQgaW9tZW1fZnNfY250OworCXN0cnVjdCBp bm9kZSAqaW5vZGU7CisJaW50IHJjOworCisJcmMgPSBzaW1wbGVfcGluX2ZzKCZpb21lbV9mc190 eXBlLCAmaW9tZW1fdmZzX21vdW50LCAmaW9tZW1fZnNfY250KTsKKwlpZiAocmMgPCAwKSB7CisJ CXByX2VycigiQ2Fubm90IG1vdW50IGlvbWVtIHBzZXVkbyBmaWxlc3lzdGVtOiAlZFxuIiwgcmMp OworCQlyZXR1cm4gcmM7CisJfQorCisJaW5vZGUgPSBhbGxvY19hbm9uX2lub2RlKGlvbWVtX3Zm c19tb3VudC0+bW50X3NiKTsKKwlpZiAoSVNfRVJSKGlub2RlKSkgeworCQlyYyA9IFBUUl9FUlIo aW5vZGUpOworCQlwcl9lcnIoIkNhbm5vdCBhbGxvY2F0ZSBpbm9kZSBmb3IgaW9tZW06ICVkXG4i LCByYyk7CisJCXNpbXBsZV9yZWxlYXNlX2ZzKCZpb21lbV92ZnNfbW91bnQsICZpb21lbV9mc19j bnQpOworCQlyZXR1cm4gcmM7CisJfQorCisJLyoKKwkgKiBQdWJsaXNoIGlvbWVtIHJldm9jYXRp b24gaW5vZGUgaW5pdGlhbGl6ZWQuCisJICogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkg aW4gcmV2b2tlX2lvbWVtKCkuCisJICovCisJc21wX3N0b3JlX3JlbGVhc2UoJmlvbWVtX2lub2Rl LCBpbm9kZSk7CisKKwlyZXR1cm4gMDsKK30KKworZnNfaW5pdGNhbGwoaW9tZW1faW5pdF9pbm9k ZSk7CisKIF9fc2V0dXAoImlvbWVtPSIsIHN0cmljdF9pb21lbSk7Ci0tIAoyLjI4LjAKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg== 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 437B2C64E75 for ; Mon, 26 Oct 2020 10:59: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 E8E7F222EA for ; Mon, 26 Oct 2020 10:59:05 +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="jSxXw1bd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E8E7F222EA 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 511616EA02; Mon, 26 Oct 2020 10:59:05 +0000 (UTC) Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0BC56E9AF for ; Mon, 26 Oct 2020 10:58:45 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id v5so11154329wmh.1 for ; Mon, 26 Oct 2020 03:58:45 -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=Eh+QFd2rUGVvEdUIq62q2ZCwC5wIklTNSjxdtgUk2/Y=; b=jSxXw1bdLmRXLhowjIdJTAeFXSixknzvMUIhBtEkBTKblKK8gZhTBOmABTDpvK2mRK CHL6hpUwxkbtVwWsXHHKBuwfNXMjDvNqE7BjTsIdEhpavhGAohvQkJxPMZhKyjjQLw4S LLb4iUCkIVz3tAmLqVziqEiqntHi77N/25Lzw= 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=Eh+QFd2rUGVvEdUIq62q2ZCwC5wIklTNSjxdtgUk2/Y=; b=lRG7+N1c8awC2S1M3VH+e2N/QoGJeos8ApTDfo2DfHEs3rB19qVv6q5YfJnOREBZcM eCrxJAsn1KxUo+eP2J6zqsMurj5Mf0YHq6gmSrJLay2+dgtuK0n50/S9cgGtAfSqxJL4 i9epGfttkn3e6eacmB+Pz3fuJuvO3TW30E06KVs67kxI03AGPsJA1/4+3HLu7flRX4eH 5kEzqfIUTSdRYuGzwIFfbEKFiNsxldJTXZzwBjHDBxgBRAYGyJL2XMPS14eWpJLhwEsB ilLizbKn21LKHnIDPViNVVNtLCQe+x+DOLxWJvNKM9YlairHYcLxm9H4wmJRXVSJkV3E mZeg== X-Gm-Message-State: AOAM531cV9OramK3JxBpVyGCLjIDDMTfc5NrSMLz7yixZCPTwFyyDpRS rvPmn1WF0QySpygTq2YyuuBy1whQyQes8JOs X-Google-Smtp-Source: ABdhPJwZtspo4YWDyrf5aVA+XBuFLqv6jVzUzeHUWGaCCCiq+U0MVt5sAZLIvYoPnIbBSWUE2POZhg== X-Received: by 2002:a1c:7707:: with SMTP id t7mr16302030wmi.54.1603709924198; Mon, 26 Oct 2020 03:58:44 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id w83sm21165156wmg.48.2020.10.26.03.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Oct 2020 03:58:43 -0700 (PDT) From: Daniel Vetter To: DRI Development , LKML Subject: [PATCH v4 13/15] resource: Move devmem revoke code to resource framework Date: Mon, 26 Oct 2020 11:58:16 +0100 Message-Id: <20201026105818.2585306-14-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201026105818.2585306-1-daniel.vetter@ffwll.ch> References: <20201026105818.2585306-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 , "Rafael J. Wysocki" , linux-mm@kvack.org, =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Arnd Bergmann , John Hubbard , Greg Kroah-Hartman , 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 dmVyIHRvCmtlcm5lbC9yZXNvdXJjZS5jLgoKUmV2aWV3ZWQtYnk6IEdyZWcgS3JvYWgtSGFydG1h biA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+ClNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgpDYzogSmFzb24gR3VudGhvcnBlIDxqZ2dAemll cGUuY2E+CkNjOiBLZWVzIENvb2sgPGtlZXNjb29rQGNocm9taXVtLm9yZz4KQ2M6IERhbiBXaWxs aWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgpDYzogQW5kcmV3IE1vcnRvbiA8YWtwbUBs aW51eC1mb3VuZGF0aW9uLm9yZz4KQ2M6IEpvaG4gSHViYmFyZCA8amh1YmJhcmRAbnZpZGlhLmNv bT4KQ2M6IErDqXLDtG1lIEdsaXNzZSA8amdsaXNzZUByZWRoYXQuY29tPgpDYzogSmFuIEthcmEg PGphY2tAc3VzZS5jej4KQ2M6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29t PgpDYzogbGludXgtbW1Aa3ZhY2sub3JnCkNjOiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh ZGVhZC5vcmcKQ2M6IGxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZwpDYzogbGludXgt bWVkaWFAdmdlci5rZXJuZWwub3JnCkNjOiBBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgpD YzogR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KQ2M6IERh bmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBEYXZpZCBIaWxkZW5icmFu ZCA8ZGF2aWRAcmVkaGF0LmNvbT4KQ2M6ICJSYWZhZWwgSi4gV3lzb2NraSIgPHJhZmFlbC5qLnd5 c29ja2lAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPgotLQp2MzoKLSBhZGQgYmFycmllciBmb3IgY29uc2lzdGVuY3kgYW5kIGRv Y3VtZW50IHdoeSB3ZSBkb24ndCBoYXZlIHRvIGNoZWNrCiAgZm9yIE5VTEwgKEphc29uKQp2NAot IEFkanVzdCBjb21tZW50cyB0byByZWZsZWN0IHRoZSBnZW5lcmFsIG5hdHVyZSBvZiB0aGlzIGlv bWVtIHJldm9rZQogIGNvZGUgbm93IChEYW4pCi0tLQogZHJpdmVycy9jaGFyL21lbS5jICAgICB8 ICA4NSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbmNsdWRlL2xpbnV4L2lv cG9ydC5oIHwgICA2ICstLQoga2VybmVsL3Jlc291cmNlLmMgICAgICB8IDEwMSArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAxMDIgaW5z ZXJ0aW9ucygrKSwgOTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9jaGFyL21l bS5jIGIvZHJpdmVycy9jaGFyL21lbS5jCmluZGV4IDU1MDJmNTZmMzY1NS4uNTMzMzhhYWQ4ZDI4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvbWVtLmMKKysrIGIvZHJpdmVycy9jaGFyL21lbS5j CkBAIC0zMSw5ICszMSw2IEBACiAjaW5jbHVkZSA8bGludXgvdWlvLmg+CiAjaW5jbHVkZSA8bGlu dXgvdWFjY2Vzcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NlY3VyaXR5Lmg+Ci0jaW5jbHVkZSA8bGlu dXgvcHNldWRvX2ZzLmg+Ci0jaW5jbHVkZSA8dWFwaS9saW51eC9tYWdpYy5oPgotI2luY2x1ZGUg PGxpbnV4L21vdW50Lmg+CiAKICNpZmRlZiBDT05GSUdfSUE2NAogIyBpbmNsdWRlIDxsaW51eC9l ZmkuaD4KQEAgLTgwOSw0MiArODA2LDYgQEAgc3RhdGljIGxvZmZfdCBtZW1vcnlfbHNlZWsoc3Ry dWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCBvcmlnKQogCXJldHVybiByZXQ7CiB9 CiAKLXN0YXRpYyBzdHJ1Y3QgaW5vZGUgKmRldm1lbV9pbm9kZTsKLQotI2lmZGVmIENPTkZJR19J T19TVFJJQ1RfREVWTUVNCi12b2lkIHJldm9rZV9kZXZtZW0oc3RydWN0IHJlc291cmNlICpyZXMp Ci17Ci0JLyogcGFpcnMgd2l0aCBzbXBfc3RvcmVfcmVsZWFzZSgpIGluIGRldm1lbV9pbml0X2lu b2RlKCkgKi8KLQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmZGV2bWVt X2lub2RlKTsKLQotCS8qCi0JICogQ2hlY2sgdGhhdCB0aGUgaW5pdGlhbGl6YXRpb24gaGFzIGNv bXBsZXRlZC4gTG9zaW5nIHRoZSByYWNlCi0JICogaXMgb2sgYmVjYXVzZSBpdCBtZWFucyBkcml2 ZXJzIGFyZSBjbGFpbWluZyByZXNvdXJjZXMgYmVmb3JlCi0JICogdGhlIGZzX2luaXRjYWxsIGxl dmVsIG9mIGluaXQgYW5kIHByZXZlbnQgL2Rldi9tZW0gZnJvbQotCSAqIGVzdGFibGlzaGluZyBt YXBwaW5ncy4KLQkgKi8KLQlpZiAoIWlub2RlKQotCQlyZXR1cm47Ci0KLQkvKgotCSAqIFRoZSBl eHBlY3RhdGlvbiBpcyB0aGF0IHRoZSBkcml2ZXIgaGFzIHN1Y2Nlc3NmdWxseSBtYXJrZWQKLQkg KiB0aGUgcmVzb3VyY2UgYnVzeSBieSB0aGlzIHBvaW50LCBzbyBkZXZtZW1faXNfYWxsb3dlZCgp Ci0JICogc2hvdWxkIHN0YXJ0IHJldHVybmluZyBmYWxzZSwgaG93ZXZlciBmb3IgcGVyZm9ybWFu Y2UgdGhpcwotCSAqIGRvZXMgbm90IGl0ZXJhdGUgdGhlIGVudGlyZSByZXNvdXJjZSByYW5nZS4K LQkgKi8KLQlpZiAoZGV2bWVtX2lzX2FsbG93ZWQoUEhZU19QRk4ocmVzLT5zdGFydCkpICYmCi0J ICAgIGRldm1lbV9pc19hbGxvd2VkKFBIWVNfUEZOKHJlcy0+ZW5kKSkpIHsKLQkJLyoKLQkJICog KmNyaW5nZSogaW9tZW09cmVsYXhlZCBzYXlzICJnbyBhaGVhZCwgd2hhdCdzIHRoZQotCQkgKiB3 b3JzdCB0aGF0IGNhbiBoYXBwZW4/IgotCQkgKi8KLQkJcmV0dXJuOwotCX0KLQotCXVubWFwX21h cHBpbmdfcmFuZ2UoaW5vZGUtPmlfbWFwcGluZywgcmVzLT5zdGFydCwgcmVzb3VyY2Vfc2l6ZShy ZXMpLCAxKTsKLX0KLSNlbmRpZgotCiBzdGF0aWMgaW50IG9wZW5fcG9ydChzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIHsKIAlpbnQgcmM7CkBAIC04NjQsNyArODI1LDcg QEAgc3RhdGljIGludCBvcGVuX3BvcnQoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbHApCiAJICogcmV2b2NhdGlvbnMgd2hlbiBkcml2ZXJzIHdhbnQgdG8gdGFrZSBvdmVyIGEg L2Rldi9tZW0gbWFwcGVkCiAJICogcmFuZ2UuCiAJICovCi0JZmlscC0+Zl9tYXBwaW5nID0gaW5v ZGUtPmlfbWFwcGluZzsKKwlmaWxwLT5mX21hcHBpbmcgPSBpb21lbV9nZXRfbWFwcGluZygpOwog CiAJcmV0dXJuIDA7CiB9CkBAIC05OTUsNDggKzk1Niw2IEBAIHN0YXRpYyBjaGFyICptZW1fZGV2 bm9kZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHVtb2RlX3QgKm1vZGUpCiAKIHN0YXRpYyBzdHJ1Y3Qg Y2xhc3MgKm1lbV9jbGFzczsKIAotc3RhdGljIGludCBkZXZtZW1fZnNfaW5pdF9mc19jb250ZXh0 KHN0cnVjdCBmc19jb250ZXh0ICpmYykKLXsKLQlyZXR1cm4gaW5pdF9wc2V1ZG8oZmMsIERFVk1F TV9NQUdJQykgPyAwIDogLUVOT01FTTsKLX0KLQotc3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90 eXBlIGRldm1lbV9mc190eXBlID0gewotCS5uYW1lCQk9ICJkZXZtZW0iLAotCS5vd25lcgkJPSBU SElTX01PRFVMRSwKLQkuaW5pdF9mc19jb250ZXh0ID0gZGV2bWVtX2ZzX2luaXRfZnNfY29udGV4 dCwKLQkua2lsbF9zYgk9IGtpbGxfYW5vbl9zdXBlciwKLX07Ci0KLXN0YXRpYyBpbnQgZGV2bWVt X2luaXRfaW5vZGUodm9pZCkKLXsKLQlzdGF0aWMgc3RydWN0IHZmc21vdW50ICpkZXZtZW1fdmZz X21vdW50OwotCXN0YXRpYyBpbnQgZGV2bWVtX2ZzX2NudDsKLQlzdHJ1Y3QgaW5vZGUgKmlub2Rl OwotCWludCByYzsKLQotCXJjID0gc2ltcGxlX3Bpbl9mcygmZGV2bWVtX2ZzX3R5cGUsICZkZXZt ZW1fdmZzX21vdW50LCAmZGV2bWVtX2ZzX2NudCk7Ci0JaWYgKHJjIDwgMCkgewotCQlwcl9lcnIo IkNhbm5vdCBtb3VudCAvZGV2L21lbSBwc2V1ZG8gZmlsZXN5c3RlbTogJWRcbiIsIHJjKTsKLQkJ cmV0dXJuIHJjOwotCX0KLQotCWlub2RlID0gYWxsb2NfYW5vbl9pbm9kZShkZXZtZW1fdmZzX21v dW50LT5tbnRfc2IpOwotCWlmIChJU19FUlIoaW5vZGUpKSB7Ci0JCXJjID0gUFRSX0VSUihpbm9k ZSk7Ci0JCXByX2VycigiQ2Fubm90IGFsbG9jYXRlIGlub2RlIGZvciAvZGV2L21lbTogJWRcbiIs IHJjKTsKLQkJc2ltcGxlX3JlbGVhc2VfZnMoJmRldm1lbV92ZnNfbW91bnQsICZkZXZtZW1fZnNf Y250KTsKLQkJcmV0dXJuIHJjOwotCX0KLQotCS8qCi0JICogUHVibGlzaCAvZGV2L21lbSBpbml0 aWFsaXplZC4KLQkgKiBQYWlycyB3aXRoIHNtcF9sb2FkX2FjcXVpcmUoKSBpbiByZXZva2VfZGV2 bWVtKCkuCi0JICovCi0Jc21wX3N0b3JlX3JlbGVhc2UoJmRldm1lbV9pbm9kZSwgaW5vZGUpOwot Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgX19pbml0IGNocl9kZXZfaW5pdCh2b2lkKQog ewogCWludCBtaW5vcjsKQEAgLTEwNTgsOCArOTc3LDYgQEAgc3RhdGljIGludCBfX2luaXQgY2hy X2Rldl9pbml0KHZvaWQpCiAJCSAqLwogCQlpZiAoKG1pbm9yID09IERFVlBPUlRfTUlOT1IpICYm ICFhcmNoX2hhc19kZXZfcG9ydCgpKQogCQkJY29udGludWU7Ci0JCWlmICgobWlub3IgPT0gREVW TUVNX01JTk9SKSAmJiBkZXZtZW1faW5pdF9pbm9kZSgpICE9IDApCi0JCQljb250aW51ZTsKIAog CQlkZXZpY2VfY3JlYXRlKG1lbV9jbGFzcywgTlVMTCwgTUtERVYoTUVNX01BSk9SLCBtaW5vciks CiAJCQkgICAgICBOVUxMLCBkZXZsaXN0W21pbm9yXS5uYW1lKTsKZGlmZiAtLWdpdCBhL2luY2x1 ZGUvbGludXgvaW9wb3J0LmggYi9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCmluZGV4IDZjMmIwNmZl OGJlYi4uOGZmYjYxYjM2NjA2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lvcG9ydC5oCisr KyBiL2luY2x1ZGUvbGludXgvaW9wb3J0LmgKQEAgLTMwMiwxMSArMzAyLDcgQEAgc3RydWN0IHJl c291cmNlICpkZXZtX3JlcXVlc3RfZnJlZV9tZW1fcmVnaW9uKHN0cnVjdCBkZXZpY2UgKmRldiwK IHN0cnVjdCByZXNvdXJjZSAqcmVxdWVzdF9mcmVlX21lbV9yZWdpb24oc3RydWN0IHJlc291cmNl ICpiYXNlLAogCQl1bnNpZ25lZCBsb25nIHNpemUsIGNvbnN0IGNoYXIgKm5hbWUpOwogCi0jaWZk ZWYgQ09ORklHX0lPX1NUUklDVF9ERVZNRU0KLXZvaWQgcmV2b2tlX2Rldm1lbShzdHJ1Y3QgcmVz b3VyY2UgKnJlcyk7Ci0jZWxzZQotc3RhdGljIGlubGluZSB2b2lkIHJldm9rZV9kZXZtZW0oc3Ry dWN0IHJlc291cmNlICpyZXMpIHsgfTsKLSNlbmRpZgorZXh0ZXJuIHN0cnVjdCBhZGRyZXNzX3Nw YWNlICppb21lbV9nZXRfbWFwcGluZyh2b2lkKTsKIAogI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAq LwogI2VuZGlmCS8qIF9MSU5VWF9JT1BPUlRfSCAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3Jlc291 cmNlLmMgYi9rZXJuZWwvcmVzb3VyY2UuYwppbmRleCA4NDE3MzdiYmRhOWUuLmE4MDBhY2JjNTc4 YyAxMDA2NDQKLS0tIGEva2VybmVsL3Jlc291cmNlLmMKKysrIGIva2VybmVsL3Jlc291cmNlLmMK QEAgLTE4LDEyICsxOCwxNSBAQAogI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+CiAjaW5jbHVk ZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9wcm9jX2ZzLmg+CisjaW5jbHVkZSA8bGlu dXgvcHNldWRvX2ZzLmg+CiAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KICNpbmNsdWRlIDxsaW51 eC9zZXFfZmlsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4 L3Bmbi5oPgogI2luY2x1ZGUgPGxpbnV4L21tLmg+CisjaW5jbHVkZSA8bGludXgvbW91bnQuaD4K ICNpbmNsdWRlIDxsaW51eC9yZXNvdXJjZV9leHQuaD4KKyNpbmNsdWRlIDx1YXBpL2xpbnV4L21h Z2ljLmg+CiAjaW5jbHVkZSA8YXNtL2lvLmg+CiAKIApAQCAtMTExMiw2ICsxMTE1LDU4IEBAIHJl c291cmNlX3NpemVfdCByZXNvdXJjZV9hbGlnbm1lbnQoc3RydWN0IHJlc291cmNlICpyZXMpCiAK IHN0YXRpYyBERUNMQVJFX1dBSVRfUVVFVUVfSEVBRChtdXhlZF9yZXNvdXJjZV93YWl0KTsKIAor c3RhdGljIHN0cnVjdCBpbm9kZSAqaW9tZW1faW5vZGU7CisKKyNpZmRlZiBDT05GSUdfSU9fU1RS SUNUX0RFVk1FTQorc3RhdGljIHZvaWQgcmV2b2tlX2lvbWVtKHN0cnVjdCByZXNvdXJjZSAqcmVz KQoreworCS8qIHBhaXJzIHdpdGggc21wX3N0b3JlX3JlbGVhc2UoKSBpbiBpb21lbV9pbml0X2lu b2RlKCkgKi8KKwlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gc21wX2xvYWRfYWNxdWlyZSgmaW9tZW1f aW5vZGUpOworCisJLyoKKwkgKiBDaGVjayB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBoYXMgY29t cGxldGVkLiBMb3NpbmcgdGhlIHJhY2UKKwkgKiBpcyBvayBiZWNhdXNlIGl0IG1lYW5zIGRyaXZl cnMgYXJlIGNsYWltaW5nIHJlc291cmNlcyBiZWZvcmUKKwkgKiB0aGUgZnNfaW5pdGNhbGwgbGV2 ZWwgb2YgaW5pdCBhbmQgcHJldmVudCBpb21lbV9nZXRfbWFwcGluZyB1c2VycworCSAqIGZyb20g ZXN0YWJsaXNoaW5nIG1hcHBpbmdzLgorCSAqLworCWlmICghaW5vZGUpCisJCXJldHVybjsKKwor CS8qCisJICogVGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhlIGRyaXZlciBoYXMgc3VjY2Vzc2Z1 bGx5IG1hcmtlZAorCSAqIHRoZSByZXNvdXJjZSBidXN5IGJ5IHRoaXMgcG9pbnQsIHNvIGRldm1l bV9pc19hbGxvd2VkKCkKKwkgKiBzaG91bGQgc3RhcnQgcmV0dXJuaW5nIGZhbHNlLCBob3dldmVy IGZvciBwZXJmb3JtYW5jZSB0aGlzCisJICogZG9lcyBub3QgaXRlcmF0ZSB0aGUgZW50aXJlIHJl c291cmNlIHJhbmdlLgorCSAqLworCWlmIChkZXZtZW1faXNfYWxsb3dlZChQSFlTX1BGTihyZXMt PnN0YXJ0KSkgJiYKKwkgICAgZGV2bWVtX2lzX2FsbG93ZWQoUEhZU19QRk4ocmVzLT5lbmQpKSkg eworCQkvKgorCQkgKiAqY3JpbmdlKiBpb21lbT1yZWxheGVkIHNheXMgImdvIGFoZWFkLCB3aGF0 J3MgdGhlCisJCSAqIHdvcnN0IHRoYXQgY2FuIGhhcHBlbj8iCisJCSAqLworCQlyZXR1cm47CisJ fQorCisJdW5tYXBfbWFwcGluZ19yYW5nZShpbm9kZS0+aV9tYXBwaW5nLCByZXMtPnN0YXJ0LCBy ZXNvdXJjZV9zaXplKHJlcyksIDEpOworfQorc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmlvbWVtX2dl dF9tYXBwaW5nKHZvaWQpCit7CisJLyoKKwkgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVk IGZyb20gZmlsZSBvcGVuIHBhdGhzLCBoZW5jZSBndWFyYW50ZWVkCisJICogdGhhdCBmc19pbml0 Y2FsbHMgaGF2ZSBjb21wbGV0ZWQgYW5kIG5vIG5lZWQgdG8gY2hlY2sgZm9yIE5VTEwuIEJ1dAor CSAqIHNpbmNlIHJldm9rZV9pb21lbSBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGUgaW5pdGNhbGwg d2Ugc3RpbGwgbmVlZAorCSAqIHRoZSBiYXJyaWVyIHRvIGFwcGVhc2UgY2hlY2tlcnMuCisJICov CisJcmV0dXJuIHNtcF9sb2FkX2FjcXVpcmUoJmlvbWVtX2lub2RlKS0+aV9tYXBwaW5nOworfQor I2Vsc2UKK3N0YXRpYyB2b2lkIHJldm9rZV9pb21lbShzdHJ1Y3QgcmVzb3VyY2UgKnJlcykge30K K3N0cnVjdCBhZGRyZXNzX3NwYWNlICppb21lbV9nZXRfbWFwcGluZyh2b2lkKQoreworCXJldHVy biBOVUxMOworfQorI2VuZGlmCisKIC8qKgogICogX19yZXF1ZXN0X3JlZ2lvbiAtIGNyZWF0ZSBh IG5ldyBidXN5IHJlc291cmNlIHJlZ2lvbgogICogQHBhcmVudDogcGFyZW50IHJlc291cmNlIGRl c2NyaXB0b3IKQEAgLTExNzksNyArMTIzNCw3IEBAIHN0cnVjdCByZXNvdXJjZSAqIF9fcmVxdWVz dF9yZWdpb24oc3RydWN0IHJlc291cmNlICpwYXJlbnQsCiAJd3JpdGVfdW5sb2NrKCZyZXNvdXJj ZV9sb2NrKTsKIAogCWlmIChyZXMgJiYgb3JpZ19wYXJlbnQgPT0gJmlvbWVtX3Jlc291cmNlKQot CQlyZXZva2VfZGV2bWVtKHJlcyk7CisJCXJldm9rZV9pb21lbShyZXMpOwogCiAJcmV0dXJuIHJl czsKIH0KQEAgLTE3MTMsNCArMTc2OCw0OCBAQCBzdGF0aWMgaW50IF9faW5pdCBzdHJpY3RfaW9t ZW0oY2hhciAqc3RyKQogCXJldHVybiAxOwogfQogCitzdGF0aWMgaW50IGlvbWVtX2ZzX2luaXRf ZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpCit7CisJcmV0dXJuIGluaXRfcHNldWRv KGZjLCBERVZNRU1fTUFHSUMpID8gMCA6IC1FTk9NRU07Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZmls ZV9zeXN0ZW1fdHlwZSBpb21lbV9mc190eXBlID0geworCS5uYW1lCQk9ICJpb21lbSIsCisJLm93 bmVyCQk9IFRISVNfTU9EVUxFLAorCS5pbml0X2ZzX2NvbnRleHQgPSBpb21lbV9mc19pbml0X2Zz X2NvbnRleHQsCisJLmtpbGxfc2IJPSBraWxsX2Fub25fc3VwZXIsCit9OworCitzdGF0aWMgaW50 IF9faW5pdCBpb21lbV9pbml0X2lub2RlKHZvaWQpCit7CisJc3RhdGljIHN0cnVjdCB2ZnNtb3Vu dCAqaW9tZW1fdmZzX21vdW50OworCXN0YXRpYyBpbnQgaW9tZW1fZnNfY250OworCXN0cnVjdCBp bm9kZSAqaW5vZGU7CisJaW50IHJjOworCisJcmMgPSBzaW1wbGVfcGluX2ZzKCZpb21lbV9mc190 eXBlLCAmaW9tZW1fdmZzX21vdW50LCAmaW9tZW1fZnNfY250KTsKKwlpZiAocmMgPCAwKSB7CisJ CXByX2VycigiQ2Fubm90IG1vdW50IGlvbWVtIHBzZXVkbyBmaWxlc3lzdGVtOiAlZFxuIiwgcmMp OworCQlyZXR1cm4gcmM7CisJfQorCisJaW5vZGUgPSBhbGxvY19hbm9uX2lub2RlKGlvbWVtX3Zm c19tb3VudC0+bW50X3NiKTsKKwlpZiAoSVNfRVJSKGlub2RlKSkgeworCQlyYyA9IFBUUl9FUlIo aW5vZGUpOworCQlwcl9lcnIoIkNhbm5vdCBhbGxvY2F0ZSBpbm9kZSBmb3IgaW9tZW06ICVkXG4i LCByYyk7CisJCXNpbXBsZV9yZWxlYXNlX2ZzKCZpb21lbV92ZnNfbW91bnQsICZpb21lbV9mc19j bnQpOworCQlyZXR1cm4gcmM7CisJfQorCisJLyoKKwkgKiBQdWJsaXNoIGlvbWVtIHJldm9jYXRp b24gaW5vZGUgaW5pdGlhbGl6ZWQuCisJICogUGFpcnMgd2l0aCBzbXBfbG9hZF9hY3F1aXJlKCkg aW4gcmV2b2tlX2lvbWVtKCkuCisJICovCisJc21wX3N0b3JlX3JlbGVhc2UoJmlvbWVtX2lub2Rl LCBpbm9kZSk7CisKKwlyZXR1cm4gMDsKK30KKworZnNfaW5pdGNhbGwoaW9tZW1faW5pdF9pbm9k ZSk7CisKIF9fc2V0dXAoImlvbWVtPSIsIHN0cmljdF9pb21lbSk7Ci0tIAoyLjI4LjAKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=