From owner-svn-src-stable-10@freebsd.org Mon Oct 7 04:44:03 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8CD9213DD6C; Mon, 7 Oct 2019 04:44:03 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46mntq2Cphz4FfJ; Mon, 7 Oct 2019 04:44:03 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2F29B9575; Mon, 7 Oct 2019 04:44:03 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x974i2Z8016723; Mon, 7 Oct 2019 04:44:02 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x974i2t1016722; Mon, 7 Oct 2019 04:44:02 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201910070444.x974i2t1016722@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Mon, 7 Oct 2019 04:44:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r353164 - in stable: 10/sys/contrib/ipfilter/netinet 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Group: stable-10 X-SVN-Commit-Author: cy X-SVN-Commit-Paths: in stable: 10/sys/contrib/ipfilter/netinet 11/sys/contrib/ipfilter/netinet 12/sys/contrib/ipfilter/netinet X-SVN-Commit-Revision: 353164 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Oct 2019 04:44:03 -0000 Author: cy Date: Mon Oct 7 04:44:01 2019 New Revision: 353164 URL: https://svnweb.freebsd.org/changeset/base/353164 Log: MFC r353116: Add missing definition in DEBUG code. Modified: stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Directory Properties: stable/10/ (props changed) Changes in other areas also in this revision: Modified: stable/11/sys/contrib/ipfilter/netinet/radix_ipf.c stable/12/sys/contrib/ipfilter/netinet/radix_ipf.c Directory Properties: stable/11/ (props changed) stable/12/ (props changed) Modified: stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c ============================================================================== --- stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Mon Oct 7 04:22:03 2019 (r353163) +++ stable/10/sys/contrib/ipfilter/netinet/radix_ipf.c Mon Oct 7 04:44:01 2019 (r353164) @@ -1321,7 +1321,7 @@ dumptree(rnh) void test_addr(rnh, pref, addr, limit) ipf_rdx_head_t *rnh; - int pref; + int pref, limit; addrfamily_t *addr; { static int extras[14] = { 0, -1, 1, 3, 5, 8, 9, From owner-svn-src-stable-10@freebsd.org Mon Oct 7 08:11:13 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0C681FBBF7; Mon, 7 Oct 2019 08:11:13 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46mtTr6TBcz4S0Q; Mon, 7 Oct 2019 08:11:12 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C159FB8F8; Mon, 7 Oct 2019 08:11:12 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x978BCbm039390; Mon, 7 Oct 2019 08:11:12 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x978BCw3039389; Mon, 7 Oct 2019 08:11:12 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201910070811.x978BCw3039389@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 7 Oct 2019 08:11:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r353171 - stable/10/sys/dev/usb/controller X-SVN-Group: stable-10 X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: stable/10/sys/dev/usb/controller X-SVN-Commit-Revision: 353171 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Oct 2019 08:11:13 -0000 Author: hselasky Date: Mon Oct 7 08:11:12 2019 New Revision: 353171 URL: https://svnweb.freebsd.org/changeset/base/353171 Log: MFC r352554: The maximum TD size is 31 and not 15. Found at: EuroBSDcon 2019 Sponsored by: Mellanox Technologies Modified: stable/10/sys/dev/usb/controller/xhci.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/10/sys/dev/usb/controller/xhci.c Mon Oct 7 08:10:26 2019 (r353170) +++ stable/10/sys/dev/usb/controller/xhci.c Mon Oct 7 08:11:12 2019 (r353171) @@ -2007,7 +2007,7 @@ restart: /* clear TD SIZE to zero, hence this is the last TRB */ /* remove chain bit because this is the last data TRB in the chain */ - td->td_trb[td->ntrb - 1].dwTrb2 &= ~htole32(XHCI_TRB_2_TDSZ_SET(15)); + td->td_trb[td->ntrb - 1].dwTrb2 &= ~htole32(XHCI_TRB_2_TDSZ_SET(31)); td->td_trb[td->ntrb - 1].dwTrb3 &= ~htole32(XHCI_TRB_3_CHAIN_BIT); /* remove CHAIN-BIT from last LINK TRB */ td->td_trb[td->ntrb].dwTrb3 &= ~htole32(XHCI_TRB_3_CHAIN_BIT); From owner-svn-src-stable-10@freebsd.org Mon Oct 7 08:13:50 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A5AADFC08B; Mon, 7 Oct 2019 08:13:50 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46mtXt3tK2z4Sg9; Mon, 7 Oct 2019 08:13:50 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 69F43BA76; Mon, 7 Oct 2019 08:13:50 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x978Dopc040557; Mon, 7 Oct 2019 08:13:50 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x978DokM040556; Mon, 7 Oct 2019 08:13:50 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201910070813.x978DokM040556@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 7 Oct 2019 08:13:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r353175 - stable/10/sys/dev/usb X-SVN-Group: stable-10 X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: stable/10/sys/dev/usb X-SVN-Commit-Revision: 353175 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Oct 2019 08:13:50 -0000 Author: hselasky Date: Mon Oct 7 08:13:49 2019 New Revision: 353175 URL: https://svnweb.freebsd.org/changeset/base/353175 Log: MFC r352555: Increase the maximum user-space buffer size from 256kBytes to 32MBytes for libusb. This is useful for speeding up large data transfers while reducing the interrupt rate. Found at: EuroBSDcon 2019 Sponsored by: Mellanox Technologies Modified: stable/10/sys/dev/usb/usb_ioctl.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/usb/usb_ioctl.h ============================================================================== --- stable/10/sys/dev/usb/usb_ioctl.h Mon Oct 7 08:13:10 2019 (r353174) +++ stable/10/sys/dev/usb/usb_ioctl.h Mon Oct 7 08:13:49 2019 (r353175) @@ -218,7 +218,7 @@ struct usb_fs_uninit { } USB_IOCTL_STRUCT_ALIGN(1); struct usb_fs_open { -#define USB_FS_MAX_BUFSIZE (1 << 18) +#define USB_FS_MAX_BUFSIZE (1 << 25) /* 32 MBytes */ uint32_t max_bufsize; #define USB_FS_MAX_FRAMES (1U << 12) #define USB_FS_MAX_FRAMES_PRE_SCALE (1U << 31) /* for ISOCHRONOUS transfers */ From owner-svn-src-stable-10@freebsd.org Mon Oct 7 08:25:26 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 70404FC6E6; Mon, 7 Oct 2019 08:25:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46mtpG2QYSz4TtL; Mon, 7 Oct 2019 08:25:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3743CBDDC; Mon, 7 Oct 2019 08:25:26 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x978PQR3047881; Mon, 7 Oct 2019 08:25:26 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x978PP6q047878; Mon, 7 Oct 2019 08:25:25 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201910070825.x978PP6q047878@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Mon, 7 Oct 2019 08:25:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r353179 - in stable/10/sys/dev/usb: . controller X-SVN-Group: stable-10 X-SVN-Commit-Author: hselasky X-SVN-Commit-Paths: in stable/10/sys/dev/usb: . controller X-SVN-Commit-Revision: 353179 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Oct 2019 08:25:26 -0000 Author: hselasky Date: Mon Oct 7 08:25:25 2019 New Revision: 353179 URL: https://svnweb.freebsd.org/changeset/base/353179 Log: MFC r352556: Add quirk for XHCI(4) controllers to support USB control transfers above 1Kbyte. It might look like some XHCI(4) controllers do not support when the USB control transfer is split using a link TRB. The next NORMAL TRB after the link TRB is simply failing with XHCI error code 4. The quirk ensures we allocate a 64Kbyte buffer so that the data stage TRB is not broken with a link TRB. Found at: EuroBSDcon 2019 Sponsored by: Mellanox Technologies Modified: stable/10/sys/dev/usb/controller/xhci.c stable/10/sys/dev/usb/usb_bus.h stable/10/sys/dev/usb/usb_transfer.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/usb/controller/xhci.c ============================================================================== --- stable/10/sys/dev/usb/controller/xhci.c Mon Oct 7 08:24:46 2019 (r353178) +++ stable/10/sys/dev/usb/controller/xhci.c Mon Oct 7 08:25:25 2019 (r353179) @@ -605,6 +605,9 @@ xhci_init(struct xhci_softc *sc, device_t self, uint8_ device_printf(self, "%d bytes context size, %d-bit DMA\n", sc->sc_ctx_is_64_byte ? 64 : 32, (int)sc->sc_bus.dma_bits); + /* enable 64Kbyte control endpoint quirk */ + sc->sc_bus.control_ep_quirk = 1; + temp = XREAD4(sc, capa, XHCI_HCSPARAMS1); /* get number of device slots */ Modified: stable/10/sys/dev/usb/usb_bus.h ============================================================================== --- stable/10/sys/dev/usb/usb_bus.h Mon Oct 7 08:24:46 2019 (r353178) +++ stable/10/sys/dev/usb/usb_bus.h Mon Oct 7 08:25:25 2019 (r353179) @@ -129,6 +129,7 @@ struct usb_bus { uint8_t do_probe; /* set if USB should be re-probed */ uint8_t no_explore; /* don't explore USB ports */ uint8_t dma_bits; /* number of DMA address lines */ + uint8_t control_ep_quirk; /* need 64kByte buffer for data stage */ }; #endif /* _USB_BUS_H_ */ Modified: stable/10/sys/dev/usb/usb_transfer.c ============================================================================== --- stable/10/sys/dev/usb/usb_transfer.c Mon Oct 7 08:24:46 2019 (r353178) +++ stable/10/sys/dev/usb/usb_transfer.c Mon Oct 7 08:25:25 2019 (r353179) @@ -105,6 +105,33 @@ static const struct usb_config usb_control_ep_cfg[USB_ }, }; +static const struct usb_config usb_control_ep_quirk_cfg[USB_CTRL_XFER_MAX] = { + + /* This transfer is used for generic control endpoint transfers */ + + [0] = { + .type = UE_CONTROL, + .endpoint = 0x00, /* Control endpoint */ + .direction = UE_DIR_ANY, + .bufsize = 65535, /* bytes */ + .callback = &usb_request_callback, + .usb_mode = USB_MODE_DUAL, /* both modes */ + }, + + /* This transfer is used for generic clear stall only */ + + [1] = { + .type = UE_CONTROL, + .endpoint = 0x00, /* Control pipe */ + .direction = UE_DIR_ANY, + .bufsize = sizeof(struct usb_device_request), + .callback = &usb_do_clear_stall_callback, + .timeout = 1000, /* 1 second */ + .interval = 50, /* 50ms */ + .usb_mode = USB_MODE_HOST, + }, +}; + /* function prototypes */ static void usbd_update_max_frame_size(struct usb_xfer *); @@ -1020,7 +1047,8 @@ usbd_transfer_setup(struct usb_device *udev, * context, else there is a chance of * deadlock! */ - if (setup_start == usb_control_ep_cfg) + if (setup_start == usb_control_ep_cfg || + setup_start == usb_control_ep_quirk_cfg) info->done_p = USB_BUS_CONTROL_XFER_PROC(udev->bus); else if (xfer_mtx == &Giant) @@ -3148,7 +3176,8 @@ repeat: */ iface_index = 0; if (usbd_transfer_setup(udev, &iface_index, - udev->ctrl_xfer, usb_control_ep_cfg, USB_CTRL_XFER_MAX, NULL, + udev->ctrl_xfer, udev->bus->control_ep_quirk ? + usb_control_ep_quirk_cfg : usb_control_ep_cfg, USB_CTRL_XFER_MAX, NULL, &udev->device_mtx)) { DPRINTFN(0, "could not setup default " "USB transfer\n"); From owner-svn-src-stable-10@freebsd.org Wed Oct 9 22:19:55 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 12F77131856; Wed, 9 Oct 2019 22:19:55 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46pTDC0H1rz46bM; Wed, 9 Oct 2019 22:19:55 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C63771F3BC; Wed, 9 Oct 2019 22:19:54 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x99MJsah084303; Wed, 9 Oct 2019 22:19:54 GMT (envelope-from mm@FreeBSD.org) Received: (from mm@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x99MJmd4084271; Wed, 9 Oct 2019 22:19:48 GMT (envelope-from mm@FreeBSD.org) Message-Id: <201910092219.x99MJmd4084271@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mm set sender to mm@FreeBSD.org using -f From: Martin Matuska Date: Wed, 9 Oct 2019 22:19:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r353377 - in stable/10/contrib/libarchive: cat cpio libarchive libarchive/test tar tar/test test_utils X-SVN-Group: stable-10 X-SVN-Commit-Author: mm X-SVN-Commit-Paths: in stable/10/contrib/libarchive: cat cpio libarchive libarchive/test tar tar/test test_utils X-SVN-Commit-Revision: 353377 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 09 Oct 2019 22:19:55 -0000 Author: mm Date: Wed Oct 9 22:19:48 2019 New Revision: 353377 URL: https://svnweb.freebsd.org/changeset/base/353377 Log: MFC r316456,352732: Sync libarchive with vendor. MFC r316456: Vendor changes (FreeBSD-related): Report which extended attributes could not be restored Update archive_read_disk.3 and archive_write_disk.3 manual pages Plug memory leaks in xattr tests. MFC r352732: Relevant vendor changes: Issue #1237: Fix integer overflow in archive_read_support_filter_lz4.c PR #1249: Correct some typographical and grammatical errors. PR #1250: Minor corrections to the formatting of manual pages Modified: stable/10/contrib/libarchive/cat/bsdcat.1 stable/10/contrib/libarchive/cpio/bsdcpio.1 stable/10/contrib/libarchive/libarchive/archive.h stable/10/contrib/libarchive/libarchive/archive_entry.3 stable/10/contrib/libarchive/libarchive/archive_entry_acl.3 stable/10/contrib/libarchive/libarchive/archive_entry_misc.3 stable/10/contrib/libarchive/libarchive/archive_entry_paths.3 stable/10/contrib/libarchive/libarchive/archive_entry_perms.3 stable/10/contrib/libarchive/libarchive/archive_entry_stat.3 stable/10/contrib/libarchive/libarchive/archive_entry_time.3 stable/10/contrib/libarchive/libarchive/archive_read.3 stable/10/contrib/libarchive/libarchive/archive_read_add_passphrase.3 stable/10/contrib/libarchive/libarchive/archive_read_data.3 stable/10/contrib/libarchive/libarchive/archive_read_disk.3 stable/10/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c stable/10/contrib/libarchive/libarchive/archive_read_extract.3 stable/10/contrib/libarchive/libarchive/archive_read_filter.3 stable/10/contrib/libarchive/libarchive/archive_read_format.3 stable/10/contrib/libarchive/libarchive/archive_read_free.3 stable/10/contrib/libarchive/libarchive/archive_read_header.3 stable/10/contrib/libarchive/libarchive/archive_read_new.3 stable/10/contrib/libarchive/libarchive/archive_read_open.3 stable/10/contrib/libarchive/libarchive/archive_read_set_options.3 stable/10/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c stable/10/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c stable/10/contrib/libarchive/libarchive/archive_read_support_format_zip.c stable/10/contrib/libarchive/libarchive/archive_string.c stable/10/contrib/libarchive/libarchive/archive_util.3 stable/10/contrib/libarchive/libarchive/archive_write.3 stable/10/contrib/libarchive/libarchive/archive_write_blocksize.3 stable/10/contrib/libarchive/libarchive/archive_write_data.3 stable/10/contrib/libarchive/libarchive/archive_write_disk.3 stable/10/contrib/libarchive/libarchive/archive_write_disk_posix.c stable/10/contrib/libarchive/libarchive/archive_write_filter.3 stable/10/contrib/libarchive/libarchive/archive_write_finish_entry.3 stable/10/contrib/libarchive/libarchive/archive_write_format.3 stable/10/contrib/libarchive/libarchive/archive_write_free.3 stable/10/contrib/libarchive/libarchive/archive_write_header.3 stable/10/contrib/libarchive/libarchive/archive_write_new.3 stable/10/contrib/libarchive/libarchive/archive_write_open.3 stable/10/contrib/libarchive/libarchive/archive_write_set_format_iso9660.c stable/10/contrib/libarchive/libarchive/archive_write_set_format_mtree.c stable/10/contrib/libarchive/libarchive/archive_write_set_options.3 stable/10/contrib/libarchive/libarchive/archive_write_set_passphrase.3 stable/10/contrib/libarchive/libarchive/libarchive_changes.3 stable/10/contrib/libarchive/libarchive/libarchive_internals.3 stable/10/contrib/libarchive/libarchive/tar.5 stable/10/contrib/libarchive/libarchive/test/test_archive_write_add_filter_by_name.c stable/10/contrib/libarchive/libarchive/test/test_archive_write_set_format_filter_by_ext.c stable/10/contrib/libarchive/libarchive/test/test_read_format_raw.c stable/10/contrib/libarchive/libarchive/test/test_read_format_zip.c stable/10/contrib/libarchive/libarchive/test/test_read_format_zip_traditional_encryption_data.c stable/10/contrib/libarchive/libarchive/test/test_write_filter_zstd.c stable/10/contrib/libarchive/libarchive/test/test_xattr_platform.c stable/10/contrib/libarchive/tar/bsdtar.1 stable/10/contrib/libarchive/tar/test/test_option_acls.c stable/10/contrib/libarchive/tar/test/test_option_n.c stable/10/contrib/libarchive/tar/test/test_option_xattrs.c stable/10/contrib/libarchive/test_utils/test_common.h stable/10/contrib/libarchive/test_utils/test_main.c Directory Properties: stable/10/ (props changed) Modified: stable/10/contrib/libarchive/cat/bsdcat.1 ============================================================================== --- stable/10/contrib/libarchive/cat/bsdcat.1 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/cat/bsdcat.1 Wed Oct 9 22:19:48 2019 (r353377) @@ -34,16 +34,15 @@ .Nm .Op options .Op files -.Pp .Sh DESCRIPTION .Nm expands files to standard output. .Sh OPTIONS .Nm typically takes a filename as an argument or reads standard input when used in a -pipe. In both cases decompressed data it written to standard output. +pipe. +In both cases decompressed data it written to standard output. .Sh EXAMPLES -.Pp To decompress a file: .Pp .Dl bsdcat example.txt.gz > example.txt @@ -55,8 +54,8 @@ To decompress standard input in a pipe: Both examples achieve the same results - a decompressed file by redirecting output. .Sh SEE ALSO -.Xr uncompress 1 , -.Xr zcat 1 , .Xr bzcat 1 , +.Xr uncompress 1 , .Xr xzcat 1 , -.Xr libarchive-formats 5 , +.Xr zcat 1 , +.Xr libarchive-formats 5 Modified: stable/10/contrib/libarchive/cpio/bsdcpio.1 ============================================================================== --- stable/10/contrib/libarchive/cpio/bsdcpio.1 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/cpio/bsdcpio.1 Wed Oct 9 22:19:48 2019 (r353377) @@ -75,7 +75,6 @@ Pass-through. Read a list of filenames from standard input and copy the files to the specified directory. .El -.Pp .Sh OPTIONS Unless specifically stated otherwise, options are applicable in all operating modes. @@ -385,10 +384,10 @@ For best compatibility, scripts should limit themselve standard syntax. .Sh SEE ALSO .Xr bzip2 1 , -.Xr tar 1 , .Xr gzip 1 , .Xr mt 1 , .Xr pax 1 , +.Xr tar 1 , .Xr libarchive 3 , .Xr cpio 5 , .Xr libarchive-formats 5 , Modified: stable/10/contrib/libarchive/libarchive/archive.h ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive.h Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive.h Wed Oct 9 22:19:48 2019 (r353377) @@ -52,7 +52,7 @@ */ #if defined(__BORLANDC__) && __BORLANDC__ >= 0x560 # include -#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS) && !defined(__osf__) +#elif !defined(__WATCOMC__) && !defined(_MSC_VER) && !defined(__INTERIX) && !defined(__BORLANDC__) && !defined(_SCO_DS) && !defined(__osf__) && !defined(__CLANG_INTTYPES_H) # include #endif Modified: stable/10/contrib/libarchive/libarchive/archive_entry.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_entry.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_entry.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -32,7 +32,7 @@ .Nm archive_entry_clear , .Nm archive_entry_clone , .Nm archive_entry_free , -.Nm archive_entry_new , +.Nm archive_entry_new .Nd functions for managing archive entry descriptions .Sh LIBRARY Streaming Archive Library (libarchive, -larchive) @@ -126,7 +126,6 @@ using the current locale. Similarly, if you store a wide string and then store a narrow string for the same data, the previously-set wide string will be discarded in favor of the new data. -.Pp .\" .Sh EXAMPLE .\" .Sh RETURN VALUES .\" .Sh ERRORS @@ -134,8 +133,8 @@ be discarded in favor of the new data. .Xr archive_entry_acl 3 , .Xr archive_entry_paths 3 , .Xr archive_entry_perms 3 , -.Xr archive_entry_time 3 -.Xr libarchive 3 , +.Xr archive_entry_time 3 , +.Xr libarchive 3 .Sh HISTORY The .Nm libarchive Modified: stable/10/contrib/libarchive/libarchive/archive_entry_acl.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_entry_acl.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_entry_acl.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -118,15 +118,16 @@ Streaming Archive Library (libarchive, -larchive) .Sh DESCRIPTION The .Dq Access Control Lists (ACLs) -extend the standard Unix perssion model. +extend the standard Unix permission model. The ACL interface of .Nm libarchive -supports both POSIX.1e and NFSv4 style ACLs. Use of ACLs is restricted by +supports both POSIX.1e and NFSv4 style ACLs. +Use of ACLs is restricted by various levels of ACL support in operating systems, file systems and archive formats. .Ss POSIX.1e Access Control Lists A POSIX.1e ACL consists of a number of independent entries. -Each entry specifies the permission set as bitmask of basic permissions. +Each entry specifies the permission set as a bitmask of basic permissions. Valid permissions in the .Fa permset are: @@ -147,13 +148,13 @@ The user specified by the name field. .It Dv ARCHIVE_ENTRY_ACL_USER_OBJ The owner of the file. .It Dv ARCHIVE_ENTRY_ACL_GROUP -The group specied by the name field. +The group specified by the name field. .It Dv ARCHIVE_ENTRY_ACL_GROUP_OBJ -The group who owns the file. +The group which owns the file. .It Dv ARCHIVE_ENTRY_ACL_MASK The maximum permissions to be obtained via group permissions. .It Dv ARCHIVE_ENTRY_ACL_OTHER -Any principal who is not file owner or a member of the owning group. +Any principal who is not the file owner or a member of the owning group. .El .Pp The principals @@ -164,12 +165,12 @@ and are equivalent to user, group and other in the classic Unix permission model and specify non-extended ACL entries. .Pp -All files with have an access ACL +All files have an access ACL .Pq Dv ARCHIVE_ENTRY_ACL_TYPE_ACCESS . This specifies the permissions required for access to the file itself. Directories have an additional ACL .Pq Dv ARCHIVE_ENTRY_ACL_TYPE_DEFAULT , -which controls the initial access ACL for newly created directory entries. +which controls the initial access ACL for newly-created directory entries. .Ss NFSv4 Access Control Lists A NFSv4 ACL consists of multiple individual entries called Access Control Entries (ACEs). @@ -197,11 +198,11 @@ The user specified by the name field. .It Dv ARCHIVE_ENTRY_ACL_USER_OBJ The owner of the file. .It Dv ARCHIVE_ENTRY_ACL_GROUP -The group specied by the name field. +The group specified by the name field. .It Dv ARCHIVE_ENTRY_ACL_GROUP_OBJ -The group who owns the file. +The group which owns the file. .It Dv ARCHIVE_ENTRY_ACL_EVERYONE -Any principal who is not file owner or a member of the owning group. +Any principal who is not the file owner or a member of the owning group. .El .Pp Entries with the @@ -216,9 +217,10 @@ integer. .Pp NFSv4 ACE permissions and flags are stored in the same .Fa permset -bitfield. Some permissions share the same constant and permission character but -have different effect on directories than on files. The following ACE -permissions are supported: +bitfield. +Some permissions share the same constant and permission character +but have different effect on directories than on files. +The following ACE permissions are supported: .Bl -tag -offset indent -compact -width ARCHIV .It Dv ARCHIVE_ENTRY_ACL_READ_DATA ( Sy r ) Read data (file). @@ -265,7 +267,8 @@ Inherit parent directory ACE to subdirectories. .It Dv ARCHIVE_ENTRY_ACL_ENTRY_INHERIT_ONLY ( Sy i ) Only inherit, do not apply the permission on the directory itself. .It Dv ARCHIVE_ENTRY_ACL_ENTRY_NO_PROPAGATE_INHERIT ( Sy n ) -Do not propagate inherit flags. Only first-level entries inherit ACLs. +Do not propagate inherit flags. +Only first-level entries inherit ACLs. .It Dv ARCHIVE_ENTRY_ACL_ENTRY_SUCCESSFUL_ACCESS ( Sy S ) Trigger alarm or audit on successful access. .It Dv ARCHIVE_ENTRY_ACL_ENTRY_FAILED_ACCESS ( Sy F ) @@ -279,8 +282,8 @@ and .Fn archive_entry_acl_add_entry_w add a single ACL entry. For the access ACL and non-extended principals, the classic Unix permissions -are updated. An archive entry cannot contain both POSIX.1e and NFSv4 ACL -entries. +are updated. +An archive entry cannot contain both POSIX.1e and NFSv4 ACL entries. .Pp .Fn archive_entry_acl_clear removes all ACL entries and resets the enumeration pointer. @@ -300,7 +303,8 @@ for POSIX.1e ACLs and .It Dv ARCHIVE_ENTRY_ACL_TYPE_AUDIT .It Dv ARCHIVE_ENTRY_ACL_TYPE_ALARM .El -for NFSv4 ACLs. For POSIX.1e ACLs if +for NFSv4 ACLs. +For POSIX.1e ACLs if .Dv ARCHIVE_ENTRY_ACL_TYPE_ACCESS is included and at least one extended ACL entry is found, the three non-extended ACLs are added. @@ -312,7 +316,8 @@ add new .Pq or merge with existing ACL entries from .Pq wide -text. The argument +text. +The argument .Fa type may take one of the following values: .Bl -tag -offset indent -compact -width "ARCHIVE_ENTRY_ACL_TYPE_DEFAULT" @@ -322,11 +327,13 @@ may take one of the following values: .El Supports all formats that can be created with .Fn archive_entry_acl_to_text -or respective +or respectively .Fn archive_entry_acl_to_text_w . -Existing ACL entries are preserved. To get a clean new ACL from text +Existing ACL entries are preserved. +To get a clean new ACL from text .Fn archive_entry_acl_clear -must be called first. Entries prefixed with +must be called first. +Entries prefixed with .Dq default: are treated as .Dv ARCHIVE_ENTRY_ACL_TYPE_DEFAULT @@ -354,7 +361,7 @@ prepare reading the list of ACL entries with .Fn archive_entry_acl_next or .Fn archive_entry_acl_next_w . -The function returns either 0, if no non-extended ACLs are found. +The function returns 0 if no non-extended ACLs are found. In this case, the access permissions should be obtained by .Xr archive_entry_mode 3 or set using @@ -367,7 +374,8 @@ and .Fn archive_entry_acl_to_text_w convert the ACL entries for the given type into a .Pq wide -string of ACL entries separated by newline. If the pointer +string of ACL entries separated by newline. +If the pointer .Fa len_p is not NULL, then the function shall return the length of the string .Pq not including the NULL terminator @@ -415,7 +423,8 @@ are prefixed with .Dq default: . .Pp .Fn archive_entry_acl_types -get ACL entry types contained in an archive entry's ACL. As POSIX.1e and NFSv4 +get ACL entry types contained in an archive entry's ACL. +As POSIX.1e and NFSv4 ACL entries cannot be mixed, this function is a very efficient way to detect if an ACL already contains POSIX.1e or NFSv4 ACL entries. .Sh RETURN VALUES Modified: stable/10/contrib/libarchive/libarchive/archive_entry_misc.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_entry_misc.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_entry_misc.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -28,7 +28,7 @@ .Sh NAME .Nm archive_entry_symlink_type , .Nm archive_entry_set_symlink_type -.Nd miscellaneous functions for manipulating properties of archive_entry. +.Nd miscellaneous functions for manipulating properties of archive_entry .Sh LIBRARY Streaming Archive Library (libarchive, -larchive) .Sh SYNOPSIS @@ -42,7 +42,8 @@ The function .Fn archive_entry_symlink_type returns and the function .Fn archive_entry_set_symlink_type -sets the type of the symbolic link stored in an archive entry. These functions +sets the type of the symbolic link stored in an archive entry. +These functions have special meaning on operating systems that support multiple symbolic link types (e.g. Microsoft Windows). .Pp Modified: stable/10/contrib/libarchive/libarchive/archive_entry_paths.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_entry_paths.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_entry_paths.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -133,7 +133,7 @@ The accessor functions are named .Fn XXX_w . .It UTF-8 Unicode strings encoded as UTF-8. -This are convience functions to update both the multibyte and wide +These are convenience functions to update both the multibyte and wide character strings at the same time. .El .Pp @@ -141,13 +141,13 @@ The sourcepath is a pure filesystem concept and never archive directly. .Pp For that reason, it is only available as multibyte string. -The link path is a convience function for conditionally setting +The link path is a convenience function for conditionally setting hardlink or symlink destination. It doesn't have a corresponding get accessor function. .Pp .Fn archive_entry_set_XXX -is an alias for +is an alias for .Fn archive_entry_copy_XXX . .Sh SEE ALSO -.Xr archive_entry 3 -.Xr libarchive 3 , +.Xr archive_entry 3 , +.Xr libarchive 3 Modified: stable/10/contrib/libarchive/libarchive/archive_entry_perms.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_entry_perms.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_entry_perms.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -126,7 +126,7 @@ The corresponding functions and .Fn archive_entry_set_perm store the given user id, group id and permission in the entry. -The permission is also set as side effect of calling +The permission is also set as a side effect of calling .Fn archive_entry_set_mode . .Pp .Fn archive_entry_strmode @@ -143,12 +143,12 @@ The accessor functions are named .Fn XXX_w . .It UTF-8 Unicode strings encoded as UTF-8. -This are convience functions to update both the multibyte and wide +These are convenience functions to update both the multibyte and wide character strings at the same time. .El .Pp .Fn archive_entry_set_XXX -is an alias for +is an alias for .Fn archive_entry_copy_XXX . .Ss File Flags File flags are transparently converted between a bitmap @@ -182,7 +182,7 @@ The .Fn archive_entry_copy_fflags_text and .Fn archive_entry_copy_fflags_text_w -functions parse the provided text and sets the internal bitmap values. +functions parse the provided text and set the internal bitmap values. This is a platform-specific operation; names that are not meaningful on the current platform will be ignored. The function returns a pointer to the start of the first name that was not @@ -197,8 +197,8 @@ which stops parsing at the first unrecognized name.) .Xr archive_entry 3 , .Xr archive_entry_acl 3 , .Xr archive_read_disk 3 , -.Xr archive_write_disk 3 -.Xr libarchive 3 , +.Xr archive_write_disk 3 , +.Xr libarchive 3 .Sh BUGS The platform types .Vt uid_t Modified: stable/10/contrib/libarchive/libarchive/archive_entry_stat.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_entry_stat.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_entry_stat.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -54,7 +54,7 @@ .Nm archive_entry_rdevmajor , .Nm archive_entry_set_rdevmajor , .Nm archive_entry_rdevminor , -.Nm archive_entry_set_rdevminor , +.Nm archive_entry_set_rdevminor .Nd accessor functions for manipulating archive entry descriptions .Sh LIBRARY Streaming Archive Library (libarchive, -larchive) @@ -267,8 +267,8 @@ platforms. Some archive formats use the combined form, while other formats use the split form. .Sh SEE ALSO +.Xr stat 2 , .Xr archive_entry_acl 3 , .Xr archive_entry_perms 3 , .Xr archive_entry_time 3 , -.Xr libarchive 3 , -.Xr stat 2 +.Xr libarchive 3 Modified: stable/10/contrib/libarchive/libarchive/archive_entry_time.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_entry_time.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_entry_time.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -48,7 +48,7 @@ .Nm archive_entry_mtime_nsec , .Nm archive_entry_mtime_is_set , .Nm archive_entry_set_mtime , -.Nm archive_entry_unset_mtime , +.Nm archive_entry_unset_mtime .Nd functions for manipulating times in archive entry descriptions .Sh LIBRARY Streaming Archive Library (libarchive, -larchive) @@ -113,8 +113,8 @@ The current state can be queried using .Fn XXX_is_set . Unset time fields have a second and nanosecond field of 0. .Sh SEE ALSO -.Xr archive_entry 3 -.Xr libarchive 3 , +.Xr archive_entry 3 , +.Xr libarchive 3 .Sh HISTORY The .Nm libarchive Modified: stable/10/contrib/libarchive/libarchive/archive_read.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -155,7 +155,7 @@ to close the archive, then call .Fn archive_read_free to release all resources, including all memory allocated by the library. .\" -.Sh EXAMPLE +.Sh EXAMPLES The following illustrates basic usage of the library. In this example, the callback functions are simply wrappers around the standard @@ -217,16 +217,16 @@ myclose(struct archive *a, void *client_data) .\" .Sh ERRORS .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , -.Xr archive_read_new 3 , .Xr archive_read_data 3 , .Xr archive_read_extract 3 , .Xr archive_read_filter 3 , .Xr archive_read_format 3 , .Xr archive_read_header 3 , +.Xr archive_read_new 3 , .Xr archive_read_open 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , +.Xr libarchive 3 , .Xr tar 5 .Sh HISTORY The Modified: stable/10/contrib/libarchive/libarchive/archive_read_add_passphrase.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_add_passphrase.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_add_passphrase.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -59,16 +59,16 @@ or empty, this function will do nothing and will be returned. Otherwise, .Cm ARCHIVE_OK -will be returned. +will be returned. .It Fn archive_read_set_passphrase_callback -Register callback function that will be invoked to get a passphrase -for decrption after trying all passphrases registered by the +Register a callback function that will be invoked to get a passphrase +for decryption after trying all the passphrases registered by the .Fn archive_read_add_passphrase function failed. .El .\" .Sh ERRORS .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , .Xr archive_read 3 , -.Xr archive_read_set_options 3 +.Xr archive_read_set_options 3 , +.Xr libarchive 3 Modified: stable/10/contrib/libarchive/libarchive/archive_read_data.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_data.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_data.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -28,7 +28,7 @@ .Dt ARCHIVE_READ_DATA 3 .Os .Sh NAME -.Nm archive_read_data +.Nm archive_read_data , .Nm archive_read_data_block , .Nm archive_read_data_skip , .Nm archive_read_data_into_fd @@ -118,7 +118,6 @@ functions. .\" .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , .Xr archive_read 3 , .Xr archive_read_extract 3 , .Xr archive_read_filter 3 , @@ -127,4 +126,5 @@ functions. .Xr archive_read_open 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , +.Xr libarchive 3 , .Xr tar 5 Modified: stable/10/contrib/libarchive/libarchive/archive_read_disk.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_disk.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_disk.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -24,11 +24,12 @@ .\" .\" $FreeBSD$ .\" -.Dd December 30, 2016 +.Dd April 3, 2017 .Dt ARCHIVE_READ_DISK 3 .Os .Sh NAME .Nm archive_read_disk_new , +.Nm archive_read_disk_set_behavior , .Nm archive_read_disk_set_symlink_logical , .Nm archive_read_disk_set_symlink_physical , .Nm archive_read_disk_set_symlink_hybrid , @@ -46,6 +47,8 @@ Streaming Archive Library (libarchive, -larchive) .Ft struct archive * .Fn archive_read_disk_new "void" .Ft int +.Fn archive_read_disk_set_behavior "struct archive *" "int" +.Ft int .Fn archive_read_disk_set_symlink_logical "struct archive *" .Ft int .Fn archive_read_disk_set_symlink_physical "struct archive *" @@ -89,6 +92,52 @@ objects. Allocates and initializes a .Tn struct archive object suitable for reading object information from disk. +.It Fn archive_read_disk_set_behavior +Configures various behavior options when reading entries from disk. +The flags field consists of a bitwise OR of one or more of the +following values: +.Bl -tag -compact -width "indent" +.It Cm ARCHIVE_READDISK_HONOR_NODUMP +Skip files and directories with the nodump file attribute (file flag) set. +By default, the nodump file attribute is ignored. +.It Cm ARCHIVE_READDISK_MAC_COPYFILE +Mac OS X specific. +Read metadata (ACLs and extended attributes) with +.Xr copyfile 3 . +By default, metadata is read using +.Xr copyfile 3 . +.It Cm ARCHIVE_READDISK_NO_ACL +Do not read Access Control Lists. +By default, ACLs are read from disk. +.It Cm ARCHIVE_READDISK_NO_FFLAGS +Do not read file attributes (file flags). +By default, file attributes are read from disk. +See +.Xr chattr 1 +.Pq Linux +or +.Xr chflags 1 +.Pq FreeBSD, Mac OS X +for more information on file attributes. +.It Cm ARCHIVE_READDISK_NO_TRAVERSE_MOUNTS +Do not traverse mount points. +By default, mount points are traversed. +.It Cm ARCHIVE_READDISK_NO_XATTR +Do not read extended file attributes (xattrs). +By default, extended file attributes are read from disk. +See +.Xr xattr 7 +.Pq Linux , +.Xr xattr 2 +.Pq Mac OS X , +or +.Xr getextattr 8 +.Pq FreeBSD +for more information on extended file attributes. +.It Cm ARCHIVE_READDISK_RESTORE_ATIME +Restore access time of traversed files. +By default, access time of traversed files is not restored. +.El .It Xo .Fn archive_read_disk_set_symlink_logical , .Fn archive_read_disk_set_symlink_physical , @@ -168,7 +217,7 @@ of some other operation. (For example, directory traversal libraries often provide this information.) .Pp Where necessary, user and group ids are converted to user and group names -using the currently registered lookup functions above. +using the currently-registered lookup functions above. This affects the file ownership fields and ACL values in the .Tn struct archive_entry object. @@ -178,7 +227,7 @@ More information about the object and the overall design of the library can be found in the .Xr libarchive 3 overview. -.Sh EXAMPLE +.Sh EXAMPLES The following illustrates basic usage of the library by showing how to use it to copy an item on disk into an archive. .Bd -literal -offset indent @@ -243,11 +292,11 @@ and functions. .\" .Sh SEE ALSO +.Xr tar 1 , .Xr archive_read 3 , .Xr archive_util 3 , .Xr archive_write 3 , .Xr archive_write_disk 3 , -.Xr tar 1 , .Xr libarchive 3 .Sh HISTORY The Modified: stable/10/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Wed Oct 9 22:19:48 2019 (r353377) @@ -616,9 +616,21 @@ setup_xattrs(struct archive_read_disk *a, } for (p = list; (p - list) < list_size; p += strlen(p) + 1) { - if (strncmp(p, "system.", 7) == 0 || - strncmp(p, "xfsroot.", 8) == 0) +#if ARCHIVE_XATTR_LINUX + /* Linux: skip POSIX.1e ACL extended attributes */ + if (strncmp(p, "system.", 7) == 0 && + (strcmp(p + 7, "posix_acl_access") == 0 || + strcmp(p + 7, "posix_acl_default") == 0)) continue; + if (strncmp(p, "trusted.SGI_", 12) == 0 && + (strcmp(p + 12, "ACL_DEFAULT") == 0 || + strcmp(p + 12, "ACL_FILE") == 0)) + continue; + + /* Linux: xfsroot namespace is obsolete and unsupported */ + if (strncmp(p, "xfsroot.", 8) == 0) + continue; +#endif setup_xattr(a, entry, p, *fd, path); } Modified: stable/10/contrib/libarchive/libarchive/archive_read_extract.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_extract.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_extract.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -126,7 +126,6 @@ and functions. .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , .Xr archive_read 3 , .Xr archive_read_data 3 , .Xr archive_read_filter 3 , @@ -134,4 +133,5 @@ functions. .Xr archive_read_open 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , +.Xr libarchive 3 , .Xr tar 5 Modified: stable/10/contrib/libarchive/libarchive/archive_read_filter.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_filter.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_filter.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -147,8 +147,8 @@ and functions. .\" .Sh SEE ALSO -.Xr libarchive 3 , .Xr archive_read 3 , .Xr archive_read_data 3 , .Xr archive_read_format 3 , -.Xr archive_read_format 3 +.Xr archive_read_format 3 , +.Xr libarchive 3 Modified: stable/10/contrib/libarchive/libarchive/archive_read_format.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_format.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_format.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -102,7 +102,7 @@ For example, .Fn archive_read_support_format_tar enables support for a variety of standard tar formats, old-style tar, ustar, pax interchange format, and many common variants. -.It Fn archive_read_support_format_all +.It Fn archive_read_support_format_all Enables support for all available formats except the .Dq raw format (see below). @@ -125,7 +125,7 @@ it is not possible to accurately determine a format fo an empty file based purely on contents. So empty files are treated by libarchive as a distinct format. -.It Fn archive_read_support_format_raw +.It Fn archive_read_support_format_raw The .Dq raw format handler allows libarchive to be used to read arbitrary data. @@ -153,11 +153,11 @@ functions. .\" .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , .Xr archive_read_data 3 , .Xr archive_read_filter 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , +.Xr libarchive 3 , .Xr tar 5 .Sh BUGS Many traditional archiver programs treat Modified: stable/10/contrib/libarchive/libarchive/archive_read_free.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_free.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_free.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -83,11 +83,11 @@ and functions. .\" .Sh SEE ALSO -.Xr libarchive 3 , -.Xr archive_read_new 3 , .Xr archive_read_data 3 , .Xr archive_read_filter 3 , .Xr archive_read_format 3 , +.Xr archive_read_new 3 , .Xr archive_read_open 3 , .Xr archive_read_set_options 3 , -.Xr archive_util 3 +.Xr archive_util 3 , +.Xr libarchive 3 Modified: stable/10/contrib/libarchive/libarchive/archive_read_header.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_header.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_header.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -79,7 +79,6 @@ functions. .\" .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , .Xr archive_read 3 , .Xr archive_read_data 3 , .Xr archive_read_extract 3 , @@ -88,4 +87,5 @@ functions. .Xr archive_read_open 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , +.Xr libarchive 3 , .Xr tar 5 Modified: stable/10/contrib/libarchive/libarchive/archive_read_new.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_new.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_new.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -50,10 +50,10 @@ object can be found in the overview manual page for .\" .Sh ERRORS .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , .Xr archive_read_data 3 , .Xr archive_read_filter 3 , .Xr archive_read_format 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , +.Xr libarchive 3 , .Xr tar 5 Modified: stable/10/contrib/libarchive/libarchive/archive_read_open.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_open.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_open.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -205,7 +205,7 @@ On failure, the callback should invoke .Fn archive_set_error to register an error code and message and return -.Cm ARCHIVE_FATAL. +.Cm ARCHIVE_FATAL . .\" .Sh EXAMPLE .\" .Sh RETURN VALUES @@ -223,11 +223,11 @@ functions. .\" .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , .Xr archive_read 3 , .Xr archive_read_data 3 , .Xr archive_read_filter 3 , .Xr archive_read_format 3 , .Xr archive_read_set_options 3 , .Xr archive_util 3 , +.Xr libarchive 3 , .Xr tar 5 Modified: stable/10/contrib/libarchive/libarchive/archive_read_set_options.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_set_options.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_set_options.3 Wed Oct 9 22:19:48 2019 (r353377) @@ -212,7 +212,8 @@ Use to disable. .It Cm read_concatenated_archives Ignore zeroed blocks in the archive, which occurs when multiple tar archives -have been concatenated together. Without this option, only the contents of +have been concatenated together. +Without this option, only the contents of the first concatenated archive would be read. .El .El @@ -226,6 +227,6 @@ functions. .\" .Sh SEE ALSO .Xr tar 1 , -.Xr libarchive 3 , +.Xr archive_read 3 , .Xr archive_write_set_options 3 , -.Xr archive_read 3 +.Xr libarchive 3 Modified: stable/10/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c Wed Oct 9 22:19:48 2019 (r353377) @@ -131,12 +131,20 @@ archive_read_support_filter_gzip(struct archive *_a) */ static ssize_t peek_at_header(struct archive_read_filter *filter, int *pbits, - struct private_data *state) +#ifdef HAVE_ZLIB_H + struct private_data *state +#else + void *state +#endif + ) { const unsigned char *p; ssize_t avail, len; int bits = 0; int header_flags; +#ifndef HAVE_ZLIB_H + (void)state; /* UNUSED */ +#endif /* Start by looking at the first ten bytes of the header, which * is all fixed layout. */ @@ -153,8 +161,10 @@ peek_at_header(struct archive_read_filter *filter, int bits += 3; header_flags = p[3]; /* Bytes 4-7 are mod time in little endian. */ +#ifdef HAVE_ZLIB_H if (state) state->mtime = archive_le32dec(p + 4); +#endif /* Byte 8 is deflate flags. */ /* XXXX TODO: return deflate flags back to consume_header for use in initializing the decompressor. */ @@ -171,7 +181,9 @@ peek_at_header(struct archive_read_filter *filter, int /* Null-terminated optional filename. */ if (header_flags & 8) { +#ifdef HAVE_ZLIB_H ssize_t file_start = len; +#endif do { ++len; if (avail < len) @@ -181,11 +193,13 @@ peek_at_header(struct archive_read_filter *filter, int return (0); } while (p[len - 1] != 0); +#ifdef HAVE_ZLIB_H if (state) { /* Reset the name in case of repeat header reads. */ free(state->name); state->name = strdup((const char *)&p[file_start]); } +#endif } /* Null-terminated optional comment. */ @@ -236,24 +250,6 @@ gzip_bidder_bid(struct archive_read_filter_bidder *sel return (0); } -static int -gzip_read_header(struct archive_read_filter *self, struct archive_entry *entry) -{ - struct private_data *state; - - state = (struct private_data *)self->data; - - /* A mtime of 0 is considered invalid/missing. */ - if (state->mtime != 0) - archive_entry_set_mtime(entry, state->mtime, 0); - - /* If the name is available, extract it. */ - if (state->name) - archive_entry_set_pathname(entry, state->name); - - return (ARCHIVE_OK); -} - #ifndef HAVE_ZLIB_H /* @@ -277,6 +273,24 @@ gzip_bidder_init(struct archive_read_filter *self) #else +static int +gzip_read_header(struct archive_read_filter *self, struct archive_entry *entry) +{ + struct private_data *state; + + state = (struct private_data *)self->data; + + /* A mtime of 0 is considered invalid/missing. */ + if (state->mtime != 0) + archive_entry_set_mtime(entry, state->mtime, 0); + + /* If the name is available, extract it. */ + if (state->name) + archive_entry_set_pathname(entry, state->name); + + return (ARCHIVE_OK); +} + /* * Initialize the filter object. */ @@ -306,7 +320,9 @@ gzip_bidder_init(struct archive_read_filter *self) self->read = gzip_filter_read; self->skip = NULL; /* not supported */ self->close = gzip_filter_close; +#ifdef HAVE_ZLIB_H self->read_header = gzip_read_header; +#endif state->in_stream = 0; /* We're not actually within a stream yet. */ Modified: stable/10/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_support_filter_lz4.c Wed Oct 9 22:19:48 2019 (r353377) @@ -460,7 +460,7 @@ lz4_filter_read_descriptor(struct archive_read_filter __archive_read_filter_consume(self->upstream, descriptor_bytes); - /* Make sure we have an enough buffer for uncompressed data. */ + /* Make sure we have a large enough buffer for uncompressed data. */ if (lz4_allocate_out_block(self) != ARCHIVE_OK) return (ARCHIVE_FATAL); if (state->flags.stream_checksum) @@ -520,7 +520,7 @@ lz4_filter_read_data_block(struct archive_read_filter if (read_buf == NULL) goto truncated_error; - /* Optional process, checking a block sum. */ + /* Optional processing, checking a block sum. */ if (checksum_size) { unsigned int chsum = __archive_xxhash.XXH32( read_buf + 4, (int)compressed_size, 0); @@ -640,7 +640,7 @@ lz4_filter_read_default_stream(struct archive_read_fil if (ret == 0 && *p == NULL) state->stage = SELECT_STREAM; - /* Optional process, checking a stream sum. */ + /* Optional processing, checking a stream sum. */ if (state->flags.stream_checksum) { if (state->stage == SELECT_STREAM) { unsigned int checksum; @@ -660,7 +660,7 @@ lz4_filter_read_default_stream(struct archive_read_fil if (checksum != checksum_stream) { archive_set_error(&self->archive->archive, ARCHIVE_ERRNO_MISC, - "lz4 stream cheksum error"); + "lz4 stream checksum error"); return (ARCHIVE_FATAL); } } else if (ret > 0) @@ -674,7 +674,7 @@ static ssize_t lz4_filter_read_legacy_stream(struct archive_read_filter *self, const void **p) { struct private_data *state = (struct private_data *)self->data; - int compressed; + uint32_t compressed; const char *read_buf; ssize_t ret; Modified: stable/10/contrib/libarchive/libarchive/archive_read_support_format_zip.c ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_read_support_format_zip.c Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_read_support_format_zip.c Wed Oct 9 22:19:48 2019 (r353377) @@ -487,7 +487,7 @@ process_extra(struct archive_read *a, struct archive_e /* Some ZIP files may have trailing 0 bytes. Let's check they * are all 0 and ignore them instead of returning an error. * - * This is not techincally correct, but some ZIP files look + * This is not technically correct, but some ZIP files look * like this and other tools support those files - so let's * also support them. */ @@ -1053,7 +1053,7 @@ zip_read_local_file_header(struct archive_read *a, str /* Make sure that entries with a trailing '/' are marked as directories * even if the External File Attributes contains bogus values. If this - * is not a directory and there is no type, assume regularfile. */ + * is not a directory and there is no type, assume a regular file. */ if ((zip_entry->mode & AE_IFMT) != AE_IFDIR) { int has_slash; @@ -1104,7 +1104,7 @@ zip_read_local_file_header(struct archive_read *a, str } if (zip_entry->flags & LA_FROM_CENTRAL_DIRECTORY) { - /* If this came from the central dir, it's size info + /* If this came from the central dir, its size info * is definitive, so ignore the length-at-end flag. */ zip_entry->zip_flags &= ~ZIP_LENGTH_AT_END; /* If local header is missing a value, use the one from Modified: stable/10/contrib/libarchive/libarchive/archive_string.c ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_string.c Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_string.c Wed Oct 9 22:19:48 2019 (r353377) @@ -458,7 +458,7 @@ archive_wstring_append_from_mbs_in_codepage(struct arc if (from_cp == CP_C_LOCALE) { /* - * "C" locale special process. + * "C" locale special processing. */ wchar_t *ws; const unsigned char *mp; @@ -680,7 +680,7 @@ archive_string_append_from_wcs_in_codepage(struct arch if (to_cp == CP_C_LOCALE) { /* - * "C" locale special process. + * "C" locale special processing. */ const wchar_t *wp = ws; char *p; @@ -889,7 +889,7 @@ add_converter(struct archive_string_conv *sc, int (*co struct archive_string_conv *)) { if (sc == NULL || sc->nconverter >= 2) - __archive_errx(1, "Programing error"); + __archive_errx(1, "Programming error"); sc->converter[sc->nconverter++] = converter; } Modified: stable/10/contrib/libarchive/libarchive/archive_util.3 ============================================================================== --- stable/10/contrib/libarchive/libarchive/archive_util.3 Wed Oct 9 22:19:06 2019 (r353376) +++ stable/10/contrib/libarchive/libarchive/archive_util.3 Wed Oct 9 22:19:48 2019 (r353377) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable-10@freebsd.org Thu Oct 10 20:28:35 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 98E1C130F5A; Thu, 10 Oct 2019 20:28:35 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46q2jH3TXjz4Xy0; Thu, 10 Oct 2019 20:28:35 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3D8B47507; Thu, 10 Oct 2019 20:28:35 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x9AKSYJm067576; Thu, 10 Oct 2019 20:28:34 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x9AKSYBg067574; Thu, 10 Oct 2019 20:28:34 GMT (envelope-from np@FreeBSD.org) Message-Id: <201910102028.x9AKSYBg067574@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Thu, 10 Oct 2019 20:28:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r353414 - stable/10/sys/net X-SVN-Group: stable-10 X-SVN-Commit-Author: np X-SVN-Commit-Paths: stable/10/sys/net X-SVN-Commit-Revision: 353414 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Oct 2019 20:28:35 -0000 Author: np Date: Thu Oct 10 20:28:34 2019 New Revision: 353414 URL: https://svnweb.freebsd.org/changeset/base/353414 Log: MFC r318147 (by erj@): Add several new media types to if_media.h These include several 25G types (for active direct attach cables and LR modules), and a missing type for 10G active direct attach. Modified: stable/10/sys/net/ieee8023ad_lacp.c stable/10/sys/net/if_media.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/net/ieee8023ad_lacp.c ============================================================================== --- stable/10/sys/net/ieee8023ad_lacp.c Thu Oct 10 18:52:24 2019 (r353413) +++ stable/10/sys/net/ieee8023ad_lacp.c Thu Oct 10 20:28:34 2019 (r353414) @@ -1091,6 +1091,7 @@ lacp_compose_key(struct lacp_port *lp) case IFM_10G_CR1: case IFM_10G_ER: case IFM_10G_SFI: + case IFM_10G_AOC: key = IFM_10G_LR; break; case IFM_20G_KR2: @@ -1115,6 +1116,9 @@ lacp_compose_key(struct lacp_port *lp) case IFM_25G_CR: case IFM_25G_KR: case IFM_25G_SR: + case IFM_25G_LR: + case IFM_25G_ACC: + case IFM_25G_AOC: key = IFM_25G_PCIE; break; case IFM_40G_CR4: Modified: stable/10/sys/net/if_media.h ============================================================================== --- stable/10/sys/net/if_media.h Thu Oct 10 18:52:24 2019 (r353413) +++ stable/10/sys/net/if_media.h Thu Oct 10 20:28:34 2019 (r353414) @@ -193,6 +193,10 @@ uint64_t ifmedia_baudrate(int); #define IFM_25G_SR IFM_X(55) /* 25GBase-SR */ #define IFM_50G_CR2 IFM_X(56) /* 50GBase-CR2 */ #define IFM_50G_KR2 IFM_X(57) /* 50GBase-KR2 */ +#define IFM_25G_LR IFM_X(58) /* 25GBase-LR */ +#define IFM_10G_AOC IFM_X(59) /* 10G active optical cable */ +#define IFM_25G_ACC IFM_X(60) /* 25G active copper cable */ +#define IFM_25G_AOC IFM_X(61) /* 25G active optical cable */ /* * Please update ieee8023ad_lacp.c:lacp_compose_key() @@ -444,6 +448,10 @@ struct ifmedia_description { { IFM_25G_SR, "25GBase-SR" }, \ { IFM_50G_CR2, "50GBase-CR2" }, \ { IFM_50G_KR2, "50GBase-KR2" }, \ + { IFM_25G_LR, "25GBase-LR" }, \ + { IFM_10G_AOC, "10GBase-AOC" }, \ + { IFM_25G_ACC, "25GBase-ACC" }, \ + { IFM_25G_AOC, "25GBase-AOC" }, \ { 0, NULL }, \ } @@ -772,6 +780,10 @@ struct ifmedia_baudrate { { IFM_ETHER | IFM_25G_SR, IF_Gbps(25ULL) }, \ { IFM_ETHER | IFM_50G_CR2, IF_Gbps(50ULL) }, \ { IFM_ETHER | IFM_50G_KR2, IF_Gbps(50ULL) }, \ + { IFM_ETHER | IFM_25G_LR, IF_Gbps(25ULL) }, \ + { IFM_ETHER | IFM_10G_AOC, IF_Gbps(10ULL) }, \ + { IFM_ETHER | IFM_25G_ACC, IF_Gbps(25ULL) }, \ + { IFM_ETHER | IFM_25G_AOC, IF_Gbps(25ULL) }, \ \ { IFM_TOKEN | IFM_TOK_STP4, IF_Mbps(4) }, \ { IFM_TOKEN | IFM_TOK_STP16, IF_Mbps(16) }, \ From owner-svn-src-stable-10@freebsd.org Thu Oct 10 23:27:04 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 44F6C134DE2; Thu, 10 Oct 2019 23:27:04 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46q6gD0YLYz3CsB; Thu, 10 Oct 2019 23:27:04 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E5EF994FD; Thu, 10 Oct 2019 23:27:03 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x9ANR3Pt072450; Thu, 10 Oct 2019 23:27:03 GMT (envelope-from np@FreeBSD.org) Received: (from np@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x9ANR3Ca072447; Thu, 10 Oct 2019 23:27:03 GMT (envelope-from np@FreeBSD.org) Message-Id: <201910102327.x9ANR3Ca072447@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: np set sender to np@FreeBSD.org using -f From: Navdeep Parhar Date: Thu, 10 Oct 2019 23:27:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r353418 - in stable/10/sys: conf dev/cxgbe dev/cxgbe/common dev/cxgbe/firmware modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware modules/cxgbe/t6_firmware X-SVN-Group: stable-10 X-SVN-Commit-Author: np X-SVN-Commit-Paths: in stable/10/sys: conf dev/cxgbe dev/cxgbe/common dev/cxgbe/firmware modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware modules/cxgbe/t6_firmware X-SVN-Commit-Revision: 353418 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Oct 2019 23:27:04 -0000 Author: np Date: Thu Oct 10 23:27:02 2019 New Revision: 353418 URL: https://svnweb.freebsd.org/changeset/base/353418 Log: MFC r319872, r321063, r321582, r322034, r322425, r322962, r322985, r325596, r326026, r328420, r331472, r333276, r333650, r333652, r334406, r334409-r334410, r334489, r336042, r340651, r342603, and r345083. This updates the cxgbe firmwares in stable/10 and also pulls in support for some newer boards and flash parts. r319872: cxgbe(4): Do not request an FEC setting that the port does not support. r321063: cxgbe(4): Various link/media related improvements. r321582: cxgbe(4): Some updates to the common code. r322034: cxgbe(4): Always use the first and not the last virtual interface associated with a port in begin_synchronized_op. r322425: cxgbe(4): Save the last reported link parameters and compare them with the current state to determine whether to generate a link-state change notification. This fixes a bug introduced in r321063 that caused the driver to sometimes skip these notifications. r322962: cxgbe(4): Remove write only variable from t4_port_init. r322985: cxgbe(4): Maintain one ifmedia per physical port instead of one per Virtual Interface (VI). All autonomous VIs that share a port share the same media. r325596: cxgbe(4): Do not request settings not supported by the port. r326026: cxgbe(4): Add a custom board to the device id list. r328420: cxgbe(4): Do not display harmless warning in non-debug builds. r331472: cxgbe(4): Always initialize requested_speed to a valid value. This fixes an avoidable EINVAL when the user tries to disable AN after the port is initialized but l1cfg doesn't have a valid speed to use. r333276: cxgbe(4): Update all firmwares to 1.19.1.0. r333650: cxgbe(4): Claim some more T5 and T6 boards. r333652: cxgbe(4): Add support for two more flash parts. r334406: cxgbe(4): Consider all supported speeds when building the ifmedia list for a port. Fix other related issues while here: - Require port lock for access to link_config. - Allow 100Mbps operation by tracking the speed in Mbps. Yes, really. - New port flag to indicate that the media list is immutable. It will be used in future refinements. This also fixes a bug where the driver reports incorrect media with recent firmwares. r334409: cxgbe(4): Implement ifm_change callback. r334410: cxgbe(4): Use ifm for ifmedia just like the rest of the kernel. No functional change. r334489: cxgbe(4): Include full duplex mediaopt in media that can be reported as active. Always report full duplex in active media. r336042: cxgbe(4): Assume that any unknown flash on the card is 4MB and has 64KB sectors, instead of refusing to attach to the card. r340651: cxgbe(4): Update T4/5/6 firmwares to 1.22.0.3. r342603: cxgbe(4): Attach to two T540 variants. r345083: cxgbe(4): Update T4/5/6 firmwares to 1.23.0.0. Added: stable/10/sys/dev/cxgbe/firmware/t4fw-1.23.0.0.bin.uu - copied unchanged from r345083, head/sys/dev/cxgbe/firmware/t4fw-1.23.0.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.23.0.0.bin.uu - copied unchanged from r345083, head/sys/dev/cxgbe/firmware/t5fw-1.23.0.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t6fw-1.23.0.0.bin.uu - copied unchanged from r345083, head/sys/dev/cxgbe/firmware/t6fw-1.23.0.0.bin.uu Deleted: stable/10/sys/dev/cxgbe/firmware/t4fw-1.16.63.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t5fw-1.16.63.0.bin.uu stable/10/sys/dev/cxgbe/firmware/t6fw-1.16.63.0.bin.uu Modified: stable/10/sys/conf/files stable/10/sys/dev/cxgbe/adapter.h stable/10/sys/dev/cxgbe/common/common.h stable/10/sys/dev/cxgbe/common/t4_hw.c stable/10/sys/dev/cxgbe/firmware/t4fw_interface.h stable/10/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/firmware/t6fw_cfg_uwire.txt stable/10/sys/dev/cxgbe/t4_main.c stable/10/sys/dev/cxgbe/t4_sge.c stable/10/sys/modules/cxgbe/t4_firmware/Makefile stable/10/sys/modules/cxgbe/t5_firmware/Makefile stable/10/sys/modules/cxgbe/t6_firmware/Makefile Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/conf/files ============================================================================== --- stable/10/sys/conf/files Thu Oct 10 22:49:45 2019 (r353417) +++ stable/10/sys/conf/files Thu Oct 10 23:27:02 2019 (r353418) @@ -1195,7 +1195,7 @@ t4fw.fwo optional cxgbe \ no-implicit-rule \ clean "t4fw.fwo" t4fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t4fw-1.16.63.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t4fw-1.23.0.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t4fw.fw" @@ -1219,7 +1219,7 @@ t5fw.fwo optional cxgbe \ no-implicit-rule \ clean "t5fw.fwo" t5fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t5fw-1.16.63.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t5fw-1.23.0.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t5fw.fw" @@ -1243,7 +1243,7 @@ t6fw.fwo optional cxgbe \ no-implicit-rule \ clean "t6fw.fwo" t6fw.fw optional cxgbe \ - dependency "$S/dev/cxgbe/firmware/t6fw-1.16.63.0.bin.uu" \ + dependency "$S/dev/cxgbe/firmware/t6fw-1.23.0.0.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "t6fw.fw" Modified: stable/10/sys/dev/cxgbe/adapter.h ============================================================================== --- stable/10/sys/dev/cxgbe/adapter.h Thu Oct 10 22:49:45 2019 (r353417) +++ stable/10/sys/dev/cxgbe/adapter.h Thu Oct 10 23:27:02 2019 (r353418) @@ -156,6 +156,7 @@ enum { /* port flags */ HAS_TRACEQ = (1 << 3), + FIXED_IFMEDIA = (1 << 4), /* ifmedia list doesn't change. */ /* VI flags */ DOOMED = (1 << 0), @@ -180,7 +181,6 @@ struct vi_info { struct port_info *pi; struct ifnet *ifp; - struct ifmedia media; unsigned long flags; int if_flags; @@ -281,6 +281,8 @@ struct port_info { uint8_t rx_chan_map; /* rx MPS channel bitmap */ struct link_config link_cfg; + struct link_config old_link_cfg; + struct ifmedia media; struct timeval last_refreshed; struct port_stats stats; @@ -1026,10 +1028,10 @@ adap2pinfo(struct adapter *sc, int idx) } static inline void -t4_os_set_hw_addr(struct adapter *sc, int idx, uint8_t hw_addr[]) +t4_os_set_hw_addr(struct port_info *pi, uint8_t hw_addr[]) { - bcopy(hw_addr, sc->port[idx]->vi[0].hw_addr, ETHER_ADDR_LEN); + bcopy(hw_addr, pi->vi[0].hw_addr, ETHER_ADDR_LEN); } static inline bool @@ -1079,24 +1081,6 @@ port_top_speed(const struct port_info *pi) } static inline int -port_top_speed_raw(const struct port_info *pi) -{ - - if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_100G) - return (FW_PORT_CAP_SPEED_100G); - if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_40G) - return (FW_PORT_CAP_SPEED_40G); - if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_25G) - return (FW_PORT_CAP_SPEED_25G); - if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_10G) - return (FW_PORT_CAP_SPEED_10G); - if (pi->link_cfg.supported & FW_PORT_CAP_SPEED_1G) - return (FW_PORT_CAP_SPEED_1G); - - return (0); -} - -static inline int tx_resume_threshold(struct sge_eq *eq) { @@ -1132,8 +1116,8 @@ extern device_method_t cxgbe_methods[]; int t4_os_find_pci_capability(struct adapter *, int); int t4_os_pci_save_state(struct adapter *); int t4_os_pci_restore_state(struct adapter *); -void t4_os_portmod_changed(const struct adapter *, int); -void t4_os_link_changed(struct adapter *, int, int); +void t4_os_portmod_changed(struct port_info *); +void t4_os_link_changed(struct port_info *); void t4_iterate(void (*)(struct adapter *, void *), void *); void t4_init_devnames(struct adapter *); void t4_add_adapter(struct adapter *); Modified: stable/10/sys/dev/cxgbe/common/common.h ============================================================================== --- stable/10/sys/dev/cxgbe/common/common.h Thu Oct 10 22:49:45 2019 (r353417) +++ stable/10/sys/dev/cxgbe/common/common.h Thu Oct 10 23:27:02 2019 (r353418) @@ -399,16 +399,18 @@ struct trace_params { }; struct link_config { + /* OS-specific code owns all the requested_* fields */ + unsigned char requested_aneg; /* link aneg user has requested */ + unsigned char requested_fc; /* flow control user has requested */ + unsigned char requested_fec; /* FEC user has requested */ + unsigned int requested_speed; /* speed user has requested (Mbps) */ + unsigned short supported; /* link capabilities */ unsigned short advertising; /* advertised capabilities */ unsigned short lp_advertising; /* peer advertised capabilities */ - unsigned int requested_speed; /* speed user has requested */ - unsigned int speed; /* actual link speed */ - unsigned char requested_fc; /* flow control user has requested */ + unsigned int speed; /* actual link speed (Mbps) */ unsigned char fc; /* actual link flow control */ - unsigned char requested_fec; /* FEC user has requested */ unsigned char fec; /* actual FEC */ - unsigned char autoneg; /* autonegotiating? */ unsigned char link_ok; /* link up? */ unsigned char link_down_rc; /* link down reason */ }; @@ -576,7 +578,7 @@ int t4_prep_adapter(struct adapter *adapter, u8 *buf); int t4_shutdown_adapter(struct adapter *adapter); int t4_init_devlog_params(struct adapter *adapter, int fw_attach); int t4_init_sge_params(struct adapter *adapter); -int t4_init_tp_params(struct adapter *adap); +int t4_init_tp_params(struct adapter *adap, bool sleep_ok); int t4_filter_field_shift(const struct adapter *adap, int filter_sel); int t4_port_init(struct adapter *adap, int mbox, int pf, int vf, int port_id); void t4_fatal_err(struct adapter *adapter); @@ -594,20 +596,21 @@ int t4_config_vi_rss(struct adapter *adapter, int mbox unsigned int flags, unsigned int defq, unsigned int skeyidx, unsigned int skey); int t4_read_rss(struct adapter *adapter, u16 *entries); -void t4_fw_tp_pio_rw(struct adapter *adap, u32 *vals, unsigned int nregs, - unsigned int start_index, unsigned int rw); -void t4_read_rss_key(struct adapter *adapter, u32 *key); -void t4_write_rss_key(struct adapter *adap, u32 *key, int idx); -void t4_read_rss_pf_config(struct adapter *adapter, unsigned int index, u32 *valp); -void t4_write_rss_pf_config(struct adapter *adapter, unsigned int index, u32 val); +void t4_read_rss_key(struct adapter *adapter, u32 *key, bool sleep_ok); +void t4_write_rss_key(struct adapter *adap, const u32 *key, int idx, + bool sleep_ok); +void t4_read_rss_pf_config(struct adapter *adapter, unsigned int index, + u32 *valp, bool sleep_ok); +void t4_write_rss_pf_config(struct adapter *adapter, unsigned int index, + u32 val, bool sleep_ok); void t4_read_rss_vf_config(struct adapter *adapter, unsigned int index, - u32 *vfl, u32 *vfh); + u32 *vfl, u32 *vfh, bool sleep_ok); void t4_write_rss_vf_config(struct adapter *adapter, unsigned int index, - u32 vfl, u32 vfh); -u32 t4_read_rss_pf_map(struct adapter *adapter); -void t4_write_rss_pf_map(struct adapter *adapter, u32 pfmap); -u32 t4_read_rss_pf_mask(struct adapter *adapter); -void t4_write_rss_pf_mask(struct adapter *adapter, u32 pfmask); + u32 vfl, u32 vfh, bool sleep_ok); +u32 t4_read_rss_pf_map(struct adapter *adapter, bool sleep_ok); +void t4_write_rss_pf_map(struct adapter *adapter, u32 pfmap, bool sleep_ok); +u32 t4_read_rss_pf_mask(struct adapter *adapter, bool sleep_ok); +void t4_write_rss_pf_mask(struct adapter *adapter, u32 pfmask, bool sleep_ok); int t4_mps_set_active_ports(struct adapter *adap, unsigned int port_mask); void t4_pmtx_get_stats(struct adapter *adap, u32 cnt[], u64 cycles[]); void t4_pmrx_get_stats(struct adapter *adap, u32 cnt[], u64 cycles[]); @@ -653,19 +656,24 @@ void t4_read_mtu_tbl(struct adapter *adap, u16 *mtus, void t4_read_cong_tbl(struct adapter *adap, u16 incr[NMTUS][NCCTRL_WIN]); void t4_read_pace_tbl(struct adapter *adap, unsigned int pace_vals[NTX_SCHED]); void t4_get_tx_sched(struct adapter *adap, unsigned int sched, unsigned int *kbps, - unsigned int *ipg); + unsigned int *ipg, bool sleep_ok); void t4_tp_wr_bits_indirect(struct adapter *adap, unsigned int addr, unsigned int mask, unsigned int val); void t4_tp_read_la(struct adapter *adap, u64 *la_buf, unsigned int *wrptr); -void t4_tp_get_err_stats(struct adapter *adap, struct tp_err_stats *st); -void t4_tp_get_proxy_stats(struct adapter *adap, struct tp_proxy_stats *st); -void t4_tp_get_cpl_stats(struct adapter *adap, struct tp_cpl_stats *st); -void t4_tp_get_rdma_stats(struct adapter *adap, struct tp_rdma_stats *st); -void t4_get_usm_stats(struct adapter *adap, struct tp_usm_stats *st); +void t4_tp_get_err_stats(struct adapter *adap, struct tp_err_stats *st, + bool sleep_ok); +void t4_tp_get_proxy_stats(struct adapter *adap, struct tp_proxy_stats *st, + bool sleep_ok); +void t4_tp_get_cpl_stats(struct adapter *adap, struct tp_cpl_stats *st, + bool sleep_ok); +void t4_tp_get_rdma_stats(struct adapter *adap, struct tp_rdma_stats *st, + bool sleep_ok); +void t4_get_usm_stats(struct adapter *adap, struct tp_usm_stats *st, + bool sleep_ok); void t4_tp_get_tcp_stats(struct adapter *adap, struct tp_tcp_stats *v4, - struct tp_tcp_stats *v6); + struct tp_tcp_stats *v6, bool sleep_ok); void t4_get_fcoe_stats(struct adapter *adap, unsigned int idx, - struct tp_fcoe_stats *st); + struct tp_fcoe_stats *st, bool sleep_ok); void t4_load_mtus(struct adapter *adap, const unsigned short *mtus, const unsigned short *alpha, const unsigned short *beta); @@ -676,7 +684,8 @@ int t4_set_sched_ipg(struct adapter *adap, int sched, int t4_set_pace_tbl(struct adapter *adap, const unsigned int *pace_vals, unsigned int start, unsigned int n); void t4_get_chan_txrate(struct adapter *adap, u64 *nic_rate, u64 *ofld_rate); -int t4_set_filter_mode(struct adapter *adap, unsigned int mode_map); +int t4_set_filter_mode(struct adapter *adap, unsigned int mode_map, + bool sleep_ok); void t4_mk_filtdelwr(unsigned int ftid, struct fw_filter_wr *wr, int qid); void t4_wol_magic_enable(struct adapter *adap, unsigned int port, const u8 *addr); @@ -766,6 +775,7 @@ int t4_sge_ctxt_rd_bd(struct adapter *adap, unsigned i u32 *data); int t4_sge_ctxt_flush(struct adapter *adap, unsigned int mbox); const char *t4_link_down_rc_str(unsigned char link_down_rc); +int t4_update_port_info(struct port_info *pi); int t4_handle_fw_rpl(struct adapter *adap, const __be64 *rpl); int t4_fwaddrspace_write(struct adapter *adap, unsigned int mbox, u32 addr, u32 val); int t4_sched_config(struct adapter *adapter, int type, int minmaxen, @@ -787,6 +797,15 @@ int t4_config_watchdog(struct adapter *adapter, unsign int t4_get_devlog_level(struct adapter *adapter, unsigned int *level); int t4_set_devlog_level(struct adapter *adapter, unsigned int level); void t4_sge_decode_idma_state(struct adapter *adapter, int state); + +void t4_tp_pio_read(struct adapter *adap, u32 *buff, u32 nregs, + u32 start_index, bool sleep_ok); +void t4_tp_pio_write(struct adapter *adap, const u32 *buff, u32 nregs, + u32 start_index, bool sleep_ok); +void t4_tp_tm_pio_read(struct adapter *adap, u32 *buff, u32 nregs, + u32 start_index, bool sleep_ok); +void t4_tp_mib_read(struct adapter *adap, u32 *buff, u32 nregs, + u32 start_index, bool sleep_ok); static inline int t4vf_query_params(struct adapter *adapter, unsigned int nparams, const u32 *params, Modified: stable/10/sys/dev/cxgbe/common/t4_hw.c ============================================================================== --- stable/10/sys/dev/cxgbe/common/t4_hw.c Thu Oct 10 22:49:45 2019 (r353417) +++ stable/10/sys/dev/cxgbe/common/t4_hw.c Thu Oct 10 23:27:02 2019 (r353418) @@ -466,7 +466,7 @@ static int t4_edc_err_read(struct adapter *adap, int i CH_WARN(adap, "%s: T4 NOT supported.\n", __func__); return 0; } - if (idx != 0 && idx != 1) { + if (idx != MEM_EDC0 && idx != MEM_EDC1) { CH_WARN(adap, "%s: idx %d NOT supported.\n", __func__, idx); return 0; } @@ -883,7 +883,8 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0xd010, 0xd03c, 0xdfc0, 0xdfe0, 0xe000, 0xea7c, - 0xf000, 0x11190, + 0xf000, 0x11110, + 0x11118, 0x11190, 0x19040, 0x1906c, 0x19078, 0x19080, 0x1908c, 0x190e4, @@ -1421,8 +1422,6 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x1ff00, 0x1ff84, 0x1ffc0, 0x1ffc8, 0x30000, 0x30030, - 0x30038, 0x30038, - 0x30040, 0x30040, 0x30100, 0x30144, 0x30190, 0x301a0, 0x301a8, 0x301b8, @@ -1533,8 +1532,6 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x33c3c, 0x33c50, 0x33cf0, 0x33cfc, 0x34000, 0x34030, - 0x34038, 0x34038, - 0x34040, 0x34040, 0x34100, 0x34144, 0x34190, 0x341a0, 0x341a8, 0x341b8, @@ -1645,8 +1642,6 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x37c3c, 0x37c50, 0x37cf0, 0x37cfc, 0x38000, 0x38030, - 0x38038, 0x38038, - 0x38040, 0x38040, 0x38100, 0x38144, 0x38190, 0x381a0, 0x381a8, 0x381b8, @@ -1757,8 +1752,6 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x3bc3c, 0x3bc50, 0x3bcf0, 0x3bcfc, 0x3c000, 0x3c030, - 0x3c038, 0x3c038, - 0x3c040, 0x3c040, 0x3c100, 0x3c144, 0x3c190, 0x3c1a0, 0x3c1a8, 0x3c1b8, @@ -2251,13 +2244,6 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x1ff00, 0x1ff84, 0x1ffc0, 0x1ffc8, 0x30000, 0x30030, - 0x30038, 0x30038, - 0x30040, 0x30040, - 0x30048, 0x30048, - 0x30050, 0x30050, - 0x3005c, 0x30060, - 0x30068, 0x30068, - 0x30070, 0x30070, 0x30100, 0x30168, 0x30190, 0x301a0, 0x301a8, 0x301b8, @@ -2320,13 +2306,12 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x326a8, 0x326a8, 0x326ec, 0x326ec, 0x32a00, 0x32abc, - 0x32b00, 0x32b38, + 0x32b00, 0x32b18, + 0x32b20, 0x32b38, 0x32b40, 0x32b58, 0x32b60, 0x32b78, 0x32c00, 0x32c00, 0x32c08, 0x32c3c, - 0x32e00, 0x32e2c, - 0x32f00, 0x32f2c, 0x33000, 0x3302c, 0x33034, 0x33050, 0x33058, 0x33058, @@ -2391,13 +2376,6 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x33c38, 0x33c50, 0x33cf0, 0x33cfc, 0x34000, 0x34030, - 0x34038, 0x34038, - 0x34040, 0x34040, - 0x34048, 0x34048, - 0x34050, 0x34050, - 0x3405c, 0x34060, - 0x34068, 0x34068, - 0x34070, 0x34070, 0x34100, 0x34168, 0x34190, 0x341a0, 0x341a8, 0x341b8, @@ -2460,13 +2438,12 @@ void t4_get_regs(struct adapter *adap, u8 *buf, size_t 0x366a8, 0x366a8, 0x366ec, 0x366ec, 0x36a00, 0x36abc, - 0x36b00, 0x36b38, + 0x36b00, 0x36b18, + 0x36b20, 0x36b38, 0x36b40, 0x36b58, 0x36b60, 0x36b78, 0x36c00, 0x36c00, 0x36c08, 0x36c3c, - 0x36e00, 0x36e2c, - 0x36f00, 0x36f2c, 0x37000, 0x3702c, 0x37034, 0x37050, 0x37058, 0x37058, @@ -2697,6 +2674,7 @@ struct t4_vpd_hdr { #define EEPROM_MAX_POLL 5000 /* x 5000 == 50ms */ #define EEPROM_STAT_ADDR 0x7bfc +#define VPD_SIZE 0x800 #define VPD_BASE 0x400 #define VPD_BASE_OLD 0 #define VPD_LEN 1024 @@ -3037,13 +3015,13 @@ enum { SF_ATTEMPTS = 10, /* max retries for SF operations */ /* flash command opcodes */ - SF_PROG_PAGE = 2, /* program page */ + SF_PROG_PAGE = 2, /* program 256B page */ SF_WR_DISABLE = 4, /* disable writes */ SF_RD_STATUS = 5, /* read status register */ SF_WR_ENABLE = 6, /* enable writes */ SF_RD_DATA_FAST = 0xb, /* read flash */ SF_RD_ID = 0x9f, /* read ID */ - SF_ERASE_SECTOR = 0xd8, /* erase sector */ + SF_ERASE_SECTOR = 0xd8, /* erase 64KB sector */ }; /** @@ -3680,9 +3658,6 @@ void t4_ulprx_read_la(struct adapter *adap, u32 *la_bu } } -#define ADVERT_MASK (V_FW_PORT_CAP_SPEED(M_FW_PORT_CAP_SPEED) | \ - FW_PORT_CAP_ANEG) - /** * t4_link_l1cfg - apply link configuration to MAC/PHY * @phy: the PHY to setup @@ -3701,7 +3676,7 @@ int t4_link_l1cfg(struct adapter *adap, unsigned int m { struct fw_port_cmd c; unsigned int mdi = V_FW_PORT_CAP_MDI(FW_PORT_CAP_MDI_AUTO); - unsigned int fc, fec; + unsigned int aneg, fc, fec, speed, rcap; fc = 0; if (lc->requested_fc & PAUSE_RX) @@ -3711,12 +3686,51 @@ int t4_link_l1cfg(struct adapter *adap, unsigned int m fec = 0; if (lc->requested_fec & FEC_RS) - fec |= FW_PORT_CAP_FEC_RS; - if (lc->requested_fec & FEC_BASER_RS) - fec |= FW_PORT_CAP_FEC_BASER_RS; - if (lc->requested_fec & FEC_RESERVED) - fec |= FW_PORT_CAP_FEC_RESERVED; + fec = FW_PORT_CAP_FEC_RS; + else if (lc->requested_fec & FEC_BASER_RS) + fec = FW_PORT_CAP_FEC_BASER_RS; + if (!(lc->supported & FW_PORT_CAP_ANEG) || + lc->requested_aneg == AUTONEG_DISABLE) { + aneg = 0; + switch (lc->requested_speed) { + case 100000: + speed = FW_PORT_CAP_SPEED_100G; + break; + case 40000: + speed = FW_PORT_CAP_SPEED_40G; + break; + case 25000: + speed = FW_PORT_CAP_SPEED_25G; + break; + case 10000: + speed = FW_PORT_CAP_SPEED_10G; + break; + case 1000: + speed = FW_PORT_CAP_SPEED_1G; + break; + case 100: + speed = FW_PORT_CAP_SPEED_100M; + break; + default: + return -EINVAL; + break; + } + } else { + aneg = FW_PORT_CAP_ANEG; + speed = lc->supported & + V_FW_PORT_CAP_SPEED(M_FW_PORT_CAP_SPEED); + } + + rcap = aneg | speed | fc | fec | mdi; + if ((rcap | lc->supported) != lc->supported) { +#ifdef INVARIANTS + CH_WARN(adap, "rcap 0x%08x, pcap 0x%08x\n", rcap, + lc->supported); +#endif + rcap &= lc->supported; + } + memset(&c, 0, sizeof(c)); c.op_to_portid = cpu_to_be32(V_FW_CMD_OP(FW_PORT_CMD) | F_FW_CMD_REQUEST | F_FW_CMD_EXEC | @@ -3724,21 +3738,9 @@ int t4_link_l1cfg(struct adapter *adap, unsigned int m c.action_to_len16 = cpu_to_be32(V_FW_PORT_CMD_ACTION(FW_PORT_ACTION_L1_CFG) | FW_LEN16(c)); + c.u.l1cfg.rcap = cpu_to_be32(rcap); - if (!(lc->supported & FW_PORT_CAP_ANEG)) { - c.u.l1cfg.rcap = cpu_to_be32((lc->supported & ADVERT_MASK) | - fc | fec); - lc->fc = lc->requested_fc & ~PAUSE_AUTONEG; - lc->fec = lc->requested_fec; - } else if (lc->autoneg == AUTONEG_DISABLE) { - c.u.l1cfg.rcap = cpu_to_be32(lc->requested_speed | - fc | fec | mdi); - lc->fc = lc->requested_fc & ~PAUSE_AUTONEG; - lc->fec = lc->requested_fec; - } else - c.u.l1cfg.rcap = cpu_to_be32(lc->advertising | fc | fec | mdi); - - return t4_wr_mbox(adap, mbox, &c, sizeof(c), NULL); + return t4_wr_mbox_ns(adap, mbox, &c, sizeof(c), NULL); } /** @@ -3977,6 +3979,9 @@ static void sge_intr_handler(struct adapter *adapter) "SGE too many priority ingress contexts", -1, 0 }, { F_INGRESS_SIZE_ERR, "SGE illegal ingress QID", -1, 0 }, { F_EGRESS_SIZE_ERR, "SGE illegal egress QID", -1, 0 }, + { F_ERR_PCIE_ERROR0 | F_ERR_PCIE_ERROR1 | + F_ERR_PCIE_ERROR2 | F_ERR_PCIE_ERROR3, + "SGE PCIe error for a DBP thread", -1, 0 }, { 0 } }; @@ -3992,8 +3997,6 @@ static void sge_intr_handler(struct adapter *adapter) * For now, treat below interrupts as fatal so that we disable SGE and * get better debug */ static const struct intr_info t6_sge_intr_info[] = { - { F_ERR_PCIE_ERROR0 | F_ERR_PCIE_ERROR1, - "SGE PCIe error for a DBP thread", -1, 1 }, { F_FATAL_WRE_LEN, "SGE Actual WRE packet is less than advertized length", -1, 1 }, @@ -4048,6 +4051,7 @@ static void cim_intr_handler(struct adapter *adapter) { F_MBHOSTPARERR, "CIM mailbox host parity error", -1, 1 }, { F_TIEQINPARERRINT, "CIM TIEQ outgoing parity error", -1, 1 }, { F_TIEQOUTPARERRINT, "CIM TIEQ incoming parity error", -1, 1 }, + { F_TIMER0INT, "CIM TIMER0 interrupt", -1, 1 }, { 0 } }; static const struct intr_info cim_upintr_info[] = { @@ -4081,11 +4085,26 @@ static void cim_intr_handler(struct adapter *adapter) { F_TIMEOUTMAINT , "CIM PIF MA timeout", -1, 1 }, { 0 } }; + u32 val, fw_err; int fat; - if (t4_read_reg(adapter, A_PCIE_FW) & F_PCIE_FW_ERR) + fw_err = t4_read_reg(adapter, A_PCIE_FW); + if (fw_err & F_PCIE_FW_ERR) t4_report_fw_error(adapter); + /* When the Firmware detects an internal error which normally wouldn't + * raise a Host Interrupt, it forces a CIM Timer0 interrupt in order + * to make sure the Host sees the Firmware Crash. So if we have a + * Timer0 interrupt and don't see a Firmware Crash, ignore the Timer0 + * interrupt. + */ + val = t4_read_reg(adapter, A_CIM_HOST_INT_CAUSE); + if (val & F_TIMER0INT) + if (!(fw_err & F_PCIE_FW_ERR) || + (G_PCIE_FW_EVAL(fw_err) != PCIE_FW_EVAL_CRASH)) + t4_write_reg(adapter, A_CIM_HOST_INT_CAUSE, + F_TIMER0INT); + fat = t4_handle_intr_status(adapter, A_CIM_HOST_INT_CAUSE, cim_intr_info) + t4_handle_intr_status(adapter, A_CIM_HOST_UPACC_INT_CAUSE, @@ -4833,55 +4852,177 @@ int t4_read_rss(struct adapter *adapter, u16 *map) } /** - * t4_fw_tp_pio_rw - Access TP PIO through LDST - * @adap: the adapter - * @vals: where the indirect register values are stored/written - * @nregs: how many indirect registers to read/write - * @start_idx: index of first indirect register to read/write - * @rw: Read (1) or Write (0) + * t4_tp_fw_ldst_rw - Access TP indirect register through LDST + * @adap: the adapter + * @cmd: TP fw ldst address space type + * @vals: where the indirect register values are stored/written + * @nregs: how many indirect registers to read/write + * @start_idx: index of first indirect register to read/write + * @rw: Read (1) or Write (0) + * @sleep_ok: if true we may sleep while awaiting command completion * - * Access TP PIO registers through LDST - */ -void t4_fw_tp_pio_rw(struct adapter *adap, u32 *vals, unsigned int nregs, - unsigned int start_index, unsigned int rw) + * Access TP indirect registers through LDST + **/ +static int t4_tp_fw_ldst_rw(struct adapter *adap, int cmd, u32 *vals, + unsigned int nregs, unsigned int start_index, + unsigned int rw, bool sleep_ok) { - int ret, i; - int cmd = FW_LDST_ADDRSPC_TP_PIO; + int ret = 0; + unsigned int i; struct fw_ldst_cmd c; - for (i = 0 ; i < nregs; i++) { + for (i = 0; i < nregs; i++) { memset(&c, 0, sizeof(c)); c.op_to_addrspace = cpu_to_be32(V_FW_CMD_OP(FW_LDST_CMD) | F_FW_CMD_REQUEST | (rw ? F_FW_CMD_READ : - F_FW_CMD_WRITE) | + F_FW_CMD_WRITE) | V_FW_LDST_CMD_ADDRSPACE(cmd)); c.cycles_to_len16 = cpu_to_be32(FW_LEN16(c)); c.u.addrval.addr = cpu_to_be32(start_index + i); c.u.addrval.val = rw ? 0 : cpu_to_be32(vals[i]); - ret = t4_wr_mbox(adap, adap->mbox, &c, sizeof(c), &c); - if (ret == 0) { - if (rw) - vals[i] = be32_to_cpu(c.u.addrval.val); - } + ret = t4_wr_mbox_meat(adap, adap->mbox, &c, sizeof(c), &c, + sleep_ok); + if (ret) + return ret; + + if (rw) + vals[i] = be32_to_cpu(c.u.addrval.val); } + return 0; } /** + * t4_tp_indirect_rw - Read/Write TP indirect register through LDST or backdoor + * @adap: the adapter + * @reg_addr: Address Register + * @reg_data: Data register + * @buff: where the indirect register values are stored/written + * @nregs: how many indirect registers to read/write + * @start_index: index of first indirect register to read/write + * @rw: READ(1) or WRITE(0) + * @sleep_ok: if true we may sleep while awaiting command completion + * + * Read/Write TP indirect registers through LDST if possible. + * Else, use backdoor access + **/ +static void t4_tp_indirect_rw(struct adapter *adap, u32 reg_addr, u32 reg_data, + u32 *buff, u32 nregs, u32 start_index, int rw, + bool sleep_ok) +{ + int rc = -EINVAL; + int cmd; + + switch (reg_addr) { + case A_TP_PIO_ADDR: + cmd = FW_LDST_ADDRSPC_TP_PIO; + break; + case A_TP_TM_PIO_ADDR: + cmd = FW_LDST_ADDRSPC_TP_TM_PIO; + break; + case A_TP_MIB_INDEX: + cmd = FW_LDST_ADDRSPC_TP_MIB; + break; + default: + goto indirect_access; + } + + if (t4_use_ldst(adap)) + rc = t4_tp_fw_ldst_rw(adap, cmd, buff, nregs, start_index, rw, + sleep_ok); + +indirect_access: + + if (rc) { + if (rw) + t4_read_indirect(adap, reg_addr, reg_data, buff, nregs, + start_index); + else + t4_write_indirect(adap, reg_addr, reg_data, buff, nregs, + start_index); + } +} + +/** + * t4_tp_pio_read - Read TP PIO registers + * @adap: the adapter + * @buff: where the indirect register values are written + * @nregs: how many indirect registers to read + * @start_index: index of first indirect register to read + * @sleep_ok: if true we may sleep while awaiting command completion + * + * Read TP PIO Registers + **/ +void t4_tp_pio_read(struct adapter *adap, u32 *buff, u32 nregs, + u32 start_index, bool sleep_ok) +{ + t4_tp_indirect_rw(adap, A_TP_PIO_ADDR, A_TP_PIO_DATA, buff, nregs, + start_index, 1, sleep_ok); +} + +/** + * t4_tp_pio_write - Write TP PIO registers + * @adap: the adapter + * @buff: where the indirect register values are stored + * @nregs: how many indirect registers to write + * @start_index: index of first indirect register to write + * @sleep_ok: if true we may sleep while awaiting command completion + * + * Write TP PIO Registers + **/ +void t4_tp_pio_write(struct adapter *adap, const u32 *buff, u32 nregs, + u32 start_index, bool sleep_ok) +{ + t4_tp_indirect_rw(adap, A_TP_PIO_ADDR, A_TP_PIO_DATA, + __DECONST(u32 *, buff), nregs, start_index, 0, sleep_ok); +} + +/** + * t4_tp_tm_pio_read - Read TP TM PIO registers + * @adap: the adapter + * @buff: where the indirect register values are written + * @nregs: how many indirect registers to read + * @start_index: index of first indirect register to read + * @sleep_ok: if true we may sleep while awaiting command completion + * + * Read TP TM PIO Registers + **/ +void t4_tp_tm_pio_read(struct adapter *adap, u32 *buff, u32 nregs, + u32 start_index, bool sleep_ok) +{ + t4_tp_indirect_rw(adap, A_TP_TM_PIO_ADDR, A_TP_TM_PIO_DATA, buff, + nregs, start_index, 1, sleep_ok); +} + +/** + * t4_tp_mib_read - Read TP MIB registers + * @adap: the adapter + * @buff: where the indirect register values are written + * @nregs: how many indirect registers to read + * @start_index: index of first indirect register to read + * @sleep_ok: if true we may sleep while awaiting command completion + * + * Read TP MIB Registers + **/ +void t4_tp_mib_read(struct adapter *adap, u32 *buff, u32 nregs, u32 start_index, + bool sleep_ok) +{ + t4_tp_indirect_rw(adap, A_TP_MIB_INDEX, A_TP_MIB_DATA, buff, nregs, + start_index, 1, sleep_ok); +} + +/** * t4_read_rss_key - read the global RSS key * @adap: the adapter * @key: 10-entry array holding the 320-bit RSS key + * @sleep_ok: if true we may sleep while awaiting command completion * * Reads the global 320-bit RSS key. */ -void t4_read_rss_key(struct adapter *adap, u32 *key) +void t4_read_rss_key(struct adapter *adap, u32 *key, bool sleep_ok) { - if (t4_use_ldst(adap)) - t4_fw_tp_pio_rw(adap, key, 10, A_TP_RSS_SECRET_KEY0, 1); - else - t4_read_indirect(adap, A_TP_PIO_ADDR, A_TP_PIO_DATA, key, 10, - A_TP_RSS_SECRET_KEY0); + t4_tp_pio_read(adap, key, 10, A_TP_RSS_SECRET_KEY0, sleep_ok); } /** @@ -4889,12 +5030,14 @@ void t4_read_rss_key(struct adapter *adap, u32 *key) * @adap: the adapter * @key: 10-entry array holding the 320-bit RSS key * @idx: which RSS key to write + * @sleep_ok: if true we may sleep while awaiting command completion * * Writes one of the RSS keys with the given 320-bit value. If @idx is * 0..15 the corresponding entry in the RSS key table is written, * otherwise the global RSS key is written. */ -void t4_write_rss_key(struct adapter *adap, u32 *key, int idx) +void t4_write_rss_key(struct adapter *adap, const u32 *key, int idx, + bool sleep_ok) { u8 rss_key_addr_cnt = 16; u32 vrt = t4_read_reg(adap, A_TP_RSS_CONFIG_VRT); @@ -4908,11 +5051,7 @@ void t4_write_rss_key(struct adapter *adap, u32 *key, (vrt & F_KEYEXTEND) && (G_KEYMODE(vrt) == 3)) rss_key_addr_cnt = 32; - if (t4_use_ldst(adap)) - t4_fw_tp_pio_rw(adap, key, 10, A_TP_RSS_SECRET_KEY0, 0); - else - t4_write_indirect(adap, A_TP_PIO_ADDR, A_TP_PIO_DATA, key, 10, - A_TP_RSS_SECRET_KEY0); + t4_tp_pio_write(adap, key, 10, A_TP_RSS_SECRET_KEY0, sleep_ok); if (idx >= 0 && idx < rss_key_addr_cnt) { if (rss_key_addr_cnt > 16) @@ -4930,19 +5069,15 @@ void t4_write_rss_key(struct adapter *adap, u32 *key, * @adapter: the adapter * @index: the entry in the PF RSS table to read * @valp: where to store the returned value + * @sleep_ok: if true we may sleep while awaiting command completion * * Reads the PF RSS Configuration Table at the specified index and returns * the value found there. */ void t4_read_rss_pf_config(struct adapter *adapter, unsigned int index, - u32 *valp) + u32 *valp, bool sleep_ok) { - if (t4_use_ldst(adapter)) - t4_fw_tp_pio_rw(adapter, valp, 1, - A_TP_RSS_PF0_CONFIG + index, 1); - else - t4_read_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - valp, 1, A_TP_RSS_PF0_CONFIG + index); + t4_tp_pio_read(adapter, valp, 1, A_TP_RSS_PF0_CONFIG + index, sleep_ok); } /** @@ -4950,19 +5085,16 @@ void t4_read_rss_pf_config(struct adapter *adapter, un * @adapter: the adapter * @index: the entry in the VF RSS table to read * @val: the value to store + * @sleep_ok: if true we may sleep while awaiting command completion * * Writes the PF RSS Configuration Table at the specified index with the * specified value. */ void t4_write_rss_pf_config(struct adapter *adapter, unsigned int index, - u32 val) + u32 val, bool sleep_ok) { - if (t4_use_ldst(adapter)) - t4_fw_tp_pio_rw(adapter, &val, 1, - A_TP_RSS_PF0_CONFIG + index, 0); - else - t4_write_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - &val, 1, A_TP_RSS_PF0_CONFIG + index); + t4_tp_pio_write(adapter, &val, 1, A_TP_RSS_PF0_CONFIG + index, + sleep_ok); } /** @@ -4971,12 +5103,13 @@ void t4_write_rss_pf_config(struct adapter *adapter, u * @index: the entry in the VF RSS table to read * @vfl: where to store the returned VFL * @vfh: where to store the returned VFH + * @sleep_ok: if true we may sleep while awaiting command completion * * Reads the VF RSS Configuration Table at the specified index and returns * the (VFL, VFH) values found there. */ void t4_read_rss_vf_config(struct adapter *adapter, unsigned int index, - u32 *vfl, u32 *vfh) + u32 *vfl, u32 *vfh, bool sleep_ok) { u32 vrt, mask, data; @@ -4998,15 +5131,8 @@ void t4_read_rss_vf_config(struct adapter *adapter, un /* * Grab the VFL/VFH values ... */ - if (t4_use_ldst(adapter)) { - t4_fw_tp_pio_rw(adapter, vfl, 1, A_TP_RSS_VFL_CONFIG, 1); - t4_fw_tp_pio_rw(adapter, vfh, 1, A_TP_RSS_VFH_CONFIG, 1); - } else { - t4_read_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - vfl, 1, A_TP_RSS_VFL_CONFIG); - t4_read_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - vfh, 1, A_TP_RSS_VFH_CONFIG); - } + t4_tp_pio_read(adapter, vfl, 1, A_TP_RSS_VFL_CONFIG, sleep_ok); + t4_tp_pio_read(adapter, vfh, 1, A_TP_RSS_VFH_CONFIG, sleep_ok); } /** @@ -5021,7 +5147,7 @@ void t4_read_rss_vf_config(struct adapter *adapter, un * specified (VFL, VFH) values. */ void t4_write_rss_vf_config(struct adapter *adapter, unsigned int index, - u32 vfl, u32 vfh) + u32 vfl, u32 vfh, bool sleep_ok) { u32 vrt, mask, data; @@ -5036,15 +5162,8 @@ void t4_write_rss_vf_config(struct adapter *adapter, u /* * Load up VFL/VFH with the values to be written ... */ - if (t4_use_ldst(adapter)) { - t4_fw_tp_pio_rw(adapter, &vfl, 1, A_TP_RSS_VFL_CONFIG, 0); - t4_fw_tp_pio_rw(adapter, &vfh, 1, A_TP_RSS_VFH_CONFIG, 0); - } else { - t4_write_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - &vfl, 1, A_TP_RSS_VFL_CONFIG); - t4_write_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - &vfh, 1, A_TP_RSS_VFH_CONFIG); - } + t4_tp_pio_write(adapter, &vfl, 1, A_TP_RSS_VFL_CONFIG, sleep_ok); + t4_tp_pio_write(adapter, &vfh, 1, A_TP_RSS_VFH_CONFIG, sleep_ok); /* * Write the VFL/VFH into the VF Table at index'th location. @@ -5058,18 +5177,16 @@ void t4_write_rss_vf_config(struct adapter *adapter, u /** * t4_read_rss_pf_map - read PF RSS Map * @adapter: the adapter + * @sleep_ok: if true we may sleep while awaiting command completion * * Reads the PF RSS Map register and returns its value. */ -u32 t4_read_rss_pf_map(struct adapter *adapter) +u32 t4_read_rss_pf_map(struct adapter *adapter, bool sleep_ok) { u32 pfmap; - if (t4_use_ldst(adapter)) - t4_fw_tp_pio_rw(adapter, &pfmap, 1, A_TP_RSS_PF_MAP, 1); - else - t4_read_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - &pfmap, 1, A_TP_RSS_PF_MAP); + t4_tp_pio_read(adapter, &pfmap, 1, A_TP_RSS_PF_MAP, sleep_ok); + return pfmap; } @@ -5080,30 +5197,24 @@ u32 t4_read_rss_pf_map(struct adapter *adapter) * * Writes the specified value to the PF RSS Map register. */ -void t4_write_rss_pf_map(struct adapter *adapter, u32 pfmap) +void t4_write_rss_pf_map(struct adapter *adapter, u32 pfmap, bool sleep_ok) { - if (t4_use_ldst(adapter)) - t4_fw_tp_pio_rw(adapter, &pfmap, 1, A_TP_RSS_PF_MAP, 0); - else - t4_write_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - &pfmap, 1, A_TP_RSS_PF_MAP); + t4_tp_pio_write(adapter, &pfmap, 1, A_TP_RSS_PF_MAP, sleep_ok); } /** * t4_read_rss_pf_mask - read PF RSS Mask * @adapter: the adapter + * @sleep_ok: if true we may sleep while awaiting command completion * * Reads the PF RSS Mask register and returns its value. */ -u32 t4_read_rss_pf_mask(struct adapter *adapter) +u32 t4_read_rss_pf_mask(struct adapter *adapter, bool sleep_ok) { u32 pfmask; - if (t4_use_ldst(adapter)) - t4_fw_tp_pio_rw(adapter, &pfmask, 1, A_TP_RSS_PF_MSK, 1); - else - t4_read_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - &pfmask, 1, A_TP_RSS_PF_MSK); + t4_tp_pio_read(adapter, &pfmask, 1, A_TP_RSS_PF_MSK, sleep_ok); + return pfmask; } @@ -5114,13 +5225,9 @@ u32 t4_read_rss_pf_mask(struct adapter *adapter) * * Writes the specified value to the PF RSS Mask register. */ -void t4_write_rss_pf_mask(struct adapter *adapter, u32 pfmask) +void t4_write_rss_pf_mask(struct adapter *adapter, u32 pfmask, bool sleep_ok) { - if (t4_use_ldst(adapter)) - t4_fw_tp_pio_rw(adapter, &pfmask, 1, A_TP_RSS_PF_MSK, 0); - else - t4_write_indirect(adapter, A_TP_PIO_ADDR, A_TP_PIO_DATA, - &pfmask, 1, A_TP_RSS_PF_MSK); + t4_tp_pio_write(adapter, &pfmask, 1, A_TP_RSS_PF_MSK, sleep_ok); } /** @@ -5128,12 +5235,13 @@ void t4_write_rss_pf_mask(struct adapter *adapter, u32 * @adap: the adapter * @v4: holds the TCP/IP counter values * @v6: holds the TCP/IPv6 counter values + * @sleep_ok: if true we may sleep while awaiting command completion * * Returns the values of TP's TCP/IP and TCP/IPv6 MIB counters. * Either @v4 or @v6 may be %NULL to skip the corresponding stats. */ void t4_tp_get_tcp_stats(struct adapter *adap, struct tp_tcp_stats *v4, - struct tp_tcp_stats *v6) + struct tp_tcp_stats *v6, bool sleep_ok) { u32 val[A_TP_MIB_TCP_RXT_SEG_LO - A_TP_MIB_TCP_OUT_RST + 1]; @@ -5142,16 +5250,16 @@ void t4_tp_get_tcp_stats(struct adapter *adap, struct #define STAT64(x) (((u64)STAT(x##_HI) << 32) | STAT(x##_LO)) if (v4) { - t4_read_indirect(adap, A_TP_MIB_INDEX, A_TP_MIB_DATA, val, - ARRAY_SIZE(val), A_TP_MIB_TCP_OUT_RST); + t4_tp_mib_read(adap, val, ARRAY_SIZE(val), + A_TP_MIB_TCP_OUT_RST, sleep_ok); v4->tcp_out_rsts = STAT(OUT_RST); v4->tcp_in_segs = STAT64(IN_SEG); v4->tcp_out_segs = STAT64(OUT_SEG); v4->tcp_retrans_segs = STAT64(RXT_SEG); } if (v6) { - t4_read_indirect(adap, A_TP_MIB_INDEX, A_TP_MIB_DATA, val, - ARRAY_SIZE(val), A_TP_MIB_TCP_V6OUT_RST); + t4_tp_mib_read(adap, val, ARRAY_SIZE(val), + A_TP_MIB_TCP_V6OUT_RST, sleep_ok); v6->tcp_out_rsts = STAT(OUT_RST); v6->tcp_in_segs = STAT64(IN_SEG); v6->tcp_out_segs = STAT64(OUT_SEG); @@ -5166,32 +5274,41 @@ void t4_tp_get_tcp_stats(struct adapter *adap, struct * t4_tp_get_err_stats - read TP's error MIB counters * @adap: the adapter * @st: holds the counter values + * @sleep_ok: if true we may sleep while awaiting command completion * * Returns the values of TP's error counters. */ -void t4_tp_get_err_stats(struct adapter *adap, struct tp_err_stats *st) +void t4_tp_get_err_stats(struct adapter *adap, struct tp_err_stats *st, + bool sleep_ok) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable-10@freebsd.org Thu Oct 10 23:54:23 2019 Return-Path: Delivered-To: svn-src-stable-10@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0A521135926; Thu, 10 Oct 2019 23:54:23 +0000 (UTC) (envelope-from rpokala@panasas.com) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-eopbgr750071.outbound.protection.outlook.com [40.107.75.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (Client CN "mail.protection.outlook.com", Issuer "GlobalSign Organization Validation CA - SHA256 - G3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46q7Gk5mRNz3FxW; Thu, 10 Oct 2019 23:54:22 +0000 (UTC) (envelope-from rpokala@panasas.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Y3z/sAinUWUkvkavMTgAEqJ9Peovio/Sjsaz6Rq/SBJqaxLJOwC2gBSox+k/SuaqcxLh/UbqLPgGRzUxO0B0oKIiwLXbqCCLVeD6RoU48xNvAxZjyCD0I83V8pLKzkebZqS3kH5ZXEAgr1Li3W9O/ZTvCKYseHlmtsKrGa0/Qqcp/FmlbDjNHlNocTd4Z0yAj7Fc8/4RYzrLOnZp0XYtJTdUfqpml7TqGIFbn3lF23XQUTeMYIsoeLL8cxX/RKf7E2GbzCvnFpGIPIU32tpD4mAUs1dC4G2XszlC6Iv9UtTnapxE7rdQJgdC3F4rM+WwnV0q+J8jtdLuiA/uqYLSbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tygePWZNC+NMLvI499kL2DNG6fbsQI0sVGbfsyBJa28=; b=k2POfeW8amPXpy9CKhQmOjdpVKlNiuCcybQgPQs5GqKIUmvx5giDFZRMT2Hlpt8PIM2BCpHUt1MuRPz9JZBCMNihnML0ORM21sYYpDh6DyFanD28BAWOlckHvjSWsbrlRrCNy1gqfsYr7+rAn3HCOmVaVQ7TBTkKBC70OSUkZn0JklCgBR1XSPyt8ptKtgWGUfcZuLPxd9zAEMS6Ej84jLmKtjAgf+9PJa08jDqMPUVApDLpg07g/UHtCPrHYff4nuMuKv1e6ZYlx4fTGmmDWepB3jBs1cOCMK4/FlJYLvsBW/BsGn9ByC8DJ+2LkaIqJ9uinTM/6kMjDYmiqoyBow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=panasas.com; dmarc=pass action=none header.from=panasas.com; dkim=pass header.d=panasas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=panasas.onmicrosoft.com; s=selector2-panasas-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tygePWZNC+NMLvI499kL2DNG6fbsQI0sVGbfsyBJa28=; b=k4oVmtQboIjCUfeUkF0qP4G7UKdXaWIMfUXbcnvFh1KbPCIO8KvflpfPLOgK/EgQmp2SoBN/PKzuyGaw9o8ICfeDNqF1AdyOsjQqNLFLcFFf8HOhH2BTYMrqHCk+9ZhVp6daD67JA1OnLf7qDtPwRTGO0utwxStMXmP+qWsHCgg= Received: from BYAPR08MB5238.namprd08.prod.outlook.com (20.177.125.156) by BYAPR08MB5992.namprd08.prod.outlook.com (20.179.89.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2327.24; Thu, 10 Oct 2019 23:54:18 +0000 Received: from BYAPR08MB5238.namprd08.prod.outlook.com ([fe80::b9ba:b486:9c61:3dd9]) by BYAPR08MB5238.namprd08.prod.outlook.com ([fe80::b9ba:b486:9c61:3dd9%5]) with mapi id 15.20.2347.016; Thu, 10 Oct 2019 23:54:18 +0000 From: "Pokala, Ravi" To: Navdeep Parhar , "src-committers@freebsd.org" , "svn-src-all@freebsd.org" , "svn-src-stable@freebsd.org" , "svn-src-stable-10@freebsd.org" Subject: Re: svn commit: r353418 - in stable/10/sys: conf dev/cxgbe dev/cxgbe/common dev/cxgbe/firmware modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware modules/cxgbe/t6_firmware Thread-Topic: svn commit: r353418 - in stable/10/sys: conf dev/cxgbe dev/cxgbe/common dev/cxgbe/firmware modules/cxgbe/t4_firmware modules/cxgbe/t5_firmware modules/cxgbe/t6_firmware Thread-Index: AQHVf8YH1fcaDubvlE2oXUgO72Cs8g== Date: Thu, 10 Oct 2019 23:54:18 +0000 Message-ID: <1E280C29-BA50-47C5-9B14-805628A9795B@panasas.com> References: <201910102327.x9ANR3Ca072447@repo.freebsd.org> In-Reply-To: <201910102327.x9ANR3Ca072447@repo.freebsd.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/10.1d.0.190908 x-originating-ip: [12.202.168.51] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a9d6f42e-4cdd-4659-80d1-08d74ddd2a39 x-ms-traffictypediagnostic: BYAPR08MB5992: x-ms-exchange-purlcount: 1 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:185; x-forefront-prvs: 018632C080 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(376002)(136003)(366004)(346002)(39850400004)(199004)(189003)(13464003)(76176011)(186003)(229853002)(6436002)(14444005)(5024004)(256004)(476003)(2616005)(11346002)(305945005)(486006)(446003)(6246003)(33656002)(7736002)(102836004)(3846002)(86362001)(2201001)(6116002)(6486002)(53546011)(71190400001)(6506007)(26005)(2501003)(2906002)(71200400001)(99286004)(6512007)(36756003)(316002)(58126008)(966005)(66946007)(6306002)(66556008)(110136005)(25786009)(76116006)(5660300002)(66066001)(14454004)(450100002)(8936002)(66446008)(66476007)(81156014)(478600001)(64756008)(81166006)(4001150100001)(30864003)(8676002)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR08MB5992; H:BYAPR08MB5238.namprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: panasas.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yenctJvvkP4MEGgEV7EQRLw3Yw9EDSSZ7Fyhzp8IZw3okXHXs6mfFJVGHRGAhIp5ufgTAvBIhVkCTBJU/CvKUNx7gu+/VFs0OEfNLouIm/hiDWII3zJvW6tROtLcwjSTj2PM/ew7t7Fqcz9C+6V0mJz0EhFlVkvNLGelOXny8M9J95GXzyCAazajzg5EhJAohCx1bVexjx3/KNFSk4MftDIm7CBMFeZ91XCw3aablkc50vzXMuvrMaJ0WkpVStrotVB95+AH3bJCHUWY3NZEA40auaAwM9ycB8a851s/1q4P5VwPk6tCK3NvCYyeAbe8uZ1AiSh6gAX8JAVsWTQ+1y6a4E3vfxAxo20Ja6j6zuhD9rgCFr2PHkPNDu7Oy5vD3/S+b1NbulwX39bHzbriiW8jngycQenS50F/35In0+CQHTGuRVq0wIUHTvO2alTCCfWKBLBKxcrL0Z3XOmU75w== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <48E0371CFC4CFA4F96EABC6EADE60C3C@namprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: panasas.com X-MS-Exchange-CrossTenant-Network-Message-Id: a9d6f42e-4cdd-4659-80d1-08d74ddd2a39 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Oct 2019 23:54:18.6877 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: acf01c9d-c699-42af-bdbb-44bf582e60b0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 5Pmes0Dk9wjrQOFGxFrvRZuiSFYlGA/rUWJO/eLStKV7UhfAWoTXSRxLnCsdXBgf7rAVBazGh1rd4ASSKRhonw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR08MB5992 X-Rspamd-Queue-Id: 46q7Gk5mRNz3FxW X-Spamd-Bar: ----- Authentication-Results: mx1.freebsd.org; none X-Spamd-Result: default: False [-5.99 / 15.00]; NEURAL_HAM_MEDIUM(-0.99)[-0.995,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; REPLY(-4.00)[] X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Oct 2019 23:54:23 -0000 UmVxdWVzdGVkIGJ5OglQYW5hc2FzDQoNClRoYW5rcyBOYXZkZWVwISA6LSkNCg0KLVJhdmkgKHdl YXJpbmcgUGFuYXNhcyBoYXQpDQoNCu+7vy0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9t OiA8b3duZXItc3JjLWNvbW1pdHRlcnNAZnJlZWJzZC5vcmc+IG9uIGJlaGFsZiBvZiBOYXZkZWVw IFBhcmhhciA8bnBARnJlZUJTRC5vcmc+DQpEYXRlOiAyMDE5LTEwLTEwLCBUaHVyc2RheSBhdCAx NjoyNw0KVG86IDxzcmMtY29tbWl0dGVyc0BmcmVlYnNkLm9yZz4sIDxzdm4tc3JjLWFsbEBmcmVl YnNkLm9yZz4sIDxzdm4tc3JjLXN0YWJsZUBmcmVlYnNkLm9yZz4sIDxzdm4tc3JjLXN0YWJsZS0x MEBmcmVlYnNkLm9yZz4NClN1YmplY3Q6IHN2biBjb21taXQ6IHIzNTM0MTggLSBpbiBzdGFibGUv MTAvc3lzOiBjb25mIGRldi9jeGdiZSBkZXYvY3hnYmUvY29tbW9uIGRldi9jeGdiZS9maXJtd2Fy ZSBtb2R1bGVzL2N4Z2JlL3Q0X2Zpcm13YXJlIG1vZHVsZXMvY3hnYmUvdDVfZmlybXdhcmUgbW9k dWxlcy9jeGdiZS90Nl9maXJtd2FyZQ0KDQogICAgQXV0aG9yOiBucA0KICAgIERhdGU6IFRodSBP Y3QgMTAgMjM6Mjc6MDIgMjAxOQ0KICAgIE5ldyBSZXZpc2lvbjogMzUzNDE4DQogICAgVVJMOiBo dHRwczovL3N2bndlYi5mcmVlYnNkLm9yZy9jaGFuZ2VzZXQvYmFzZS8zNTM0MTgNCiAgICANCiAg ICBMb2c6DQogICAgICBNRkMgcjMxOTg3MiwgcjMyMTA2MywgcjMyMTU4MiwgcjMyMjAzNCwgcjMy MjQyNSwgcjMyMjk2MiwgcjMyMjk4NSwNCiAgICAgIHIzMjU1OTYsIHIzMjYwMjYsIHIzMjg0MjAs IHIzMzE0NzIsIHIzMzMyNzYsIHIzMzM2NTAsIHIzMzM2NTIsIHIzMzQ0MDYsDQogICAgICByMzM0 NDA5LXIzMzQ0MTAsIHIzMzQ0ODksIHIzMzYwNDIsIHIzNDA2NTEsIHIzNDI2MDMsIGFuZCByMzQ1 MDgzLg0KICAgICAgDQogICAgICBUaGlzIHVwZGF0ZXMgdGhlIGN4Z2JlIGZpcm13YXJlcyBpbiBz dGFibGUvMTAgYW5kIGFsc28gcHVsbHMgaW4gc3VwcG9ydA0KICAgICAgZm9yIHNvbWUgbmV3ZXIg Ym9hcmRzIGFuZCBmbGFzaCBwYXJ0cy4NCiAgICAgIA0KICAgICAgcjMxOTg3MjoNCiAgICAgIGN4 Z2JlKDQpOiAgRG8gbm90IHJlcXVlc3QgYW4gRkVDIHNldHRpbmcgdGhhdCB0aGUgcG9ydCBkb2Vz IG5vdCBzdXBwb3J0Lg0KICAgICAgDQogICAgICByMzIxMDYzOg0KICAgICAgY3hnYmUoNCk6IFZh cmlvdXMgbGluay9tZWRpYSByZWxhdGVkIGltcHJvdmVtZW50cy4NCiAgICAgIA0KICAgICAgcjMy MTU4MjoNCiAgICAgIGN4Z2JlKDQpOiBTb21lIHVwZGF0ZXMgdG8gdGhlIGNvbW1vbiBjb2RlLg0K ICAgICAgDQogICAgICByMzIyMDM0Og0KICAgICAgY3hnYmUoNCk6IEFsd2F5cyB1c2UgdGhlIGZp cnN0IGFuZCBub3QgdGhlIGxhc3QgdmlydHVhbCBpbnRlcmZhY2UNCiAgICAgIGFzc29jaWF0ZWQg d2l0aCBhIHBvcnQgaW4gYmVnaW5fc3luY2hyb25pemVkX29wLg0KICAgICAgDQogICAgICByMzIy NDI1Og0KICAgICAgY3hnYmUoNCk6IFNhdmUgdGhlIGxhc3QgcmVwb3J0ZWQgbGluayBwYXJhbWV0 ZXJzIGFuZCBjb21wYXJlIHRoZW0gd2l0aA0KICAgICAgdGhlIGN1cnJlbnQgc3RhdGUgdG8gZGV0 ZXJtaW5lIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBsaW5rLXN0YXRlIGNoYW5nZQ0KICAgICAgbm90 aWZpY2F0aW9uLiAgVGhpcyBmaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIHIzMjEwNjMgdGhhdCBj YXVzZWQgdGhlDQogICAgICBkcml2ZXIgdG8gc29tZXRpbWVzIHNraXAgdGhlc2Ugbm90aWZpY2F0 aW9ucy4NCiAgICAgIA0KICAgICAgcjMyMjk2MjoNCiAgICAgIGN4Z2JlKDQpOiBSZW1vdmUgd3Jp dGUgb25seSB2YXJpYWJsZSBmcm9tIHQ0X3BvcnRfaW5pdC4NCiAgICAgIA0KICAgICAgcjMyMjk4 NToNCiAgICAgIGN4Z2JlKDQpOiBNYWludGFpbiBvbmUgaWZtZWRpYSBwZXIgcGh5c2ljYWwgcG9y dCBpbnN0ZWFkIG9mIG9uZSBwZXINCiAgICAgIFZpcnR1YWwgSW50ZXJmYWNlIChWSSkuICBBbGwg YXV0b25vbW91cyBWSXMgdGhhdCBzaGFyZSBhIHBvcnQgc2hhcmUgdGhlDQogICAgICBzYW1lIG1l ZGlhLg0KICAgICAgDQogICAgICByMzI1NTk2Og0KICAgICAgY3hnYmUoNCk6IERvIG5vdCByZXF1 ZXN0IHNldHRpbmdzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHBvcnQuDQogICAgICANCiAgICAgIHIz MjYwMjY6DQogICAgICBjeGdiZSg0KTogQWRkIGEgY3VzdG9tIGJvYXJkIHRvIHRoZSBkZXZpY2Ug aWQgbGlzdC4NCiAgICAgIA0KICAgICAgcjMyODQyMDoNCiAgICAgIGN4Z2JlKDQpOiBEbyBub3Qg ZGlzcGxheSBoYXJtbGVzcyB3YXJuaW5nIGluIG5vbi1kZWJ1ZyBidWlsZHMuDQogICAgICANCiAg ICAgIHIzMzE0NzI6DQogICAgICBjeGdiZSg0KTogQWx3YXlzIGluaXRpYWxpemUgcmVxdWVzdGVk X3NwZWVkIHRvIGEgdmFsaWQgdmFsdWUuDQogICAgICANCiAgICAgIFRoaXMgZml4ZXMgYW4gYXZv aWRhYmxlIEVJTlZBTCB3aGVuIHRoZSB1c2VyIHRyaWVzIHRvIGRpc2FibGUgQU4gYWZ0ZXINCiAg ICAgIHRoZSBwb3J0IGlzIGluaXRpYWxpemVkIGJ1dCBsMWNmZyBkb2Vzbid0IGhhdmUgYSB2YWxp ZCBzcGVlZCB0byB1c2UuDQogICAgICANCiAgICAgIHIzMzMyNzY6DQogICAgICBjeGdiZSg0KTog VXBkYXRlIGFsbCBmaXJtd2FyZXMgdG8gMS4xOS4xLjAuDQogICAgICANCiAgICAgIHIzMzM2NTA6 DQogICAgICBjeGdiZSg0KTogQ2xhaW0gc29tZSBtb3JlIFQ1IGFuZCBUNiBib2FyZHMuDQogICAg ICANCiAgICAgIHIzMzM2NTI6DQogICAgICBjeGdiZSg0KTogQWRkIHN1cHBvcnQgZm9yIHR3byBt b3JlIGZsYXNoIHBhcnRzLg0KICAgICAgDQogICAgICByMzM0NDA2Og0KICAgICAgY3hnYmUoNCk6 IENvbnNpZGVyIGFsbCBzdXBwb3J0ZWQgc3BlZWRzIHdoZW4gYnVpbGRpbmcgdGhlIGlmbWVkaWEg bGlzdA0KICAgICAgZm9yIGEgcG9ydC4gIEZpeCBvdGhlciByZWxhdGVkIGlzc3VlcyB3aGlsZSBo ZXJlOg0KICAgICAgLSBSZXF1aXJlIHBvcnQgbG9jayBmb3IgYWNjZXNzIHRvIGxpbmtfY29uZmln Lg0KICAgICAgLSBBbGxvdyAxMDBNYnBzIG9wZXJhdGlvbiBieSB0cmFja2luZyB0aGUgc3BlZWQg aW4gTWJwcy4gIFllcywgcmVhbGx5Lg0KICAgICAgLSBOZXcgcG9ydCBmbGFnIHRvIGluZGljYXRl IHRoYXQgdGhlIG1lZGlhIGxpc3QgaXMgaW1tdXRhYmxlLiAgSXQgd2lsbA0KICAgICAgICBiZSB1 c2VkIGluIGZ1dHVyZSByZWZpbmVtZW50cy4NCiAgICAgIA0KICAgICAgVGhpcyBhbHNvIGZpeGVz IGEgYnVnIHdoZXJlIHRoZSBkcml2ZXIgcmVwb3J0cyBpbmNvcnJlY3QgbWVkaWEgd2l0aA0KICAg ICAgcmVjZW50IGZpcm13YXJlcy4NCiAgICAgIA0KICAgICAgcjMzNDQwOToNCiAgICAgIGN4Z2Jl KDQpOiBJbXBsZW1lbnQgaWZtX2NoYW5nZSBjYWxsYmFjay4NCiAgICAgIA0KICAgICAgcjMzNDQx MDoNCiAgICAgIGN4Z2JlKDQpOiBVc2UgaWZtIGZvciBpZm1lZGlhIGp1c3QgbGlrZSB0aGUgcmVz dCBvZiB0aGUga2VybmVsLg0KICAgICAgDQogICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZS4NCiAg ICAgIA0KICAgICAgcjMzNDQ4OToNCiAgICAgIGN4Z2JlKDQpOiBJbmNsdWRlIGZ1bGwgZHVwbGV4 IG1lZGlhb3B0IGluIG1lZGlhIHRoYXQgY2FuIGJlIHJlcG9ydGVkIGFzDQogICAgICBhY3RpdmUu ICBBbHdheXMgcmVwb3J0IGZ1bGwgZHVwbGV4IGluIGFjdGl2ZSBtZWRpYS4NCiAgICAgIA0KICAg ICAgcjMzNjA0MjoNCiAgICAgIGN4Z2JlKDQpOiBBc3N1bWUgdGhhdCBhbnkgdW5rbm93biBmbGFz aCBvbiB0aGUgY2FyZCBpcyA0TUIgYW5kIGhhcyA2NEtCDQogICAgICBzZWN0b3JzLCBpbnN0ZWFk IG9mIHJlZnVzaW5nIHRvIGF0dGFjaCB0byB0aGUgY2FyZC4NCiAgICAgIA0KICAgICAgcjM0MDY1 MToNCiAgICAgIGN4Z2JlKDQpOiBVcGRhdGUgVDQvNS82IGZpcm13YXJlcyB0byAxLjIyLjAuMy4N CiAgICAgIA0KICAgICAgcjM0MjYwMzoNCiAgICAgIGN4Z2JlKDQpOiBBdHRhY2ggdG8gdHdvIFQ1 NDAgdmFyaWFudHMuDQogICAgICANCiAgICAgIHIzNDUwODM6DQogICAgICBjeGdiZSg0KTogVXBk YXRlIFQ0LzUvNiBmaXJtd2FyZXMgdG8gMS4yMy4wLjAuDQogICAgDQogICAgQWRkZWQ6DQogICAg ICBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS9maXJtd2FyZS90NGZ3LTEuMjMuMC4wLmJpbi51dQ0K ICAgICAgICAgLSBjb3BpZWQgdW5jaGFuZ2VkIGZyb20gcjM0NTA4MywgaGVhZC9zeXMvZGV2L2N4 Z2JlL2Zpcm13YXJlL3Q0ZnctMS4yMy4wLjAuYmluLnV1DQogICAgICBzdGFibGUvMTAvc3lzL2Rl di9jeGdiZS9maXJtd2FyZS90NWZ3LTEuMjMuMC4wLmJpbi51dQ0KICAgICAgICAgLSBjb3BpZWQg dW5jaGFuZ2VkIGZyb20gcjM0NTA4MywgaGVhZC9zeXMvZGV2L2N4Z2JlL2Zpcm13YXJlL3Q1Znct MS4yMy4wLjAuYmluLnV1DQogICAgICBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS9maXJtd2FyZS90 NmZ3LTEuMjMuMC4wLmJpbi51dQ0KICAgICAgICAgLSBjb3BpZWQgdW5jaGFuZ2VkIGZyb20gcjM0 NTA4MywgaGVhZC9zeXMvZGV2L2N4Z2JlL2Zpcm13YXJlL3Q2ZnctMS4yMy4wLjAuYmluLnV1DQog ICAgRGVsZXRlZDoNCiAgICAgIHN0YWJsZS8xMC9zeXMvZGV2L2N4Z2JlL2Zpcm13YXJlL3Q0Znct MS4xNi42My4wLmJpbi51dQ0KICAgICAgc3RhYmxlLzEwL3N5cy9kZXYvY3hnYmUvZmlybXdhcmUv dDVmdy0xLjE2LjYzLjAuYmluLnV1DQogICAgICBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS9maXJt d2FyZS90NmZ3LTEuMTYuNjMuMC5iaW4udXUNCiAgICBNb2RpZmllZDoNCiAgICAgIHN0YWJsZS8x MC9zeXMvY29uZi9maWxlcw0KICAgICAgc3RhYmxlLzEwL3N5cy9kZXYvY3hnYmUvYWRhcHRlci5o DQogICAgICBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS9jb21tb24vY29tbW9uLmgNCiAgICAgIHN0 YWJsZS8xMC9zeXMvZGV2L2N4Z2JlL2NvbW1vbi90NF9ody5jDQogICAgICBzdGFibGUvMTAvc3lz L2Rldi9jeGdiZS9maXJtd2FyZS90NGZ3X2ludGVyZmFjZS5oDQogICAgICBzdGFibGUvMTAvc3lz L2Rldi9jeGdiZS9maXJtd2FyZS90NWZ3X2NmZ191d2lyZS50eHQNCiAgICAgIHN0YWJsZS8xMC9z eXMvZGV2L2N4Z2JlL2Zpcm13YXJlL3Q2ZndfY2ZnX3V3aXJlLnR4dA0KICAgICAgc3RhYmxlLzEw L3N5cy9kZXYvY3hnYmUvdDRfbWFpbi5jDQogICAgICBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS90 NF9zZ2UuYw0KICAgICAgc3RhYmxlLzEwL3N5cy9tb2R1bGVzL2N4Z2JlL3Q0X2Zpcm13YXJlL01h a2VmaWxlDQogICAgICBzdGFibGUvMTAvc3lzL21vZHVsZXMvY3hnYmUvdDVfZmlybXdhcmUvTWFr ZWZpbGUNCiAgICAgIHN0YWJsZS8xMC9zeXMvbW9kdWxlcy9jeGdiZS90Nl9maXJtd2FyZS9NYWtl ZmlsZQ0KICAgIERpcmVjdG9yeSBQcm9wZXJ0aWVzOg0KICAgICAgc3RhYmxlLzEwLyAgIChwcm9w cyBjaGFuZ2VkKQ0KICAgIA0KICAgIE1vZGlmaWVkOiBzdGFibGUvMTAvc3lzL2NvbmYvZmlsZXMN CiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICAtLS0gc3RhYmxlLzEwL3N5cy9jb25mL2Zp bGVzCVRodSBPY3QgMTAgMjI6NDk6NDUgMjAxOQkocjM1MzQxNykNCiAgICArKysgc3RhYmxlLzEw L3N5cy9jb25mL2ZpbGVzCVRodSBPY3QgMTAgMjM6Mjc6MDIgMjAxOQkocjM1MzQxOCkNCiAgICBA QCAtMTE5NSw3ICsxMTk1LDcgQEAgdDRmdy5md28JCW9wdGlvbmFsIGN4Z2JlCQkJCQlcDQogICAg IAluby1pbXBsaWNpdC1ydWxlCQkJCQkJXA0KICAgICAJY2xlYW4JCSJ0NGZ3LmZ3byINCiAgICAg dDRmdy5mdwkJCW9wdGlvbmFsIGN4Z2JlCQkJCQlcDQogICAgLQlkZXBlbmRlbmN5CSIkUy9kZXYv Y3hnYmUvZmlybXdhcmUvdDRmdy0xLjE2LjYzLjAuYmluLnV1IglcDQogICAgKwlkZXBlbmRlbmN5 CSIkUy9kZXYvY3hnYmUvZmlybXdhcmUvdDRmdy0xLjIzLjAuMC5iaW4udXUiCVwNCiAgICAgCWNv bXBpbGUtd2l0aAkiJHtOT1JNQUxfRld9IgkJCQkJXA0KICAgICAJbm8tb2JqIG5vLWltcGxpY2l0 LXJ1bGUJCQkJCQlcDQogICAgIAljbGVhbgkJInQ0ZncuZnciDQogICAgQEAgLTEyMTksNyArMTIx OSw3IEBAIHQ1ZncuZndvCQlvcHRpb25hbCBjeGdiZQkJCQkJXA0KICAgICAJbm8taW1wbGljaXQt cnVsZQkJCQkJCVwNCiAgICAgCWNsZWFuCQkidDVmdy5md28iDQogICAgIHQ1ZncuZncJCQlvcHRp b25hbCBjeGdiZQkJCQkJXA0KICAgIC0JZGVwZW5kZW5jeQkiJFMvZGV2L2N4Z2JlL2Zpcm13YXJl L3Q1ZnctMS4xNi42My4wLmJpbi51dSIJXA0KICAgICsJZGVwZW5kZW5jeQkiJFMvZGV2L2N4Z2Jl L2Zpcm13YXJlL3Q1ZnctMS4yMy4wLjAuYmluLnV1IglcDQogICAgIAljb21waWxlLXdpdGgJIiR7 Tk9STUFMX0ZXfSIJCQkJCVwNCiAgICAgCW5vLW9iaiBuby1pbXBsaWNpdC1ydWxlCQkJCQkJXA0K ICAgICAJY2xlYW4JCSJ0NWZ3LmZ3Ig0KICAgIEBAIC0xMjQzLDcgKzEyNDMsNyBAQCB0NmZ3LmZ3 bwkJb3B0aW9uYWwgY3hnYmUJCQkJCVwNCiAgICAgCW5vLWltcGxpY2l0LXJ1bGUJCQkJCQlcDQog ICAgIAljbGVhbgkJInQ2ZncuZndvIg0KICAgICB0NmZ3LmZ3CQkJb3B0aW9uYWwgY3hnYmUJCQkJ CVwNCiAgICAtCWRlcGVuZGVuY3kJIiRTL2Rldi9jeGdiZS9maXJtd2FyZS90NmZ3LTEuMTYuNjMu MC5iaW4udXUiCVwNCiAgICArCWRlcGVuZGVuY3kJIiRTL2Rldi9jeGdiZS9maXJtd2FyZS90NmZ3 LTEuMjMuMC4wLmJpbi51dSIJXA0KICAgICAJY29tcGlsZS13aXRoCSIke05PUk1BTF9GV30iCQkJ CQlcDQogICAgIAluby1vYmogbm8taW1wbGljaXQtcnVsZQkJCQkJCVwNCiAgICAgCWNsZWFuCQki dDZmdy5mdyINCiAgICANCiAgICBNb2RpZmllZDogc3RhYmxlLzEwL3N5cy9kZXYvY3hnYmUvYWRh cHRlci5oDQogICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgLS0tIHN0YWJsZS8xMC9zeXMv ZGV2L2N4Z2JlL2FkYXB0ZXIuaAlUaHUgT2N0IDEwIDIyOjQ5OjQ1IDIwMTkJKHIzNTM0MTcpDQog ICAgKysrIHN0YWJsZS8xMC9zeXMvZGV2L2N4Z2JlL2FkYXB0ZXIuaAlUaHUgT2N0IDEwIDIzOjI3 OjAyIDIwMTkJKHIzNTM0MTgpDQogICAgQEAgLTE1Niw2ICsxNTYsNyBAQCBlbnVtIHsNCiAgICAg DQogICAgIAkvKiBwb3J0IGZsYWdzICovDQogICAgIAlIQVNfVFJBQ0VRCT0gKDEgPDwgMyksDQog ICAgKwlGSVhFRF9JRk1FRElBCT0gKDEgPDwgNCksCS8qIGlmbWVkaWEgbGlzdCBkb2Vzbid0IGNo YW5nZS4gKi8NCiAgICAgDQogICAgIAkvKiBWSSBmbGFncyAqLw0KICAgICAJRE9PTUVECQk9ICgx IDw8IDApLA0KICAgIEBAIC0xODAsNyArMTgxLDYgQEAgc3RydWN0IHZpX2luZm8gew0KICAgICAJ c3RydWN0IHBvcnRfaW5mbyAqcGk7DQogICAgIA0KICAgICAJc3RydWN0IGlmbmV0ICppZnA7DQog ICAgLQlzdHJ1Y3QgaWZtZWRpYSBtZWRpYTsNCiAgICAgDQogICAgIAl1bnNpZ25lZCBsb25nIGZs YWdzOw0KICAgICAJaW50IGlmX2ZsYWdzOw0KICAgIEBAIC0yODEsNiArMjgxLDggQEAgc3RydWN0 IHBvcnRfaW5mbyB7DQogICAgIAl1aW50OF90ICByeF9jaGFuX21hcDsJLyogcnggTVBTIGNoYW5u ZWwgYml0bWFwICovDQogICAgIA0KICAgICAJc3RydWN0IGxpbmtfY29uZmlnIGxpbmtfY2ZnOw0K ICAgICsJc3RydWN0IGxpbmtfY29uZmlnIG9sZF9saW5rX2NmZzsNCiAgICArCXN0cnVjdCBpZm1l ZGlhIG1lZGlhOw0KICAgICANCiAgICAgCXN0cnVjdCB0aW1ldmFsIGxhc3RfcmVmcmVzaGVkOw0K ICAgICAgCXN0cnVjdCBwb3J0X3N0YXRzIHN0YXRzOw0KICAgIEBAIC0xMDI2LDEwICsxMDI4LDEw IEBAIGFkYXAycGluZm8oc3RydWN0IGFkYXB0ZXIgKnNjLCBpbnQgaWR4KQ0KICAgICB9DQogICAg IA0KICAgICBzdGF0aWMgaW5saW5lIHZvaWQNCiAgICAtdDRfb3Nfc2V0X2h3X2FkZHIoc3RydWN0 IGFkYXB0ZXIgKnNjLCBpbnQgaWR4LCB1aW50OF90IGh3X2FkZHJbXSkNCiAgICArdDRfb3Nfc2V0 X2h3X2FkZHIoc3RydWN0IHBvcnRfaW5mbyAqcGksIHVpbnQ4X3QgaHdfYWRkcltdKQ0KICAgICB7 DQogICAgIA0KICAgIC0JYmNvcHkoaHdfYWRkciwgc2MtPnBvcnRbaWR4XS0+dmlbMF0uaHdfYWRk ciwgRVRIRVJfQUREUl9MRU4pOw0KICAgICsJYmNvcHkoaHdfYWRkciwgcGktPnZpWzBdLmh3X2Fk ZHIsIEVUSEVSX0FERFJfTEVOKTsNCiAgICAgfQ0KICAgICANCiAgICAgc3RhdGljIGlubGluZSBi b29sDQogICAgQEAgLTEwNzksMjQgKzEwODEsNiBAQCBwb3J0X3RvcF9zcGVlZChjb25zdCBzdHJ1 Y3QgcG9ydF9pbmZvICpwaSkNCiAgICAgfQ0KICAgICANCiAgICAgc3RhdGljIGlubGluZSBpbnQN CiAgICAtcG9ydF90b3Bfc3BlZWRfcmF3KGNvbnN0IHN0cnVjdCBwb3J0X2luZm8gKnBpKQ0KICAg IC17DQogICAgLQ0KICAgIC0JaWYgKHBpLT5saW5rX2NmZy5zdXBwb3J0ZWQgJiBGV19QT1JUX0NB UF9TUEVFRF8xMDBHKQ0KICAgIC0JCXJldHVybiAoRldfUE9SVF9DQVBfU1BFRURfMTAwRyk7DQog ICAgLQlpZiAocGktPmxpbmtfY2ZnLnN1cHBvcnRlZCAmIEZXX1BPUlRfQ0FQX1NQRUVEXzQwRykN CiAgICAtCQlyZXR1cm4gKEZXX1BPUlRfQ0FQX1NQRUVEXzQwRyk7DQogICAgLQlpZiAocGktPmxp bmtfY2ZnLnN1cHBvcnRlZCAmIEZXX1BPUlRfQ0FQX1NQRUVEXzI1RykNCiAgICAtCQlyZXR1cm4g KEZXX1BPUlRfQ0FQX1NQRUVEXzI1Ryk7DQogICAgLQlpZiAocGktPmxpbmtfY2ZnLnN1cHBvcnRl ZCAmIEZXX1BPUlRfQ0FQX1NQRUVEXzEwRykNCiAgICAtCQlyZXR1cm4gKEZXX1BPUlRfQ0FQX1NQ RUVEXzEwRyk7DQogICAgLQlpZiAocGktPmxpbmtfY2ZnLnN1cHBvcnRlZCAmIEZXX1BPUlRfQ0FQ X1NQRUVEXzFHKQ0KICAgIC0JCXJldHVybiAoRldfUE9SVF9DQVBfU1BFRURfMUcpOw0KICAgIC0N CiAgICAtCXJldHVybiAoMCk7DQogICAgLX0NCiAgICAtDQogICAgLXN0YXRpYyBpbmxpbmUgaW50 DQogICAgIHR4X3Jlc3VtZV90aHJlc2hvbGQoc3RydWN0IHNnZV9lcSAqZXEpDQogICAgIHsNCiAg ICAgDQogICAgQEAgLTExMzIsOCArMTExNiw4IEBAIGV4dGVybiBkZXZpY2VfbWV0aG9kX3QgY3hn YmVfbWV0aG9kc1tdOw0KICAgICBpbnQgdDRfb3NfZmluZF9wY2lfY2FwYWJpbGl0eShzdHJ1Y3Qg YWRhcHRlciAqLCBpbnQpOw0KICAgICBpbnQgdDRfb3NfcGNpX3NhdmVfc3RhdGUoc3RydWN0IGFk YXB0ZXIgKik7DQogICAgIGludCB0NF9vc19wY2lfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgYWRhcHRl ciAqKTsNCiAgICAtdm9pZCB0NF9vc19wb3J0bW9kX2NoYW5nZWQoY29uc3Qgc3RydWN0IGFkYXB0 ZXIgKiwgaW50KTsNCiAgICAtdm9pZCB0NF9vc19saW5rX2NoYW5nZWQoc3RydWN0IGFkYXB0ZXIg KiwgaW50LCBpbnQpOw0KICAgICt2b2lkIHQ0X29zX3BvcnRtb2RfY2hhbmdlZChzdHJ1Y3QgcG9y dF9pbmZvICopOw0KICAgICt2b2lkIHQ0X29zX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcG9ydF9pbmZv ICopOw0KICAgICB2b2lkIHQ0X2l0ZXJhdGUodm9pZCAoKikoc3RydWN0IGFkYXB0ZXIgKiwgdm9p ZCAqKSwgdm9pZCAqKTsNCiAgICAgdm9pZCB0NF9pbml0X2Rldm5hbWVzKHN0cnVjdCBhZGFwdGVy ICopOw0KICAgICB2b2lkIHQ0X2FkZF9hZGFwdGVyKHN0cnVjdCBhZGFwdGVyICopOw0KICAgIA0K ICAgIE1vZGlmaWVkOiBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS9jb21tb24vY29tbW9uLmgNCiAg ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0NCiAgICAtLS0gc3RhYmxlLzEwL3N5cy9kZXYvY3hnYmUv Y29tbW9uL2NvbW1vbi5oCVRodSBPY3QgMTAgMjI6NDk6NDUgMjAxOQkocjM1MzQxNykNCiAgICAr Kysgc3RhYmxlLzEwL3N5cy9kZXYvY3hnYmUvY29tbW9uL2NvbW1vbi5oCVRodSBPY3QgMTAgMjM6 Mjc6MDIgMjAxOQkocjM1MzQxOCkNCiAgICBAQCAtMzk5LDE2ICszOTksMTggQEAgc3RydWN0IHRy YWNlX3BhcmFtcyB7DQogICAgIH07DQogICAgIA0KICAgICBzdHJ1Y3QgbGlua19jb25maWcgew0K ICAgICsJLyogT1Mtc3BlY2lmaWMgY29kZSBvd25zIGFsbCB0aGUgcmVxdWVzdGVkXyogZmllbGRz ICovDQogICAgKwl1bnNpZ25lZCBjaGFyICByZXF1ZXN0ZWRfYW5lZzsgICAvKiBsaW5rIGFuZWcg dXNlciBoYXMgcmVxdWVzdGVkICovDQogICAgKwl1bnNpZ25lZCBjaGFyICByZXF1ZXN0ZWRfZmM7 ICAgICAvKiBmbG93IGNvbnRyb2wgdXNlciBoYXMgcmVxdWVzdGVkICovDQogICAgKwl1bnNpZ25l ZCBjaGFyICByZXF1ZXN0ZWRfZmVjOyAgICAvKiBGRUMgdXNlciBoYXMgcmVxdWVzdGVkICovDQog ICAgKwl1bnNpZ25lZCBpbnQgICByZXF1ZXN0ZWRfc3BlZWQ7ICAvKiBzcGVlZCB1c2VyIGhhcyBy ZXF1ZXN0ZWQgKE1icHMpICovDQogICAgKw0KICAgICAJdW5zaWduZWQgc2hvcnQgc3VwcG9ydGVk OyAgICAgICAgLyogbGluayBjYXBhYmlsaXRpZXMgKi8NCiAgICAgCXVuc2lnbmVkIHNob3J0IGFk dmVydGlzaW5nOyAgICAgIC8qIGFkdmVydGlzZWQgY2FwYWJpbGl0aWVzICovDQogICAgIAl1bnNp Z25lZCBzaG9ydCBscF9hZHZlcnRpc2luZzsgICAvKiBwZWVyIGFkdmVydGlzZWQgY2FwYWJpbGl0 aWVzICovDQogICAgLQl1bnNpZ25lZCBpbnQgICByZXF1ZXN0ZWRfc3BlZWQ7ICAvKiBzcGVlZCB1 c2VyIGhhcyByZXF1ZXN0ZWQgKi8NCiAgICAtCXVuc2lnbmVkIGludCAgIHNwZWVkOyAgICAgICAg ICAgIC8qIGFjdHVhbCBsaW5rIHNwZWVkICovDQogICAgLQl1bnNpZ25lZCBjaGFyICByZXF1ZXN0 ZWRfZmM7ICAgICAvKiBmbG93IGNvbnRyb2wgdXNlciBoYXMgcmVxdWVzdGVkICovDQogICAgKwl1 bnNpZ25lZCBpbnQgICBzcGVlZDsgICAgICAgICAgICAvKiBhY3R1YWwgbGluayBzcGVlZCAoTWJw cykgKi8NCiAgICAgCXVuc2lnbmVkIGNoYXIgIGZjOyAgICAgICAgICAgICAgIC8qIGFjdHVhbCBs aW5rIGZsb3cgY29udHJvbCAqLw0KICAgIC0JdW5zaWduZWQgY2hhciAgcmVxdWVzdGVkX2ZlYzsg ICAgLyogRkVDIHVzZXIgaGFzIHJlcXVlc3RlZCAqLw0KICAgICAJdW5zaWduZWQgY2hhciAgZmVj OyAgICAgICAgICAgICAgLyogYWN0dWFsIEZFQyAqLw0KICAgIC0JdW5zaWduZWQgY2hhciAgYXV0 b25lZzsgICAgICAgICAgLyogYXV0b25lZ290aWF0aW5nPyAqLw0KICAgICAJdW5zaWduZWQgY2hh ciAgbGlua19vazsgICAgICAgICAgLyogbGluayB1cD8gKi8NCiAgICAgCXVuc2lnbmVkIGNoYXIg IGxpbmtfZG93bl9yYzsgICAgIC8qIGxpbmsgZG93biByZWFzb24gKi8NCiAgICAgfTsNCiAgICBA QCAtNTc2LDcgKzU3OCw3IEBAIGludCB0NF9wcmVwX2FkYXB0ZXIoc3RydWN0IGFkYXB0ZXIgKmFk YXB0ZXIsIHU4ICpidWYpOw0KICAgICBpbnQgdDRfc2h1dGRvd25fYWRhcHRlcihzdHJ1Y3QgYWRh cHRlciAqYWRhcHRlcik7DQogICAgIGludCB0NF9pbml0X2RldmxvZ19wYXJhbXMoc3RydWN0IGFk YXB0ZXIgKmFkYXB0ZXIsIGludCBmd19hdHRhY2gpOw0KICAgICBpbnQgdDRfaW5pdF9zZ2VfcGFy YW1zKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKTsNCiAgICAtaW50IHQ0X2luaXRfdHBfcGFyYW1z KHN0cnVjdCBhZGFwdGVyICphZGFwKTsNCiAgICAraW50IHQ0X2luaXRfdHBfcGFyYW1zKHN0cnVj dCBhZGFwdGVyICphZGFwLCBib29sIHNsZWVwX29rKTsNCiAgICAgaW50IHQ0X2ZpbHRlcl9maWVs ZF9zaGlmdChjb25zdCBzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgaW50IGZpbHRlcl9zZWwpOw0KICAg ICBpbnQgdDRfcG9ydF9pbml0KHN0cnVjdCBhZGFwdGVyICphZGFwLCBpbnQgbWJveCwgaW50IHBm LCBpbnQgdmYsIGludCBwb3J0X2lkKTsNCiAgICAgdm9pZCB0NF9mYXRhbF9lcnIoc3RydWN0IGFk YXB0ZXIgKmFkYXB0ZXIpOw0KICAgIEBAIC01OTQsMjAgKzU5NiwyMSBAQCBpbnQgdDRfY29uZmln X3ZpX3JzcyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgaW50IG1ib3gNCiAgICAgCQkgICAgIHVu c2lnbmVkIGludCBmbGFncywgdW5zaWduZWQgaW50IGRlZnEsIHVuc2lnbmVkIGludCBza2V5aWR4 LA0KICAgICAJCSAgICAgdW5zaWduZWQgaW50IHNrZXkpOw0KICAgICBpbnQgdDRfcmVhZF9yc3Mo c3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUxNiAqZW50cmllcyk7DQogICAgLXZvaWQgdDRfZndf dHBfcGlvX3J3KHN0cnVjdCBhZGFwdGVyICphZGFwLCB1MzIgKnZhbHMsIHVuc2lnbmVkIGludCBu cmVncywNCiAgICAtCQkgIHVuc2lnbmVkIGludCBzdGFydF9pbmRleCwgdW5zaWduZWQgaW50IHJ3 KTsNCiAgICAtdm9pZCB0NF9yZWFkX3Jzc19rZXkoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUz MiAqa2V5KTsNCiAgICAtdm9pZCB0NF93cml0ZV9yc3Nfa2V5KHN0cnVjdCBhZGFwdGVyICphZGFw LCB1MzIgKmtleSwgaW50IGlkeCk7DQogICAgLXZvaWQgdDRfcmVhZF9yc3NfcGZfY29uZmlnKHN0 cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1bnNpZ25lZCBpbnQgaW5kZXgsIHUzMiAqdmFscCk7DQog ICAgLXZvaWQgdDRfd3JpdGVfcnNzX3BmX2NvbmZpZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwg dW5zaWduZWQgaW50IGluZGV4LCB1MzIgdmFsKTsNCiAgICArdm9pZCB0NF9yZWFkX3Jzc19rZXko c3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUzMiAqa2V5LCBib29sIHNsZWVwX29rKTsNCiAgICAr dm9pZCB0NF93cml0ZV9yc3Nfa2V5KHN0cnVjdCBhZGFwdGVyICphZGFwLCBjb25zdCB1MzIgKmtl eSwgaW50IGlkeCwNCiAgICArCQkgICAgICBib29sIHNsZWVwX29rKTsNCiAgICArdm9pZCB0NF9y ZWFkX3Jzc19wZl9jb25maWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHVuc2lnbmVkIGludCBp bmRleCwNCiAgICArCQkJICAgdTMyICp2YWxwLCBib29sIHNsZWVwX29rKTsNCiAgICArdm9pZCB0 NF93cml0ZV9yc3NfcGZfY29uZmlnKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1bnNpZ25lZCBp bnQgaW5kZXgsDQogICAgKwkJCSAgICB1MzIgdmFsLCBib29sIHNsZWVwX29rKTsNCiAgICAgdm9p ZCB0NF9yZWFkX3Jzc192Zl9jb25maWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHVuc2lnbmVk IGludCBpbmRleCwNCiAgICAtCQkJICAgdTMyICp2ZmwsIHUzMiAqdmZoKTsNCiAgICArCQkJICAg dTMyICp2ZmwsIHUzMiAqdmZoLCBib29sIHNsZWVwX29rKTsNCiAgICAgdm9pZCB0NF93cml0ZV9y c3NfdmZfY29uZmlnKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1bnNpZ25lZCBpbnQgaW5kZXgs DQogICAgLQkJCSAgICB1MzIgdmZsLCB1MzIgdmZoKTsNCiAgICAtdTMyIHQ0X3JlYWRfcnNzX3Bm X21hcChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcik7DQogICAgLXZvaWQgdDRfd3JpdGVfcnNzX3Bm X21hcChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyIHBmbWFwKTsNCiAgICAtdTMyIHQ0X3Jl YWRfcnNzX3BmX21hc2soc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpOw0KICAgIC12b2lkIHQ0X3dy aXRlX3Jzc19wZl9tYXNrKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1MzIgcGZtYXNrKTsNCiAg ICArCQkJICAgIHUzMiB2ZmwsIHUzMiB2ZmgsIGJvb2wgc2xlZXBfb2spOw0KICAgICt1MzIgdDRf cmVhZF9yc3NfcGZfbWFwKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCBib29sIHNsZWVwX29rKTsN CiAgICArdm9pZCB0NF93cml0ZV9yc3NfcGZfbWFwKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1 MzIgcGZtYXAsIGJvb2wgc2xlZXBfb2spOw0KICAgICt1MzIgdDRfcmVhZF9yc3NfcGZfbWFzayhz dHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgYm9vbCBzbGVlcF9vayk7DQogICAgK3ZvaWQgdDRfd3Jp dGVfcnNzX3BmX21hc2soc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBwZm1hc2ssIGJvb2wg c2xlZXBfb2spOw0KICAgICBpbnQgdDRfbXBzX3NldF9hY3RpdmVfcG9ydHMoc3RydWN0IGFkYXB0 ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBwb3J0X21hc2spOw0KICAgICB2b2lkIHQ0X3BtdHhfZ2V0 X3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCB1MzIgY250W10sIHU2NCBjeWNsZXNbXSk7DQog ICAgIHZvaWQgdDRfcG1yeF9nZXRfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHUzMiBjbnRb XSwgdTY0IGN5Y2xlc1tdKTsNCiAgICBAQCAtNjUzLDE5ICs2NTYsMjQgQEAgdm9pZCB0NF9yZWFk X210dV90Ymwoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHUxNiAqbXR1cywgDQogICAgIHZvaWQgdDRf cmVhZF9jb25nX3RibChzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdTE2IGluY3JbTk1UVVNdW05DQ1RS TF9XSU5dKTsNCiAgICAgdm9pZCB0NF9yZWFkX3BhY2VfdGJsKHN0cnVjdCBhZGFwdGVyICphZGFw LCB1bnNpZ25lZCBpbnQgcGFjZV92YWxzW05UWF9TQ0hFRF0pOw0KICAgICB2b2lkIHQ0X2dldF90 eF9zY2hlZChzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IHNjaGVkLCB1bnNpZ25l ZCBpbnQgKmticHMsDQogICAgLQkJICAgICB1bnNpZ25lZCBpbnQgKmlwZyk7DQogICAgKwkJICAg ICB1bnNpZ25lZCBpbnQgKmlwZywgYm9vbCBzbGVlcF9vayk7DQogICAgIHZvaWQgdDRfdHBfd3Jf Yml0c19pbmRpcmVjdChzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IGFkZHIsDQog ICAgIAkJCSAgICB1bnNpZ25lZCBpbnQgbWFzaywgdW5zaWduZWQgaW50IHZhbCk7DQogICAgIHZv aWQgdDRfdHBfcmVhZF9sYShzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdTY0ICpsYV9idWYsIHVuc2ln bmVkIGludCAqd3JwdHIpOw0KICAgIC12b2lkIHQ0X3RwX2dldF9lcnJfc3RhdHMoc3RydWN0IGFk YXB0ZXIgKmFkYXAsIHN0cnVjdCB0cF9lcnJfc3RhdHMgKnN0KTsNCiAgICAtdm9pZCB0NF90cF9n ZXRfcHJveHlfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHN0cnVjdCB0cF9wcm94eV9zdGF0 cyAqc3QpOw0KICAgIC12b2lkIHQ0X3RwX2dldF9jcGxfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFk YXAsIHN0cnVjdCB0cF9jcGxfc3RhdHMgKnN0KTsNCiAgICAtdm9pZCB0NF90cF9nZXRfcmRtYV9z dGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgc3RydWN0IHRwX3JkbWFfc3RhdHMgKnN0KTsNCiAg ICAtdm9pZCB0NF9nZXRfdXNtX3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCBzdHJ1Y3QgdHBf dXNtX3N0YXRzICpzdCk7DQogICAgK3ZvaWQgdDRfdHBfZ2V0X2Vycl9zdGF0cyhzdHJ1Y3QgYWRh cHRlciAqYWRhcCwgc3RydWN0IHRwX2Vycl9zdGF0cyAqc3QsDQogICAgKwkJCSBib29sIHNsZWVw X29rKTsNCiAgICArdm9pZCB0NF90cF9nZXRfcHJveHlfc3RhdHMoc3RydWN0IGFkYXB0ZXIgKmFk YXAsIHN0cnVjdCB0cF9wcm94eV9zdGF0cyAqc3QsDQogICAgKyAgICAJCQkgICBib29sIHNsZWVw X29rKTsNCiAgICArdm9pZCB0NF90cF9nZXRfY3BsX3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFw LCBzdHJ1Y3QgdHBfY3BsX3N0YXRzICpzdCwNCiAgICArCQkJIGJvb2wgc2xlZXBfb2spOw0KICAg ICt2b2lkIHQ0X3RwX2dldF9yZG1hX3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCBzdHJ1Y3Qg dHBfcmRtYV9zdGF0cyAqc3QsDQogICAgKwkJCSAgYm9vbCBzbGVlcF9vayk7DQogICAgK3ZvaWQg dDRfZ2V0X3VzbV9zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgc3RydWN0IHRwX3VzbV9zdGF0 cyAqc3QsDQogICAgKwkJICAgICAgYm9vbCBzbGVlcF9vayk7DQogICAgIHZvaWQgdDRfdHBfZ2V0 X3RjcF9zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgc3RydWN0IHRwX3RjcF9zdGF0cyAqdjQs DQogICAgLQkJCSBzdHJ1Y3QgdHBfdGNwX3N0YXRzICp2Nik7DQogICAgKwkJCSBzdHJ1Y3QgdHBf dGNwX3N0YXRzICp2NiwgYm9vbCBzbGVlcF9vayk7DQogICAgIHZvaWQgdDRfZ2V0X2Zjb2Vfc3Rh dHMoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBpZHgsDQogICAgLQkJICAgICAg IHN0cnVjdCB0cF9mY29lX3N0YXRzICpzdCk7DQogICAgKwkJICAgICAgIHN0cnVjdCB0cF9mY29l X3N0YXRzICpzdCwgYm9vbCBzbGVlcF9vayk7DQogICAgIHZvaWQgdDRfbG9hZF9tdHVzKHN0cnVj dCBhZGFwdGVyICphZGFwLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqbXR1cywNCiAgICAgCQkgIGNv bnN0IHVuc2lnbmVkIHNob3J0ICphbHBoYSwgY29uc3QgdW5zaWduZWQgc2hvcnQgKmJldGEpOw0K ICAgICANCiAgICBAQCAtNjc2LDcgKzY4NCw4IEBAIGludCB0NF9zZXRfc2NoZWRfaXBnKHN0cnVj dCBhZGFwdGVyICphZGFwLCBpbnQgc2NoZWQsIA0KICAgICBpbnQgdDRfc2V0X3BhY2VfdGJsKHN0 cnVjdCBhZGFwdGVyICphZGFwLCBjb25zdCB1bnNpZ25lZCBpbnQgKnBhY2VfdmFscywNCiAgICAg CQkgICAgdW5zaWduZWQgaW50IHN0YXJ0LCB1bnNpZ25lZCBpbnQgbik7DQogICAgIHZvaWQgdDRf Z2V0X2NoYW5fdHhyYXRlKHN0cnVjdCBhZGFwdGVyICphZGFwLCB1NjQgKm5pY19yYXRlLCB1NjQg Km9mbGRfcmF0ZSk7DQogICAgLWludCB0NF9zZXRfZmlsdGVyX21vZGUoc3RydWN0IGFkYXB0ZXIg KmFkYXAsIHVuc2lnbmVkIGludCBtb2RlX21hcCk7DQogICAgK2ludCB0NF9zZXRfZmlsdGVyX21v ZGUoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBtb2RlX21hcCwNCiAgICArICAg IGJvb2wgc2xlZXBfb2spOw0KICAgICB2b2lkIHQ0X21rX2ZpbHRkZWx3cih1bnNpZ25lZCBpbnQg ZnRpZCwgc3RydWN0IGZ3X2ZpbHRlcl93ciAqd3IsIGludCBxaWQpOw0KICAgICANCiAgICAgdm9p ZCB0NF93b2xfbWFnaWNfZW5hYmxlKHN0cnVjdCBhZGFwdGVyICphZGFwLCB1bnNpZ25lZCBpbnQg cG9ydCwgY29uc3QgdTggKmFkZHIpOw0KICAgIEBAIC03NjYsNiArNzc1LDcgQEAgaW50IHQ0X3Nn ZV9jdHh0X3JkX2JkKHN0cnVjdCBhZGFwdGVyICphZGFwLCB1bnNpZ25lZCBpDQogICAgIAkJICAg ICAgdTMyICpkYXRhKTsNCiAgICAgaW50IHQ0X3NnZV9jdHh0X2ZsdXNoKHN0cnVjdCBhZGFwdGVy ICphZGFwLCB1bnNpZ25lZCBpbnQgbWJveCk7DQogICAgIGNvbnN0IGNoYXIgKnQ0X2xpbmtfZG93 bl9yY19zdHIodW5zaWduZWQgY2hhciBsaW5rX2Rvd25fcmMpOw0KICAgICtpbnQgdDRfdXBkYXRl X3BvcnRfaW5mbyhzdHJ1Y3QgcG9ydF9pbmZvICpwaSk7DQogICAgIGludCB0NF9oYW5kbGVfZndf cnBsKHN0cnVjdCBhZGFwdGVyICphZGFwLCBjb25zdCBfX2JlNjQgKnJwbCk7DQogICAgIGludCB0 NF9md2FkZHJzcGFjZV93cml0ZShzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdW5zaWduZWQgaW50IG1i b3gsIHUzMiBhZGRyLCB1MzIgdmFsKTsNCiAgICAgaW50IHQ0X3NjaGVkX2NvbmZpZyhzdHJ1Y3Qg YWRhcHRlciAqYWRhcHRlciwgaW50IHR5cGUsIGludCBtaW5tYXhlbiwNCiAgICBAQCAtNzg3LDYg Kzc5NywxNSBAQCBpbnQgdDRfY29uZmlnX3dhdGNoZG9nKHN0cnVjdCBhZGFwdGVyICphZGFwdGVy LCB1bnNpZ24NCiAgICAgaW50IHQ0X2dldF9kZXZsb2dfbGV2ZWwoc3RydWN0IGFkYXB0ZXIgKmFk YXB0ZXIsIHVuc2lnbmVkIGludCAqbGV2ZWwpOw0KICAgICBpbnQgdDRfc2V0X2RldmxvZ19sZXZl bChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdW5zaWduZWQgaW50IGxldmVsKTsNCiAgICAgdm9p ZCB0NF9zZ2VfZGVjb2RlX2lkbWFfc3RhdGUoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIGludCBz dGF0ZSk7DQogICAgKw0KICAgICt2b2lkIHQ0X3RwX3Bpb19yZWFkKHN0cnVjdCBhZGFwdGVyICph ZGFwLCB1MzIgKmJ1ZmYsIHUzMiBucmVncywNCiAgICArCQkgICAgdTMyIHN0YXJ0X2luZGV4LCBi b29sIHNsZWVwX29rKTsNCiAgICArdm9pZCB0NF90cF9waW9fd3JpdGUoc3RydWN0IGFkYXB0ZXIg KmFkYXAsIGNvbnN0IHUzMiAqYnVmZiwgdTMyIG5yZWdzLA0KICAgICsJCSAgICAgdTMyIHN0YXJ0 X2luZGV4LCBib29sIHNsZWVwX29rKTsNCiAgICArdm9pZCB0NF90cF90bV9waW9fcmVhZChzdHJ1 Y3QgYWRhcHRlciAqYWRhcCwgdTMyICpidWZmLCB1MzIgbnJlZ3MsDQogICAgKwkJICAgICAgIHUz MiBzdGFydF9pbmRleCwgYm9vbCBzbGVlcF9vayk7DQogICAgK3ZvaWQgdDRfdHBfbWliX3JlYWQo c3RydWN0IGFkYXB0ZXIgKmFkYXAsIHUzMiAqYnVmZiwgdTMyIG5yZWdzLA0KICAgICsJCSAgICB1 MzIgc3RhcnRfaW5kZXgsIGJvb2wgc2xlZXBfb2spOw0KICAgICANCiAgICAgc3RhdGljIGlubGlu ZSBpbnQgdDR2Zl9xdWVyeV9wYXJhbXMoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsDQogICAgIAkJ CQkgICAgdW5zaWduZWQgaW50IG5wYXJhbXMsIGNvbnN0IHUzMiAqcGFyYW1zLA0KICAgIA0KICAg IE1vZGlmaWVkOiBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS9jb21tb24vdDRfaHcuYw0KICAgID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KICAgIC0tLSBzdGFibGUvMTAvc3lzL2Rldi9jeGdiZS9jb21t b24vdDRfaHcuYwlUaHUgT2N0IDEwIDIyOjQ5OjQ1IDIwMTkJKHIzNTM0MTcpDQogICAgKysrIHN0 YWJsZS8xMC9zeXMvZGV2L2N4Z2JlL2NvbW1vbi90NF9ody5jCVRodSBPY3QgMTAgMjM6Mjc6MDIg MjAxOQkocjM1MzQxOCkNCiAgICBAQCAtNDY2LDcgKzQ2Niw3IEBAIHN0YXRpYyBpbnQgdDRfZWRj X2Vycl9yZWFkKHN0cnVjdCBhZGFwdGVyICphZGFwLCBpbnQgaQ0KICAgICAJCUNIX1dBUk4oYWRh cCwgIiVzOiBUNCBOT1Qgc3VwcG9ydGVkLlxuIiwgX19mdW5jX18pOw0KICAgICAJCXJldHVybiAw Ow0KICAgICAJfQ0KICAgIC0JaWYgKGlkeCAhPSAwICYmIGlkeCAhPSAxKSB7DQogICAgKwlpZiAo aWR4ICE9IE1FTV9FREMwICYmIGlkeCAhPSBNRU1fRURDMSkgew0KICAgICAJCUNIX1dBUk4oYWRh cCwgIiVzOiBpZHggJWQgTk9UIHN1cHBvcnRlZC5cbiIsIF9fZnVuY19fLCBpZHgpOw0KICAgICAJ CXJldHVybiAwOw0KICAgICAJfQ0KICAgIEBAIC04ODMsNyArODgzLDggQEAgdm9pZCB0NF9nZXRf cmVncyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdTggKmJ1Ziwgc2l6ZV90DQogICAgIAkJMHhkMDEw LCAweGQwM2MsDQogICAgIAkJMHhkZmMwLCAweGRmZTAsDQogICAgIAkJMHhlMDAwLCAweGVhN2Ms DQogICAgLQkJMHhmMDAwLCAweDExMTkwLA0KICAgICsJCTB4ZjAwMCwgMHgxMTExMCwNCiAgICAr CQkweDExMTE4LCAweDExMTkwLA0KICAgICAJCTB4MTkwNDAsIDB4MTkwNmMsDQogICAgIAkJMHgx OTA3OCwgMHgxOTA4MCwNCiAgICAgCQkweDE5MDhjLCAweDE5MGU0LA0KICAgIEBAIC0xNDIxLDgg KzE0MjIsNiBAQCB2b2lkIHQ0X2dldF9yZWdzKHN0cnVjdCBhZGFwdGVyICphZGFwLCB1OCAqYnVm LCBzaXplX3QNCiAgICAgCQkweDFmZjAwLCAweDFmZjg0LA0KICAgICAJCTB4MWZmYzAsIDB4MWZm YzgsDQogICAgIAkJMHgzMDAwMCwgMHgzMDAzMCwNCiAgICAtCQkweDMwMDM4LCAweDMwMDM4LA0K ICAgIC0JCTB4MzAwNDAsIDB4MzAwNDAsDQogICAgIAkJMHgzMDEwMCwgMHgzMDE0NCwNCiAgICAg CQkweDMwMTkwLCAweDMwMWEwLA0KICAgICAJCTB4MzAxYTgsIDB4MzAxYjgsDQogICAgQEAgLTE1 MzMsOCArMTUzMiw2IEBAIHZvaWQgdDRfZ2V0X3JlZ3Moc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHU4 ICpidWYsIHNpemVfdA0KICAgICAJCTB4MzNjM2MsIDB4MzNjNTAsDQogICAgIAkJMHgzM2NmMCwg MHgzM2NmYywNCiAgICAgCQkweDM0MDAwLCAweDM0MDMwLA0KICAgIC0JCTB4MzQwMzgsIDB4MzQw MzgsDQogICAgLQkJMHgzNDA0MCwgMHgzNDA0MCwNCiAgICAgCQkweDM0MTAwLCAweDM0MTQ0LA0K ICAgICAJCTB4MzQxOTAsIDB4MzQxYTAsDQogICAgIAkJMHgzNDFhOCwgMHgzNDFiOCwNCiAgICBA QCAtMTY0NSw4ICsxNjQyLDYgQEAgdm9pZCB0NF9nZXRfcmVncyhzdHJ1Y3QgYWRhcHRlciAqYWRh cCwgdTggKmJ1Ziwgc2l6ZV90DQogICAgIAkJMHgzN2MzYywgMHgzN2M1MCwNCiAgICAgCQkweDM3 Y2YwLCAweDM3Y2ZjLA0KICAgICAJCTB4MzgwMDAsIDB4MzgwMzAsDQogICAgLQkJMHgzODAzOCwg MHgzODAzOCwNCiAgICAtCQkweDM4MDQwLCAweDM4MDQwLA0KICAgICAJCTB4MzgxMDAsIDB4Mzgx NDQsDQogICAgIAkJMHgzODE5MCwgMHgzODFhMCwNCiAgICAgCQkweDM4MWE4LCAweDM4MWI4LA0K ICAgIEBAIC0xNzU3LDggKzE3NTIsNiBAQCB2b2lkIHQ0X2dldF9yZWdzKHN0cnVjdCBhZGFwdGVy ICphZGFwLCB1OCAqYnVmLCBzaXplX3QNCiAgICAgCQkweDNiYzNjLCAweDNiYzUwLA0KICAgICAJ CTB4M2JjZjAsIDB4M2JjZmMsDQogICAgIAkJMHgzYzAwMCwgMHgzYzAzMCwNCiAgICAtCQkweDNj MDM4LCAweDNjMDM4LA0KICAgIC0JCTB4M2MwNDAsIDB4M2MwNDAsDQogICAgIAkJMHgzYzEwMCwg MHgzYzE0NCwNCiAgICAgCQkweDNjMTkwLCAweDNjMWEwLA0KICAgICAJCTB4M2MxYTgsIDB4M2Mx YjgsDQogICAgQEAgLTIyNTEsMTMgKzIyNDQsNiBAQCB2b2lkIHQ0X2dldF9yZWdzKHN0cnVjdCBh ZGFwdGVyICphZGFwLCB1OCAqYnVmLCBzaXplX3QNCiAgICAgCQkweDFmZjAwLCAweDFmZjg0LA0K ICAgICAJCTB4MWZmYzAsIDB4MWZmYzgsDQogICAgIAkJMHgzMDAwMCwgMHgzMDAzMCwNCiAgICAt CQkweDMwMDM4LCAweDMwMDM4LA0KICAgIC0JCTB4MzAwNDAsIDB4MzAwNDAsDQogICAgLQkJMHgz MDA0OCwgMHgzMDA0OCwNCiAgICAtCQkweDMwMDUwLCAweDMwMDUwLA0KICAgIC0JCTB4MzAwNWMs IDB4MzAwNjAsDQogICAgLQkJMHgzMDA2OCwgMHgzMDA2OCwNCiAgICAtCQkweDMwMDcwLCAweDMw MDcwLA0KICAgICAJCTB4MzAxMDAsIDB4MzAxNjgsDQogICAgIAkJMHgzMDE5MCwgMHgzMDFhMCwN CiAgICAgCQkweDMwMWE4LCAweDMwMWI4LA0KICAgIEBAIC0yMzIwLDEzICsyMzA2LDEyIEBAIHZv aWQgdDRfZ2V0X3JlZ3Moc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHU4ICpidWYsIHNpemVfdA0KICAg ICAJCTB4MzI2YTgsIDB4MzI2YTgsDQogICAgIAkJMHgzMjZlYywgMHgzMjZlYywNCiAgICAgCQkw eDMyYTAwLCAweDMyYWJjLA0KICAgIC0JCTB4MzJiMDAsIDB4MzJiMzgsDQogICAgKwkJMHgzMmIw MCwgMHgzMmIxOCwNCiAgICArCQkweDMyYjIwLCAweDMyYjM4LA0KICAgICAJCTB4MzJiNDAsIDB4 MzJiNTgsDQogICAgIAkJMHgzMmI2MCwgMHgzMmI3OCwNCiAgICAgCQkweDMyYzAwLCAweDMyYzAw LA0KICAgICAJCTB4MzJjMDgsIDB4MzJjM2MsDQogICAgLQkJMHgzMmUwMCwgMHgzMmUyYywNCiAg ICAtCQkweDMyZjAwLCAweDMyZjJjLA0KICAgICAJCTB4MzMwMDAsIDB4MzMwMmMsDQogICAgIAkJ MHgzMzAzNCwgMHgzMzA1MCwNCiAgICAgCQkweDMzMDU4LCAweDMzMDU4LA0KICAgIEBAIC0yMzkx LDEzICsyMzc2LDYgQEAgdm9pZCB0NF9nZXRfcmVncyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdTgg KmJ1Ziwgc2l6ZV90DQogICAgIAkJMHgzM2MzOCwgMHgzM2M1MCwNCiAgICAgCQkweDMzY2YwLCAw eDMzY2ZjLA0KICAgICAJCTB4MzQwMDAsIDB4MzQwMzAsDQogICAgLQkJMHgzNDAzOCwgMHgzNDAz OCwNCiAgICAtCQkweDM0MDQwLCAweDM0MDQwLA0KICAgIC0JCTB4MzQwNDgsIDB4MzQwNDgsDQog ICAgLQkJMHgzNDA1MCwgMHgzNDA1MCwNCiAgICAtCQkweDM0MDVjLCAweDM0MDYwLA0KICAgIC0J CTB4MzQwNjgsIDB4MzQwNjgsDQogICAgLQkJMHgzNDA3MCwgMHgzNDA3MCwNCiAgICAgCQkweDM0 MTAwLCAweDM0MTY4LA0KICAgICAJCTB4MzQxOTAsIDB4MzQxYTAsDQogICAgIAkJMHgzNDFhOCwg MHgzNDFiOCwNCiAgICBAQCAtMjQ2MCwxMyArMjQzOCwxMiBAQCB2b2lkIHQ0X2dldF9yZWdzKHN0 cnVjdCBhZGFwdGVyICphZGFwLCB1OCAqYnVmLCBzaXplX3QNCiAgICAgCQkweDM2NmE4LCAweDM2 NmE4LA0KICAgICAJCTB4MzY2ZWMsIDB4MzY2ZWMsDQogICAgIAkJMHgzNmEwMCwgMHgzNmFiYywN CiAgICAtCQkweDM2YjAwLCAweDM2YjM4LA0KICAgICsJCTB4MzZiMDAsIDB4MzZiMTgsDQogICAg KwkJMHgzNmIyMCwgMHgzNmIzOCwNCiAgICAgCQkweDM2YjQwLCAweDM2YjU4LA0KICAgICAJCTB4 MzZiNjAsIDB4MzZiNzgsDQogICAgIAkJMHgzNmMwMCwgMHgzNmMwMCwNCiAgICAgCQkweDM2YzA4 LCAweDM2YzNjLA0KICAgIC0JCTB4MzZlMDAsIDB4MzZlMmMsDQogICAgLQkJMHgzNmYwMCwgMHgz NmYyYywNCiAgICAgCQkweDM3MDAwLCAweDM3MDJjLA0KICAgICAJCTB4MzcwMzQsIDB4MzcwNTAs DQogICAgIAkJMHgzNzA1OCwgMHgzNzA1OCwNCiAgICBAQCAtMjY5Nyw2ICsyNjc0LDcgQEAgc3Ry dWN0IHQ0X3ZwZF9oZHIgew0KICAgICAjZGVmaW5lIEVFUFJPTV9NQVhfUE9MTAkJNTAwMAkJLyog eCA1MDAwID09IDUwbXMgKi8NCiAgICAgDQogICAgICNkZWZpbmUgRUVQUk9NX1NUQVRfQUREUgkw eDdiZmMNCiAgICArI2RlZmluZSBWUERfU0laRQkJMHg4MDANCiAgICAgI2RlZmluZSBWUERfQkFT RQkJMHg0MDANCiAgICAgI2RlZmluZSBWUERfQkFTRV9PTEQJCTANCiAgICAgI2RlZmluZSBWUERf TEVOCQkJMTAyNA0KICAgIEBAIC0zMDM3LDEzICszMDE1LDEzIEBAIGVudW0gew0KICAgICAJU0Zf QVRURU1QVFMgPSAxMCwJLyogbWF4IHJldHJpZXMgZm9yIFNGIG9wZXJhdGlvbnMgKi8NCiAgICAg DQogICAgIAkvKiBmbGFzaCBjb21tYW5kIG9wY29kZXMgKi8NCiAgICAtCVNGX1BST0dfUEFHRSAg ICA9IDIsCS8qIHByb2dyYW0gcGFnZSAqLw0KICAgICsJU0ZfUFJPR19QQUdFICAgID0gMiwJLyog cHJvZ3JhbSAyNTZCIHBhZ2UgKi8NCiAgICAgCVNGX1dSX0RJU0FCTEUgICA9IDQsCS8qIGRpc2Fi bGUgd3JpdGVzICovDQogICAgIAlTRl9SRF9TVEFUVVMgICAgPSA1LAkvKiByZWFkIHN0YXR1cyBy ZWdpc3RlciAqLw0KICAgICAJU0ZfV1JfRU5BQkxFICAgID0gNiwJLyogZW5hYmxlIHdyaXRlcyAq Lw0KICAgICAJU0ZfUkRfREFUQV9GQVNUID0gMHhiLAkvKiByZWFkIGZsYXNoICovDQogICAgIAlT Rl9SRF9JRAk9IDB4OWYsCS8qIHJlYWQgSUQgKi8NCiAgICAtCVNGX0VSQVNFX1NFQ1RPUiA9IDB4 ZDgsCS8qIGVyYXNlIHNlY3RvciAqLw0KICAgICsJU0ZfRVJBU0VfU0VDVE9SID0gMHhkOCwJLyog ZXJhc2UgNjRLQiBzZWN0b3IgKi8NCiAgICAgfTsNCiAgICAgDQogICAgIC8qKg0KICAgIEBAIC0z NjgwLDkgKzM2NTgsNiBAQCB2b2lkIHQ0X3VscHJ4X3JlYWRfbGEoc3RydWN0IGFkYXB0ZXIgKmFk YXAsIHUzMiAqbGFfYnUNCiAgICAgCX0NCiAgICAgfQ0KICAgICANCiAgICAtI2RlZmluZSBBRFZF UlRfTUFTSyAoVl9GV19QT1JUX0NBUF9TUEVFRChNX0ZXX1BPUlRfQ0FQX1NQRUVEKSB8IFwNCiAg ICAtCQkgICAgIEZXX1BPUlRfQ0FQX0FORUcpDQogICAgLQ0KICAgICAvKioNCiAgICAgICoJdDRf bGlua19sMWNmZyAtIGFwcGx5IGxpbmsgY29uZmlndXJhdGlvbiB0byBNQUMvUEhZDQogICAgICAq CUBwaHk6IHRoZSBQSFkgdG8gc2V0dXANCiAgICBAQCAtMzcwMSw3ICszNjc2LDcgQEAgaW50IHQ0 X2xpbmtfbDFjZmcoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBtDQogICAgIHsN CiAgICAgCXN0cnVjdCBmd19wb3J0X2NtZCBjOw0KICAgICAJdW5zaWduZWQgaW50IG1kaSA9IFZf RldfUE9SVF9DQVBfTURJKEZXX1BPUlRfQ0FQX01ESV9BVVRPKTsNCiAgICAtCXVuc2lnbmVkIGlu dCBmYywgZmVjOw0KICAgICsJdW5zaWduZWQgaW50IGFuZWcsIGZjLCBmZWMsIHNwZWVkLCByY2Fw Ow0KICAgICANCiAgICAgCWZjID0gMDsNCiAgICAgCWlmIChsYy0+cmVxdWVzdGVkX2ZjICYgUEFV U0VfUlgpDQogICAgQEAgLTM3MTEsMTIgKzM2ODYsNTEgQEAgaW50IHQ0X2xpbmtfbDFjZmcoc3Ry dWN0IGFkYXB0ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBtDQogICAgIA0KICAgICAJZmVjID0gMDsN CiAgICAgCWlmIChsYy0+cmVxdWVzdGVkX2ZlYyAmIEZFQ19SUykNCiAgICAtCQlmZWMgfD0gRldf UE9SVF9DQVBfRkVDX1JTOw0KICAgIC0JaWYgKGxjLT5yZXF1ZXN0ZWRfZmVjICYgRkVDX0JBU0VS X1JTKQ0KICAgIC0JCWZlYyB8PSBGV19QT1JUX0NBUF9GRUNfQkFTRVJfUlM7DQogICAgLQlpZiAo bGMtPnJlcXVlc3RlZF9mZWMgJiBGRUNfUkVTRVJWRUQpDQogICAgLQkJZmVjIHw9IEZXX1BPUlRf Q0FQX0ZFQ19SRVNFUlZFRDsNCiAgICArCQlmZWMgPSBGV19QT1JUX0NBUF9GRUNfUlM7DQogICAg KwllbHNlIGlmIChsYy0+cmVxdWVzdGVkX2ZlYyAmIEZFQ19CQVNFUl9SUykNCiAgICArCQlmZWMg PSBGV19QT1JUX0NBUF9GRUNfQkFTRVJfUlM7DQogICAgIA0KICAgICsJaWYgKCEobGMtPnN1cHBv cnRlZCAmIEZXX1BPUlRfQ0FQX0FORUcpIHx8DQogICAgKwkgICAgbGMtPnJlcXVlc3RlZF9hbmVn ID09IEFVVE9ORUdfRElTQUJMRSkgew0KICAgICsJCWFuZWcgPSAwOw0KICAgICsJCXN3aXRjaCAo bGMtPnJlcXVlc3RlZF9zcGVlZCkgew0KICAgICsJCWNhc2UgMTAwMDAwOg0KICAgICsJCQlzcGVl ZCA9IEZXX1BPUlRfQ0FQX1NQRUVEXzEwMEc7DQogICAgKwkJCWJyZWFrOw0KICAgICsJCWNhc2Ug NDAwMDA6DQogICAgKwkJCXNwZWVkID0gRldfUE9SVF9DQVBfU1BFRURfNDBHOw0KICAgICsJCQli cmVhazsNCiAgICArCQljYXNlIDI1MDAwOg0KICAgICsJCQlzcGVlZCA9IEZXX1BPUlRfQ0FQX1NQ RUVEXzI1RzsNCiAgICArCQkJYnJlYWs7DQogICAgKwkJY2FzZSAxMDAwMDoNCiAgICArCQkJc3Bl ZWQgPSBGV19QT1JUX0NBUF9TUEVFRF8xMEc7DQogICAgKwkJCWJyZWFrOw0KICAgICsJCWNhc2Ug MTAwMDoNCiAgICArCQkJc3BlZWQgPSBGV19QT1JUX0NBUF9TUEVFRF8xRzsNCiAgICArCQkJYnJl YWs7DQogICAgKwkJY2FzZSAxMDA6DQogICAgKwkJCXNwZWVkID0gRldfUE9SVF9DQVBfU1BFRURf MTAwTTsNCiAgICArCQkJYnJlYWs7DQogICAgKwkJZGVmYXVsdDoNCiAgICArCQkJcmV0dXJuIC1F SU5WQUw7DQogICAgKwkJCWJyZWFrOw0KICAgICsJCX0NCiAgICArCX0gZWxzZSB7DQogICAgKwkJ YW5lZyA9IEZXX1BPUlRfQ0FQX0FORUc7DQogICAgKwkJc3BlZWQgPSBsYy0+c3VwcG9ydGVkICYN CiAgICArCQkgICAgVl9GV19QT1JUX0NBUF9TUEVFRChNX0ZXX1BPUlRfQ0FQX1NQRUVEKTsNCiAg ICArCX0NCiAgICArDQogICAgKwlyY2FwID0gYW5lZyB8IHNwZWVkIHwgZmMgfCBmZWMgfCBtZGk7 DQogICAgKwlpZiAoKHJjYXAgfCBsYy0+c3VwcG9ydGVkKSAhPSBsYy0+c3VwcG9ydGVkKSB7DQog ICAgKyNpZmRlZiBJTlZBUklBTlRTDQogICAgKwkJQ0hfV0FSTihhZGFwLCAicmNhcCAweCUwOHgs IHBjYXAgMHglMDh4XG4iLCByY2FwLA0KICAgICsJCSAgICBsYy0+c3VwcG9ydGVkKTsNCiAgICAr I2VuZGlmDQogICAgKwkJcmNhcCAmPSBsYy0+c3VwcG9ydGVkOw0KICAgICsJfQ0KICAgICsNCiAg ICAgCW1lbXNldCgmYywgMCwgc2l6ZW9mKGMpKTsNCiAgICAgCWMub3BfdG9fcG9ydGlkID0gY3B1 X3RvX2JlMzIoVl9GV19DTURfT1AoRldfUE9SVF9DTUQpIHwNCiAgICAgCQkJCSAgICAgRl9GV19D TURfUkVRVUVTVCB8IEZfRldfQ01EX0VYRUMgfA0KICAgIEBAIC0zNzI0LDIxICszNzM4LDkgQEAg aW50IHQ0X2xpbmtfbDFjZmcoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHVuc2lnbmVkIGludCBtDQog ICAgIAljLmFjdGlvbl90b19sZW4xNiA9DQogICAgIAkJY3B1X3RvX2JlMzIoVl9GV19QT1JUX0NN RF9BQ1RJT04oRldfUE9SVF9BQ1RJT05fTDFfQ0ZHKSB8DQogICAgIAkJCSAgICBGV19MRU4xNihj KSk7DQogICAgKwljLnUubDFjZmcucmNhcCA9IGNwdV90b19iZTMyKHJjYXApOw0KICAgICANCiAg ICAtCWlmICghKGxjLT5zdXBwb3J0ZWQgJiBGV19QT1JUX0NBUF9BTkVHKSkgew0KICAgIC0JCWMu dS5sMWNmZy5yY2FwID0gY3B1X3RvX2JlMzIoKGxjLT5zdXBwb3J0ZWQgJiBBRFZFUlRfTUFTSykg fA0KICAgIC0JCQkJCSAgICAgZmMgfCBmZWMpOw0KICAgIC0JCWxjLT5mYyA9IGxjLT5yZXF1ZXN0 ZWRfZmMgJiB+UEFVU0VfQVVUT05FRzsNCiAgICAtCQlsYy0+ZmVjID0gbGMtPnJlcXVlc3RlZF9m ZWM7DQogICAgLQl9IGVsc2UgaWYgKGxjLT5hdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSkgew0K ICAgIC0JCWMudS5sMWNmZy5yY2FwID0gY3B1X3RvX2JlMzIobGMtPnJlcXVlc3RlZF9zcGVlZCB8 DQogICAgLQkJCQkJICAgICBmYyB8IGZlYyB8IG1kaSk7DQogICAgLQkJbGMtPmZjID0gbGMtPnJl cXVlc3RlZF9mYyAmIH5QQVVTRV9BVVRPTkVHOw0KICAgIC0JCWxjLT5mZWMgPSBsYy0+cmVxdWVz dGVkX2ZlYzsNCiAgICAtCX0gZWxzZQ0KICAgIC0JCWMudS5sMWNmZy5yY2FwID0gY3B1X3RvX2Jl MzIobGMtPmFkdmVydGlzaW5nIHwgZmMgfCBmZWMgfCBtZGkpOw0KICAgIC0NCiAgICAtCXJldHVy biB0NF93cl9tYm94KGFkYXAsIG1ib3gsICZjLCBzaXplb2YoYyksIE5VTEwpOw0KICAgICsJcmV0 dXJuIHQ0X3dyX21ib3hfbnMoYWRhcCwgbWJveCwgJmMsIHNpemVvZihjKSwgTlVMTCk7DQogICAg IH0NCiAgICAgDQogICAgIC8qKg0KICAgIEBAIC0zOTc3LDYgKzM5NzksOSBAQCBzdGF0aWMgdm9p ZCBzZ2VfaW50cl9oYW5kbGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQ0KICAgICAJCSAgIlNH RSB0b28gbWFueSBwcmlvcml0eSBpbmdyZXNzIGNvbnRleHRzIiwgLTEsIDAgfSwNCiAgICAgCQl7 IEZfSU5HUkVTU19TSVpFX0VSUiwgIlNHRSBpbGxlZ2FsIGluZ3Jlc3MgUUlEIiwgLTEsIDAgfSwN CiAgICAgCQl7IEZfRUdSRVNTX1NJWkVfRVJSLCAiU0dFIGlsbGVnYWwgZWdyZXNzIFFJRCIsIC0x LCAwIH0sDQogICAgKwkJeyBGX0VSUl9QQ0lFX0VSUk9SMCB8IEZfRVJSX1BDSUVfRVJST1IxIHwN CiAgICArCQkgIEZfRVJSX1BDSUVfRVJST1IyIHwgRl9FUlJfUENJRV9FUlJPUjMsDQogICAgKwkJ ICAiU0dFIFBDSWUgZXJyb3IgZm9yIGEgREJQIHRocmVhZCIsIC0xLCAwIH0sDQogICAgIAkJeyAw IH0NCiAgICAgCX07DQogICAgIA0KICAgIEBAIC0zOTkyLDggKzM5OTcsNiBAQCBzdGF0aWMgdm9p ZCBzZ2VfaW50cl9oYW5kbGVyKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQ0KICAgICAgCSogRm9y IG5vdywgdHJlYXQgYmVsb3cgaW50ZXJydXB0cyBhcyBmYXRhbCBzbyB0aGF0IHdlIGRpc2FibGUg U0dFIGFuZA0KICAgICAgCSogZ2V0IGJldHRlciBkZWJ1ZyAqLw0KICAgICAJc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRyX2luZm8gdDZfc2dlX2ludHJfaW5mb1tdID0gew0KICAgIC0JCXsgRl9FUlJf UENJRV9FUlJPUjAgfCBGX0VSUl9QQ0lFX0VSUk9SMSwNCiAgICAtCQkgICJTR0UgUENJZSBlcnJv ciBmb3IgYSBEQlAgdGhyZWFkIiwgLTEsIDEgfSwNCiAgICAgCQl7IEZfRkFUQUxfV1JFX0xFTiwN CiAgICAgCQkgICJTR0UgQWN0dWFsIFdSRSBwYWNrZXQgaXMgbGVzcyB0aGFuIGFkdmVydGl6ZWQg bGVuZ3RoIiwNCiAgICAgCQkgIC0xLCAxIH0sDQogICAgQEAgLTQwNDgsNiArNDA1MSw3IEBAIHN0 YXRpYyB2b2lkIGNpbV9pbnRyX2hhbmRsZXIoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpDQogICAg IAkJeyBGX01CSE9TVFBBUkVSUiwgIkNJTSBtYWlsYm94IGhvc3QgcGFyaXR5IGVycm9yIiwgLTEs IDEgfSwNCiAgICAgCQl7IEZfVElFUUlOUEFSRVJSSU5ULCAiQ0lNIFRJRVEgb3V0Z29pbmcgcGFy aXR5IGVycm9yIiwgLTEsIDEgfSwNCiAgICAgCQl7IEZfVElFUU9VVFBBUkVSUklOVCwgIkNJTSBU SUVRIGluY29taW5nIHBhcml0eSBlcnJvciIsIC0xLCAxIH0sDQogICAgKwkJeyBGX1RJTUVSMElO VCwgIkNJTSBUSU1FUjAgaW50ZXJydXB0IiwgLTEsIDEgfSwNCiAgICAgCQl7IDAgfQ0KICAgICAJ fTsNCiAgICAgCXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50cl9pbmZvIGNpbV91cGludHJfaW5mb1td ID0gew0KICAgIEBAIC00MDgxLDExICs0MDg1LDI2IEBAIHN0YXRpYyB2b2lkIGNpbV9pbnRyX2hh bmRsZXIoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIpDQogICAgIAkJeyBGX1RJTUVPVVRNQUlOVCAs ICJDSU0gUElGIE1BIHRpbWVvdXQiLCAtMSwgMSB9LA0KICAgICAJCXsgMCB9DQogICAgIAl9Ow0K ICAgICsJdTMyIHZhbCwgZndfZXJyOw0KICAgICAJaW50IGZhdDsNCiAgICAgDQogICAgLQlpZiAo dDRfcmVhZF9yZWcoYWRhcHRlciwgQV9QQ0lFX0ZXKSAmIEZfUENJRV9GV19FUlIpDQogICAgKwlm d19lcnIgPSB0NF9yZWFkX3JlZyhhZGFwdGVyLCBBX1BDSUVfRlcpOw0KICAgICsJaWYgKGZ3X2Vy ciAmIEZfUENJRV9GV19FUlIpDQogICAgIAkJdDRfcmVwb3J0X2Z3X2Vycm9yKGFkYXB0ZXIpOw0K ICAgICANCiAgICArCS8qIFdoZW4gdGhlIEZpcm13YXJlIGRldGVjdHMgYW4gaW50ZXJuYWwgZXJy b3Igd2hpY2ggbm9ybWFsbHkgd291bGRuJ3QNCiAgICArCSAqIHJhaXNlIGEgSG9zdCBJbnRlcnJ1 cHQsIGl0IGZvcmNlcyBhIENJTSBUaW1lcjAgaW50ZXJydXB0IGluIG9yZGVyDQogICAgKwkgKiB0 byBtYWtlIHN1cmUgdGhlIEhvc3Qgc2VlcyB0aGUgRmlybXdhcmUgQ3Jhc2guICBTbyBpZiB3ZSBo YXZlIGENCiAgICArCSAqIFRpbWVyMCBpbnRlcnJ1cHQgYW5kIGRvbid0IHNlZSBhIEZpcm13YXJl IENyYXNoLCBpZ25vcmUgdGhlIFRpbWVyMA0KICAgICsJICogaW50ZXJydXB0Lg0KICAgICsJICov DQogICAgKwl2YWwgPSB0NF9yZWFkX3JlZyhhZGFwdGVyLCBBX0NJTV9IT1NUX0lOVF9DQVVTRSk7 DQogICAgKwlpZiAodmFsICYgRl9USU1FUjBJTlQpDQogICAgKwkJaWYgKCEoZndfZXJyICYgRl9Q Q0lFX0ZXX0VSUikgfHwNCiAgICArCQkgICAgKEdfUENJRV9GV19FVkFMKGZ3X2VycikgIT0gUENJ RV9GV19FVkFMX0NSQVNIKSkNCiAgICArCQkJdDRfd3JpdGVfcmVnKGFkYXB0ZXIsIEFfQ0lNX0hP U1RfSU5UX0NBVVNFLA0KICAgICsJCQkJICAgICBGX1RJTUVSMElOVCk7DQogICAgKw0KICAgICAJ ZmF0ID0gdDRfaGFuZGxlX2ludHJfc3RhdHVzKGFkYXB0ZXIsIEFfQ0lNX0hPU1RfSU5UX0NBVVNF LA0KICAgICAJCQkJICAgIGNpbV9pbnRyX2luZm8pICsNCiAgICAgCSAgICAgIHQ0X2hhbmRsZV9p bnRyX3N0YXR1cyhhZGFwdGVyLCBBX0NJTV9IT1NUX1VQQUNDX0lOVF9DQVVTRSwNCiAgICBAQCAt NDgzMyw1NSArNDg1MiwxNzcgQEAgaW50IHQ0X3JlYWRfcnNzKHN0cnVjdCBhZGFwdGVyICphZGFw dGVyLCB1MTYgKm1hcCkNCiAgICAgfQ0KICAgICANCiAgICAgLyoqDQogICAgLSAqCXQ0X2Z3X3Rw X3Bpb19ydyAtIEFjY2VzcyBUUCBQSU8gdGhyb3VnaCBMRFNUDQogICAgLSAqCUBhZGFwOiB0aGUg YWRhcHRlcg0KICAgIC0gKglAdmFsczogd2hlcmUgdGhlIGluZGlyZWN0IHJlZ2lzdGVyIHZhbHVl cyBhcmUgc3RvcmVkL3dyaXR0ZW4NCiAgICAtICoJQG5yZWdzOiBob3cgbWFueSBpbmRpcmVjdCBy ZWdpc3RlcnMgdG8gcmVhZC93cml0ZQ0KICAgIC0gKglAc3RhcnRfaWR4OiBpbmRleCBvZiBmaXJz dCBpbmRpcmVjdCByZWdpc3RlciB0byByZWFkL3dyaXRlDQogICAgLSAqCUBydzogUmVhZCAoMSkg b3IgV3JpdGUgKDApDQogICAgKyAqIHQ0X3RwX2Z3X2xkc3RfcncgLSBBY2Nlc3MgVFAgaW5kaXJl Y3QgcmVnaXN0ZXIgdGhyb3VnaCBMRFNUDQogICAgKyAqIEBhZGFwOiB0aGUgYWRhcHRlcg0KICAg ICsgKiBAY21kOiBUUCBmdyBsZHN0IGFkZHJlc3Mgc3BhY2UgdHlwZQ0KICAgICsgKiBAdmFsczog d2hlcmUgdGhlIGluZGlyZWN0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgc3RvcmVkL3dyaXR0ZW4NCiAg ICArICogQG5yZWdzOiBob3cgbWFueSBpbmRpcmVjdCByZWdpc3RlcnMgdG8gcmVhZC93cml0ZQ0K ICAgICsgKiBAc3RhcnRfaWR4OiBpbmRleCBvZiBmaXJzdCBpbmRpcmVjdCByZWdpc3RlciB0byBy ZWFkL3dyaXRlDQogICAgKyAqIEBydzogUmVhZCAoMSkgb3IgV3JpdGUgKDApDQogICAgKyAqIEBz bGVlcF9vazogaWYgdHJ1ZSB3ZSBtYXkgc2xlZXAgd2hpbGUgYXdhaXRpbmcgY29tbWFuZCBjb21w bGV0aW9uDQogICAgICAqDQogICAgLSAqCUFjY2VzcyBUUCBQSU8gcmVnaXN0ZXJzIHRocm91Z2gg TERTVA0KICAgIC0gKi8NCiAgICAtdm9pZCB0NF9md190cF9waW9fcncoc3RydWN0IGFkYXB0ZXIg KmFkYXAsIHUzMiAqdmFscywgdW5zaWduZWQgaW50IG5yZWdzLA0KICAgIC0JCSAgICAgdW5zaWdu ZWQgaW50IHN0YXJ0X2luZGV4LCB1bnNpZ25lZCBpbnQgcncpDQogICAgKyAqIEFjY2VzcyBUUCBp bmRpcmVjdCByZWdpc3RlcnMgdGhyb3VnaCBMRFNUDQogICAgKyAqKi8NCiAgICArc3RhdGljIGlu dCB0NF90cF9md19sZHN0X3J3KHN0cnVjdCBhZGFwdGVyICphZGFwLCBpbnQgY21kLCB1MzIgKnZh bHMsDQogICAgKwkJCSAgICB1bnNpZ25lZCBpbnQgbnJlZ3MsIHVuc2lnbmVkIGludCBzdGFydF9p bmRleCwNCiAgICArCQkJICAgIHVuc2lnbmVkIGludCBydywgYm9vbCBzbGVlcF9vaykNCiAgICAg ew0KICAgIC0JaW50IHJldCwgaTsNCiAgICAtCWludCBjbWQgPSBGV19MRFNUX0FERFJTUENfVFBf UElPOw0KICAgICsJaW50IHJldCA9IDA7DQogICAgKwl1bnNpZ25lZCBpbnQgaTsNCiAgICAgCXN0 cnVjdCBmd19sZHN0X2NtZCBjOw0KICAgICANCiAgICAtCWZvciAoaSA9IDAgOyBpIDwgbnJlZ3M7 IGkrKykgew0KICAgICsJZm9yIChpID0gMDsgaSA8IG5yZWdzOyBpKyspIHsNCiAgICAgCQltZW1z ZXQoJmMsIDAsIHNpemVvZihjKSk7DQogICAgIAkJYy5vcF90b19hZGRyc3BhY2UgPSBjcHVfdG9f YmUzMihWX0ZXX0NNRF9PUChGV19MRFNUX0NNRCkgfA0KICAgICAJCQkJCQlGX0ZXX0NNRF9SRVFV RVNUIHwNCiAgICAgCQkJCQkJKHJ3ID8gRl9GV19DTURfUkVBRCA6DQogICAgLQkJCQkJCSAgICAg Rl9GV19DTURfV1JJVEUpIHwNCiAgICArCQkJCQkJICAgICAgRl9GV19DTURfV1JJVEUpIHwNCiAg ICAgCQkJCQkJVl9GV19MRFNUX0NNRF9BRERSU1BBQ0UoY21kKSk7DQogICAgIAkJYy5jeWNsZXNf dG9fbGVuMTYgPSBjcHVfdG9fYmUzMihGV19MRU4xNihjKSk7DQogICAgIA0KICAgICAJCWMudS5h ZGRydmFsLmFkZHIgPSBjcHVfdG9fYmUzMihzdGFydF9pbmRleCArIGkpOw0KICAgICAJCWMudS5h ZGRydmFsLnZhbCAgPSBydyA/IDAgOiBjcHVfdG9fYmUzMih2YWxzW2ldKTsNCiAgICAtCQlyZXQg PSB0NF93cl9tYm94KGFkYXAsIGFkYXAtPm1ib3gsICZjLCBzaXplb2YoYyksICZjKTsNCiAgICAt CQlpZiAocmV0ID09IDApIHsNCiAgICAtCQkJaWYgKHJ3KQ0KICAgIC0JCQkJdmFsc1tpXSA9IGJl MzJfdG9fY3B1KGMudS5hZGRydmFsLnZhbCk7DQogICAgLQkJfQ0KICAgICsJCXJldCA9IHQ0X3dy X21ib3hfbWVhdChhZGFwLCBhZGFwLT5tYm94LCAmYywgc2l6ZW9mKGMpLCAmYywNCiAgICArCQkJ CSAgICAgIHNsZWVwX29rKTsNCiAgICArCQlpZiAocmV0KQ0KICAgICsJCQlyZXR1cm4gcmV0Ow0K ICAgICsNCiAgICArCQlpZiAocncpDQogICAgKwkJCXZhbHNbaV0gPSBiZTMyX3RvX2NwdShjLnUu YWRkcnZhbC52YWwpOw0KICAgICAJfQ0KICAgICsJcmV0dXJuIDA7DQogICAgIH0NCiAgICAgDQog ICAgIC8qKg0KICAgICsgKiB0NF90cF9pbmRpcmVjdF9ydyAtIFJlYWQvV3JpdGUgVFAgaW5kaXJl Y3QgcmVnaXN0ZXIgdGhyb3VnaCBMRFNUIG9yIGJhY2tkb29yDQogICAgKyAqIEBhZGFwOiB0aGUg YWRhcHRlcg0KICAgICsgKiBAcmVnX2FkZHI6IEFkZHJlc3MgUmVnaXN0ZXINCiAgICArICogQHJl Z19kYXRhOiBEYXRhIHJlZ2lzdGVyDQogICAgKyAqIEBidWZmOiB3aGVyZSB0aGUgaW5kaXJlY3Qg cmVnaXN0ZXIgdmFsdWVzIGFyZSBzdG9yZWQvd3JpdHRlbg0KICAgICsgKiBAbnJlZ3M6IGhvdyBt YW55IGluZGlyZWN0IHJlZ2lzdGVycyB0byByZWFkL3dyaXRlDQogICAgKyAqIEBzdGFydF9pbmRl eDogaW5kZXggb2YgZmlyc3QgaW5kaXJlY3QgcmVnaXN0ZXIgdG8gcmVhZC93cml0ZQ0KICAgICsg KiBAcnc6IFJFQUQoMSkgb3IgV1JJVEUoMCkNCiAgICArICogQHNsZWVwX29rOiBpZiB0cnVlIHdl IG1heSBzbGVlcCB3aGlsZSBhd2FpdGluZyBjb21tYW5kIGNvbXBsZXRpb24NCiAgICArICoNCiAg ICArICogUmVhZC9Xcml0ZSBUUCBpbmRpcmVjdCByZWdpc3RlcnMgdGhyb3VnaCBMRFNUIGlmIHBv c3NpYmxlLg0KICAgICsgKiBFbHNlLCB1c2UgYmFja2Rvb3IgYWNjZXNzDQogICAgKyAqKi8NCiAg ICArc3RhdGljIHZvaWQgdDRfdHBfaW5kaXJlY3Rfcncoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHUz MiByZWdfYWRkciwgdTMyIHJlZ19kYXRhLA0KICAgICsJCQkgICAgICB1MzIgKmJ1ZmYsIHUzMiBu cmVncywgdTMyIHN0YXJ0X2luZGV4LCBpbnQgcncsDQogICAgKwkJCSAgICAgIGJvb2wgc2xlZXBf b2spDQogICAgK3sNCiAgICArCWludCByYyA9IC1FSU5WQUw7DQogICAgKwlpbnQgY21kOw0KICAg ICsNCiAgICArCXN3aXRjaCAocmVnX2FkZHIpIHsNCiAgICArCWNhc2UgQV9UUF9QSU9fQUREUjoN CiAgICArCQljbWQgPSBGV19MRFNUX0FERFJTUENfVFBfUElPOw0KICAgICsJCWJyZWFrOw0KICAg ICsJY2FzZSBBX1RQX1RNX1BJT19BRERSOg0KICAgICsJCWNtZCA9IEZXX0xEU1RfQUREUlNQQ19U UF9UTV9QSU87DQogICAgKwkJYnJlYWs7DQogICAgKwljYXNlIEFfVFBfTUlCX0lOREVYOg0KICAg ICsJCWNtZCA9IEZXX0xEU1RfQUREUlNQQ19UUF9NSUI7DQogICAgKwkJYnJlYWs7DQogICAgKwlk ZWZhdWx0Og0KICAgICsJCWdvdG8gaW5kaXJlY3RfYWNjZXNzOw0KICAgICsJfQ0KICAgICsNCiAg ICArCWlmICh0NF91c2VfbGRzdChhZGFwKSkNCiAgICArCQlyYyA9IHQ0X3RwX2Z3X2xkc3Rfcnco YWRhcCwgY21kLCBidWZmLCBucmVncywgc3RhcnRfaW5kZXgsIHJ3LA0KICAgICsJCQkJICAgICAg c2xlZXBfb2spOw0KICAgICsNCiAgICAraW5kaXJlY3RfYWNjZXNzOg0KICAgICsNCiAgICArCWlm IChyYykgew0KICAgICsJCWlmIChydykNCiAgICArCQkJdDRfcmVhZF9pbmRpcmVjdChhZGFwLCBy ZWdfYWRkciwgcmVnX2RhdGEsIGJ1ZmYsIG5yZWdzLA0KICAgICsJCQkJCSBzdGFydF9pbmRleCk7 DQogICAgKwkJZWxzZQ0KICAgICsJCQl0NF93cml0ZV9pbmRpcmVjdChhZGFwLCByZWdfYWRkciwg cmVnX2RhdGEsIGJ1ZmYsIG5yZWdzLA0KICAgICsJCQkJCSAgc3RhcnRfaW5kZXgpOw0KICAgICsJ fQ0KICAgICt9DQogICAgKw0KICAgICsvKioNCiAgICArICogdDRfdHBfcGlvX3JlYWQgLSBSZWFk IFRQIFBJTyByZWdpc3RlcnMNCiAgICArICogQGFkYXA6IHRoZSBhZGFwdGVyDQogICAgKyAqIEBi dWZmOiB3aGVyZSB0aGUgaW5kaXJlY3QgcmVnaXN0ZXIgdmFsdWVzIGFyZSB3cml0dGVuDQogICAg KyAqIEBucmVnczogaG93IG1hbnkgaW5kaXJlY3QgcmVnaXN0ZXJzIHRvIHJlYWQNCiAgICArICog QHN0YXJ0X2luZGV4OiBpbmRleCBvZiBmaXJzdCBpbmRpcmVjdCByZWdpc3RlciB0byByZWFkDQog ICAgKyAqIEBzbGVlcF9vazogaWYgdHJ1ZSB3ZSBtYXkgc2xlZXAgd2hpbGUgYXdhaXRpbmcgY29t bWFuZCBjb21wbGV0aW9uDQogICAgKyAqDQogICAgKyAqIFJlYWQgVFAgUElPIFJlZ2lzdGVycw0K ICAgICsgKiovDQogICAgK3ZvaWQgdDRfdHBfcGlvX3JlYWQoc3RydWN0IGFkYXB0ZXIgKmFkYXAs IHUzMiAqYnVmZiwgdTMyIG5yZWdzLA0KICAgICsJCSAgICB1MzIgc3RhcnRfaW5kZXgsIGJvb2wg c2xlZXBfb2spDQogICAgK3sNCiAgICArCXQ0X3RwX2luZGlyZWN0X3J3KGFkYXAsIEFfVFBfUElP X0FERFIsIEFfVFBfUElPX0RBVEEsIGJ1ZmYsIG5yZWdzLA0KICAgICsJCQkgIHN0YXJ0X2luZGV4 LCAxLCBzbGVlcF9vayk7DQogICAgK30NCiAgICArDQogICAgKy8qKg0KICAgICsgKiB0NF90cF9w aW9fd3JpdGUgLSBXcml0ZSBUUCBQSU8gcmVnaXN0ZXJzDQogICAgKyAqIEBhZGFwOiB0aGUgYWRh cHRlcg0KICAgICsgKiBAYnVmZjogd2hlcmUgdGhlIGluZGlyZWN0IHJlZ2lzdGVyIHZhbHVlcyBh cmUgc3RvcmVkDQogICAgKyAqIEBucmVnczogaG93IG1hbnkgaW5kaXJlY3QgcmVnaXN0ZXJzIHRv IHdyaXRlDQogICAgKyAqIEBzdGFydF9pbmRleDogaW5kZXggb2YgZmlyc3QgaW5kaXJlY3QgcmVn aXN0ZXIgdG8gd3JpdGUNCiAgICArICogQHNsZWVwX29rOiBpZiB0cnVlIHdlIG1heSBzbGVlcCB3 aGlsZSBhd2FpdGluZyBjb21tYW5kIGNvbXBsZXRpb24NCiAgICArICoNCiAgICArICogV3JpdGUg VFAgUElPIFJlZ2lzdGVycw0KICAgICsgKiovDQogICAgK3ZvaWQgdDRfdHBfcGlvX3dyaXRlKHN0 cnVjdCBhZGFwdGVyICphZGFwLCBjb25zdCB1MzIgKmJ1ZmYsIHUzMiBucmVncywNCiAgICArCQkg ICAgIHUzMiBzdGFydF9pbmRleCwgYm9vbCBzbGVlcF9vaykNCiAgICArew0KICAgICsJdDRfdHBf aW5kaXJlY3RfcncoYWRhcCwgQV9UUF9QSU9fQUREUiwgQV9UUF9QSU9fREFUQSwNCiAgICArCSAg ICBfX0RFQ09OU1QodTMyICosIGJ1ZmYpLCBucmVncywgc3RhcnRfaW5kZXgsIDAsIHNsZWVwX29r KTsNCiAgICArfQ0KICAgICsNCiAgICArLyoqDQogICAgKyAqIHQ0X3RwX3RtX3Bpb19yZWFkIC0g UmVhZCBUUCBUTSBQSU8gcmVnaXN0ZXJzDQogICAgKyAqIEBhZGFwOiB0aGUgYWRhcHRlcg0KICAg ICsgKiBAYnVmZjogd2hlcmUgdGhlIGluZGlyZWN0IHJlZ2lzdGVyIHZhbHVlcyBhcmUgd3JpdHRl bg0KICAgICsgKiBAbnJlZ3M6IGhvdyBtYW55IGluZGlyZWN0IHJlZ2lzdGVycyB0byByZWFkDQog ICAgKyAqIEBzdGFydF9pbmRleDogaW5kZXggb2YgZmlyc3QgaW5kaXJlY3QgcmVnaXN0ZXIgdG8g cmVhZA0KICAgICsgKiBAc2xlZXBfb2s6IGlmIHRydWUgd2UgbWF5IHNsZWVwIHdoaWxlIGF3YWl0 aW5nIGNvbW1hbmQgY29tcGxldGlvbg0KICAgICsgKg0KICAgICsgKiBSZWFkIFRQIFRNIFBJTyBS ZWdpc3RlcnMNCiAgICArICoqLw0KICAgICt2b2lkIHQ0X3RwX3RtX3Bpb19yZWFkKHN0cnVjdCBh ZGFwdGVyICphZGFwLCB1MzIgKmJ1ZmYsIHUzMiBucmVncywNCiAgICArCQkgICAgICAgdTMyIHN0 YXJ0X2luZGV4LCBib29sIHNsZWVwX29rKQ0KICAgICt7DQogICAgKwl0NF90cF9pbmRpcmVjdF9y dyhhZGFwLCBBX1RQX1RNX1BJT19BRERSLCBBX1RQX1RNX1BJT19EQVRBLCBidWZmLA0KICAgICsJ CQkgIG5yZWdzLCBzdGFydF9pbmRleCwgMSwgc2xlZXBfb2spOw0KICAgICt9DQogICAgKw0KICAg ICsvKioNCiAgICArICogdDRfdHBfbWliX3JlYWQgLSBSZWFkIFRQIE1JQiByZWdpc3RlcnMNCiAg ICArICogQGFkYXA6IHRoZSBhZGFwdGVyDQogICAgKyAqIEBidWZmOiB3aGVyZSB0aGUgaW5kaXJl Y3QgcmVnaXN0ZXIgdmFsdWVzIGFyZSB3cml0dGVuDQogICAgKyAqIEBucmVnczogaG93IG1hbnkg aW5kaXJlY3QgcmVnaXN0ZXJzIHRvIHJlYWQNCiAgICArICogQHN0YXJ0X2luZGV4OiBpbmRleCBv ZiBmaXJzdCBpbmRpcmVjdCByZWdpc3RlciB0byByZWFkDQogICAgKyAqIEBzbGVlcF9vazogaWYg dHJ1ZSB3ZSBtYXkgc2xlZXAgd2hpbGUgYXdhaXRpbmcgY29tbWFuZCBjb21wbGV0aW9uDQogICAg KyAqDQogICAgKyAqIFJlYWQgVFAgTUlCIFJlZ2lzdGVycw0KICAgICsgKiovDQogICAgK3ZvaWQg dDRfdHBfbWliX3JlYWQoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHUzMiAqYnVmZiwgdTMyIG5yZWdz LCB1MzIgc3RhcnRfaW5kZXgsDQogICAgKwkJICAgIGJvb2wgc2xlZXBfb2spDQogICAgK3sNCiAg ICArCXQ0X3RwX2luZGlyZWN0X3J3KGFkYXAsIEFfVFBfTUlCX0lOREVYLCBBX1RQX01JQl9EQVRB LCBidWZmLCBucmVncywNCiAgICArCQkJICBzdGFydF9pbmRleCwgMSwgc2xlZXBfb2spOw0KICAg ICt9DQogICAgKw0KICAgICsvKioNCiAgICAgICoJdDRfcmVhZF9yc3Nfa2V5IC0gcmVhZCB0aGUg Z2xvYmFsIFJTUyBrZXkNCiAgICAgICoJQGFkYXA6IHRoZSBhZGFwdGVyDQogICAgICAqCUBrZXk6 IDEwLWVudHJ5IGFycmF5IGhvbGRpbmcgdGhlIDMyMC1iaXQgUlNTIGtleQ0KICAgICsgKiAJQHNs ZWVwX29rOiBpZiB0cnVlIHdlIG1heSBzbGVlcCB3aGlsZSBhd2FpdGluZyBjb21tYW5kIGNvbXBs ZXRpb24NCiAgICAgICoNCiAgICAgICoJUmVhZHMgdGhlIGdsb2JhbCAzMjAtYml0IFJTUyBrZXku DQogICAgICAqLw0KICAgIC12b2lkIHQ0X3JlYWRfcnNzX2tleShzdHJ1Y3QgYWRhcHRlciAqYWRh cCwgdTMyICprZXkpDQogICAgK3ZvaWQgdDRfcmVhZF9yc3Nfa2V5KHN0cnVjdCBhZGFwdGVyICph ZGFwLCB1MzIgKmtleSwgYm9vbCBzbGVlcF9vaykNCiAgICAgew0KICAgIC0JaWYgKHQ0X3VzZV9s ZHN0KGFkYXApKQ0KICAgIC0JCXQ0X2Z3X3RwX3Bpb19ydyhhZGFwLCBrZXksIDEwLCBBX1RQX1JT U19TRUNSRVRfS0VZMCwgMSk7DQogICAgLQllbHNlDQogICAgLQkJdDRfcmVhZF9pbmRpcmVjdChh ZGFwLCBBX1RQX1BJT19BRERSLCBBX1RQX1BJT19EQVRBLCBrZXksIDEwLA0KICAgIC0JCQkJIEFf VFBfUlNTX1NFQ1JFVF9LRVkwKTsNCiAgICArCXQ0X3RwX3Bpb19yZWFkKGFkYXAsIGtleSwgMTAs IEFfVFBfUlNTX1NFQ1JFVF9LRVkwLCBzbGVlcF9vayk7DQogICAgIH0NCiAgICAgDQogICAgIC8q Kg0KICAgIEBAIC00ODg5LDEyICs1MDMwLDE0IEBAIHZvaWQgdDRfcmVhZF9yc3Nfa2V5KHN0cnVj dCBhZGFwdGVyICphZGFwLCB1MzIgKmtleSkNCiAgICAgICoJQGFkYXA6IHRoZSBhZGFwdGVyDQog ICAgICAqCUBrZXk6IDEwLWVudHJ5IGFycmF5IGhvbGRpbmcgdGhlIDMyMC1iaXQgUlNTIGtleQ0K ICAgICAgKglAaWR4OiB3aGljaCBSU1Mga2V5IHRvIHdyaXRlDQogICAgKyAqIAlAc2xlZXBfb2s6 IGlmIHRydWUgd2UgbWF5IHNsZWVwIHdoaWxlIGF3YWl0aW5nIGNvbW1hbmQgY29tcGxldGlvbg0K ICAgICAgKg0KICAgICAgKglXcml0ZXMgb25lIG9mIHRoZSBSU1Mga2V5cyB3aXRoIHRoZSBnaXZl biAzMjAtYml0IHZhbHVlLiAgSWYgQGlkeCBpcw0KICAgICAgKgkwLi4xNSB0aGUgY29ycmVzcG9u ZGluZyBlbnRyeSBpbiB0aGUgUlNTIGtleSB0YWJsZSBpcyB3cml0dGVuLA0KICAgICAgKglvdGhl cndpc2UgdGhlIGdsb2JhbCBSU1Mga2V5IGlzIHdyaXR0ZW4uDQogICAgICAqLw0KICAgIC12b2lk IHQ0X3dyaXRlX3Jzc19rZXkoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIHUzMiAqa2V5LCBpbnQgaWR4 KQ0KICAgICt2b2lkIHQ0X3dyaXRlX3Jzc19rZXkoc3RydWN0IGFkYXB0ZXIgKmFkYXAsIGNvbnN0 IHUzMiAqa2V5LCBpbnQgaWR4LA0KICAgICsJCSAgICAgIGJvb2wgc2xlZXBfb2spDQogICAgIHsN CiAgICAgCXU4IHJzc19rZXlfYWRkcl9jbnQgPSAxNjsNCiAgICAgCXUzMiB2cnQgPSB0NF9yZWFk X3JlZyhhZGFwLCBBX1RQX1JTU19DT05GSUdfVlJUKTsNCiAgICBAQCAtNDkwOCwxMSArNTA1MSw3 IEBAIHZvaWQgdDRfd3JpdGVfcnNzX2tleShzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgdTMyICprZXks IA0KICAgICAJICAgICh2cnQgJiBGX0tFWUVYVEVORCkgJiYgKEdfS0VZTU9ERSh2cnQpID09IDMp KQ0KICAgICAJCXJzc19rZXlfYWRkcl9jbnQgPSAzMjsNCiAgICAgDQogICAgLQlpZiAodDRfdXNl X2xkc3QoYWRhcCkpDQogICAgLQkJdDRfZndfdHBfcGlvX3J3KGFkYXAsIGtleSwgMTAsIEFfVFBf UlNTX1NFQ1JFVF9LRVkwLCAwKTsNCiAgICAtCWVsc2UNCiAgICAtCQl0NF93cml0ZV9pbmRpcmVj dChhZGFwLCBBX1RQX1BJT19BRERSLCBBX1RQX1BJT19EQVRBLCBrZXksIDEwLA0KICAgIC0JCQkJ ICBBX1RQX1JTU19TRUNSRVRfS0VZMCk7DQogICAgKwl0NF90cF9waW9fd3JpdGUoYWRhcCwga2V5 LCAxMCwgQV9UUF9SU1NfU0VDUkVUX0tFWTAsIHNsZWVwX29rKTsNCiAgICAgDQogICAgIAlpZiAo aWR4ID49IDAgJiYgaWR4IDwgcnNzX2tleV9hZGRyX2NudCkgew0KICAgICAJCWlmIChyc3Nfa2V5 X2FkZHJfY250ID4gMTYpDQogICAgQEAgLTQ5MzAsMTkgKzUwNjksMTUgQEAgdm9pZCB0NF93cml0 ZV9yc3Nfa2V5KHN0cnVjdCBhZGFwdGVyICphZGFwLCB1MzIgKmtleSwgDQogICAgICAqCUBhZGFw dGVyOiB0aGUgYWRhcHRlcg0KICAgICAgKglAaW5kZXg6IHRoZSBlbnRyeSBpbiB0aGUgUEYgUlNT IHRhYmxlIHRvIHJlYWQNCiAgICAgICoJQHZhbHA6IHdoZXJlIHRvIHN0b3JlIHRoZSByZXR1cm5l ZCB2YWx1ZQ0KICAgICsgKiAJQHNsZWVwX29rOiBpZiB0cnVlIHdlIG1heSBzbGVlcCB3aGlsZSBh d2FpdGluZyBjb21tYW5kIGNvbXBsZXRpb24NCiAgICAgICoNCiAgICAgICoJUmVhZHMgdGhlIFBG IFJTUyBDb25maWd1cmF0aW9uIFRhYmxlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggYW5kIHJldHVy bnMNCiAgICAgICoJdGhlIHZhbHVlIGZvdW5kIHRoZXJlLg0KICAgICAgKi8NCiAgICAgdm9pZCB0 NF9yZWFkX3Jzc19wZl9jb25maWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHVuc2lnbmVkIGlu dCBpbmRleCwNCiAgICAtCQkJICAgdTMyICp2YWxwKQ0KICAgICsJCQkgICB1MzIgKnZhbHAsIGJv b2wgc2xlZXBfb2spDQogICAgIHsNCiAgICAtCWlmICh0NF91c2VfbGRzdChhZGFwdGVyKSkNCiAg ICAtCQl0NF9md190cF9waW9fcncoYWRhcHRlciwgdmFscCwgMSwNCiAgICAtCQkJCUFfVFBfUlNT X1BGMF9DT05GSUcgKyBpbmRleCwgMSk7DQogICAgLQllbHNlDQogICAgLQkJdDRfcmVhZF9pbmRp cmVjdChhZGFwdGVyLCBBX1RQX1BJT19BRERSLCBBX1RQX1BJT19EQVRBLA0KICAgIC0JCQkJIHZh bHAsIDEsIEFfVFBfUlNTX1BGMF9DT05GSUcgKyBpbmRleCk7DQogICAgKwl0NF90cF9waW9fcmVh ZChhZGFwdGVyLCB2YWxwLCAxLCBBX1RQX1JTU19QRjBfQ09ORklHICsgaW5kZXgsIHNsZWVwX29r KTsNCiAgICAgfQ0KICAgICANCiAgICAgLyoqDQogICAgQEAgLTQ5NTAsMTkgKzUwODUsMTYgQEAg dm9pZCB0NF9yZWFkX3Jzc19wZl9jb25maWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHVuDQog ICAgICAqCUBhZGFwdGVyOiB0aGUgYWRhcHRlcg0KICAgICAgKglAaW5kZXg6IHRoZSBlbnRyeSBp biB0aGUgVkYgUlNTIHRhYmxlIHRvIHJlYWQNCiAgICAgICoJQHZhbDogdGhlIHZhbHVlIHRvIHN0 b3JlDQogICAgKyAqIAlAc2xlZXBfb2s6IGlmIHRydWUgd2UgbWF5IHNsZWVwIHdoaWxlIGF3YWl0 aW5nIGNvbW1hbmQgY29tcGxldGlvbg0KICAgICAgKg0KICAgICAgKglXcml0ZXMgdGhlIFBGIFJT UyBDb25maWd1cmF0aW9uIFRhYmxlIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXggd2l0aCB0aGUNCiAg ICAgICoJc3BlY2lmaWVkIHZhbHVlLg0KICAgICAgKi8NCiAgICAgdm9pZCB0NF93cml0ZV9yc3Nf cGZfY29uZmlnKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1bnNpZ25lZCBpbnQgaW5kZXgsDQog ICAgLQkJCSAgICB1MzIgdmFsKQ0KICAgICsJCQkgICAgdTMyIHZhbCwgYm9vbCBzbGVlcF9vaykN CiAgICAgew0KICAgIC0JaWYgKHQ0X3VzZV9sZHN0KGFkYXB0ZXIpKQ0KICAgIC0JCXQ0X2Z3X3Rw X3Bpb19ydyhhZGFwdGVyLCAmdmFsLCAxLA0KICAgIC0JCQkJQV9UUF9SU1NfUEYwX0NPTkZJRyAr IGluZGV4LCAwKTsNCiAgICAtCWVsc2UNCiAgICAtCQl0NF93cml0ZV9pbmRpcmVjdChhZGFwdGVy LCBBX1RQX1BJT19BRERSLCBBX1RQX1BJT19EQVRBLA0KICAgIC0JCQkJICAmdmFsLCAxLCBBX1RQ X1JTU19QRjBfQ09ORklHICsgaW5kZXgpOw0KICAgICsJdDRfdHBfcGlvX3dyaXRlKGFkYXB0ZXIs ICZ2YWwsIDEsIEFfVFBfUlNTX1BGMF9DT05GSUcgKyBpbmRleCwNCiAgICArCQkJc2xlZXBfb2sp Ow0KICAgICB9DQogICAgIA0KICAgICAvKioNCiAgICBAQCAtNDk3MSwxMiArNTEwMywxMyBAQCB2 b2lkIHQ0X3dyaXRlX3Jzc19wZl9jb25maWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUNCiAg ICAgICoJQGluZGV4OiB0aGUgZW50cnkgaW4gdGhlIFZGIFJTUyB0YWJsZSB0byByZWFkDQogICAg ICAqCUB2Zmw6IHdoZXJlIHRvIHN0b3JlIHRoZSByZXR1cm5lZCBWRkwNCiAgICAgICoJQHZmaDog d2hlcmUgdG8gc3RvcmUgdGhlIHJldHVybmVkIFZGSA0KICAgICsgKiAJQHNsZWVwX29rOiBpZiB0 cnVlIHdlIG1heSBzbGVlcCB3aGlsZSBhd2FpdGluZyBjb21tYW5kIGNvbXBsZXRpb24NCiAgICAg ICoNCiAgICAgICoJUmVhZHMgdGhlIFZGIFJTUyBDb25maWd1cmF0aW9uIFRhYmxlIGF0IHRoZSBz cGVjaWZpZWQgaW5kZXggYW5kIHJldHVybnMNCiAgICAgICoJdGhlIChWRkwsIFZGSCkgdmFsdWVz IGZvdW5kIHRoZXJlLg0KICAgICAgKi8NCiAgICAgdm9pZCB0NF9yZWFkX3Jzc192Zl9jb25maWco c3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHVuc2lnbmVkIGludCBpbmRleCwNCiAgICAtCQkJICAg dTMyICp2ZmwsIHUzMiAqdmZoKQ0KICAgICsJCQkgICB1MzIgKnZmbCwgdTMyICp2ZmgsIGJvb2wg c2xlZXBfb2spDQogICAgIHsNCiAgICAgCXUzMiB2cnQsIG1hc2ssIGRhdGE7DQogICAgIA0KICAg IEBAIC00OTk4LDE1ICs1MTMxLDggQEAgdm9pZCB0NF9yZWFkX3Jzc192Zl9jb25maWcoc3RydWN0 IGFkYXB0ZXIgKmFkYXB0ZXIsIHVuDQogICAgIAkvKg0KICAgICAJICogR3JhYiB0aGUgVkZML1ZG SCB2YWx1ZXMgLi4uDQogICAgIAkgKi8NCiAgICAtCWlmICh0NF91c2VfbGRzdChhZGFwdGVyKSkg ew0KICAgIC0JCXQ0X2Z3X3RwX3Bpb19ydyhhZGFwdGVyLCB2ZmwsIDEsIEFfVFBfUlNTX1ZGTF9D T05GSUcsIDEpOw0KICAgIC0JCXQ0X2Z3X3RwX3Bpb19ydyhhZGFwdGVyLCB2ZmgsIDEsIEFfVFBf UlNTX1ZGSF9DT05GSUcsIDEpOw0KICAgIC0JfSBlbHNlIHsNCiAgICAtCQl0NF9yZWFkX2luZGly ZWN0KGFkYXB0ZXIsIEFfVFBfUElPX0FERFIsIEFfVFBfUElPX0RBVEEsDQogICAgLQkJCQkgdmZs LCAxLCBBX1RQX1JTU19WRkxfQ09ORklHKTsNCiAgICAtCQl0NF9yZWFkX2luZGlyZWN0KGFkYXB0 ZXIsIEFfVFBfUElPX0FERFIsIEFfVFBfUElPX0RBVEEsDQogICAgLQkJCQkgdmZoLCAxLCBBX1RQ X1JTU19WRkhfQ09ORklHKTsNCiAgICAtCX0NCiAgICArCXQ0X3RwX3Bpb19yZWFkKGFkYXB0ZXIs IHZmbCwgMSwgQV9UUF9SU1NfVkZMX0NPTkZJRywgc2xlZXBfb2spOw0KICAgICsJdDRfdHBfcGlv X3JlYWQoYWRhcHRlciwgdmZoLCAxLCBBX1RQX1JTU19WRkhfQ09ORklHLCBzbGVlcF9vayk7DQog ICAgIH0NCiAgICAgDQogICAgIC8qKg0KICAgIEBAIC01MDIxLDcgKzUxNDcsNyBAQCB2b2lkIHQ0 X3JlYWRfcnNzX3ZmX2NvbmZpZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdW4NCiAgICAgICoJ c3BlY2lmaWVkIChWRkwsIFZGSCkgdmFsdWVzLg0KICAgICAgKi8NCiAgICAgdm9pZCB0NF93cml0 ZV9yc3NfdmZfY29uZmlnKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyLCB1bnNpZ25lZCBpbnQgaW5k ZXgsDQogICAgLQkJCSAgICB1MzIgdmZsLCB1MzIgdmZoKQ0KICAgICsJCQkgICAgdTMyIHZmbCwg dTMyIHZmaCwgYm9vbCBzbGVlcF9vaykNCiAgICAgew0KICAgICAJdTMyIHZydCwgbWFzaywgZGF0 YTsNCiAgICAgDQogICAgQEAgLTUwMzYsMTUgKzUxNjIsOCBAQCB2b2lkIHQ0X3dyaXRlX3Jzc192 Zl9jb25maWcoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUNCiAgICAgCS8qDQogICAgIAkgKiBM b2FkIHVwIFZGTC9WRkggd2l0aCB0aGUgdmFsdWVzIHRvIGJlIHdyaXR0ZW4gLi4uDQogICAgIAkg Ki8NCiAgICAtCWlmICh0NF91c2VfbGRzdChhZGFwdGVyKSkgew0KICAgIC0JCXQ0X2Z3X3RwX3Bp b19ydyhhZGFwdGVyLCAmdmZsLCAxLCBBX1RQX1JTU19WRkxfQ09ORklHLCAwKTsNCiAgICAtCQl0 NF9md190cF9waW9fcncoYWRhcHRlciwgJnZmaCwgMSwgQV9UUF9SU1NfVkZIX0NPTkZJRywgMCk7 DQogICAgLQl9IGVsc2Ugew0KICAgIC0JCXQ0X3dyaXRlX2luZGlyZWN0KGFkYXB0ZXIsIEFfVFBf UElPX0FERFIsIEFfVFBfUElPX0RBVEEsDQogICAgLQkJCQkgICZ2ZmwsIDEsIEFfVFBfUlNTX1ZG TF9DT05GSUcpOw0KICAgIC0JCXQ0X3dyaXRlX2luZGlyZWN0KGFkYXB0ZXIsIEFfVFBfUElPX0FE RFIsIEFfVFBfUElPX0RBVEEsDQogICAgLQkJCQkgICZ2ZmgsIDEsIEFfVFBfUlNTX1ZGSF9DT05G SUcpOw0KICAgIC0JfQ0KICAgICsJdDRfdHBfcGlvX3dyaXRlKGFkYXB0ZXIsICZ2ZmwsIDEsIEFf VFBfUlNTX1ZGTF9DT05GSUcsIHNsZWVwX29rKTsNCiAgICArCXQ0X3RwX3Bpb193cml0ZShhZGFw dGVyLCAmdmZoLCAxLCBBX1RQX1JTU19WRkhfQ09ORklHLCBzbGVlcF9vayk7DQogICAgIA0KICAg ICAJLyoNCiAgICAgCSAqIFdyaXRlIHRoZSBWRkwvVkZIIGludG8gdGhlIFZGIFRhYmxlIGF0IGlu ZGV4J3RoIGxvY2F0aW9uLg0KICAgIEBAIC01MDU4LDE4ICs1MTc3LDE2IEBAIHZvaWQgdDRfd3Jp dGVfcnNzX3ZmX2NvbmZpZyhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdQ0KICAgICAvKioNCiAg ICAgICoJdDRfcmVhZF9yc3NfcGZfbWFwIC0gcmVhZCBQRiBSU1MgTWFwDQogICAgICAqCUBhZGFw dGVyOiB0aGUgYWRhcHRlcg0KICAgICsgKiAJQHNsZWVwX29rOiBpZiB0cnVlIHdlIG1heSBzbGVl cCB3aGlsZSBhd2FpdGluZyBjb21tYW5kIGNvbXBsZXRpb24NCiAgICAgICoNCiAgICAgICoJUmVh ZHMgdGhlIFBGIFJTUyBNYXAgcmVnaXN0ZXIgYW5kIHJldHVybnMgaXRzIHZhbHVlLg0KICAgICAg Ki8NCiAgICAtdTMyIHQ0X3JlYWRfcnNzX3BmX21hcChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikN CiAgICArdTMyIHQ0X3JlYWRfcnNzX3BmX21hcChzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgYm9v bCBzbGVlcF9vaykNCiAgICAgew0KICAgICAJdTMyIHBmbWFwOw0KICAgICANCiAgICAtCWlmICh0 NF91c2VfbGRzdChhZGFwdGVyKSkNCiAgICAtCQl0NF9md190cF9waW9fcncoYWRhcHRlciwgJnBm bWFwLCAxLCBBX1RQX1JTU19QRl9NQVAsIDEpOw0KICAgIC0JZWxzZQ0KICAgIC0JCXQ0X3JlYWRf aW5kaXJlY3QoYWRhcHRlciwgQV9UUF9QSU9fQUREUiwgQV9UUF9QSU9fREFUQSwNCiAgICAtCQkJ CSAmcGZtYXAsIDEsIEFfVFBfUlNTX1BGX01BUCk7DQogICAgKwl0NF90cF9waW9fcmVhZChhZGFw dGVyLCAmcGZtYXAsIDEsIEFfVFBfUlNTX1BGX01BUCwgc2xlZXBfb2spOw0KICAgICsNCiAgICAg CXJldHVybiBwZm1hcDsNCiAgICAgfQ0KICAgICANCiAgICBAQCAtNTA4MCwzMCArNTE5NywyNCBA QCB1MzIgdDRfcmVhZF9yc3NfcGZfbWFwKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQ0KICAgICAg Kg0KICAgICAgKglXcml0ZXMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byB0aGUgUEYgUlNTIE1hcCBy ZWdpc3Rlci4NCiAgICAgICovDQogICAgLXZvaWQgdDRfd3JpdGVfcnNzX3BmX21hcChzdHJ1Y3Qg YWRhcHRlciAqYWRhcHRlciwgdTMyIHBmbWFwKQ0KICAgICt2b2lkIHQ0X3dyaXRlX3Jzc19wZl9t YXAoc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIHUzMiBwZm1hcCwgYm9vbCBzbGVlcF9vaykNCiAg ICAgew0KICAgIC0JaWYgKHQ0X3VzZV9sZHN0KGFkYXB0ZXIpKQ0KICAgIC0JCXQ0X2Z3X3RwX3Bp b19ydyhhZGFwdGVyLCAmcGZtYXAsIDEsIEFfVFBfUlNTX1BGX01BUCwgMCk7DQogICAgLQllbHNl DQogICAgLQkJdDRfd3JpdGVfaW5kaXJlY3QoYWRhcHRlciwgQV9UUF9QSU9fQUREUiwgQV9UUF9Q SU9fREFUQSwNCiAgICAtCQkJCSAgJnBmbWFwLCAxLCBBX1RQX1JTU19QRl9NQVApOw0KICAgICsJ dDRfdHBfcGlvX3dyaXRlKGFkYXB0ZXIsICZwZm1hcCwgMSwgQV9UUF9SU1NfUEZfTUFQLCBzbGVl cF9vayk7DQogICAgIH0NCiAgICAgDQogICAgIC8qKg0KICAgICAgKgl0NF9yZWFkX3Jzc19wZl9t YXNrIC0gcmVhZCBQRiBSU1MgTWFzaw0KICAgICAgKglAYWRhcHRlcjogdGhlIGFkYXB0ZXINCiAg ICArICogCUBzbGVlcF9vazogaWYgdHJ1ZSB3ZSBtYXkgc2xlZXAgd2hpbGUgYXdhaXRpbmcgY29t bWFuZCBjb21wbGV0aW9uDQogICAgICAqDQogICAgICAqCVJlYWRzIHRoZSBQRiBSU1MgTWFzayBy ZWdpc3RlciBhbmQgcmV0dXJucyBpdHMgdmFsdWUuDQogICAgICAqLw0KICAgIC11MzIgdDRfcmVh ZF9yc3NfcGZfbWFzayhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlcikNCiAgICArdTMyIHQ0X3JlYWRf cnNzX3BmX21hc2soc3RydWN0IGFkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgc2xlZXBfb2spDQogICAg IHsNCiAgICAgCXUzMiBwZm1hc2s7DQogICAgIA0KICAgIC0JaWYgKHQ0X3VzZV9sZHN0KGFkYXB0 ZXIpKQ0KICAgIC0JCXQ0X2Z3X3RwX3Bpb19ydyhhZGFwdGVyLCAmcGZtYXNrLCAxLCBBX1RQX1JT U19QRl9NU0ssIDEpOw0KICAgIC0JZWxzZQ0KICAgIC0JCXQ0X3JlYWRfaW5kaXJlY3QoYWRhcHRl ciwgQV9UUF9QSU9fQUREUiwgQV9UUF9QSU9fREFUQSwNCiAgICAtCQkJCSAmcGZtYXNrLCAxLCBB X1RQX1JTU19QRl9NU0spOw0KICAgICsJdDRfdHBfcGlvX3JlYWQoYWRhcHRlciwgJnBmbWFzaywg MSwgQV9UUF9SU1NfUEZfTVNLLCBzbGVlcF9vayk7DQogICAgKw0KICAgICAJcmV0dXJuIHBmbWFz azsNCiAgICAgfQ0KICAgICANCiAgICBAQCAtNTExNCwxMyArNTIyNSw5IEBAIHUzMiB0NF9yZWFk X3Jzc19wZl9tYXNrKHN0cnVjdCBhZGFwdGVyICphZGFwdGVyKQ0KICAgICAgKg0KICAgICAgKglX cml0ZXMgdGhlIHNwZWNpZmllZCB2YWx1ZSB0byB0aGUgUEYgUlNTIE1hc2sgcmVnaXN0ZXIuDQog ICAgICAqLw0KICAgIC12b2lkIHQ0X3dyaXRlX3Jzc19wZl9tYXNrKHN0cnVjdCBhZGFwdGVyICph ZGFwdGVyLCB1MzIgcGZtYXNrKQ0KICAgICt2b2lkIHQ0X3dyaXRlX3Jzc19wZl9tYXNrKHN0cnVj dCBhZGFwdGVyICphZGFwdGVyLCB1MzIgcGZtYXNrLCBib29sIHNsZWVwX29rKQ0KICAgICB7DQog ICAgLQlpZiAodDRfdXNlX2xkc3QoYWRhcHRlcikpDQogICAgLQkJdDRfZndfdHBfcGlvX3J3KGFk YXB0ZXIsICZwZm1hc2ssIDEsIEFfVFBfUlNTX1BGX01TSywgMCk7DQogICAgLQllbHNlDQogICAg LQkJdDRfd3JpdGVfaW5kaXJlY3QoYWRhcHRlciwgQV9UUF9QSU9fQUREUiwgQV9UUF9QSU9fREFU QSwNCiAgICAtCQkJCSAgJnBmbWFzaywgMSwgQV9UUF9SU1NfUEZfTVNLKTsNCiAgICArCXQ0X3Rw X3Bpb193cml0ZShhZGFwdGVyLCAmcGZtYXNrLCAxLCBBX1RQX1JTU19QRl9NU0ssIHNsZWVwX29r KTsNCiAgICAgfQ0KICAgICANCiAgICAgLyoqDQogICAgQEAgLTUxMjgsMTIgKzUyMzUsMTMgQEAg dm9pZCB0NF93cml0ZV9yc3NfcGZfbWFzayhzdHJ1Y3QgYWRhcHRlciAqYWRhcHRlciwgdTMyDQog ICAgICAqCUBhZGFwOiB0aGUgYWRhcHRlcg0KICAgICAgKglAdjQ6IGhvbGRzIHRoZSBUQ1AvSVAg Y291bnRlciB2YWx1ZXMNCiAgICAgICoJQHY2OiBob2xkcyB0aGUgVENQL0lQdjYgY291bnRlciB2 YWx1ZXMNCiAgICArICogCUBzbGVlcF9vazogaWYgdHJ1ZSB3ZSBtYXkgc2xlZXAgd2hpbGUgYXdh aXRpbmcgY29tbWFuZCBjb21wbGV0aW9uDQogICAgICAqDQogICAgICAqCVJldHVybnMgdGhlIHZh bHVlcyBvZiBUUCdzIFRDUC9JUCBhbmQgVENQL0lQdjYgTUlCIGNvdW50ZXJzLg0KICAgICAgKglF aXRoZXIgQHY0IG9yIEB2NiBtYXkgYmUgJU5VTEwgdG8gc2tpcCB0aGUgY29ycmVzcG9uZGluZyBz dGF0cy4NCiAgICAgICovDQogICAgIHZvaWQgdDRfdHBfZ2V0X3RjcF9zdGF0cyhzdHJ1Y3QgYWRh cHRlciAqYWRhcCwgc3RydWN0IHRwX3RjcF9zdGF0cyAqdjQsDQogICAgLQkJCSBzdHJ1Y3QgdHBf dGNwX3N0YXRzICp2NikNCiAgICArCQkJIHN0cnVjdCB0cF90Y3Bfc3RhdHMgKnY2LCBib29sIHNs ZWVwX29rKQ0KICAgICB7DQogICAgIAl1MzIgdmFsW0FfVFBfTUlCX1RDUF9SWFRfU0VHX0xPIC0g QV9UUF9NSUJfVENQX09VVF9SU1QgKyAxXTsNCiAgICAgDQogICAgQEAgLTUxNDIsMTYgKzUyNTAs MTYgQEAgdm9pZCB0NF90cF9nZXRfdGNwX3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCBzdHJ1 Y3QgDQogICAgICNkZWZpbmUgU1RBVDY0KHgpICAgKCgodTY0KVNUQVQoeCMjX0hJKSA8PCAzMikg fCBTVEFUKHgjI19MTykpDQogICAgIA0KICAgICAJaWYgKHY0KSB7DQogICAgLQkJdDRfcmVhZF9p bmRpcmVjdChhZGFwLCBBX1RQX01JQl9JTkRFWCwgQV9UUF9NSUJfREFUQSwgdmFsLA0KICAgIC0J CQkJIEFSUkFZX1NJWkUodmFsKSwgQV9UUF9NSUJfVENQX09VVF9SU1QpOw0KICAgICsJCXQ0X3Rw X21pYl9yZWFkKGFkYXAsIHZhbCwgQVJSQVlfU0laRSh2YWwpLA0KICAgICsJCQkgICAgICAgQV9U UF9NSUJfVENQX09VVF9SU1QsIHNsZWVwX29rKTsNCiAgICAgCQl2NC0+dGNwX291dF9yc3RzID0g U1RBVChPVVRfUlNUKTsNCiAgICAgCQl2NC0+dGNwX2luX3NlZ3MgID0gU1RBVDY0KElOX1NFRyk7 DQogICAgIAkJdjQtPnRjcF9vdXRfc2VncyA9IFNUQVQ2NChPVVRfU0VHKTsNCiAgICAgCQl2NC0+ dGNwX3JldHJhbnNfc2VncyA9IFNUQVQ2NChSWFRfU0VHKTsNCiAgICAgCX0NCiAgICAgCWlmICh2 Nikgew0KICAgIC0JCXQ0X3JlYWRfaW5kaXJlY3QoYWRhcCwgQV9UUF9NSUJfSU5ERVgsIEFfVFBf TUlCX0RBVEEsIHZhbCwNCiAgICAtCQkJCSBBUlJBWV9TSVpFKHZhbCksIEFfVFBfTUlCX1RDUF9W Nk9VVF9SU1QpOw0KICAgICsJCXQ0X3RwX21pYl9yZWFkKGFkYXAsIHZhbCwgQVJSQVlfU0laRSh2 YWwpLA0KICAgICsJCQkgICAgICAgQV9UUF9NSUJfVENQX1Y2T1VUX1JTVCwgc2xlZXBfb2spOw0K ICAgICAJCXY2LT50Y3Bfb3V0X3JzdHMgPSBTVEFUKE9VVF9SU1QpOw0KICAgICAJCXY2LT50Y3Bf aW5fc2VncyAgPSBTVEFUNjQoSU5fU0VHKTsNCiAgICAgCQl2Ni0+dGNwX291dF9zZWdzID0gU1RB VDY0KE9VVF9TRUcpOw0KICAgIEBAIC01MTY2LDMyICs1Mjc0LDQxIEBAIHZvaWQgdDRfdHBfZ2V0 X3RjcF9zdGF0cyhzdHJ1Y3QgYWRhcHRlciAqYWRhcCwgc3RydWN0IA0KICAgICAgKgl0NF90cF9n ZXRfZXJyX3N0YXRzIC0gcmVhZCBUUCdzIGVycm9yIE1JQiBjb3VudGVycw0KICAgICAgKglAYWRh cDogdGhlIGFkYXB0ZXINCiAgICAgICoJQHN0OiBob2xkcyB0aGUgY291bnRlciB2YWx1ZXMNCiAg ICArICogCUBzbGVlcF9vazogaWYgdHJ1ZSB3ZSBtYXkgc2xlZXAgd2hpbGUgYXdhaXRpbmcgY29t bWFuZCBjb21wbGV0aW9uDQogICAgICAqDQogICAgICAqCVJldHVybnMgdGhlIHZhbHVlcyBvZiBU UCdzIGVycm9yIGNvdW50ZXJzLg0KICAgICAgKi8NCiAgICAtdm9pZCB0NF90cF9nZXRfZXJyX3N0 YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCBzdHJ1Y3QgdHBfZXJyX3N0YXRzICpzdCkNCiAgICAr dm9pZCB0NF90cF9nZXRfZXJyX3N0YXRzKHN0cnVjdCBhZGFwdGVyICphZGFwLCBzdHJ1Y3QgdHBf ZXJyX3N0YXRzICpzdCwNCiAgICArCQkJIGJvb2wgc2xlZXBfb2spDQogICAgIHsNCiAgICANCiAg ICAqKiogRElGRiBPVVRQVVQgVFJVTkNBVEVEIEFUIDEwMDAgTElORVMgKioqDQogICAgDQoNCg==