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=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB282C04AB6 for ; Tue, 28 May 2019 09:06:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AA2E4208CB for ; Tue, 28 May 2019 09:06:17 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="PHQiuhYm" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726813AbfE1JGR (ORCPT ); Tue, 28 May 2019 05:06:17 -0400 Received: from mail-ed1-f65.google.com ([209.85.208.65]:36002 "EHLO mail-ed1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727093AbfE1JDi (ORCPT ); Tue, 28 May 2019 05:03:38 -0400 Received: by mail-ed1-f65.google.com with SMTP id a8so30639605edx.3 for ; Tue, 28 May 2019 02:03:37 -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=yaKcaql0G9W2FF9dohChSRJyBaT7k6PGxaYxbUWhNMM=; b=PHQiuhYmhLNnw56rd+9LC8Si1kQHN0WBjahUHUsDHHhN83rtOqqfjnBoWC0MuN6RLD B7WAsmRxU2r/bqlBdO+TAka9/Uotec/8FhnJNPmO9th/YkxzJqWIfMSoYbpVV0KChcvi uSCOUKeob0QuWCAcgtyoQhIjJpp+n21uT0MqY= 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=yaKcaql0G9W2FF9dohChSRJyBaT7k6PGxaYxbUWhNMM=; b=PHAz/xmWZ4EuxmLvSoxsSwf7GIlzRGQEvZvmcGm6+/xe/CObaindMDtwGZCHXBLRzV upytXI1HkTee8ksQv9pWi2iV139qtvhDk2wkw2IKNtRQKc46rmTaQHnULWPiLW3YWoM1 0ZQqhUiBadYodDH7/pmLfA5uFSW6oz3gtUN/l6GDyi0APjmbBVBmqbKicfC+7EyvFgS4 b3OaTDTCn/AFQZiq+MdpDKcoRYHCbgKq+2gs7+8BR6CUwkL0SLuyuOlW9KiIAZMAafeq +18kJlmnxR/7ukRxER2MuKffwvLdByrdiwuJ4SIdopoBucDfCoWc6ytldbn2H2nS98Rh 1tsg== X-Gm-Message-State: APjAAAXzO2szPNJukaVASBBTRQlwNWYwvq503vizmU+n9mnwtDhCSa+m qRQi0kO6n6RF4tQ9AF4+poruoksxWN0= X-Google-Smtp-Source: APXvYqzKotm/46uPM24q5yoliICqC9zZiV7ou5KJH+PAaBUjF08Z+9r3Z4qj1R3JTovsspWncdiMbw== X-Received: by 2002:a17:906:24d8:: with SMTP id f24mr8157454ejb.1.1559034216475; Tue, 28 May 2019 02:03:36 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id x49sm4072656edm.25.2019.05.28.02.03.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 28 May 2019 02:03:35 -0700 (PDT) From: Daniel Vetter To: LKML Cc: DRI Development , Intel Graphics Development , linux-fbdev@vger.kernel.org, Daniel Thompson , Bartlomiej Zolnierkiewicz , Daniel Vetter , Daniel Vetter , Sam Ravnborg , Maarten Lankhorst , Hans de Goede , Sergey Senozhatsky , Peter Rosin , Kees Cook , Konstantin Khorenko , Yisheng Xie , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Mikulas Patocka , Thomas Zimmermann Subject: [PATCH 17/33] fbcon: call fbcon_fb_bind directly Date: Tue, 28 May 2019 11:02:48 +0200 Message-Id: <20190528090304.9388-18-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190528090304.9388-1-daniel.vetter@ffwll.ch> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Also remove the error return value. That's all errors for either driver bugs (trying to unbind something that isn't bound), or errors of the new driver that will take over. There's nothing the outgoing driver can do about this anyway, so switch over to void. Signed-off-by: Daniel Vetter Reviewed-by: Sam Ravnborg Reviewed-by: Maarten Lankhorst Cc: Bartlomiej Zolnierkiewicz Cc: Daniel Vetter Cc: Hans de Goede Cc: Sergey Senozhatsky Cc: Peter Rosin Cc: Kees Cook Cc: Konstantin Khorenko Cc: Yisheng Xie Cc: "Michał Mirosław" Cc: Mikulas Patocka Cc: Thomas Zimmermann Cc: linux-fbdev@vger.kernel.org --- drivers/video/fbdev/core/fbcon.c | 24 +++++++----------------- drivers/video/fbdev/core/fbmem.c | 7 ++----- include/linux/fb.h | 2 -- include/linux/fbcon.h | 2 ++ 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index a7e2d5b88914..142686953b71 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -3046,7 +3046,7 @@ static int fbcon_mode_deleted(struct fb_info *info, } #ifdef CONFIG_VT_HW_CONSOLE_BINDING -static int fbcon_unbind(void) +static void fbcon_unbind(void) { int ret; @@ -3055,25 +3055,21 @@ static int fbcon_unbind(void) if (!ret) fbcon_has_console_bind = 0; - - return ret; } #else -static inline int fbcon_unbind(void) -{ - return -EINVAL; -} +static inline void fbcon_unbind(void) {} #endif /* CONFIG_VT_HW_CONSOLE_BINDING */ /* called with console_lock held */ -static int fbcon_fb_unbind(int idx) +void fbcon_fb_unbind(struct fb_info *info) { int i, new_idx = -1, ret = 0; + int idx = info->node; WARN_CONSOLE_UNLOCKED(); if (!fbcon_has_console_bind) - return 0; + return; for (i = first_fb_vc; i <= last_fb_vc; i++) { if (con2fb_map[i] != idx && @@ -3106,15 +3102,13 @@ static int fbcon_fb_unbind(int idx) idx, 0); if (ret) { con2fb_map[i] = idx; - return ret; + return; } } } } - ret = fbcon_unbind(); + fbcon_unbind(); } - - return ret; } /* called with console_lock held */ @@ -3352,10 +3346,6 @@ static int fbcon_event_notify(struct notifier_block *self, mode = event->data; ret = fbcon_mode_deleted(info, mode); break; - case FB_EVENT_FB_UNBIND: - idx = info->node; - ret = fbcon_fb_unbind(idx); - break; case FB_EVENT_SET_CONSOLE_MAP: /* called with console lock held */ con2fb = event->data; diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index d73762324ca2..f3fc2e5b193c 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1716,8 +1716,6 @@ static int do_register_framebuffer(struct fb_info *fb_info) static int unbind_console(struct fb_info *fb_info) { - struct fb_event event; - int ret; int i = fb_info->node; if (i < 0 || i >= FB_MAX || registered_fb[i] != fb_info) @@ -1725,12 +1723,11 @@ static int unbind_console(struct fb_info *fb_info) console_lock(); lock_fb_info(fb_info); - event.info = fb_info; - ret = fb_notifier_call_chain(FB_EVENT_FB_UNBIND, &event); + fbcon_fb_unbind(fb_info); unlock_fb_info(fb_info); console_unlock(); - return ret; + return 0; } static int __unlink_framebuffer(struct fb_info *fb_info); diff --git a/include/linux/fb.h b/include/linux/fb.h index aa8f18163151..b6ce041d9e13 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -158,8 +158,6 @@ struct fb_cursor_user { #define FB_EVENT_CONBLANK 0x0C /* Get drawing requirements */ #define FB_EVENT_GET_REQ 0x0D -/* Unbind from the console if possible */ -#define FB_EVENT_FB_UNBIND 0x0E /* CONSOLE-SPECIFIC: remap all consoles to new fb - for vga_switcheroo */ #define FB_EVENT_REMAP_ALL_CONSOLE 0x0F /* A hardware display blank early change occurred */ diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h index 94a71e9e1257..38d44fdb6d14 100644 --- a/include/linux/fbcon.h +++ b/include/linux/fbcon.h @@ -6,11 +6,13 @@ void __init fb_console_init(void); void __exit fb_console_exit(void); int fbcon_fb_registered(struct fb_info *info); void fbcon_fb_unregistered(struct fb_info *info); +void fbcon_fb_unbind(struct fb_info *info); #else static inline void fb_console_init(void) {} static inline void fb_console_exit(void) {} static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } static inline void fbcon_fb_unregistered(struct fb_info *info) {} +static inline void fbcon_fb_unbind(struct fb_info *info) {} #endif #endif /* _LINUX_FBCON_H */ -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Date: Tue, 28 May 2019 09:02:48 +0000 Subject: [PATCH 17/33] fbcon: call fbcon_fb_bind directly Message-Id: <20190528090304.9388-18-daniel.vetter@ffwll.ch> List-Id: References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> In-Reply-To: <20190528090304.9388-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: LKML Cc: Daniel Thompson , Sergey Senozhatsky , Kees Cook , Bartlomiej Zolnierkiewicz , Daniel Vetter , Intel Graphics Development , linux-fbdev@vger.kernel.org, DRI Development , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Yisheng Xie , Hans de Goede , Mikulas Patocka , Thomas Zimmermann , Daniel Vetter , Sam Ravnborg , Peter Rosin , Konstantin Khorenko Also remove the error return value. That's all errors for either driver bugs (trying to unbind something that isn't bound), or errors of the new driver that will take over. There's nothing the outgoing driver can do about this anyway, so switch over to void. Signed-off-by: Daniel Vetter Reviewed-by: Sam Ravnborg Reviewed-by: Maarten Lankhorst Cc: Bartlomiej Zolnierkiewicz Cc: Daniel Vetter Cc: Hans de Goede Cc: Sergey Senozhatsky Cc: Peter Rosin Cc: Kees Cook Cc: Konstantin Khorenko Cc: Yisheng Xie Cc: "Michał Mirosław" Cc: Mikulas Patocka Cc: Thomas Zimmermann Cc: linux-fbdev@vger.kernel.org --- drivers/video/fbdev/core/fbcon.c | 24 +++++++----------------- drivers/video/fbdev/core/fbmem.c | 7 ++----- include/linux/fb.h | 2 -- include/linux/fbcon.h | 2 ++ 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c index a7e2d5b88914..142686953b71 100644 --- a/drivers/video/fbdev/core/fbcon.c +++ b/drivers/video/fbdev/core/fbcon.c @@ -3046,7 +3046,7 @@ static int fbcon_mode_deleted(struct fb_info *info, } #ifdef CONFIG_VT_HW_CONSOLE_BINDING -static int fbcon_unbind(void) +static void fbcon_unbind(void) { int ret; @@ -3055,25 +3055,21 @@ static int fbcon_unbind(void) if (!ret) fbcon_has_console_bind = 0; - - return ret; } #else -static inline int fbcon_unbind(void) -{ - return -EINVAL; -} +static inline void fbcon_unbind(void) {} #endif /* CONFIG_VT_HW_CONSOLE_BINDING */ /* called with console_lock held */ -static int fbcon_fb_unbind(int idx) +void fbcon_fb_unbind(struct fb_info *info) { int i, new_idx = -1, ret = 0; + int idx = info->node; WARN_CONSOLE_UNLOCKED(); if (!fbcon_has_console_bind) - return 0; + return; for (i = first_fb_vc; i <= last_fb_vc; i++) { if (con2fb_map[i] != idx && @@ -3106,15 +3102,13 @@ static int fbcon_fb_unbind(int idx) idx, 0); if (ret) { con2fb_map[i] = idx; - return ret; + return; } } } } - ret = fbcon_unbind(); + fbcon_unbind(); } - - return ret; } /* called with console_lock held */ @@ -3352,10 +3346,6 @@ static int fbcon_event_notify(struct notifier_block *self, mode = event->data; ret = fbcon_mode_deleted(info, mode); break; - case FB_EVENT_FB_UNBIND: - idx = info->node; - ret = fbcon_fb_unbind(idx); - break; case FB_EVENT_SET_CONSOLE_MAP: /* called with console lock held */ con2fb = event->data; diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index d73762324ca2..f3fc2e5b193c 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -1716,8 +1716,6 @@ static int do_register_framebuffer(struct fb_info *fb_info) static int unbind_console(struct fb_info *fb_info) { - struct fb_event event; - int ret; int i = fb_info->node; if (i < 0 || i >= FB_MAX || registered_fb[i] != fb_info) @@ -1725,12 +1723,11 @@ static int unbind_console(struct fb_info *fb_info) console_lock(); lock_fb_info(fb_info); - event.info = fb_info; - ret = fb_notifier_call_chain(FB_EVENT_FB_UNBIND, &event); + fbcon_fb_unbind(fb_info); unlock_fb_info(fb_info); console_unlock(); - return ret; + return 0; } static int __unlink_framebuffer(struct fb_info *fb_info); diff --git a/include/linux/fb.h b/include/linux/fb.h index aa8f18163151..b6ce041d9e13 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h @@ -158,8 +158,6 @@ struct fb_cursor_user { #define FB_EVENT_CONBLANK 0x0C /* Get drawing requirements */ #define FB_EVENT_GET_REQ 0x0D -/* Unbind from the console if possible */ -#define FB_EVENT_FB_UNBIND 0x0E /* CONSOLE-SPECIFIC: remap all consoles to new fb - for vga_switcheroo */ #define FB_EVENT_REMAP_ALL_CONSOLE 0x0F /* A hardware display blank early change occurred */ diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h index 94a71e9e1257..38d44fdb6d14 100644 --- a/include/linux/fbcon.h +++ b/include/linux/fbcon.h @@ -6,11 +6,13 @@ void __init fb_console_init(void); void __exit fb_console_exit(void); int fbcon_fb_registered(struct fb_info *info); void fbcon_fb_unregistered(struct fb_info *info); +void fbcon_fb_unbind(struct fb_info *info); #else static inline void fb_console_init(void) {} static inline void fb_console_exit(void) {} static inline int fbcon_fb_registered(struct fb_info *info) { return 0; } static inline void fbcon_fb_unregistered(struct fb_info *info) {} +static inline void fbcon_fb_unbind(struct fb_info *info) {} #endif #endif /* _LINUX_FBCON_H */ -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: [PATCH 17/33] fbcon: call fbcon_fb_bind directly Date: Tue, 28 May 2019 11:02:48 +0200 Message-ID: <20190528090304.9388-18-daniel.vetter@ffwll.ch> References: <20190528090304.9388-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5A29389F6F for ; Tue, 28 May 2019 09:03:38 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id b8so4731825edm.11 for ; Tue, 28 May 2019 02:03:38 -0700 (PDT) In-Reply-To: <20190528090304.9388-1-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: LKML Cc: Daniel Thompson , Sergey Senozhatsky , Kees Cook , Bartlomiej Zolnierkiewicz , Daniel Vetter , Intel Graphics Development , linux-fbdev@vger.kernel.org, DRI Development , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Yisheng Xie , Hans de Goede , Mikulas Patocka , Thomas Zimmermann , Daniel Vetter , Sam Ravnborg , Peter Rosin , Konstantin Khorenko List-Id: dri-devel@lists.freedesktop.org QWxzbyByZW1vdmUgdGhlIGVycm9yIHJldHVybiB2YWx1ZS4gVGhhdCdzIGFsbCBlcnJvcnMgZm9y IGVpdGhlcgpkcml2ZXIgYnVncyAodHJ5aW5nIHRvIHVuYmluZCBzb21ldGhpbmcgdGhhdCBpc24n dCBib3VuZCksIG9yIGVycm9ycwpvZiB0aGUgbmV3IGRyaXZlciB0aGF0IHdpbGwgdGFrZSBvdmVy LgoKVGhlcmUncyBub3RoaW5nIHRoZSBvdXRnb2luZyBkcml2ZXIgY2FuIGRvIGFib3V0IHRoaXMg YW55d2F5LCBzbwpzd2l0Y2ggb3ZlciB0byB2b2lkLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZl dHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBTYW0gUmF2bmJvcmcg PHNhbUByYXZuYm9yZy5vcmc+ClJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpDYzogQmFydGxvbWllaiBab2xuaWVya2lld2lj eiA8Yi56b2xuaWVya2llQHNhbXN1bmcuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZl dHRlckBmZndsbC5jaD4KQ2M6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CkNj OiBTZXJnZXkgU2Vub3poYXRza3kgPHNlcmdleS5zZW5vemhhdHNreUBnbWFpbC5jb20+CkNjOiBQ ZXRlciBSb3NpbiA8cGVkYUBheGVudGlhLnNlPgpDYzogS2VlcyBDb29rIDxrZWVzY29va0BjaHJv bWl1bS5vcmc+CkNjOiBLb25zdGFudGluIEtob3JlbmtvIDxraG9yZW5rb0B2aXJ0dW96em8uY29t PgpDYzogWWlzaGVuZyBYaWUgPHlzeGllQGZveG1haWwuY29tPgpDYzogIk1pY2hhxYIgTWlyb3PF gmF3IiA8bWlycS1saW51eEByZXJlLnFtcW0ucGw+CkNjOiBNaWt1bGFzIFBhdG9ja2EgPG1wYXRv Y2thQHJlZGhhdC5jb20+CkNjOiBUaG9tYXMgWmltbWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5k ZT4KQ2M6IGxpbnV4LWZiZGV2QHZnZXIua2VybmVsLm9yZwotLS0KIGRyaXZlcnMvdmlkZW8vZmJk ZXYvY29yZS9mYmNvbi5jIHwgMjQgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3Zp ZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYyB8ICA3ICsrLS0tLS0KIGluY2x1ZGUvbGludXgvZmIuaCAg ICAgICAgICAgICAgIHwgIDIgLS0KIGluY2x1ZGUvbGludXgvZmJjb24uaCAgICAgICAgICAgIHwg IDIgKysKIDQgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMgYi9kcml2ZXJz L3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYwppbmRleCBhN2UyZDViODg5MTQuLjE0MjY4Njk1M2I3 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMKKysrIGIvZHJp dmVycy92aWRlby9mYmRldi9jb3JlL2ZiY29uLmMKQEAgLTMwNDYsNyArMzA0Niw3IEBAIHN0YXRp YyBpbnQgZmJjb25fbW9kZV9kZWxldGVkKHN0cnVjdCBmYl9pbmZvICppbmZvLAogfQogCiAjaWZk ZWYgQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORwotc3RhdGljIGludCBmYmNvbl91bmJpbmQo dm9pZCkKK3N0YXRpYyB2b2lkIGZiY29uX3VuYmluZCh2b2lkKQogewogCWludCByZXQ7CiAKQEAg LTMwNTUsMjUgKzMwNTUsMjEgQEAgc3RhdGljIGludCBmYmNvbl91bmJpbmQodm9pZCkKIAogCWlm ICghcmV0KQogCQlmYmNvbl9oYXNfY29uc29sZV9iaW5kID0gMDsKLQotCXJldHVybiByZXQ7CiB9 CiAjZWxzZQotc3RhdGljIGlubGluZSBpbnQgZmJjb25fdW5iaW5kKHZvaWQpCi17Ci0JcmV0dXJu IC1FSU5WQUw7Ci19CitzdGF0aWMgaW5saW5lIHZvaWQgZmJjb25fdW5iaW5kKHZvaWQpIHt9CiAj ZW5kaWYgLyogQ09ORklHX1ZUX0hXX0NPTlNPTEVfQklORElORyAqLwogCiAvKiBjYWxsZWQgd2l0 aCBjb25zb2xlX2xvY2sgaGVsZCAqLwotc3RhdGljIGludCBmYmNvbl9mYl91bmJpbmQoaW50IGlk eCkKK3ZvaWQgZmJjb25fZmJfdW5iaW5kKHN0cnVjdCBmYl9pbmZvICppbmZvKQogewogCWludCBp LCBuZXdfaWR4ID0gLTEsIHJldCA9IDA7CisJaW50IGlkeCA9IGluZm8tPm5vZGU7CiAKIAlXQVJO X0NPTlNPTEVfVU5MT0NLRUQoKTsKIAogCWlmICghZmJjb25faGFzX2NvbnNvbGVfYmluZCkKLQkJ cmV0dXJuIDA7CisJCXJldHVybjsKIAogCWZvciAoaSA9IGZpcnN0X2ZiX3ZjOyBpIDw9IGxhc3Rf ZmJfdmM7IGkrKykgewogCQlpZiAoY29uMmZiX21hcFtpXSAhPSBpZHggJiYKQEAgLTMxMDYsMTUg KzMxMDIsMTMgQEAgc3RhdGljIGludCBmYmNvbl9mYl91bmJpbmQoaW50IGlkeCkKIAkJCQkJCQkJ ICAgICBpZHgsIDApOwogCQkJCQlpZiAocmV0KSB7CiAJCQkJCQljb24yZmJfbWFwW2ldID0gaWR4 OwotCQkJCQkJcmV0dXJuIHJldDsKKwkJCQkJCXJldHVybjsKIAkJCQkJfQogCQkJCX0KIAkJCX0K IAkJfQotCQlyZXQgPSBmYmNvbl91bmJpbmQoKTsKKwkJZmJjb25fdW5iaW5kKCk7CiAJfQotCi0J cmV0dXJuIHJldDsKIH0KIAogLyogY2FsbGVkIHdpdGggY29uc29sZV9sb2NrIGhlbGQgKi8KQEAg LTMzNTIsMTAgKzMzNDYsNiBAQCBzdGF0aWMgaW50IGZiY29uX2V2ZW50X25vdGlmeShzdHJ1Y3Qg bm90aWZpZXJfYmxvY2sgKnNlbGYsCiAJCW1vZGUgPSBldmVudC0+ZGF0YTsKIAkJcmV0ID0gZmJj b25fbW9kZV9kZWxldGVkKGluZm8sIG1vZGUpOwogCQlicmVhazsKLQljYXNlIEZCX0VWRU5UX0ZC X1VOQklORDoKLQkJaWR4ID0gaW5mby0+bm9kZTsKLQkJcmV0ID0gZmJjb25fZmJfdW5iaW5kKGlk eCk7Ci0JCWJyZWFrOwogCWNhc2UgRkJfRVZFTlRfU0VUX0NPTlNPTEVfTUFQOgogCQkvKiBjYWxs ZWQgd2l0aCBjb25zb2xlIGxvY2sgaGVsZCAqLwogCQljb24yZmIgPSBldmVudC0+ZGF0YTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jIGIvZHJpdmVycy92aWRl by9mYmRldi9jb3JlL2ZibWVtLmMKaW5kZXggZDczNzYyMzI0Y2EyLi5mM2ZjMmU1YjE5M2MgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jCisrKyBiL2RyaXZlcnMv dmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jCkBAIC0xNzE2LDggKzE3MTYsNiBAQCBzdGF0aWMgaW50 IGRvX3JlZ2lzdGVyX2ZyYW1lYnVmZmVyKHN0cnVjdCBmYl9pbmZvICpmYl9pbmZvKQogCiBzdGF0 aWMgaW50IHVuYmluZF9jb25zb2xlKHN0cnVjdCBmYl9pbmZvICpmYl9pbmZvKQogewotCXN0cnVj dCBmYl9ldmVudCBldmVudDsKLQlpbnQgcmV0OwogCWludCBpID0gZmJfaW5mby0+bm9kZTsKIAog CWlmIChpIDwgMCB8fCBpID49IEZCX01BWCB8fCByZWdpc3RlcmVkX2ZiW2ldICE9IGZiX2luZm8p CkBAIC0xNzI1LDEyICsxNzIzLDExIEBAIHN0YXRpYyBpbnQgdW5iaW5kX2NvbnNvbGUoc3RydWN0 IGZiX2luZm8gKmZiX2luZm8pCiAKIAljb25zb2xlX2xvY2soKTsKIAlsb2NrX2ZiX2luZm8oZmJf aW5mbyk7Ci0JZXZlbnQuaW5mbyA9IGZiX2luZm87Ci0JcmV0ID0gZmJfbm90aWZpZXJfY2FsbF9j aGFpbihGQl9FVkVOVF9GQl9VTkJJTkQsICZldmVudCk7CisJZmJjb25fZmJfdW5iaW5kKGZiX2lu Zm8pOwogCXVubG9ja19mYl9pbmZvKGZiX2luZm8pOwogCWNvbnNvbGVfdW5sb2NrKCk7CiAKLQly ZXR1cm4gcmV0OworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IF9fdW5saW5rX2ZyYW1lYnVm ZmVyKHN0cnVjdCBmYl9pbmZvICpmYl9pbmZvKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv ZmIuaCBiL2luY2x1ZGUvbGludXgvZmIuaAppbmRleCBhYThmMTgxNjMxNTEuLmI2Y2UwNDFkOWUx MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mYi5oCisrKyBiL2luY2x1ZGUvbGludXgvZmIu aApAQCAtMTU4LDggKzE1OCw2IEBAIHN0cnVjdCBmYl9jdXJzb3JfdXNlciB7CiAjZGVmaW5lIEZC X0VWRU5UX0NPTkJMQU5LICAgICAgICAgICAgICAgMHgwQwogLyogICAgICBHZXQgZHJhd2luZyBy ZXF1aXJlbWVudHMgICAgICAgICovCiAjZGVmaW5lIEZCX0VWRU5UX0dFVF9SRVEgICAgICAgICAg ICAgICAgMHgwRAotLyogICAgICBVbmJpbmQgZnJvbSB0aGUgY29uc29sZSBpZiBwb3NzaWJsZSAq LwotI2RlZmluZSBGQl9FVkVOVF9GQl9VTkJJTkQgICAgICAgICAgICAgIDB4MEUKIC8qICAgICAg Q09OU09MRS1TUEVDSUZJQzogcmVtYXAgYWxsIGNvbnNvbGVzIHRvIG5ldyBmYiAtIGZvciB2Z2Ff c3dpdGNoZXJvbyAqLwogI2RlZmluZSBGQl9FVkVOVF9SRU1BUF9BTExfQ09OU09MRSAgICAgIDB4 MEYKIC8qICAgICAgQSBoYXJkd2FyZSBkaXNwbGF5IGJsYW5rIGVhcmx5IGNoYW5nZSBvY2N1cnJl ZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9mYmNvbi5oIGIvaW5jbHVkZS9saW51eC9m YmNvbi5oCmluZGV4IDk0YTcxZTllMTI1Ny4uMzhkNDRmZGI2ZDE0IDEwMDY0NAotLS0gYS9pbmNs dWRlL2xpbnV4L2ZiY29uLmgKKysrIGIvaW5jbHVkZS9saW51eC9mYmNvbi5oCkBAIC02LDExICs2 LDEzIEBAIHZvaWQgX19pbml0IGZiX2NvbnNvbGVfaW5pdCh2b2lkKTsKIHZvaWQgX19leGl0IGZi X2NvbnNvbGVfZXhpdCh2b2lkKTsKIGludCBmYmNvbl9mYl9yZWdpc3RlcmVkKHN0cnVjdCBmYl9p bmZvICppbmZvKTsKIHZvaWQgZmJjb25fZmJfdW5yZWdpc3RlcmVkKHN0cnVjdCBmYl9pbmZvICpp bmZvKTsKK3ZvaWQgZmJjb25fZmJfdW5iaW5kKHN0cnVjdCBmYl9pbmZvICppbmZvKTsKICNlbHNl CiBzdGF0aWMgaW5saW5lIHZvaWQgZmJfY29uc29sZV9pbml0KHZvaWQpIHt9CiBzdGF0aWMgaW5s aW5lIHZvaWQgZmJfY29uc29sZV9leGl0KHZvaWQpIHt9CiBzdGF0aWMgaW5saW5lIGludCBmYmNv bl9mYl9yZWdpc3RlcmVkKHN0cnVjdCBmYl9pbmZvICppbmZvKSB7IHJldHVybiAwOyB9CiBzdGF0 aWMgaW5saW5lIHZvaWQgZmJjb25fZmJfdW5yZWdpc3RlcmVkKHN0cnVjdCBmYl9pbmZvICppbmZv KSB7fQorc3RhdGljIGlubGluZSB2b2lkIGZiY29uX2ZiX3VuYmluZChzdHJ1Y3QgZmJfaW5mbyAq aW5mbykge30KICNlbmRpZgogCiAjZW5kaWYgLyogX0xJTlVYX0ZCQ09OX0ggKi8KLS0gCjIuMjAu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs