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 A7189C282E1 for ; Fri, 24 May 2019 08:55:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 65A502184B for ; Fri, 24 May 2019 08:55:25 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=ffwll.ch header.i=@ffwll.ch header.b="Yk9Dy+6X" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390139AbfEXIyd (ORCPT ); Fri, 24 May 2019 04:54:33 -0400 Received: from mail-ed1-f67.google.com ([209.85.208.67]:43601 "EHLO mail-ed1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390042AbfEXIy0 (ORCPT ); Fri, 24 May 2019 04:54:26 -0400 Received: by mail-ed1-f67.google.com with SMTP id w33so9959104edb.10 for ; Fri, 24 May 2019 01:54:25 -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=MsMckDsaIqnD4KrjektoSrtdcXW7brAmEcL0yv2AeQE=; b=Yk9Dy+6XzvOQQSvaeMbCRIim+Torm0BC9ukCEKBvDpi8mVFuZtyPzIE7yMbST9dfUZ 5WuyhhHquzqq9HX+MNeOrXXPVPVzjKcA91QUixVAO8T+rsOyyzhiSzAkD6kvRG+/CFTx xeh3uh2vWoEBahW5Dw5zvP1fNZ2SCTKZ8NA1o= 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=MsMckDsaIqnD4KrjektoSrtdcXW7brAmEcL0yv2AeQE=; b=IBS4qwAusiq0MmVa9oZAjAVh8+5nWXov5sF4bfHXEnqTFaNz+vlHF4V0oqxJIhwXph +zWf9ra5f6uOOLYWlYadNwtUuCEf5q0jxkri3z278mA4q0vspbSr+SdbtFvHqMVa1CPw 3+ToxfGPFPItZo/Gtxb0B+QXKSAmo9NyFORI5I03E6BLDaeX1choGgvYIrAyKcb0Eich oFajMr8D/BlxnxyVCeDrreLEAeR2wmBtXtaR8dh2hY1vsC6blKdVByzwhbluB0BqQt+n UT2gz7HSYtt0ApBEtaVLNUTsKz/34fSiTOZlh1chitQkn+hbdXHMcq9NzFL8sc0gG2ZE rnAA== X-Gm-Message-State: APjAAAWcox5UJvCOEUV+w1FO/gzDZJRuAdZ0hnN8YQOup40yStZxCSVI qGquYr8yGt7UTA2tq8roj05Q71exc7E= X-Google-Smtp-Source: APXvYqyMxU7qUVQTCqbtG6PoQ2XI/ssDC7It8sHeod2GyIPK9cJ5Cir1tkf908701unGKapk8KiBCA== X-Received: by 2002:a50:8866:: with SMTP id c35mr1110008edc.35.1558688064330; Fri, 24 May 2019 01:54:24 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:569e:0:3106:d637:d723:e855]) by smtp.gmail.com with ESMTPSA id 96sm567082edq.68.2019.05.24.01.54.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 May 2019 01:54:23 -0700 (PDT) From: Daniel Vetter To: LKML Cc: Intel Graphics Development , DRI Development , Daniel Vetter , Daniel Vetter , Bartlomiej Zolnierkiewicz , 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 , linux-fbdev@vger.kernel.org Subject: [PATCH 17/33] fbcon: call fbcon_fb_bind directly Date: Fri, 24 May 2019 10:53:38 +0200 Message-Id: <20190524085354.27411-18-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190524085354.27411-1-daniel.vetter@ffwll.ch> References: <20190524085354.27411-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 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 c3353db35adc..f114b4c88796 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: Fri, 24 May 2019 08:53:38 +0000 Subject: [PATCH 17/33] fbcon: call fbcon_fb_bind directly Message-Id: <20190524085354.27411-18-daniel.vetter@ffwll.ch> List-Id: References: <20190524085354.27411-1-daniel.vetter@ffwll.ch> In-Reply-To: <20190524085354.27411-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: LKML Cc: linux-fbdev@vger.kernel.org, Sergey Senozhatsky , Kees Cook , Bartlomiej Zolnierkiewicz , Daniel Vetter , Intel Graphics Development , DRI Development , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Yisheng Xie , Mikulas Patocka , Thomas Zimmermann , Daniel Vetter , 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 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 c3353db35adc..f114b4c88796 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: Fri, 24 May 2019 10:53:38 +0200 Message-ID: <20190524085354.27411-18-daniel.vetter@ffwll.ch> References: <20190524085354.27411-1-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190524085354.27411-1-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: LKML Cc: linux-fbdev@vger.kernel.org, Sergey Senozhatsky , Kees Cook , Bartlomiej Zolnierkiewicz , Daniel Vetter , Intel Graphics Development , DRI Development , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= , Yisheng Xie , Mikulas Patocka , Thomas Zimmermann , Daniel Vetter , Peter Rosin , Konstantin Khorenko List-Id: dri-devel@lists.freedesktop.org QWxzbyByZW1vdmUgdGhlIGVycm9yIHJldHVybiB2YWx1ZS4gVGhhdCdzIGFsbCBlcnJvcnMgZm9y IGVpdGhlcgpkcml2ZXIgYnVncyAodHJ5aW5nIHRvIHVuYmluZCBzb21ldGhpbmcgdGhhdCBpc24n dCBib3VuZCksIG9yIGVycm9ycwpvZiB0aGUgbmV3IGRyaXZlciB0aGF0IHdpbGwgdGFrZSBvdmVy LgoKVGhlcmUncyBub3RoaW5nIHRoZSBvdXRnb2luZyBkcml2ZXIgY2FuIGRvIGFib3V0IHRoaXMg YW55d2F5LCBzbwpzd2l0Y2ggb3ZlciB0byB2b2lkLgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZl dHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+CkNjOiBCYXJ0bG9taWVqIFpvbG5pZXJraWV3 aWN6IDxiLnpvbG5pZXJraWVAc2Ftc3VuZy5jb20+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwu dmV0dGVyQGZmd2xsLmNoPgpDYzogSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4K Q2M6IFNlcmdleSBTZW5vemhhdHNreSA8c2VyZ2V5LnNlbm96aGF0c2t5QGdtYWlsLmNvbT4KQ2M6 IFBldGVyIFJvc2luIDxwZWRhQGF4ZW50aWEuc2U+CkNjOiBLZWVzIENvb2sgPGtlZXNjb29rQGNo cm9taXVtLm9yZz4KQ2M6IEtvbnN0YW50aW4gS2hvcmVua28gPGtob3JlbmtvQHZpcnR1b3p6by5j b20+CkNjOiBZaXNoZW5nIFhpZSA8eXN4aWVAZm94bWFpbC5jb20+CkNjOiAiTWljaGHFgiBNaXJv c8WCYXciIDxtaXJxLWxpbnV4QHJlcmUucW1xbS5wbD4KQ2M6IE1pa3VsYXMgUGF0b2NrYSA8bXBh dG9ja2FAcmVkaGF0LmNvbT4KQ2M6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNl LmRlPgpDYzogbGludXgtZmJkZXZAdmdlci5rZXJuZWwub3JnCi0tLQogZHJpdmVycy92aWRlby9m YmRldi9jb3JlL2ZiY29uLmMgfCAyNCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMv dmlkZW8vZmJkZXYvY29yZS9mYm1lbS5jIHwgIDcgKystLS0tLQogaW5jbHVkZS9saW51eC9mYi5o ICAgICAgICAgICAgICAgfCAgMiAtLQogaW5jbHVkZS9saW51eC9mYmNvbi5oICAgICAgICAgICAg fCAgMiArKwogNCBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYyBiL2RyaXZl cnMvdmlkZW8vZmJkZXYvY29yZS9mYmNvbi5jCmluZGV4IGMzMzUzZGIzNWFkYy4uZjExNGI0Yzg4 Nzk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYworKysgYi9k cml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJjb24uYwpAQCAtMzA0Niw3ICszMDQ2LDcgQEAgc3Rh dGljIGludCBmYmNvbl9tb2RlX2RlbGV0ZWQoc3RydWN0IGZiX2luZm8gKmluZm8sCiB9CiAKICNp ZmRlZiBDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HCi1zdGF0aWMgaW50IGZiY29uX3VuYmlu ZCh2b2lkKQorc3RhdGljIHZvaWQgZmJjb25fdW5iaW5kKHZvaWQpCiB7CiAJaW50IHJldDsKIApA QCAtMzA1NSwyNSArMzA1NSwyMSBAQCBzdGF0aWMgaW50IGZiY29uX3VuYmluZCh2b2lkKQogCiAJ aWYgKCFyZXQpCiAJCWZiY29uX2hhc19jb25zb2xlX2JpbmQgPSAwOwotCi0JcmV0dXJuIHJldDsK IH0KICNlbHNlCi1zdGF0aWMgaW5saW5lIGludCBmYmNvbl91bmJpbmQodm9pZCkKLXsKLQlyZXR1 cm4gLUVJTlZBTDsKLX0KK3N0YXRpYyBpbmxpbmUgdm9pZCBmYmNvbl91bmJpbmQodm9pZCkge30K ICNlbmRpZiAvKiBDT05GSUdfVlRfSFdfQ09OU09MRV9CSU5ESU5HICovCiAKIC8qIGNhbGxlZCB3 aXRoIGNvbnNvbGVfbG9jayBoZWxkICovCi1zdGF0aWMgaW50IGZiY29uX2ZiX3VuYmluZChpbnQg aWR4KQordm9pZCBmYmNvbl9mYl91bmJpbmQoc3RydWN0IGZiX2luZm8gKmluZm8pCiB7CiAJaW50 IGksIG5ld19pZHggPSAtMSwgcmV0ID0gMDsKKwlpbnQgaWR4ID0gaW5mby0+bm9kZTsKIAogCVdB Uk5fQ09OU09MRV9VTkxPQ0tFRCgpOwogCiAJaWYgKCFmYmNvbl9oYXNfY29uc29sZV9iaW5kKQot CQlyZXR1cm4gMDsKKwkJcmV0dXJuOwogCiAJZm9yIChpID0gZmlyc3RfZmJfdmM7IGkgPD0gbGFz dF9mYl92YzsgaSsrKSB7CiAJCWlmIChjb24yZmJfbWFwW2ldICE9IGlkeCAmJgpAQCAtMzEwNiwx NSArMzEwMiwxMyBAQCBzdGF0aWMgaW50IGZiY29uX2ZiX3VuYmluZChpbnQgaWR4KQogCQkJCQkJ CQkgICAgIGlkeCwgMCk7CiAJCQkJCWlmIChyZXQpIHsKIAkJCQkJCWNvbjJmYl9tYXBbaV0gPSBp ZHg7Ci0JCQkJCQlyZXR1cm4gcmV0OworCQkJCQkJcmV0dXJuOwogCQkJCQl9CiAJCQkJfQogCQkJ fQogCQl9Ci0JCXJldCA9IGZiY29uX3VuYmluZCgpOworCQlmYmNvbl91bmJpbmQoKTsKIAl9Ci0K LQlyZXR1cm4gcmV0OwogfQogCiAvKiBjYWxsZWQgd2l0aCBjb25zb2xlX2xvY2sgaGVsZCAqLwpA QCAtMzM1MiwxMCArMzM0Niw2IEBAIHN0YXRpYyBpbnQgZmJjb25fZXZlbnRfbm90aWZ5KHN0cnVj dCBub3RpZmllcl9ibG9jayAqc2VsZiwKIAkJbW9kZSA9IGV2ZW50LT5kYXRhOwogCQlyZXQgPSBm YmNvbl9tb2RlX2RlbGV0ZWQoaW5mbywgbW9kZSk7CiAJCWJyZWFrOwotCWNhc2UgRkJfRVZFTlRf RkJfVU5CSU5EOgotCQlpZHggPSBpbmZvLT5ub2RlOwotCQlyZXQgPSBmYmNvbl9mYl91bmJpbmQo aWR4KTsKLQkJYnJlYWs7CiAJY2FzZSBGQl9FVkVOVF9TRVRfQ09OU09MRV9NQVA6CiAJCS8qIGNh bGxlZCB3aXRoIGNvbnNvbGUgbG9jayBoZWxkICovCiAJCWNvbjJmYiA9IGV2ZW50LT5kYXRhOwpk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMgYi9kcml2ZXJzL3Zp ZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYwppbmRleCBkNzM3NjIzMjRjYTIuLmYzZmMyZTViMTkzYyAx MDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMKKysrIGIvZHJpdmVy cy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMKQEAgLTE3MTYsOCArMTcxNiw2IEBAIHN0YXRpYyBp bnQgZG9fcmVnaXN0ZXJfZnJhbWVidWZmZXIoc3RydWN0IGZiX2luZm8gKmZiX2luZm8pCiAKIHN0 YXRpYyBpbnQgdW5iaW5kX2NvbnNvbGUoc3RydWN0IGZiX2luZm8gKmZiX2luZm8pCiB7Ci0Jc3Ry dWN0IGZiX2V2ZW50IGV2ZW50OwotCWludCByZXQ7CiAJaW50IGkgPSBmYl9pbmZvLT5ub2RlOwog CiAJaWYgKGkgPCAwIHx8IGkgPj0gRkJfTUFYIHx8IHJlZ2lzdGVyZWRfZmJbaV0gIT0gZmJfaW5m bykKQEAgLTE3MjUsMTIgKzE3MjMsMTEgQEAgc3RhdGljIGludCB1bmJpbmRfY29uc29sZShzdHJ1 Y3QgZmJfaW5mbyAqZmJfaW5mbykKIAogCWNvbnNvbGVfbG9jaygpOwogCWxvY2tfZmJfaW5mbyhm Yl9pbmZvKTsKLQlldmVudC5pbmZvID0gZmJfaW5mbzsKLQlyZXQgPSBmYl9ub3RpZmllcl9jYWxs X2NoYWluKEZCX0VWRU5UX0ZCX1VOQklORCwgJmV2ZW50KTsKKwlmYmNvbl9mYl91bmJpbmQoZmJf aW5mbyk7CiAJdW5sb2NrX2ZiX2luZm8oZmJfaW5mbyk7CiAJY29uc29sZV91bmxvY2soKTsKIAot CXJldHVybiByZXQ7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgX191bmxpbmtfZnJhbWVi dWZmZXIoc3RydWN0IGZiX2luZm8gKmZiX2luZm8pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51 eC9mYi5oIGIvaW5jbHVkZS9saW51eC9mYi5oCmluZGV4IGFhOGYxODE2MzE1MS4uYjZjZTA0MWQ5 ZTEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZiLmgKKysrIGIvaW5jbHVkZS9saW51eC9m Yi5oCkBAIC0xNTgsOCArMTU4LDYgQEAgc3RydWN0IGZiX2N1cnNvcl91c2VyIHsKICNkZWZpbmUg RkJfRVZFTlRfQ09OQkxBTksgICAgICAgICAgICAgICAweDBDCiAvKiAgICAgIEdldCBkcmF3aW5n IHJlcXVpcmVtZW50cyAgICAgICAgKi8KICNkZWZpbmUgRkJfRVZFTlRfR0VUX1JFUSAgICAgICAg ICAgICAgICAweDBECi0vKiAgICAgIFVuYmluZCBmcm9tIHRoZSBjb25zb2xlIGlmIHBvc3NpYmxl ICovCi0jZGVmaW5lIEZCX0VWRU5UX0ZCX1VOQklORCAgICAgICAgICAgICAgMHgwRQogLyogICAg ICBDT05TT0xFLVNQRUNJRklDOiByZW1hcCBhbGwgY29uc29sZXMgdG8gbmV3IGZiIC0gZm9yIHZn YV9zd2l0Y2hlcm9vICovCiAjZGVmaW5lIEZCX0VWRU5UX1JFTUFQX0FMTF9DT05TT0xFICAgICAg MHgwRgogLyogICAgICBBIGhhcmR3YXJlIGRpc3BsYXkgYmxhbmsgZWFybHkgY2hhbmdlIG9jY3Vy cmVkICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZiY29uLmggYi9pbmNsdWRlL2xpbnV4 L2ZiY29uLmgKaW5kZXggOTRhNzFlOWUxMjU3Li4zOGQ0NGZkYjZkMTQgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvZmJjb24uaAorKysgYi9pbmNsdWRlL2xpbnV4L2ZiY29uLmgKQEAgLTYsMTEg KzYsMTMgQEAgdm9pZCBfX2luaXQgZmJfY29uc29sZV9pbml0KHZvaWQpOwogdm9pZCBfX2V4aXQg ZmJfY29uc29sZV9leGl0KHZvaWQpOwogaW50IGZiY29uX2ZiX3JlZ2lzdGVyZWQoc3RydWN0IGZi X2luZm8gKmluZm8pOwogdm9pZCBmYmNvbl9mYl91bnJlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8g KmluZm8pOwordm9pZCBmYmNvbl9mYl91bmJpbmQoc3RydWN0IGZiX2luZm8gKmluZm8pOwogI2Vs c2UKIHN0YXRpYyBpbmxpbmUgdm9pZCBmYl9jb25zb2xlX2luaXQodm9pZCkge30KIHN0YXRpYyBp bmxpbmUgdm9pZCBmYl9jb25zb2xlX2V4aXQodm9pZCkge30KIHN0YXRpYyBpbmxpbmUgaW50IGZi Y29uX2ZiX3JlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8gKmluZm8pIHsgcmV0dXJuIDA7IH0KIHN0 YXRpYyBpbmxpbmUgdm9pZCBmYmNvbl9mYl91bnJlZ2lzdGVyZWQoc3RydWN0IGZiX2luZm8gKmlu Zm8pIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgZmJjb25fZmJfdW5iaW5kKHN0cnVjdCBmYl9pbmZv ICppbmZvKSB7fQogI2VuZGlmCiAKICNlbmRpZiAvKiBfTElOVVhfRkJDT05fSCAqLwotLSAKMi4y MC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=