From mboxrd@z Thu Jan 1 00:00:00 1970 From: linus.walleij@linaro.org (Linus Walleij) Date: Mon, 12 Nov 2018 13:31:13 +0100 Subject: [PATCH 1/3 v6] ARM: dts: Modernize the Vexpress PL111 integration In-Reply-To: <20181112123115.6176-1-linus.walleij@linaro.org> References: <20181112123115.6176-1-linus.walleij@linaro.org> Message-ID: <20181112123115.6176-2-linus.walleij@linaro.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org The Versatile Express was submitted with the actual display bridges unconnected (but defined in the device tree) and mock "panels" encoded in the device tree node of the PL111 controller. This doesn't even remotely describe the actual Versatile Express hardware. Exploit the SiI9022 bridge by connecting the PL111 pads to it, making it use EDID or fallback values to drive the monitor. The also has to use the reserved memory through the CMA pool rather than by open coding a memory region and remapping it explicitly in the driver. To achieve this, a reserved-memory node must exist in the root of the device tree, so we need to pull that out of the motherboard .dtsi include files, and push it into each top-level device tree instead. We do the same manouver for all the Versatile Express boards, taking into account the different location of the video RAM depending on which chip select is used on each platform. This plays nicely with the new PL111 DRM driver and follows the standard ways of assigning bridges and memory pools for graphics. Cc: Sudeep Holla Cc: Lorenzo Pieralisi Cc: Liviu Dudau Cc: Mali DP Maintainers Cc: Robin Murphy Signed-off-by: Linus Walleij --- ChangeLog v5->v6: - Change the panel in the RTSMv8 to the simple panel "arm,rtsmv8-panel" simply. ChangeLog v4->v5: - Fix up the RTSMv8 AEM VE by using the new simple VGA panel I invented in the DRI simple panel. - NOTE: This patch depends at runtime on the DRM simple panel patch "drm/panel: simple: Support simple VGA panels" ChangeLog v3->v4: - Fix the ARM and ARM64 shared vexpress-v2m-rc1.dtsi file address-cells etc so that the ports do not give DTC warnings anymore. - Fixed up the CA53 DTS: use the right chip select base at 0x18000000. - Fixed up the Real-Time Systems Models Virtual Executive RTSMv8 AEM VE: - Added the I2C interface (whether implemented in the emulator or not) - Fixed the chip select of the memory node to the right memory base 0x18000000. - Add right address-cells and size-cells to the vexpress-v2m.dtsi dvi port as well. - Create two endpoints for the motherboard and the core tile in the vexpress-v2m.dtsi. This is just used by the CA9 VExpress. Tested on both QEMU and the actual hardware with the DRM driver. This removes the last warnings from the DTC. ChangeLog v2->v3: - Add some reg = <0>; to the ports to make the DTC happy. - Add reserved memory node to arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts as well. ChangeLog v1->v2: - Fix up the memory address for the -rs1 tiles to 0x18000000 - Drop a bunch of extraneous reg props from the DVI adapter --- arch/arm/boot/dts/vexpress-v2m-rs1.dtsi | 49 +++++---------- arch/arm/boot/dts/vexpress-v2m.dtsi | 63 +++++++++---------- arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 14 +++++ arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 14 +++++ arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 14 +++++ arch/arm/boot/dts/vexpress-v2p-ca9.dts | 43 ++++++------- arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts | 23 +++++++ .../boot/dts/arm/rtsm_ve-motherboard.dtsi | 37 ++--------- .../boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts | 14 +++++ 9 files changed, 150 insertions(+), 121 deletions(-) diff --git a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi index 4488c8fe213a..a9569d15de41 100644 --- a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi +++ b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi @@ -43,11 +43,6 @@ bank-width = <4>; }; - v2m_video_ram: vram at 2,00000000 { - compatible = "arm,vexpress-vram"; - reg = <2 0x00000000 0x00800000>; - }; - ethernet at 2,02000000 { compatible = "smsc,lan9118", "smsc,lan9115"; reg = <2 0x02000000 0x10000>; @@ -223,13 +218,24 @@ v2m_i2c_dvi: i2c at 160000 { compatible = "arm,versatile-i2c"; reg = <0x160000 0x1000>; - #address-cells = <1>; #size-cells = <0>; dvi-transmitter at 39 { compatible = "sil,sii9022-tpi", "sil,sii9022"; reg = <0x39>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port at 0 { + reg = <0>; + dvi_bridge_in: endpoint { + remote-endpoint = <&clcd_pads>; + }; + }; + }; }; dvi-transmitter at 60 { @@ -260,37 +266,16 @@ interrupts = <14>; clocks = <&v2m_oscclk1>, <&smbclk>; clock-names = "clcdclk", "apb_pclk"; - memory-region = <&v2m_video_ram>; - max-memory-bandwidth = <50350000>; /* 16bpp @ 25.175MHz */ + /* 800x600 16bpp @36MHz works fine */ + max-memory-bandwidth = <54000000>; + memory-region = <&vram>; port { - v2m_clcd_pads: endpoint { - remote-endpoint = <&v2m_clcd_panel>; + clcd_pads: endpoint { + remote-endpoint = <&dvi_bridge_in>; arm,pl11x,tft-r0g0b0-pads = <0 8 16>; }; }; - - panel { - compatible = "panel-dpi"; - - port { - v2m_clcd_panel: endpoint { - remote-endpoint = <&v2m_clcd_pads>; - }; - }; - - panel-timing { - clock-frequency = <25175000>; - hactive = <640>; - hback-porch = <40>; - hfront-porch = <24>; - hsync-len = <96>; - vactive = <480>; - vback-porch = <32>; - vfront-porch = <11>; - vsync-len = <2>; - }; - }; }; }; diff --git a/arch/arm/boot/dts/vexpress-v2m.dtsi b/arch/arm/boot/dts/vexpress-v2m.dtsi index 4db42f6326a3..fd42e1194179 100644 --- a/arch/arm/boot/dts/vexpress-v2m.dtsi +++ b/arch/arm/boot/dts/vexpress-v2m.dtsi @@ -43,11 +43,6 @@ bank-width = <4>; }; - v2m_video_ram: vram at 3,00000000 { - compatible = "arm,vexpress-vram"; - reg = <3 0x00000000 0x00800000>; - }; - ethernet at 3,02000000 { compatible = "smsc,lan9118", "smsc,lan9115"; reg = <3 0x02000000 0x10000>; @@ -223,13 +218,37 @@ v2m_i2c_dvi: i2c at 16000 { compatible = "arm,versatile-i2c"; reg = <0x16000 0x1000>; - #address-cells = <1>; #size-cells = <0>; dvi-transmitter at 39 { compatible = "sil,sii9022-tpi", "sil,sii9022"; reg = <0x39>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* + * Both the core tile and the motherboard routes their output + * pads to this transmitter. The motherboard system controller + * can select one of them as input using a mux register in + * "arm,vexpress-muxfpga". The Vexpress with the CA9 core tile is + * the only platform with this specific set-up. + */ + port at 0 { + reg = <0>; + dvi_bridge_in_ct: endpoint { + remote-endpoint = <&clcd_pads_ct>; + }; + }; + port at 1 { + reg = <1>; + dvi_bridge_in_mb: endpoint { + remote-endpoint = <&clcd_pads_mb>; + }; + }; + }; }; dvi-transmitter at 60 { @@ -253,6 +272,7 @@ reg-shift = <2>; }; + clcd at 1f000 { compatible = "arm,pl111", "arm,primecell"; reg = <0x1f000 0x1000>; @@ -260,37 +280,16 @@ interrupts = <14>; clocks = <&v2m_oscclk1>, <&smbclk>; clock-names = "clcdclk", "apb_pclk"; - memory-region = <&v2m_video_ram>; - max-memory-bandwidth = <50350000>; /* 16bpp @ 25.175MHz */ + /* 800x600 16bpp @36MHz works fine */ + max-memory-bandwidth = <54000000>; + memory-region = <&vram>; port { - v2m_clcd_pads: endpoint { - remote-endpoint = <&v2m_clcd_panel>; + clcd_pads_mb: endpoint { + remote-endpoint = <&dvi_bridge_in_mb>; arm,pl11x,tft-r0g0b0-pads = <0 8 16>; }; }; - - panel { - compatible = "panel-dpi"; - - port { - v2m_clcd_panel: endpoint { - remote-endpoint = <&v2m_clcd_pads>; - }; - }; - - panel-timing { - clock-frequency = <25175000>; - hactive = <640>; - hback-porch = <40>; - hfront-porch = <24>; - hsync-len = <96>; - vactive = <480>; - vback-porch = <32>; - vfront-porch = <11>; - vsync-len = <2>; - }; - }; }; }; diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts index 3971427a105b..0dc4277d5f8b 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts @@ -53,6 +53,20 @@ reg = <0 0x80000000 0 0x40000000>; }; + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + /* Chipselect 2 is physically at 0x18000000 */ + vram: vram at 18000000 { + /* 8 MB of designated video RAM */ + compatible = "shared-dma-pool"; + reg = <0 0x18000000 0 0x00800000>; + no-map; + }; + }; + hdlcd at 2b000000 { compatible = "arm,hdlcd"; reg = <0 0x2b000000 0 0x1000>; diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts index ac6b90e9d806..a5136b1adaa2 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts @@ -104,6 +104,20 @@ reg = <0 0x80000000 0 0x40000000>; }; + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + /* Chipselect 2 is physically at 0x18000000 */ + vram: vram at 18000000 { + /* 8 MB of designated video RAM */ + compatible = "shared-dma-pool"; + reg = <0 0x18000000 0 0x00800000>; + no-map; + }; + }; + wdt at 2a490000 { compatible = "arm,sp805", "arm,primecell"; reg = <0 0x2a490000 0 0x1000>; diff --git a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts index e5b4a7570a01..d5b47d526f9e 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts @@ -55,6 +55,20 @@ reg = <0x80000000 0x40000000>; }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* Chipselect 2 is physically at 0x18000000 */ + vram: vram at 18000000 { + /* 8 MB of designated video RAM */ + compatible = "shared-dma-pool"; + reg = <0x18000000 0x00800000>; + no-map; + }; + }; + hdlcd at 2a110000 { compatible = "arm,hdlcd"; reg = <0x2a110000 0x1000>; diff --git a/arch/arm/boot/dts/vexpress-v2p-ca9.dts b/arch/arm/boot/dts/vexpress-v2p-ca9.dts index 7ec3dac1f61d..7f019e0eee84 100644 --- a/arch/arm/boot/dts/vexpress-v2p-ca9.dts +++ b/arch/arm/boot/dts/vexpress-v2p-ca9.dts @@ -69,6 +69,20 @@ reg = <0x60000000 0x40000000>; }; + reserved-memory { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + /* Chipselect 3 is physically at 0x4c000000 */ + vram: vram at 4c000000 { + /* 8 MB of designated video RAM */ + compatible = "shared-dma-pool"; + reg = <0x4c000000 0x00800000>; + no-map; + }; + }; + clcd at 10020000 { compatible = "arm,pl111", "arm,primecell"; reg = <0x10020000 0x1000>; @@ -76,36 +90,15 @@ interrupts = <0 44 4>; clocks = <&oscclk1>, <&oscclk2>; clock-names = "clcdclk", "apb_pclk"; - max-memory-bandwidth = <130000000>; /* 16bpp @ 63.5MHz */ + /* 1024x768 16bpp @65MHz */ + max-memory-bandwidth = <95000000>; port { - clcd_pads: endpoint { - remote-endpoint = <&clcd_panel>; + clcd_pads_ct: endpoint { + remote-endpoint = <&dvi_bridge_in_ct>; arm,pl11x,tft-r0g0b0-pads = <0 8 16>; }; }; - - panel { - compatible = "panel-dpi"; - - port { - clcd_panel: endpoint { - remote-endpoint = <&clcd_pads>; - }; - }; - - panel-timing { - clock-frequency = <63500127>; - hactive = <1024>; - hback-porch = <152>; - hfront-porch = <48>; - hsync-len = <104>; - vactive = <768>; - vback-porch = <23>; - vfront-porch = <3>; - vsync-len = <4>; - }; - }; }; memory-controller at 100e0000 { diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts index 602f63f72c37..fe4fda473c0a 100644 --- a/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts +++ b/arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts @@ -78,6 +78,20 @@ <0x00000008 0x80000000 0 0x80000000>; }; + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + /* Chipselect 2,00000000 is physically at 0x18000000 */ + vram: vram at 18000000 { + /* 8 MB of designated video RAM */ + compatible = "shared-dma-pool"; + reg = <0x00000000 0x18000000 0 0x00800000>; + no-map; + }; + }; + gic: interrupt-controller at 2c001000 { compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic"; #interrupt-cells = <3>; @@ -107,6 +121,15 @@ <0 63 4>; }; + panel { + compatible = "arm,rtsm-display"; + port { + panel_in: endpoint { + remote-endpoint = <&clcd_pads>; + }; + }; + }; + smb at 8000000 { compatible = "simple-bus"; diff --git a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi index d2dbc3f39263..b25f3cbd3da8 100644 --- a/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi +++ b/arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi @@ -24,11 +24,6 @@ bank-width = <4>; }; - v2m_video_ram: vram at 2,00000000 { - compatible = "arm,vexpress-vram"; - reg = <2 0x00000000 0x00800000>; - }; - ethernet at 2,02000000 { compatible = "smsc,lan91c111"; reg = <2 0x02000000 0x10000>; @@ -187,38 +182,16 @@ interrupts = <14>; clocks = <&v2m_oscclk1>, <&v2m_clk24mhz>; clock-names = "clcdclk", "apb_pclk"; - arm,pl11x,framebuffer = <0x18000000 0x00180000>; - memory-region = <&v2m_video_ram>; - max-memory-bandwidth = <130000000>; /* 16bpp @ 63.5MHz */ + /* 800x600 16bpp @36MHz works fine */ + max-memory-bandwidth = <54000000>; + memory-region = <&vram>; port { - v2m_clcd_pads: endpoint { - remote-endpoint = <&v2m_clcd_panel>; + clcd_pads: endpoint { + remote-endpoint = <&panel_in>; arm,pl11x,tft-r0g0b0-pads = <0 8 16>; }; }; - - panel { - compatible = "panel-dpi"; - - port { - v2m_clcd_panel: endpoint { - remote-endpoint = <&v2m_clcd_pads>; - }; - }; - - panel-timing { - clock-frequency = <63500127>; - hactive = <1024>; - hback-porch = <152>; - hfront-porch = <48>; - hsync-len = <104>; - vactive = <768>; - vback-porch = <23>; - vfront-porch = <3>; - vsync-len = <4>; - }; - }; }; virtio-block at 130000 { diff --git a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts index 38880380e0fa..8981c3d2ff18 100644 --- a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts +++ b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts @@ -65,6 +65,20 @@ reg = <0 0x80000000 0 0x80000000>; /* 2GB @ 2GB */ }; + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + + /* Chipselect 2 is physically at 0x18000000 */ + vram: vram at 18000000 { + /* 8 MB of designated video RAM */ + compatible = "shared-dma-pool"; + reg = <0 0x18000000 0 0x00800000>; + no-map; + }; + }; + gic: interrupt-controller at 2c001000 { compatible = "arm,gic-400"; #interrupt-cells = <3>; -- 2.17.2 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Walleij Subject: [PATCH 1/3 v6] ARM: dts: Modernize the Vexpress PL111 integration Date: Mon, 12 Nov 2018 13:31:13 +0100 Message-ID: <20181112123115.6176-2-linus.walleij@linaro.org> References: <20181112123115.6176-1-linus.walleij@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by gabe.freedesktop.org (Postfix) with ESMTPS id BA8BE89C17 for ; Mon, 12 Nov 2018 12:31:25 +0000 (UTC) Received: by mail-lf1-x142.google.com with SMTP id l10so2415482lfh.9 for ; Mon, 12 Nov 2018 04:31:25 -0800 (PST) In-Reply-To: <20181112123115.6176-1-linus.walleij@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sudeep Holla , Lorenzo Pieralisi , linux-arm-kernel@lists.infradead.org Cc: Liviu Dudau , dri-devel@lists.freedesktop.org, Mali DP Maintainers , Robin Murphy List-Id: dri-devel@lists.freedesktop.org VGhlIFZlcnNhdGlsZSBFeHByZXNzIHdhcyBzdWJtaXR0ZWQgd2l0aCB0aGUgYWN0dWFsIGRpc3Bs YXkKYnJpZGdlcyB1bmNvbm5lY3RlZCAoYnV0IGRlZmluZWQgaW4gdGhlIGRldmljZSB0cmVlKSBh bmQKbW9jayAicGFuZWxzIiBlbmNvZGVkIGluIHRoZSBkZXZpY2UgdHJlZSBub2RlIG9mIHRoZSBQ TDExMQpjb250cm9sbGVyLgoKVGhpcyBkb2Vzbid0IGV2ZW4gcmVtb3RlbHkgZGVzY3JpYmUgdGhl IGFjdHVhbCBWZXJzYXRpbGUKRXhwcmVzcyBoYXJkd2FyZS4gRXhwbG9pdCB0aGUgU2lJOTAyMiBi cmlkZ2UgYnkgY29ubmVjdGluZwp0aGUgUEwxMTEgcGFkcyB0byBpdCwgbWFraW5nIGl0IHVzZSBF RElEIG9yIGZhbGxiYWNrIHZhbHVlcwp0byBkcml2ZSB0aGUgbW9uaXRvci4KClRoZSAgYWxzbyBo YXMgdG8gdXNlIHRoZSByZXNlcnZlZCBtZW1vcnkgdGhyb3VnaCB0aGUKQ01BIHBvb2wgcmF0aGVy IHRoYW4gYnkgb3BlbiBjb2RpbmcgYSBtZW1vcnkgcmVnaW9uIGFuZApyZW1hcHBpbmcgaXQgZXhw bGljaXRseSBpbiB0aGUgZHJpdmVyLiBUbyBhY2hpZXZlIHRoaXMsCmEgcmVzZXJ2ZWQtbWVtb3J5 IG5vZGUgbXVzdCBleGlzdCBpbiB0aGUgcm9vdCBvZiB0aGUKZGV2aWNlIHRyZWUsIHNvIHdlIG5l ZWQgdG8gcHVsbCB0aGF0IG91dCBvZiB0aGUKbW90aGVyYm9hcmQgLmR0c2kgaW5jbHVkZSBmaWxl cywgYW5kIHB1c2ggaXQgaW50byBlYWNoCnRvcC1sZXZlbCBkZXZpY2UgdHJlZSBpbnN0ZWFkLgoK V2UgZG8gdGhlIHNhbWUgbWFub3V2ZXIgZm9yIGFsbCB0aGUgVmVyc2F0aWxlIEV4cHJlc3MKYm9h cmRzLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBkaWZmZXJlbnQgbG9jYXRpb24gb2YgdGhlCnZp ZGVvIFJBTSBkZXBlbmRpbmcgb24gd2hpY2ggY2hpcCBzZWxlY3QgaXMgdXNlZCBvbgplYWNoIHBs YXRmb3JtLgoKVGhpcyBwbGF5cyBuaWNlbHkgd2l0aCB0aGUgbmV3IFBMMTExIERSTSBkcml2ZXIg YW5kCmZvbGxvd3MgdGhlIHN0YW5kYXJkIHdheXMgb2YgYXNzaWduaW5nIGJyaWRnZXMgYW5kCm1l bW9yeSBwb29scyBmb3IgZ3JhcGhpY3MuCgpDYzogU3VkZWVwIEhvbGxhIDxzdWRlZXAuaG9sbGFA YXJtLmNvbT4KQ2M6IExvcmVuem8gUGllcmFsaXNpIDxsb3JlbnpvLnBpZXJhbGlzaUBhcm0uY29t PgpDYzogTGl2aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+CkNjOiBNYWxpIERQIE1haW50 YWluZXJzIDxtYWxpZHBAZm9zcy5hcm0uY29tPgpDYzogUm9iaW4gTXVycGh5IDxyb2Jpbi5tdXJw aHlAYXJtLmNvbT4KU2lnbmVkLW9mZi1ieTogTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBs aW5hcm8ub3JnPgotLS0KQ2hhbmdlTG9nIHY1LT52NjoKLSBDaGFuZ2UgdGhlIHBhbmVsIGluIHRo ZSBSVFNNdjggdG8gdGhlIHNpbXBsZSBwYW5lbAogICJhcm0scnRzbXY4LXBhbmVsIiBzaW1wbHku CkNoYW5nZUxvZyB2NC0+djU6Ci0gRml4IHVwIHRoZSBSVFNNdjggQUVNIFZFIGJ5IHVzaW5nIHRo ZSBuZXcgc2ltcGxlIFZHQQogIHBhbmVsIEkgaW52ZW50ZWQgaW4gdGhlIERSSSBzaW1wbGUgcGFu ZWwuCi0gTk9URTogVGhpcyBwYXRjaCBkZXBlbmRzIGF0IHJ1bnRpbWUgb24gdGhlIERSTSBzaW1w bGUKICBwYW5lbCBwYXRjaCAiZHJtL3BhbmVsOiBzaW1wbGU6IFN1cHBvcnQgc2ltcGxlIFZHQSBw YW5lbHMiCkNoYW5nZUxvZyB2My0+djQ6Ci0gRml4IHRoZSBBUk0gYW5kIEFSTTY0IHNoYXJlZCB2 ZXhwcmVzcy12Mm0tcmMxLmR0c2kKICBmaWxlIGFkZHJlc3MtY2VsbHMgZXRjIHNvIHRoYXQgdGhl IHBvcnRzIGRvIG5vdCBnaXZlCiAgRFRDIHdhcm5pbmdzIGFueW1vcmUuCi0gRml4ZWQgdXAgdGhl IENBNTMgRFRTOiB1c2UgdGhlIHJpZ2h0IGNoaXAgc2VsZWN0IGJhc2UKICBhdCAweDE4MDAwMDAw LgotIEZpeGVkIHVwIHRoZSBSZWFsLVRpbWUgU3lzdGVtcyBNb2RlbHMgVmlydHVhbCBFeGVjdXRp dmUKICBSVFNNdjggQUVNIFZFOgogIC0gQWRkZWQgdGhlIEkyQyBpbnRlcmZhY2UgKHdoZXRoZXIg aW1wbGVtZW50ZWQgaW4gdGhlCiAgICBlbXVsYXRvciBvciBub3QpCiAgLSBGaXhlZCB0aGUgY2hp cCBzZWxlY3Qgb2YgdGhlIG1lbW9yeSBub2RlIHRvIHRoZSByaWdodAogICAgbWVtb3J5IGJhc2Ug MHgxODAwMDAwMC4KLSBBZGQgcmlnaHQgYWRkcmVzcy1jZWxscyBhbmQgc2l6ZS1jZWxscyB0byB0 aGUKICB2ZXhwcmVzcy12Mm0uZHRzaSBkdmkgcG9ydCBhcyB3ZWxsLgotIENyZWF0ZSB0d28gZW5k cG9pbnRzIGZvciB0aGUgbW90aGVyYm9hcmQgYW5kIHRoZQogIGNvcmUgdGlsZSBpbiB0aGUgdmV4 cHJlc3MtdjJtLmR0c2kuIFRoaXMgaXMganVzdCB1c2VkCiAgYnkgdGhlIENBOSBWRXhwcmVzcy4g VGVzdGVkIG9uIGJvdGggUUVNVSBhbmQgdGhlCiAgYWN0dWFsIGhhcmR3YXJlIHdpdGggdGhlIERS TSBkcml2ZXIuIFRoaXMgcmVtb3ZlcyB0aGUKICBsYXN0IHdhcm5pbmdzIGZyb20gdGhlIERUQy4K Q2hhbmdlTG9nIHYyLT52MzoKLSBBZGQgc29tZSByZWcgPSA8MD47IHRvIHRoZSBwb3J0cyB0byBt YWtlIHRoZSBEVEMgaGFwcHkuCi0gQWRkIHJlc2VydmVkIG1lbW9yeSBub2RlIHRvCiAgYXJjaC9h cm02NC9ib290L2R0cy9hcm0vdmV4cHJlc3MtdjJmLTF4djctY2E1M3gyLmR0cwogIGFzIHdlbGwu CkNoYW5nZUxvZyB2MS0+djI6Ci0gRml4IHVwIHRoZSBtZW1vcnkgYWRkcmVzcyBmb3IgdGhlIC1y czEgdGlsZXMgdG8gMHgxODAwMDAwMAotIERyb3AgYSBidW5jaCBvZiBleHRyYW5lb3VzIHJlZyBw cm9wcyBmcm9tIHRoZSBEVkkgYWRhcHRlcgotLS0KIGFyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNz LXYybS1yczEuZHRzaSAgICAgICB8IDQ5ICsrKysrLS0tLS0tLS0tLQogYXJjaC9hcm0vYm9vdC9k dHMvdmV4cHJlc3MtdjJtLmR0c2kgICAgICAgICAgIHwgNjMgKysrKysrKysrLS0tLS0tLS0tLQog YXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJwLWNhMTUtdGMxLmR0cyAgIHwgMTQgKysrKysK IGFyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTE1X2E3LmR0cyAgICB8IDE0ICsrKysr CiBhcmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12MnAtY2E1cy5kdHMgICAgICAgfCAxNCArKysr KwogYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJwLWNhOS5kdHMgICAgICAgIHwgNDMgKysr KysrLS0tLS0tLQogYXJjaC9hcm02NC9ib290L2R0cy9hcm0vcnRzbV92ZS1hZW12OGEuZHRzICAg IHwgMjMgKysrKysrKwogLi4uL2Jvb3QvZHRzL2FybS9ydHNtX3ZlLW1vdGhlcmJvYXJkLmR0c2kg ICAgIHwgMzcgKystLS0tLS0tLS0KIC4uLi9ib290L2R0cy9hcm0vdmV4cHJlc3MtdjJmLTF4djct Y2E1M3gyLmR0cyB8IDE0ICsrKysrCiA5IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCsp LCAxMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJl c3MtdjJtLXJzMS5kdHNpIGIvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJtLXJzMS5kdHNp CmluZGV4IDQ0ODhjOGZlMjEzYS4uYTk1NjlkMTVkZTQxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9i b290L2R0cy92ZXhwcmVzcy12Mm0tcnMxLmR0c2kKKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvdmV4 cHJlc3MtdjJtLXJzMS5kdHNpCkBAIC00MywxMSArNDMsNiBAQAogCQkJCWJhbmstd2lkdGggPSA8 ND47CiAJCQl9OwogCi0JCQl2Mm1fdmlkZW9fcmFtOiB2cmFtQDIsMDAwMDAwMDAgewotCQkJCWNv bXBhdGlibGUgPSAiYXJtLHZleHByZXNzLXZyYW0iOwotCQkJCXJlZyA9IDwyIDB4MDAwMDAwMDAg MHgwMDgwMDAwMD47Ci0JCQl9OwotCiAJCQlldGhlcm5ldEAyLDAyMDAwMDAwIHsKIAkJCQljb21w YXRpYmxlID0gInNtc2MsbGFuOTExOCIsICJzbXNjLGxhbjkxMTUiOwogCQkJCXJlZyA9IDwyIDB4 MDIwMDAwMDAgMHgxMDAwMD47CkBAIC0yMjMsMTMgKzIxOCwyNCBAQAogCQkJCXYybV9pMmNfZHZp OiBpMmNAMTYwMDAwIHsKIAkJCQkJY29tcGF0aWJsZSA9ICJhcm0sdmVyc2F0aWxlLWkyYyI7CiAJ CQkJCXJlZyA9IDwweDE2MDAwMCAweDEwMDA+OwotCiAJCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+ OwogCQkJCQkjc2l6ZS1jZWxscyA9IDwwPjsKIAogCQkJCQlkdmktdHJhbnNtaXR0ZXJAMzkgewog CQkJCQkJY29tcGF0aWJsZSA9ICJzaWwsc2lpOTAyMi10cGkiLCAic2lsLHNpaTkwMjIiOwogCQkJ CQkJcmVnID0gPDB4Mzk+OworCisJCQkJCQlwb3J0cyB7CisJCQkJCQkJI2FkZHJlc3MtY2VsbHMg PSA8MT47CisJCQkJCQkJI3NpemUtY2VsbHMgPSA8MD47CisKKwkJCQkJCQlwb3J0QDAgeworCQkJ CQkJCQlyZWcgPSA8MD47CisJCQkJCQkJCWR2aV9icmlkZ2VfaW46IGVuZHBvaW50IHsKKwkJCQkJ CQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmY2xjZF9wYWRzPjsKKwkJCQkJCQkJfTsKKwkJCQkJCQl9 OworCQkJCQkJfTsKIAkJCQkJfTsKIAogCQkJCQlkdmktdHJhbnNtaXR0ZXJANjAgewpAQCAtMjYw LDM3ICsyNjYsMTYgQEAKIAkJCQkJaW50ZXJydXB0cyA9IDwxND47CiAJCQkJCWNsb2NrcyA9IDwm djJtX29zY2NsazE+LCA8JnNtYmNsaz47CiAJCQkJCWNsb2NrLW5hbWVzID0gImNsY2RjbGsiLCAi YXBiX3BjbGsiOwotCQkJCQltZW1vcnktcmVnaW9uID0gPCZ2Mm1fdmlkZW9fcmFtPjsKLQkJCQkJ bWF4LW1lbW9yeS1iYW5kd2lkdGggPSA8NTAzNTAwMDA+OyAvKiAxNmJwcCBAIDI1LjE3NU1IeiAq LworCQkJCQkvKiA4MDB4NjAwIDE2YnBwIEAzNk1IeiB3b3JrcyBmaW5lICovCisJCQkJCW1heC1t ZW1vcnktYmFuZHdpZHRoID0gPDU0MDAwMDAwPjsKKwkJCQkJbWVtb3J5LXJlZ2lvbiA9IDwmdnJh bT47CiAKIAkJCQkJcG9ydCB7Ci0JCQkJCQl2Mm1fY2xjZF9wYWRzOiBlbmRwb2ludCB7Ci0JCQkJ CQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ2Mm1fY2xjZF9wYW5lbD47CisJCQkJCQljbGNkX3BhZHM6 IGVuZHBvaW50IHsKKwkJCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmR2aV9icmlkZ2VfaW4+Owog CQkJCQkJCWFybSxwbDExeCx0ZnQtcjBnMGIwLXBhZHMgPSA8MCA4IDE2PjsKIAkJCQkJCX07CiAJ CQkJCX07Ci0KLQkJCQkJcGFuZWwgewotCQkJCQkJY29tcGF0aWJsZSA9ICJwYW5lbC1kcGkiOwot Ci0JCQkJCQlwb3J0IHsKLQkJCQkJCQl2Mm1fY2xjZF9wYW5lbDogZW5kcG9pbnQgewotCQkJCQkJ CQlyZW1vdGUtZW5kcG9pbnQgPSA8JnYybV9jbGNkX3BhZHM+OwotCQkJCQkJCX07Ci0JCQkJCQl9 OwotCi0JCQkJCQlwYW5lbC10aW1pbmcgewotCQkJCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNTE3 NTAwMD47Ci0JCQkJCQkJaGFjdGl2ZSA9IDw2NDA+OwotCQkJCQkJCWhiYWNrLXBvcmNoID0gPDQw PjsKLQkJCQkJCQloZnJvbnQtcG9yY2ggPSA8MjQ+OwotCQkJCQkJCWhzeW5jLWxlbiA9IDw5Nj47 Ci0JCQkJCQkJdmFjdGl2ZSA9IDw0ODA+OwotCQkJCQkJCXZiYWNrLXBvcmNoID0gPDMyPjsKLQkJ CQkJCQl2ZnJvbnQtcG9yY2ggPSA8MTE+OwotCQkJCQkJCXZzeW5jLWxlbiA9IDwyPjsKLQkJCQkJ CX07Ci0JCQkJCX07CiAJCQkJfTsKIAkJCX07CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3Qv ZHRzL3ZleHByZXNzLXYybS5kdHNpIGIvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJtLmR0 c2kKaW5kZXggNGRiNDJmNjMyNmEzLi5mZDQyZTExOTQxNzkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJt L2Jvb3QvZHRzL3ZleHByZXNzLXYybS5kdHNpCisrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHBy ZXNzLXYybS5kdHNpCkBAIC00MywxMSArNDMsNiBAQAogCQkJCWJhbmstd2lkdGggPSA8ND47CiAJ CQl9OwogCi0JCQl2Mm1fdmlkZW9fcmFtOiB2cmFtQDMsMDAwMDAwMDAgewotCQkJCWNvbXBhdGli bGUgPSAiYXJtLHZleHByZXNzLXZyYW0iOwotCQkJCXJlZyA9IDwzIDB4MDAwMDAwMDAgMHgwMDgw MDAwMD47Ci0JCQl9OwotCiAJCQlldGhlcm5ldEAzLDAyMDAwMDAwIHsKIAkJCQljb21wYXRpYmxl ID0gInNtc2MsbGFuOTExOCIsICJzbXNjLGxhbjkxMTUiOwogCQkJCXJlZyA9IDwzIDB4MDIwMDAw MDAgMHgxMDAwMD47CkBAIC0yMjMsMTMgKzIxOCwzNyBAQAogCQkJCXYybV9pMmNfZHZpOiBpMmNA MTYwMDAgewogCQkJCQljb21wYXRpYmxlID0gImFybSx2ZXJzYXRpbGUtaTJjIjsKIAkJCQkJcmVn ID0gPDB4MTYwMDAgMHgxMDAwPjsKLQogCQkJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKIAkJCQkJ I3NpemUtY2VsbHMgPSA8MD47CiAKIAkJCQkJZHZpLXRyYW5zbWl0dGVyQDM5IHsKIAkJCQkJCWNv bXBhdGlibGUgPSAic2lsLHNpaTkwMjItdHBpIiwgInNpbCxzaWk5MDIyIjsKIAkJCQkJCXJlZyA9 IDwweDM5PjsKKworCQkJCQkJcG9ydHMgeworCQkJCQkJCSNhZGRyZXNzLWNlbGxzID0gPDE+Owor CQkJCQkJCSNzaXplLWNlbGxzID0gPDA+OworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBCb3RoIHRo ZSBjb3JlIHRpbGUgYW5kIHRoZSBtb3RoZXJib2FyZCByb3V0ZXMgdGhlaXIgb3V0cHV0CisJCQkJ CQkJICogcGFkcyB0byB0aGlzIHRyYW5zbWl0dGVyLiBUaGUgbW90aGVyYm9hcmQgc3lzdGVtIGNv bnRyb2xsZXIKKwkJCQkJCQkgKiBjYW4gc2VsZWN0IG9uZSBvZiB0aGVtIGFzIGlucHV0IHVzaW5n IGEgbXV4IHJlZ2lzdGVyIGluCisJCQkJCQkJICogImFybSx2ZXhwcmVzcy1tdXhmcGdhIi4gVGhl IFZleHByZXNzIHdpdGggdGhlIENBOSBjb3JlIHRpbGUgaXMKKwkJCQkJCQkgKiB0aGUgb25seSBw bGF0Zm9ybSB3aXRoIHRoaXMgc3BlY2lmaWMgc2V0LXVwLgorCQkJCQkJCSAqLworCQkJCQkJCXBv cnRAMCB7CisJCQkJCQkJCXJlZyA9IDwwPjsKKwkJCQkJCQkJZHZpX2JyaWRnZV9pbl9jdDogZW5k cG9pbnQgeworCQkJCQkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZjbGNkX3BhZHNfY3Q+OworCQkJ CQkJCQl9OworCQkJCQkJCX07CisJCQkJCQkJcG9ydEAxIHsKKwkJCQkJCQkJcmVnID0gPDE+Owor CQkJCQkJCQlkdmlfYnJpZGdlX2luX21iOiBlbmRwb2ludCB7CisJCQkJCQkJCQlyZW1vdGUtZW5k cG9pbnQgPSA8JmNsY2RfcGFkc19tYj47CisJCQkJCQkJCX07CisJCQkJCQkJfTsKKwkJCQkJCX07 CiAJCQkJCX07CiAKIAkJCQkJZHZpLXRyYW5zbWl0dGVyQDYwIHsKQEAgLTI1Myw2ICsyNzIsNyBA QAogCQkJCQlyZWctc2hpZnQgPSA8Mj47CiAJCQkJfTsKIAorCiAJCQkJY2xjZEAxZjAwMCB7CiAJ CQkJCWNvbXBhdGlibGUgPSAiYXJtLHBsMTExIiwgImFybSxwcmltZWNlbGwiOwogCQkJCQlyZWcg PSA8MHgxZjAwMCAweDEwMDA+OwpAQCAtMjYwLDM3ICsyODAsMTYgQEAKIAkJCQkJaW50ZXJydXB0 cyA9IDwxND47CiAJCQkJCWNsb2NrcyA9IDwmdjJtX29zY2NsazE+LCA8JnNtYmNsaz47CiAJCQkJ CWNsb2NrLW5hbWVzID0gImNsY2RjbGsiLCAiYXBiX3BjbGsiOwotCQkJCQltZW1vcnktcmVnaW9u ID0gPCZ2Mm1fdmlkZW9fcmFtPjsKLQkJCQkJbWF4LW1lbW9yeS1iYW5kd2lkdGggPSA8NTAzNTAw MDA+OyAvKiAxNmJwcCBAIDI1LjE3NU1IeiAqLworCQkJCQkvKiA4MDB4NjAwIDE2YnBwIEAzNk1I eiB3b3JrcyBmaW5lICovCisJCQkJCW1heC1tZW1vcnktYmFuZHdpZHRoID0gPDU0MDAwMDAwPjsK KwkJCQkJbWVtb3J5LXJlZ2lvbiA9IDwmdnJhbT47CiAKIAkJCQkJcG9ydCB7Ci0JCQkJCQl2Mm1f Y2xjZF9wYWRzOiBlbmRwb2ludCB7Ci0JCQkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZ2Mm1fY2xj ZF9wYW5lbD47CisJCQkJCQljbGNkX3BhZHNfbWI6IGVuZHBvaW50IHsKKwkJCQkJCQlyZW1vdGUt ZW5kcG9pbnQgPSA8JmR2aV9icmlkZ2VfaW5fbWI+OwogCQkJCQkJCWFybSxwbDExeCx0ZnQtcjBn MGIwLXBhZHMgPSA8MCA4IDE2PjsKIAkJCQkJCX07CiAJCQkJCX07Ci0KLQkJCQkJcGFuZWwgewot CQkJCQkJY29tcGF0aWJsZSA9ICJwYW5lbC1kcGkiOwotCi0JCQkJCQlwb3J0IHsKLQkJCQkJCQl2 Mm1fY2xjZF9wYW5lbDogZW5kcG9pbnQgewotCQkJCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnYy bV9jbGNkX3BhZHM+OwotCQkJCQkJCX07Ci0JCQkJCQl9OwotCi0JCQkJCQlwYW5lbC10aW1pbmcg ewotCQkJCQkJCWNsb2NrLWZyZXF1ZW5jeSA9IDwyNTE3NTAwMD47Ci0JCQkJCQkJaGFjdGl2ZSA9 IDw2NDA+OwotCQkJCQkJCWhiYWNrLXBvcmNoID0gPDQwPjsKLQkJCQkJCQloZnJvbnQtcG9yY2gg PSA8MjQ+OwotCQkJCQkJCWhzeW5jLWxlbiA9IDw5Nj47Ci0JCQkJCQkJdmFjdGl2ZSA9IDw0ODA+ OwotCQkJCQkJCXZiYWNrLXBvcmNoID0gPDMyPjsKLQkJCQkJCQl2ZnJvbnQtcG9yY2ggPSA8MTE+ OwotCQkJCQkJCXZzeW5jLWxlbiA9IDwyPjsKLQkJCQkJCX07Ci0JCQkJCX07CiAJCQkJfTsKIAkJ CX07CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTE1LXRj MS5kdHMgYi9hcmNoL2FybS9ib290L2R0cy92ZXhwcmVzcy12MnAtY2ExNS10YzEuZHRzCmluZGV4 IDM5NzE0MjdhMTA1Yi4uMGRjNDI3N2Q1ZjhiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290L2R0 cy92ZXhwcmVzcy12MnAtY2ExNS10YzEuZHRzCisrKyBiL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHBy ZXNzLXYycC1jYTE1LXRjMS5kdHMKQEAgLTUzLDYgKzUzLDIwIEBACiAJCXJlZyA9IDwwIDB4ODAw MDAwMDAgMCAweDQwMDAwMDAwPjsKIAl9OwogCisJcmVzZXJ2ZWQtbWVtb3J5IHsKKwkJI2FkZHJl c3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlyYW5nZXM7CisKKwkJLyog Q2hpcHNlbGVjdCAyIGlzIHBoeXNpY2FsbHkgYXQgMHgxODAwMDAwMCAqLworCQl2cmFtOiB2cmFt QDE4MDAwMDAwIHsKKwkJCS8qIDggTUIgb2YgZGVzaWduYXRlZCB2aWRlbyBSQU0gKi8KKwkJCWNv bXBhdGlibGUgPSAic2hhcmVkLWRtYS1wb29sIjsKKwkJCXJlZyA9IDwwIDB4MTgwMDAwMDAgMCAw eDAwODAwMDAwPjsKKwkJCW5vLW1hcDsKKwkJfTsKKwl9OworCiAJaGRsY2RAMmIwMDAwMDAgewog CQljb21wYXRpYmxlID0gImFybSxoZGxjZCI7CiAJCXJlZyA9IDwwIDB4MmIwMDAwMDAgMCAweDEw MDA+OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJwLWNhMTVfYTcu ZHRzIGIvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJwLWNhMTVfYTcuZHRzCmluZGV4IGFj NmI5MGU5ZDgwNi4uYTUxMzZiMWFkYWEyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290L2R0cy92 ZXhwcmVzcy12MnAtY2ExNV9hNy5kdHMKKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3Mt djJwLWNhMTVfYTcuZHRzCkBAIC0xMDQsNiArMTA0LDIwIEBACiAJCXJlZyA9IDwwIDB4ODAwMDAw MDAgMCAweDQwMDAwMDAwPjsKIAl9OwogCisJcmVzZXJ2ZWQtbWVtb3J5IHsKKwkJI2FkZHJlc3Mt Y2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlyYW5nZXM7CisKKwkJLyogQ2hp cHNlbGVjdCAyIGlzIHBoeXNpY2FsbHkgYXQgMHgxODAwMDAwMCAqLworCQl2cmFtOiB2cmFtQDE4 MDAwMDAwIHsKKwkJCS8qIDggTUIgb2YgZGVzaWduYXRlZCB2aWRlbyBSQU0gKi8KKwkJCWNvbXBh dGlibGUgPSAic2hhcmVkLWRtYS1wb29sIjsKKwkJCXJlZyA9IDwwIDB4MTgwMDAwMDAgMCAweDAw ODAwMDAwPjsKKwkJCW5vLW1hcDsKKwkJfTsKKwl9OworCiAJd2R0QDJhNDkwMDAwIHsKIAkJY29t cGF0aWJsZSA9ICJhcm0sc3A4MDUiLCAiYXJtLHByaW1lY2VsbCI7CiAJCXJlZyA9IDwwIDB4MmE0 OTAwMDAgMCAweDEwMDA+OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3Mt djJwLWNhNXMuZHRzIGIvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJlc3MtdjJwLWNhNXMuZHRzCmlu ZGV4IGU1YjRhNzU3MGEwMS4uZDViNDdkNTI2ZjllIDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290 L2R0cy92ZXhwcmVzcy12MnAtY2E1cy5kdHMKKysrIGIvYXJjaC9hcm0vYm9vdC9kdHMvdmV4cHJl c3MtdjJwLWNhNXMuZHRzCkBAIC01NSw2ICs1NSwyMCBAQAogCQlyZWcgPSA8MHg4MDAwMDAwMCAw eDQwMDAwMDAwPjsKIAl9OwogCisJcmVzZXJ2ZWQtbWVtb3J5IHsKKwkJI2FkZHJlc3MtY2VsbHMg PSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQlyYW5nZXM7CisKKwkJLyogQ2hpcHNlbGVj dCAyIGlzIHBoeXNpY2FsbHkgYXQgMHgxODAwMDAwMCAqLworCQl2cmFtOiB2cmFtQDE4MDAwMDAw IHsKKwkJCS8qIDggTUIgb2YgZGVzaWduYXRlZCB2aWRlbyBSQU0gKi8KKwkJCWNvbXBhdGlibGUg PSAic2hhcmVkLWRtYS1wb29sIjsKKwkJCXJlZyA9IDwweDE4MDAwMDAwIDB4MDA4MDAwMDA+Owor CQkJbm8tbWFwOworCQl9OworCX07CisKIAloZGxjZEAyYTExMDAwMCB7CiAJCWNvbXBhdGlibGUg PSAiYXJtLGhkbGNkIjsKIAkJcmVnID0gPDB4MmExMTAwMDAgMHgxMDAwPjsKZGlmZiAtLWdpdCBh L2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTkuZHRzIGIvYXJjaC9hcm0vYm9vdC9k dHMvdmV4cHJlc3MtdjJwLWNhOS5kdHMKaW5kZXggN2VjM2RhYzFmNjFkLi43ZjAxOWUwZWVlODQg MTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTkuZHRzCisrKyBi L2FyY2gvYXJtL2Jvb3QvZHRzL3ZleHByZXNzLXYycC1jYTkuZHRzCkBAIC02OSw2ICs2OSwyMCBA QAogCQlyZWcgPSA8MHg2MDAwMDAwMCAweDQwMDAwMDAwPjsKIAl9OwogCisJcmVzZXJ2ZWQtbWVt b3J5IHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8MT47CisJCSNzaXplLWNlbGxzID0gPDE+OworCQly YW5nZXM7CisKKwkJLyogQ2hpcHNlbGVjdCAzIGlzIHBoeXNpY2FsbHkgYXQgMHg0YzAwMDAwMCAq LworCQl2cmFtOiB2cmFtQDRjMDAwMDAwIHsKKwkJCS8qIDggTUIgb2YgZGVzaWduYXRlZCB2aWRl byBSQU0gKi8KKwkJCWNvbXBhdGlibGUgPSAic2hhcmVkLWRtYS1wb29sIjsKKwkJCXJlZyA9IDww eDRjMDAwMDAwIDB4MDA4MDAwMDA+OworCQkJbm8tbWFwOworCQl9OworCX07CisKIAljbGNkQDEw MDIwMDAwIHsKIAkJY29tcGF0aWJsZSA9ICJhcm0scGwxMTEiLCAiYXJtLHByaW1lY2VsbCI7CiAJ CXJlZyA9IDwweDEwMDIwMDAwIDB4MTAwMD47CkBAIC03NiwzNiArOTAsMTUgQEAKIAkJaW50ZXJy dXB0cyA9IDwwIDQ0IDQ+OwogCQljbG9ja3MgPSA8Jm9zY2NsazE+LCA8Jm9zY2NsazI+OwogCQlj bG9jay1uYW1lcyA9ICJjbGNkY2xrIiwgImFwYl9wY2xrIjsKLQkJbWF4LW1lbW9yeS1iYW5kd2lk dGggPSA8MTMwMDAwMDAwPjsgLyogMTZicHAgQCA2My41TUh6ICovCisJCS8qIDEwMjR4NzY4IDE2 YnBwIEA2NU1IeiAqLworCQltYXgtbWVtb3J5LWJhbmR3aWR0aCA9IDw5NTAwMDAwMD47CiAKIAkJ cG9ydCB7Ci0JCQljbGNkX3BhZHM6IGVuZHBvaW50IHsKLQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8 JmNsY2RfcGFuZWw+OworCQkJY2xjZF9wYWRzX2N0OiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVu ZHBvaW50ID0gPCZkdmlfYnJpZGdlX2luX2N0PjsKIAkJCQlhcm0scGwxMXgsdGZ0LXIwZzBiMC1w YWRzID0gPDAgOCAxNj47CiAJCQl9OwogCQl9OwotCi0JCXBhbmVsIHsKLQkJCWNvbXBhdGlibGUg PSAicGFuZWwtZHBpIjsKLQotCQkJcG9ydCB7Ci0JCQkJY2xjZF9wYW5lbDogZW5kcG9pbnQgewot CQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JmNsY2RfcGFkcz47Ci0JCQkJfTsKLQkJCX07Ci0KLQkJ CXBhbmVsLXRpbWluZyB7Ci0JCQkJY2xvY2stZnJlcXVlbmN5ID0gPDYzNTAwMTI3PjsKLQkJCQlo YWN0aXZlID0gPDEwMjQ+OwotCQkJCWhiYWNrLXBvcmNoID0gPDE1Mj47Ci0JCQkJaGZyb250LXBv cmNoID0gPDQ4PjsKLQkJCQloc3luYy1sZW4gPSA8MTA0PjsKLQkJCQl2YWN0aXZlID0gPDc2OD47 Ci0JCQkJdmJhY2stcG9yY2ggPSA8MjM+OwotCQkJCXZmcm9udC1wb3JjaCA9IDwzPjsKLQkJCQl2 c3luYy1sZW4gPSA8ND47Ci0JCQl9OwotCQl9OwogCX07CiAKIAltZW1vcnktY29udHJvbGxlckAx MDBlMDAwMCB7CmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL2FybS9ydHNtX3ZlLWFl bXY4YS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL2FybS9ydHNtX3ZlLWFlbXY4YS5kdHMKaW5k ZXggNjAyZjYzZjcyYzM3Li5mZTRmZGE0NzNjMGEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9v dC9kdHMvYXJtL3J0c21fdmUtYWVtdjhhLmR0cworKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL2Fy bS9ydHNtX3ZlLWFlbXY4YS5kdHMKQEAgLTc4LDYgKzc4LDIwIEBACiAJCSAgICAgIDwweDAwMDAw MDA4IDB4ODAwMDAwMDAgMCAweDgwMDAwMDAwPjsKIAl9OwogCisJcmVzZXJ2ZWQtbWVtb3J5IHsK KwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXplLWNlbGxzID0gPDI+OworCQlyYW5nZXM7 CisKKwkJLyogQ2hpcHNlbGVjdCAyLDAwMDAwMDAwIGlzIHBoeXNpY2FsbHkgYXQgMHgxODAwMDAw MCAqLworCQl2cmFtOiB2cmFtQDE4MDAwMDAwIHsKKwkJCS8qIDggTUIgb2YgZGVzaWduYXRlZCB2 aWRlbyBSQU0gKi8KKwkJCWNvbXBhdGlibGUgPSAic2hhcmVkLWRtYS1wb29sIjsKKwkJCXJlZyA9 IDwweDAwMDAwMDAwIDB4MTgwMDAwMDAgMCAweDAwODAwMDAwPjsKKwkJCW5vLW1hcDsKKwkJfTsK Kwl9OworCiAJZ2ljOiBpbnRlcnJ1cHQtY29udHJvbGxlckAyYzAwMTAwMCB7CiAJCWNvbXBhdGli bGUgPSAiYXJtLGNvcnRleC1hMTUtZ2ljIiwgImFybSxjb3J0ZXgtYTktZ2ljIjsKIAkJI2ludGVy cnVwdC1jZWxscyA9IDwzPjsKQEAgLTEwNyw2ICsxMjEsMTUgQEAKIAkJCSAgICAgPDAgNjMgND47 CiAJfTsKIAorCXBhbmVsIHsKKwkJY29tcGF0aWJsZSA9ICJhcm0scnRzbS1kaXNwbGF5IjsKKwkJ cG9ydCB7CisJCQlwYW5lbF9pbjogZW5kcG9pbnQgeworCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwm Y2xjZF9wYWRzPjsKKwkJCX07CisJCX07CisJfTsKKwogCXNtYkA4MDAwMDAwIHsKIAkJY29tcGF0 aWJsZSA9ICJzaW1wbGUtYnVzIjsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9h cm0vcnRzbV92ZS1tb3RoZXJib2FyZC5kdHNpIGIvYXJjaC9hcm02NC9ib290L2R0cy9hcm0vcnRz bV92ZS1tb3RoZXJib2FyZC5kdHNpCmluZGV4IGQyZGJjM2YzOTI2My4uYjI1ZjNjYmQzZGE4IDEw MDY0NAotLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL2FybS9ydHNtX3ZlLW1vdGhlcmJvYXJkLmR0 c2kKKysrIGIvYXJjaC9hcm02NC9ib290L2R0cy9hcm0vcnRzbV92ZS1tb3RoZXJib2FyZC5kdHNp CkBAIC0yNCwxMSArMjQsNiBAQAogCQkJCWJhbmstd2lkdGggPSA8ND47CiAJCQl9OwogCi0JCQl2 Mm1fdmlkZW9fcmFtOiB2cmFtQDIsMDAwMDAwMDAgewotCQkJCWNvbXBhdGlibGUgPSAiYXJtLHZl eHByZXNzLXZyYW0iOwotCQkJCXJlZyA9IDwyIDB4MDAwMDAwMDAgMHgwMDgwMDAwMD47Ci0JCQl9 OwotCiAJCQlldGhlcm5ldEAyLDAyMDAwMDAwIHsKIAkJCQljb21wYXRpYmxlID0gInNtc2MsbGFu OTFjMTExIjsKIAkJCQlyZWcgPSA8MiAweDAyMDAwMDAwIDB4MTAwMDA+OwpAQCAtMTg3LDM4ICsx ODIsMTYgQEAKIAkJCQkJaW50ZXJydXB0cyA9IDwxND47CiAJCQkJCWNsb2NrcyA9IDwmdjJtX29z Y2NsazE+LCA8JnYybV9jbGsyNG1oej47CiAJCQkJCWNsb2NrLW5hbWVzID0gImNsY2RjbGsiLCAi YXBiX3BjbGsiOwotCQkJCQlhcm0scGwxMXgsZnJhbWVidWZmZXIgPSA8MHgxODAwMDAwMCAweDAw MTgwMDAwPjsKLQkJCQkJbWVtb3J5LXJlZ2lvbiA9IDwmdjJtX3ZpZGVvX3JhbT47Ci0JCQkJCW1h eC1tZW1vcnktYmFuZHdpZHRoID0gPDEzMDAwMDAwMD47IC8qIDE2YnBwIEAgNjMuNU1IeiAqLwor CQkJCQkvKiA4MDB4NjAwIDE2YnBwIEAzNk1IeiB3b3JrcyBmaW5lICovCisJCQkJCW1heC1tZW1v cnktYmFuZHdpZHRoID0gPDU0MDAwMDAwPjsKKwkJCQkJbWVtb3J5LXJlZ2lvbiA9IDwmdnJhbT47 CiAKIAkJCQkJcG9ydCB7Ci0JCQkJCQl2Mm1fY2xjZF9wYWRzOiBlbmRwb2ludCB7Ci0JCQkJCQkJ cmVtb3RlLWVuZHBvaW50ID0gPCZ2Mm1fY2xjZF9wYW5lbD47CisJCQkJCQljbGNkX3BhZHM6IGVu ZHBvaW50IHsKKwkJCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8JnBhbmVsX2luPjsKIAkJCQkJCQlh cm0scGwxMXgsdGZ0LXIwZzBiMC1wYWRzID0gPDAgOCAxNj47CiAJCQkJCQl9OwogCQkJCQl9Owot Ci0JCQkJCXBhbmVsIHsKLQkJCQkJCWNvbXBhdGlibGUgPSAicGFuZWwtZHBpIjsKLQotCQkJCQkJ cG9ydCB7Ci0JCQkJCQkJdjJtX2NsY2RfcGFuZWw6IGVuZHBvaW50IHsKLQkJCQkJCQkJcmVtb3Rl LWVuZHBvaW50ID0gPCZ2Mm1fY2xjZF9wYWRzPjsKLQkJCQkJCQl9OwotCQkJCQkJfTsKLQotCQkJ CQkJcGFuZWwtdGltaW5nIHsKLQkJCQkJCQljbG9jay1mcmVxdWVuY3kgPSA8NjM1MDAxMjc+Owot CQkJCQkJCWhhY3RpdmUgPSA8MTAyND47Ci0JCQkJCQkJaGJhY2stcG9yY2ggPSA8MTUyPjsKLQkJ CQkJCQloZnJvbnQtcG9yY2ggPSA8NDg+OwotCQkJCQkJCWhzeW5jLWxlbiA9IDwxMDQ+OwotCQkJ CQkJCXZhY3RpdmUgPSA8NzY4PjsKLQkJCQkJCQl2YmFjay1wb3JjaCA9IDwyMz47Ci0JCQkJCQkJ dmZyb250LXBvcmNoID0gPDM+OwotCQkJCQkJCXZzeW5jLWxlbiA9IDw0PjsKLQkJCQkJCX07Ci0J CQkJCX07CiAJCQkJfTsKIAogCQkJCXZpcnRpby1ibG9ja0AxMzAwMDAgewpkaWZmIC0tZ2l0IGEv YXJjaC9hcm02NC9ib290L2R0cy9hcm0vdmV4cHJlc3MtdjJmLTF4djctY2E1M3gyLmR0cyBiL2Fy Y2gvYXJtNjQvYm9vdC9kdHMvYXJtL3ZleHByZXNzLXYyZi0xeHY3LWNhNTN4Mi5kdHMKaW5kZXgg Mzg4ODAzODBlMGZhLi44OTgxYzNkMmZmMTggMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtNjQvYm9vdC9k dHMvYXJtL3ZleHByZXNzLXYyZi0xeHY3LWNhNTN4Mi5kdHMKKysrIGIvYXJjaC9hcm02NC9ib290 L2R0cy9hcm0vdmV4cHJlc3MtdjJmLTF4djctY2E1M3gyLmR0cwpAQCAtNjUsNiArNjUsMjAgQEAK IAkJcmVnID0gPDAgMHg4MDAwMDAwMCAwIDB4ODAwMDAwMDA+OyAvKiAyR0IgQCAyR0IgKi8KIAl9 OwogCisJcmVzZXJ2ZWQtbWVtb3J5IHsKKwkJI2FkZHJlc3MtY2VsbHMgPSA8Mj47CisJCSNzaXpl LWNlbGxzID0gPDI+OworCQlyYW5nZXM7CisKKwkJLyogQ2hpcHNlbGVjdCAyIGlzIHBoeXNpY2Fs bHkgYXQgMHgxODAwMDAwMCAqLworCQl2cmFtOiB2cmFtQDE4MDAwMDAwIHsKKwkJCS8qIDggTUIg b2YgZGVzaWduYXRlZCB2aWRlbyBSQU0gKi8KKwkJCWNvbXBhdGlibGUgPSAic2hhcmVkLWRtYS1w b29sIjsKKwkJCXJlZyA9IDwwIDB4MTgwMDAwMDAgMCAweDAwODAwMDAwPjsKKwkJCW5vLW1hcDsK KwkJfTsKKwl9OworCiAJZ2ljOiBpbnRlcnJ1cHQtY29udHJvbGxlckAyYzAwMTAwMCB7CiAJCWNv bXBhdGlibGUgPSAiYXJtLGdpYy00MDAiOwogCQkjaW50ZXJydXB0LWNlbGxzID0gPDM+OwotLSAK Mi4xNy4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK