From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C440EC4727E for ; Thu, 1 Oct 2020 22:02:51 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 829AF207DE for ; Thu, 1 Oct 2020 22:02:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726741AbgJAWCu (ORCPT ); Thu, 1 Oct 2020 18:02:50 -0400 Received: from mail-lj1-f195.google.com ([209.85.208.195]:41982 "EHLO mail-lj1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726731AbgJAWCu (ORCPT ); Thu, 1 Oct 2020 18:02:50 -0400 Received: by mail-lj1-f195.google.com with SMTP id y4so143572ljk.8 for ; Thu, 01 Oct 2020 15:02:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=7+0iqnqR1+uN0pgQm+DWt3g7O2MdVYRWt5r0a7zSrgA=; b=kdK6oRXUsnqERuucg9YZVACPyAYXwyMjE+jBjIuWgrpRShvktodoasbz8rfPHbyNC9 lRVo7/3bC59JgkStok52qHLhLdEYe2B2cUJlhjW94X326V1jYhU8AFCXqb3W/AG0fE03 aEDmjE2dKsmiwyeKv5R99kXMS1VfksO99kkCx2rICXw0MfjBJCUGC8O24ywsVF7Hz5bR sSJq9SL3zoDYotwTMEt589rvih1FREXoCwD30O93/5l0Hcj175omODLwaL7uIQ6lQDKT f5CUYEW/vKrFPkT3TJTugL4k3xAKWFMQ50UuCSq/FhgObpBWv5A74PDo927Ucp+dUn5V cIrQ== X-Gm-Message-State: AOAM530E3OFPS7WrrxGWgjbJgFJT2hTnyMju8RyId+eCY5THJ4TX1dua 00o9BSxqSG4gJTm5gocYgVc= X-Google-Smtp-Source: ABdhPJzxiz4ywkGK2++fFndUVni9+gOpIkzZCHiZNrN9W0+g0WvnhxG4vDFORBo9gt/sSS5qSz4cxw== X-Received: by 2002:a2e:90c3:: with SMTP id o3mr2843247ljg.147.1601589765998; Thu, 01 Oct 2020 15:02:45 -0700 (PDT) Received: from workstation.lan ([95.155.85.46]) by smtp.gmail.com with ESMTPSA id f25sm582154ljn.29.2020.10.01.15.02.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Oct 2020 15:02:45 -0700 (PDT) From: =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= To: Bjorn Helgaas Cc: Rob Herring , Jonathan Cameron , Jonathan Chocron , Shawn Lin , Heiko Stuebner , Zhou Wang , Lorenzo Pieralisi , Will Deacon , Robert Richter , Michal Simek , Toan Le , linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org Subject: [PATCH v3] PCI: Unify ECAM constants in native PCI Express drivers Date: Thu, 1 Oct 2020 22:02:44 +0000 Message-Id: <20201001220244.1271878-1-kw@linux.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Unify ECAM-related constants into a single set of standard constants defining memory address shift values for the byte-level address that can be used when accessing the PCI Express Configuration Space, and then move native PCI Express controller drivers to use newly introduced definitions retiring any driver-specific ones. The ECAM ("Enhanced Configuration Access Mechanism") is defined by the PCI Express specification (see PCI Express Base Specification, Revision 5.0, Version 1.0, Section 7.2.2, p. 676), thus most hardware should implement it the same way. Most of the native PCI Express controller drivers define their ECAM-related constants, many of these could be shared, or use open-coded values when setting the .bus_shift field of the struct pci_ecam_ops. All of the newly added constants should remove ambiguity and reduce the number of open-coded values, and also correlate more strongly with the descriptions in the aforementioned specification (see Table 7-1 "Enhanced Configuration Address Mapping", p. 677). There is no change to functionality. Suggested-by: Bjorn Helgaas Signed-off-by: Krzysztof WilczyƄski --- Changes in v3: Updated commit message wording. Updated regarding custom ECAM bus shift values and concerning PCI base configuration space access for Type 1 access. Refactored rockchip_pcie_rd_other_conf() and rockchip_pcie_wr_other_conf() and removed the "busdev" variable. Removed surplus "relbus" variable from nwl_pcie_map_bus() and xilinx_pcie_map_bus(). Renamed the PCIE_ECAM_ADDR() macro to PCIE_ECAM_OFFSET(). Changes in v2: Use PCIE_ECAM_ADDR macro when computing ECAM address offset, but drop PCI_SLOT and PCI_FUNC macros from the PCIE_ECAM_ADDR macro in favour of using a single value for the device/function. drivers/pci/controller/dwc/pcie-al.c | 8 ++---- drivers/pci/controller/dwc/pcie-hisi.c | 4 +-- drivers/pci/controller/pci-host-generic.c | 4 +-- drivers/pci/controller/pci-thunder-ecam.c | 2 +- drivers/pci/controller/pci-thunder-pem.c | 13 +++++++-- drivers/pci/controller/pci-xgene.c | 13 +++++++-- drivers/pci/controller/pcie-rockchip-host.c | 27 +++++++++-------- drivers/pci/controller/pcie-rockchip.h | 8 +----- drivers/pci/controller/pcie-tango.c | 2 +- drivers/pci/controller/pcie-xilinx-nwl.c | 9 ++---- drivers/pci/controller/pcie-xilinx.c | 11 ++----- drivers/pci/ecam.c | 4 +-- include/linux/pci-ecam.h | 32 +++++++++++++++++++++ 13 files changed, 83 insertions(+), 54 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-al.c b/drivers/pci/controller/dwc/pcie-al.c index d57d4ee15848..7c2aa049113c 100644 --- a/drivers/pci/controller/dwc/pcie-al.c +++ b/drivers/pci/controller/dwc/pcie-al.c @@ -76,7 +76,7 @@ static int al_pcie_init(struct pci_config_window *cfg) } const struct pci_ecam_ops al_pcie_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .init = al_pcie_init, .pci_ops = { .map_bus = al_pcie_map_bus, @@ -138,8 +138,6 @@ struct al_pcie { struct al_pcie_target_bus_cfg target_bus_cfg; }; -#define PCIE_ECAM_DEVFN(x) (((x) & 0xff) << 12) - #define to_al_pcie(x) dev_get_drvdata((x)->dev) static inline u32 al_pcie_controller_readl(struct al_pcie *pcie, u32 offset) @@ -228,7 +226,7 @@ static void __iomem *al_pcie_conf_addr_map(struct al_pcie *pcie, void __iomem *pci_base_addr; pci_base_addr = (void __iomem *)((uintptr_t)pp->va_cfg0_base + - (busnr_ecam << 20) + + PCIE_ECAM_BUS(busnr_ecam) + PCIE_ECAM_DEVFN(devfn)); if (busnr_reg != target_bus_cfg->reg_val) { @@ -300,7 +298,7 @@ static void al_pcie_config_prepare(struct al_pcie *pcie) target_bus_cfg = &pcie->target_bus_cfg; - ecam_bus_mask = (pcie->ecam_size >> 20) - 1; + ecam_bus_mask = (pcie->ecam_size >> PCIE_ECAM_BUS_SHIFT) - 1; if (ecam_bus_mask > 255) { dev_warn(pcie->dev, "ECAM window size is larger than 256MB. Cutting off at 256\n"); ecam_bus_mask = 255; diff --git a/drivers/pci/controller/dwc/pcie-hisi.c b/drivers/pci/controller/dwc/pcie-hisi.c index 5ca86796d43a..b7afbf1d4bd9 100644 --- a/drivers/pci/controller/dwc/pcie-hisi.c +++ b/drivers/pci/controller/dwc/pcie-hisi.c @@ -100,7 +100,7 @@ static int hisi_pcie_init(struct pci_config_window *cfg) } const struct pci_ecam_ops hisi_pcie_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .init = hisi_pcie_init, .pci_ops = { .map_bus = hisi_pcie_map_bus, @@ -135,7 +135,7 @@ static int hisi_pcie_platform_init(struct pci_config_window *cfg) } static const struct pci_ecam_ops hisi_pcie_platform_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .init = hisi_pcie_platform_init, .pci_ops = { .map_bus = hisi_pcie_map_bus, diff --git a/drivers/pci/controller/pci-host-generic.c b/drivers/pci/controller/pci-host-generic.c index b51977abfdf1..593436aee7a0 100644 --- a/drivers/pci/controller/pci-host-generic.c +++ b/drivers/pci/controller/pci-host-generic.c @@ -15,7 +15,7 @@ #include static const struct pci_ecam_ops gen_pci_cfg_cam_bus_ops = { - .bus_shift = 16, + .bus_shift = PCIE_CAM_BUS_SHIFT, .pci_ops = { .map_bus = pci_ecam_map_bus, .read = pci_generic_config_read, @@ -49,7 +49,7 @@ static void __iomem *pci_dw_ecam_map_bus(struct pci_bus *bus, } static const struct pci_ecam_ops pci_dw_ecam_bus_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .pci_ops = { .map_bus = pci_dw_ecam_map_bus, .read = pci_generic_config_read, diff --git a/drivers/pci/controller/pci-thunder-ecam.c b/drivers/pci/controller/pci-thunder-ecam.c index 7e8835fee5f7..22ed7e995b39 100644 --- a/drivers/pci/controller/pci-thunder-ecam.c +++ b/drivers/pci/controller/pci-thunder-ecam.c @@ -346,7 +346,7 @@ static int thunder_ecam_config_write(struct pci_bus *bus, unsigned int devfn, } const struct pci_ecam_ops pci_thunder_ecam_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .pci_ops = { .map_bus = pci_ecam_map_bus, .read = thunder_ecam_config_read, diff --git a/drivers/pci/controller/pci-thunder-pem.c b/drivers/pci/controller/pci-thunder-pem.c index 3f847969143e..1a3f70ac61fc 100644 --- a/drivers/pci/controller/pci-thunder-pem.c +++ b/drivers/pci/controller/pci-thunder-pem.c @@ -19,6 +19,15 @@ #define PEM_CFG_WR 0x28 #define PEM_CFG_RD 0x30 +/* + * Enhanced Configuration Access Mechanism (ECAM) + * + * N.B. This is a non-standard platform-specific ECAM bus shift value. For + * standard values defined in the PCI Express Base Specification see + * include/linux/pci-ecam.h. + */ +#define THUNDER_PCIE_ECAM_BUS_SHIFT 24 + struct thunder_pem_pci { u32 ea_entry[3]; void __iomem *pem_reg_base; @@ -404,7 +413,7 @@ static int thunder_pem_acpi_init(struct pci_config_window *cfg) } const struct pci_ecam_ops thunder_pem_ecam_ops = { - .bus_shift = 24, + .bus_shift = THUNDER_PCIE_ECAM_BUS_SHIFT, .init = thunder_pem_acpi_init, .pci_ops = { .map_bus = pci_ecam_map_bus, @@ -441,7 +450,7 @@ static int thunder_pem_platform_init(struct pci_config_window *cfg) } static const struct pci_ecam_ops pci_thunder_pem_ops = { - .bus_shift = 24, + .bus_shift = THUNDER_PCIE_ECAM_BUS_SHIFT, .init = thunder_pem_platform_init, .pci_ops = { .map_bus = pci_ecam_map_bus, diff --git a/drivers/pci/controller/pci-xgene.c b/drivers/pci/controller/pci-xgene.c index 8e0db84f089d..e67e72818d24 100644 --- a/drivers/pci/controller/pci-xgene.c +++ b/drivers/pci/controller/pci-xgene.c @@ -60,6 +60,15 @@ #define XGENE_PCIE_IP_VER_1 1 #define XGENE_PCIE_IP_VER_2 2 +/* + * Enhanced Configuration Access Mechanism (ECAM) + * + * N.B. This is a non-standard platform-specific ECAM bus shift value. For + * standard values defined in the PCI Express Base Specification see + * include/linux/pci-ecam.h. + */ +#define XGENE_PCIE_ECAM_BUS_SHIFT 16 + #if defined(CONFIG_PCI_XGENE) || (defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS)) struct xgene_pcie_port { struct device_node *node; @@ -257,7 +266,7 @@ static int xgene_v1_pcie_ecam_init(struct pci_config_window *cfg) } const struct pci_ecam_ops xgene_v1_pcie_ecam_ops = { - .bus_shift = 16, + .bus_shift = XGENE_PCIE_ECAM_BUS_SHIFT, .init = xgene_v1_pcie_ecam_init, .pci_ops = { .map_bus = xgene_pcie_map_bus, @@ -272,7 +281,7 @@ static int xgene_v2_pcie_ecam_init(struct pci_config_window *cfg) } const struct pci_ecam_ops xgene_v2_pcie_ecam_ops = { - .bus_shift = 16, + .bus_shift = XGENE_PCIE_ECAM_BUS_SHIFT, .init = xgene_v2_pcie_ecam_init, .pci_ops = { .map_bus = xgene_pcie_map_bus, diff --git a/drivers/pci/controller/pcie-rockchip-host.c b/drivers/pci/controller/pcie-rockchip-host.c index 0bb2fb3e8a0b..4c069f8fa420 100644 --- a/drivers/pci/controller/pcie-rockchip-host.c +++ b/drivers/pci/controller/pcie-rockchip-host.c @@ -160,12 +160,11 @@ static int rockchip_pcie_rd_other_conf(struct rockchip_pcie *rockchip, struct pci_bus *bus, u32 devfn, int where, int size, u32 *val) { - u32 busdev; + void __iomem *addr; - busdev = PCIE_ECAM_ADDR(bus->number, PCI_SLOT(devfn), - PCI_FUNC(devfn), where); + addr = rockchip->reg_base + PCIE_ECAM_OFFSET(bus, devfn, where); - if (!IS_ALIGNED(busdev, size)) { + if (!IS_ALIGNED((uintptr_t)addr, size)) { *val = 0; return PCIBIOS_BAD_REGISTER_NUMBER; } @@ -178,11 +177,11 @@ static int rockchip_pcie_rd_other_conf(struct rockchip_pcie *rockchip, AXI_WRAPPER_TYPE1_CFG); if (size == 4) { - *val = readl(rockchip->reg_base + busdev); + *val = readl(addr); } else if (size == 2) { - *val = readw(rockchip->reg_base + busdev); + *val = readw(addr); } else if (size == 1) { - *val = readb(rockchip->reg_base + busdev); + *val = readb(addr); } else { *val = 0; return PCIBIOS_BAD_REGISTER_NUMBER; @@ -194,11 +193,11 @@ static int rockchip_pcie_wr_other_conf(struct rockchip_pcie *rockchip, struct pci_bus *bus, u32 devfn, int where, int size, u32 val) { - u32 busdev; + void __iomem *addr; - busdev = PCIE_ECAM_ADDR(bus->number, PCI_SLOT(devfn), - PCI_FUNC(devfn), where); - if (!IS_ALIGNED(busdev, size)) + addr = rockchip->reg_base + PCIE_ECAM_OFFSET(bus, devfn, where); + + if (!IS_ALIGNED((uintptr_t)addr, size)) return PCIBIOS_BAD_REGISTER_NUMBER; if (pci_is_root_bus(bus->parent)) @@ -209,11 +208,11 @@ static int rockchip_pcie_wr_other_conf(struct rockchip_pcie *rockchip, AXI_WRAPPER_TYPE1_CFG); if (size == 4) - writel(val, rockchip->reg_base + busdev); + writel(val, addr); else if (size == 2) - writew(val, rockchip->reg_base + busdev); + writew(val, addr); else if (size == 1) - writeb(val, rockchip->reg_base + busdev); + writeb(val, addr); else return PCIBIOS_BAD_REGISTER_NUMBER; diff --git a/drivers/pci/controller/pcie-rockchip.h b/drivers/pci/controller/pcie-rockchip.h index c7d0178fc8c2..1650a5087450 100644 --- a/drivers/pci/controller/pcie-rockchip.h +++ b/drivers/pci/controller/pcie-rockchip.h @@ -13,6 +13,7 @@ #include #include +#include /* * The upper 16 bits of PCIE_CLIENT_CONFIG are a write mask for the lower 16 @@ -178,13 +179,6 @@ #define MIN_AXI_ADDR_BITS_PASSED 8 #define PCIE_RC_SEND_PME_OFF 0x11960 #define ROCKCHIP_VENDOR_ID 0x1d87 -#define PCIE_ECAM_BUS(x) (((x) & 0xff) << 20) -#define PCIE_ECAM_DEV(x) (((x) & 0x1f) << 15) -#define PCIE_ECAM_FUNC(x) (((x) & 0x7) << 12) -#define PCIE_ECAM_REG(x) (((x) & 0xfff) << 0) -#define PCIE_ECAM_ADDR(bus, dev, func, reg) \ - (PCIE_ECAM_BUS(bus) | PCIE_ECAM_DEV(dev) | \ - PCIE_ECAM_FUNC(func) | PCIE_ECAM_REG(reg)) #define PCIE_LINK_IS_L2(x) \ (((x) & PCIE_CLIENT_DEBUG_LTSSM_MASK) == PCIE_CLIENT_DEBUG_LTSSM_L2) #define PCIE_LINK_UP(x) \ diff --git a/drivers/pci/controller/pcie-tango.c b/drivers/pci/controller/pcie-tango.c index d093a8ce4bb1..8f0d695afbde 100644 --- a/drivers/pci/controller/pcie-tango.c +++ b/drivers/pci/controller/pcie-tango.c @@ -208,7 +208,7 @@ static int smp8759_config_write(struct pci_bus *bus, unsigned int devfn, } static const struct pci_ecam_ops smp8759_ecam_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .pci_ops = { .map_bus = pci_ecam_map_bus, .read = smp8759_config_read, diff --git a/drivers/pci/controller/pcie-xilinx-nwl.c b/drivers/pci/controller/pcie-xilinx-nwl.c index f3cf7d61924f..cfd12b75bacb 100644 --- a/drivers/pci/controller/pcie-xilinx-nwl.c +++ b/drivers/pci/controller/pcie-xilinx-nwl.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -124,8 +125,6 @@ #define E_ECAM_CR_ENABLE BIT(0) #define E_ECAM_SIZE_LOC GENMASK(20, 16) #define E_ECAM_SIZE_SHIFT 16 -#define ECAM_BUS_LOC_SHIFT 20 -#define ECAM_DEV_LOC_SHIFT 12 #define NWL_ECAM_VALUE_DEFAULT 12 #define CFG_DMA_REG_BAR GENMASK(2, 0) @@ -240,15 +239,11 @@ static void __iomem *nwl_pcie_map_bus(struct pci_bus *bus, unsigned int devfn, int where) { struct nwl_pcie *pcie = bus->sysdata; - int relbus; if (!nwl_pcie_valid_device(bus, devfn)) return NULL; - relbus = (bus->number << ECAM_BUS_LOC_SHIFT) | - (devfn << ECAM_DEV_LOC_SHIFT); - - return pcie->ecam_base + relbus + where; + return pcie->ecam_base + PCIE_ECAM_OFFSET(bus, devfn, where); } /* PCIe operations */ diff --git a/drivers/pci/controller/pcie-xilinx.c b/drivers/pci/controller/pcie-xilinx.c index 8523be61bba5..49bde5266aa2 100644 --- a/drivers/pci/controller/pcie-xilinx.c +++ b/drivers/pci/controller/pcie-xilinx.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include "../pci.h" @@ -86,10 +87,6 @@ /* Phy Status/Control Register definitions */ #define XILINX_PCIE_REG_PSCR_LNKUP BIT(11) -/* ECAM definitions */ -#define ECAM_BUS_NUM_SHIFT 20 -#define ECAM_DEV_NUM_SHIFT 12 - /* Number of MSI IRQs */ #define XILINX_NUM_MSI_IRQS 128 @@ -183,15 +180,11 @@ static void __iomem *xilinx_pcie_map_bus(struct pci_bus *bus, unsigned int devfn, int where) { struct xilinx_pcie_port *port = bus->sysdata; - int relbus; if (!xilinx_pcie_valid_device(bus, devfn)) return NULL; - relbus = (bus->number << ECAM_BUS_NUM_SHIFT) | - (devfn << ECAM_DEV_NUM_SHIFT); - - return port->reg_base + relbus + where; + return port->reg_base + PCIE_ECAM_OFFSET(bus, devfn, where); } /* PCIe operations */ diff --git a/drivers/pci/ecam.c b/drivers/pci/ecam.c index 8f065a42fc1a..ffd010290084 100644 --- a/drivers/pci/ecam.c +++ b/drivers/pci/ecam.c @@ -149,7 +149,7 @@ EXPORT_SYMBOL_GPL(pci_ecam_map_bus); /* ECAM ops */ const struct pci_ecam_ops pci_generic_ecam_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .pci_ops = { .map_bus = pci_ecam_map_bus, .read = pci_generic_config_read, @@ -161,7 +161,7 @@ EXPORT_SYMBOL_GPL(pci_generic_ecam_ops); #if defined(CONFIG_ACPI) && defined(CONFIG_PCI_QUIRKS) /* ECAM ops for 32-bit access only (non-compliant) */ const struct pci_ecam_ops pci_32b_ops = { - .bus_shift = 20, + .bus_shift = PCIE_ECAM_BUS_SHIFT, .pci_ops = { .map_bus = pci_ecam_map_bus, .read = pci_generic_config_read32, diff --git a/include/linux/pci-ecam.h b/include/linux/pci-ecam.h index 1af5cb02ef7f..2c22da6bf818 100644 --- a/include/linux/pci-ecam.h +++ b/include/linux/pci-ecam.h @@ -9,6 +9,38 @@ #include #include +/* + * Memory address shift values for the byte-level address that + * can be used when accessing the PCI/PCI Express Configuration Space. + */ + +/* + * Configuration Access Mechanism (CAM) + * + * See PCI Local Bus Specification, Revision 3.0, Section 3.2.2.3, + * p. 48 and Section 6.1, p. 213. + */ +#define PCIE_CAM_BUS_SHIFT 16 /* Bus Number */ + +/* + * Enhanced Configuration Access Mechanism (ECAM) + * + * See PCI Express Base Specification, Revision 5.0, Version 1.0, + * Section 7.2.2, Table 7-1, p. 677. + */ +#define PCIE_ECAM_BUS_SHIFT 20 /* Bus Number */ +#define PCIE_ECAM_DEV_SHIFT 15 /* Device Number */ +#define PCIE_ECAM_FUN_SHIFT 12 /* Function Number */ + +#define PCIE_ECAM_BUS(x) (((x) & 0xff) << PCIE_ECAM_BUS_SHIFT) +#define PCIE_ECAM_DEVFN(x) (((x) & 0xff) << PCIE_ECAM_FUN_SHIFT) +#define PCIE_ECAM_REG(x) ((x) & 0xfff) + +#define PCIE_ECAM_OFFSET(bus, devfn, where) \ + (PCIE_ECAM_BUS(bus->number) | \ + PCIE_ECAM_DEVFN(devfn) | \ + PCIE_ECAM_REG(where)) + /* * struct to hold pci ops and bus shift of the config window * for a PCI controller. -- 2.28.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 66D86C4727E for ; Thu, 1 Oct 2020 22:03:15 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 08ED1206DB for ; Thu, 1 Oct 2020 22:03:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="u7w69WhT" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 08ED1206DB Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=3+5masd8jEJnj6Z1XGiZ9RJzT3rAiJMuuHycmNamBCQ=; b=u7w69WhTCHg0RGyXqmZqT7S7E2 z9aJygaPwl153LrBMKKvUJyf9hF/lxo21MRf+I+Di08btwJ7XYvPRhyJvxqRYGN4vbRV1Y2Jbgi9/ B29Ji08/f9jzBvQ82S01bCcB6FFkNGxTRuwQ/1qS+a6oP1FeQf6l4SJmXmynDTU9zvNUmYdPtrKkv as0w6Jcap9V0vuJvqnHERfBz7lVkKqGrI9PuqGWt3Cm3xjBvQyWGh9oy62tIq74IdmSZ83ViLrUYz 0M500gJbtKvJgOfNRehq43DT0VU1ePSbYNSwx/dM2SCgjisDQSUoLMFB6zj1aPEDs6jwz1QkSxyyF 2Tvms6xA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kO6fL-0004oU-KM; Thu, 01 Oct 2020 22:03:07 +0000 Received: from mail-lj1-f193.google.com ([209.85.208.193]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kO6f3-0004fy-6u; Thu, 01 Oct 2020 22:02:51 +0000 Received: by mail-lj1-f193.google.com with SMTP id u4so135235ljd.10; Thu, 01 Oct 2020 15:02:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=7+0iqnqR1+uN0pgQm+DWt3g7O2MdVYRWt5r0a7zSrgA=; b=H4HQHu2NPdH3ipot1jvCfwjaa9AWzF1A3bTAAYIAVvKKBiQryMaZQZbgoXhCeUVAhk 9HJCqO7yI0PUuZyvp6tx8fjlwTgxf0ew6EYZ+QtwL74FjbaWwFRe/Dea7VdXdavHLMqB NYnM7PZqdRPhWwqb1s2jEPf+J5+c3Mop7HS5LoSlJEKUPOqfVBeo4JAIBRPNxTUn9Hl6 Igei1rNEVXuK/fvnj7zwmLHdRJIFV0gBSMkd1wnE4gA2/FMRKJVCrYimw7s47H8XwHoS YqftVKWQtvwLj+za8wHX8muwNC0xoDvSQh9/pCwnrhcYg9qdq4ZFeDGn1DuJkVEDKdWi O4tw== X-Gm-Message-State: AOAM530oxRqwrKGRYJhYT0WFwYPKroAVtIKp2jxNCi2Kx9MlELhef+Yk wF6914Z8LuWWpj00tJJsxTI= X-Google-Smtp-Source: ABdhPJzxiz4ywkGK2++fFndUVni9+gOpIkzZCHiZNrN9W0+g0WvnhxG4vDFORBo9gt/sSS5qSz4cxw== X-Received: by 2002:a2e:90c3:: with SMTP id o3mr2843247ljg.147.1601589765998; Thu, 01 Oct 2020 15:02:45 -0700 (PDT) Received: from workstation.lan ([95.155.85.46]) by smtp.gmail.com with ESMTPSA id f25sm582154ljn.29.2020.10.01.15.02.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Oct 2020 15:02:45 -0700 (PDT) From: =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= To: Bjorn Helgaas Subject: [PATCH v3] PCI: Unify ECAM constants in native PCI Express drivers Date: Thu, 1 Oct 2020 22:02:44 +0000 Message-Id: <20201001220244.1271878-1-kw@linux.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201001_180249_278942_DE2EC328 X-CRM114-Status: GOOD ( 24.10 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Herring , Lorenzo Pieralisi , Heiko Stuebner , linux-pci@vger.kernel.org, Shawn Lin , Jonathan Cameron , Michal Simek , linux-rockchip@lists.infradead.org, Zhou Wang , Robert Richter , Jonathan Chocron , Toan Le , Will Deacon , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org VW5pZnkgRUNBTS1yZWxhdGVkIGNvbnN0YW50cyBpbnRvIGEgc2luZ2xlIHNldCBvZiBzdGFuZGFy ZCBjb25zdGFudHMKZGVmaW5pbmcgbWVtb3J5IGFkZHJlc3Mgc2hpZnQgdmFsdWVzIGZvciB0aGUg Ynl0ZS1sZXZlbCBhZGRyZXNzIHRoYXQgY2FuCmJlIHVzZWQgd2hlbiBhY2Nlc3NpbmcgdGhlIFBD SSBFeHByZXNzIENvbmZpZ3VyYXRpb24gU3BhY2UsIGFuZCB0aGVuCm1vdmUgbmF0aXZlIFBDSSBF eHByZXNzIGNvbnRyb2xsZXIgZHJpdmVycyB0byB1c2UgbmV3bHkgaW50cm9kdWNlZApkZWZpbml0 aW9ucyByZXRpcmluZyBhbnkgZHJpdmVyLXNwZWNpZmljIG9uZXMuCgpUaGUgRUNBTSAoIkVuaGFu Y2VkIENvbmZpZ3VyYXRpb24gQWNjZXNzIE1lY2hhbmlzbSIpIGlzIGRlZmluZWQgYnkgdGhlClBD SSBFeHByZXNzIHNwZWNpZmljYXRpb24gKHNlZSBQQ0kgRXhwcmVzcyBCYXNlIFNwZWNpZmljYXRp b24sIFJldmlzaW9uCjUuMCwgVmVyc2lvbiAxLjAsIFNlY3Rpb24gNy4yLjIsIHAuIDY3NiksIHRo dXMgbW9zdCBoYXJkd2FyZSBzaG91bGQKaW1wbGVtZW50IGl0IHRoZSBzYW1lIHdheS4gIE1vc3Qg b2YgdGhlIG5hdGl2ZSBQQ0kgRXhwcmVzcyBjb250cm9sbGVyCmRyaXZlcnMgZGVmaW5lIHRoZWly IEVDQU0tcmVsYXRlZCBjb25zdGFudHMsIG1hbnkgb2YgdGhlc2UgY291bGQgYmUKc2hhcmVkLCBv ciB1c2Ugb3Blbi1jb2RlZCB2YWx1ZXMgd2hlbiBzZXR0aW5nIHRoZSAuYnVzX3NoaWZ0IGZpZWxk IG9mCnRoZSBzdHJ1Y3QgcGNpX2VjYW1fb3BzLgoKQWxsIG9mIHRoZSBuZXdseSBhZGRlZCBjb25z dGFudHMgc2hvdWxkIHJlbW92ZSBhbWJpZ3VpdHkgYW5kIHJlZHVjZSB0aGUKbnVtYmVyIG9mIG9w ZW4tY29kZWQgdmFsdWVzLCBhbmQgYWxzbyBjb3JyZWxhdGUgbW9yZSBzdHJvbmdseSB3aXRoIHRo ZQpkZXNjcmlwdGlvbnMgaW4gdGhlIGFmb3JlbWVudGlvbmVkIHNwZWNpZmljYXRpb24gKHNlZSBU YWJsZSA3LTEKIkVuaGFuY2VkIENvbmZpZ3VyYXRpb24gQWRkcmVzcyBNYXBwaW5nIiwgcC4gNjc3 KS4KClRoZXJlIGlzIG5vIGNoYW5nZSB0byBmdW5jdGlvbmFsaXR5LgoKU3VnZ2VzdGVkLWJ5OiBC am9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBLcnp5c3p0 b2YgV2lsY3p5xYRza2kgPGt3QGxpbnV4LmNvbT4KLS0tCkNoYW5nZXMgaW4gdjM6CiAgVXBkYXRl ZCBjb21taXQgbWVzc2FnZSB3b3JkaW5nLgogIFVwZGF0ZWQgcmVnYXJkaW5nIGN1c3RvbSBFQ0FN IGJ1cyBzaGlmdCB2YWx1ZXMgYW5kIGNvbmNlcm5pbmcgUENJIGJhc2UKICBjb25maWd1cmF0aW9u IHNwYWNlIGFjY2VzcyBmb3IgVHlwZSAxIGFjY2Vzcy4KICBSZWZhY3RvcmVkIHJvY2tjaGlwX3Bj aWVfcmRfb3RoZXJfY29uZigpIGFuZCByb2NrY2hpcF9wY2llX3dyX290aGVyX2NvbmYoKQogIGFu ZCByZW1vdmVkIHRoZSAiYnVzZGV2IiB2YXJpYWJsZS4KICBSZW1vdmVkIHN1cnBsdXMgInJlbGJ1 cyIgdmFyaWFibGUgZnJvbSBud2xfcGNpZV9tYXBfYnVzKCkgYW5kCiAgeGlsaW54X3BjaWVfbWFw X2J1cygpLgogIFJlbmFtZWQgdGhlIFBDSUVfRUNBTV9BRERSKCkgbWFjcm8gdG8gUENJRV9FQ0FN X09GRlNFVCgpLgoKQ2hhbmdlcyBpbiB2MjoKICBVc2UgUENJRV9FQ0FNX0FERFIgbWFjcm8gd2hl biBjb21wdXRpbmcgRUNBTSBhZGRyZXNzIG9mZnNldCwgYnV0IGRyb3AKICBQQ0lfU0xPVCBhbmQg UENJX0ZVTkMgbWFjcm9zIGZyb20gdGhlIFBDSUVfRUNBTV9BRERSIG1hY3JvIGluIGZhdm91cgog IG9mIHVzaW5nIGEgc2luZ2xlIHZhbHVlIGZvciB0aGUgZGV2aWNlL2Z1bmN0aW9uLgoKIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYWwuYyAgICAgICAgfCAgOCArKy0tLS0KIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jICAgICAgfCAgNCArLS0KIGRyaXZlcnMv cGNpL2NvbnRyb2xsZXIvcGNpLWhvc3QtZ2VuZXJpYy5jICAgfCAgNCArLS0KIGRyaXZlcnMvcGNp L2NvbnRyb2xsZXIvcGNpLXRodW5kZXItZWNhbS5jICAgfCAgMiArLQogZHJpdmVycy9wY2kvY29u dHJvbGxlci9wY2ktdGh1bmRlci1wZW0uYyAgICB8IDEzICsrKysrKystLQogZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2kteGdlbmUuYyAgICAgICAgICB8IDEzICsrKysrKystLQogZHJpdmVycy9w Y2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYyB8IDI3ICsrKysrKysrKy0tLS0tLS0t CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaCAgICAgIHwgIDggKy0tLS0t CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtdGFuZ28uYyAgICAgICAgIHwgIDIgKy0KIGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbngtbndsLmMgICAgfCAgOSArKy0tLS0KIGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYyAgICAgICAgfCAxMSArKy0tLS0tCiBk cml2ZXJzL3BjaS9lY2FtLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBpbmNs dWRlL2xpbnV4L3BjaS1lY2FtLmggICAgICAgICAgICAgICAgICAgIHwgMzIgKysrKysrKysrKysr KysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMKaW5kZXggZDU3ZDRlZTE1ODQ4 Li43YzJhYTA0OTExM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aWUtYWwuYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMKQEAgLTc2 LDcgKzc2LDcgQEAgc3RhdGljIGludCBhbF9wY2llX2luaXQoc3RydWN0IHBjaV9jb25maWdfd2lu ZG93ICpjZmcpCiB9CiAKIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgYWxfcGNpZV9vcHMgPSB7 Ci0JLmJ1c19zaGlmdCAgICA9IDIwLAorCS5idXNfc2hpZnQgICAgPSBQQ0lFX0VDQU1fQlVTX1NI SUZULAogCS5pbml0ICAgICAgICAgPSAgYWxfcGNpZV9pbml0LAogCS5wY2lfb3BzICAgICAgPSB7 CiAJCS5tYXBfYnVzICAgID0gYWxfcGNpZV9tYXBfYnVzLApAQCAtMTM4LDggKzEzOCw2IEBAIHN0 cnVjdCBhbF9wY2llIHsKIAlzdHJ1Y3QgYWxfcGNpZV90YXJnZXRfYnVzX2NmZyB0YXJnZXRfYnVz X2NmZzsKIH07CiAKLSNkZWZpbmUgUENJRV9FQ0FNX0RFVkZOKHgpCQkoKCh4KSAmIDB4ZmYpIDw8 IDEyKQotCiAjZGVmaW5lIHRvX2FsX3BjaWUoeCkJCWRldl9nZXRfZHJ2ZGF0YSgoeCktPmRldikK IAogc3RhdGljIGlubGluZSB1MzIgYWxfcGNpZV9jb250cm9sbGVyX3JlYWRsKHN0cnVjdCBhbF9w Y2llICpwY2llLCB1MzIgb2Zmc2V0KQpAQCAtMjI4LDcgKzIyNiw3IEBAIHN0YXRpYyB2b2lkIF9f aW9tZW0gKmFsX3BjaWVfY29uZl9hZGRyX21hcChzdHJ1Y3QgYWxfcGNpZSAqcGNpZSwKIAl2b2lk IF9faW9tZW0gKnBjaV9iYXNlX2FkZHI7CiAKIAlwY2lfYmFzZV9hZGRyID0gKHZvaWQgX19pb21l bSAqKSgodWludHB0cl90KXBwLT52YV9jZmcwX2Jhc2UgKwotCQkJCQkgKGJ1c25yX2VjYW0gPDwg MjApICsKKwkJCQkJIFBDSUVfRUNBTV9CVVMoYnVzbnJfZWNhbSkgKwogCQkJCQkgUENJRV9FQ0FN X0RFVkZOKGRldmZuKSk7CiAKIAlpZiAoYnVzbnJfcmVnICE9IHRhcmdldF9idXNfY2ZnLT5yZWdf dmFsKSB7CkBAIC0zMDAsNyArMjk4LDcgQEAgc3RhdGljIHZvaWQgYWxfcGNpZV9jb25maWdfcHJl cGFyZShzdHJ1Y3QgYWxfcGNpZSAqcGNpZSkKIAogCXRhcmdldF9idXNfY2ZnID0gJnBjaWUtPnRh cmdldF9idXNfY2ZnOwogCi0JZWNhbV9idXNfbWFzayA9IChwY2llLT5lY2FtX3NpemUgPj4gMjAp IC0gMTsKKwllY2FtX2J1c19tYXNrID0gKHBjaWUtPmVjYW1fc2l6ZSA+PiBQQ0lFX0VDQU1fQlVT X1NISUZUKSAtIDE7CiAJaWYgKGVjYW1fYnVzX21hc2sgPiAyNTUpIHsKIAkJZGV2X3dhcm4ocGNp ZS0+ZGV2LCAiRUNBTSB3aW5kb3cgc2l6ZSBpcyBsYXJnZXIgdGhhbiAyNTZNQi4gQ3V0dGluZyBv ZmYgYXQgMjU2XG4iKTsKIAkJZWNhbV9idXNfbWFzayA9IDI1NTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxl ci9kd2MvcGNpZS1oaXNpLmMKaW5kZXggNWNhODY3OTZkNDNhLi5iN2FmYmYxZDRiZDkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jCisrKyBiL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jCkBAIC0xMDAsNyArMTAwLDcgQEAgc3Rh dGljIGludCBoaXNpX3BjaWVfaW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNmZykKIH0K IAogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyBoaXNpX3BjaWVfb3BzID0gewotCS5idXNfc2hp ZnQgICAgPSAyMCwKKwkuYnVzX3NoaWZ0ICAgID0gUENJRV9FQ0FNX0JVU19TSElGVCwKIAkuaW5p dCAgICAgICAgID0gIGhpc2lfcGNpZV9pbml0LAogCS5wY2lfb3BzICAgICAgPSB7CiAJCS5tYXBf YnVzICAgID0gaGlzaV9wY2llX21hcF9idXMsCkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIGlu dCBoaXNpX3BjaWVfcGxhdGZvcm1faW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNmZykK IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgaGlzaV9wY2llX3BsYXRmb3Jt X29wcyA9IHsKLQkuYnVzX3NoaWZ0ICAgID0gMjAsCisJLmJ1c19zaGlmdCAgICA9IFBDSUVfRUNB TV9CVVNfU0hJRlQsCiAJLmluaXQgICAgICAgICA9ICBoaXNpX3BjaWVfcGxhdGZvcm1faW5pdCwK IAkucGNpX29wcyAgICAgID0gewogCQkubWFwX2J1cyAgICA9IGhpc2lfcGNpZV9tYXBfYnVzLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaG9zdC1nZW5lcmljLmMgYi9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1ob3N0LWdlbmVyaWMuYwppbmRleCBiNTE5NzdhYmZk ZjEuLjU5MzQzNmFlZTdhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kt aG9zdC1nZW5lcmljLmMKKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaG9zdC1nZW5l cmljLmMKQEAgLTE1LDcgKzE1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2Uu aD4KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgZ2VuX3BjaV9jZmdfY2FtX2J1 c19vcHMgPSB7Ci0JLmJ1c19zaGlmdAk9IDE2LAorCS5idXNfc2hpZnQJPSBQQ0lFX0NBTV9CVVNf U0hJRlQsCiAJLnBjaV9vcHMJPSB7CiAJCS5tYXBfYnVzCT0gcGNpX2VjYW1fbWFwX2J1cywKIAkJ LnJlYWQJCT0gcGNpX2dlbmVyaWNfY29uZmlnX3JlYWQsCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRp YyB2b2lkIF9faW9tZW0gKnBjaV9kd19lY2FtX21hcF9idXMoc3RydWN0IHBjaV9idXMgKmJ1cywK IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgcGNpX2R3X2VjYW1fYnVzX29w cyA9IHsKLQkuYnVzX3NoaWZ0CT0gMjAsCisJLmJ1c19zaGlmdAk9IFBDSUVfRUNBTV9CVVNfU0hJ RlQsCiAJLnBjaV9vcHMJPSB7CiAJCS5tYXBfYnVzCT0gcGNpX2R3X2VjYW1fbWFwX2J1cywKIAkJ LnJlYWQJCT0gcGNpX2dlbmVyaWNfY29uZmlnX3JlYWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL3BjaS10aHVuZGVyLWVjYW0uYyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv cGNpLXRodW5kZXItZWNhbS5jCmluZGV4IDdlODgzNWZlZTVmNy4uMjJlZDdlOTk1YjM5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVyLWVjYW0uYworKysgYi9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVyLWVjYW0uYwpAQCAtMzQ2LDcgKzM0Niw3 IEBAIHN0YXRpYyBpbnQgdGh1bmRlcl9lY2FtX2NvbmZpZ193cml0ZShzdHJ1Y3QgcGNpX2J1cyAq YnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sCiB9CiAKIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMg cGNpX3RodW5kZXJfZWNhbV9vcHMgPSB7Ci0JLmJ1c19zaGlmdAk9IDIwLAorCS5idXNfc2hpZnQJ PSBQQ0lFX0VDQU1fQlVTX1NISUZULAogCS5wY2lfb3BzCT0gewogCQkubWFwX2J1cyAgICAgICAg PSBwY2lfZWNhbV9tYXBfYnVzLAogCQkucmVhZCAgICAgICAgICAgPSB0aHVuZGVyX2VjYW1fY29u ZmlnX3JlYWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVy LXBlbS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktdGh1bmRlci1wZW0uYwppbmRleCAz Zjg0Nzk2OTE0M2UuLjFhM2Y3MGFjNjFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9wY2ktdGh1bmRlci1wZW0uYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10 aHVuZGVyLXBlbS5jCkBAIC0xOSw2ICsxOSwxNSBAQAogI2RlZmluZSBQRU1fQ0ZHX1dSIDB4MjgK ICNkZWZpbmUgUEVNX0NGR19SRCAweDMwCiAKKy8qCisgKiBFbmhhbmNlZCBDb25maWd1cmF0aW9u IEFjY2VzcyBNZWNoYW5pc20gKEVDQU0pCisgKgorICogTi5CLiBUaGlzIGlzIGEgbm9uLXN0YW5k YXJkIHBsYXRmb3JtLXNwZWNpZmljIEVDQU0gYnVzIHNoaWZ0IHZhbHVlLiAgRm9yCisgKiBzdGFu ZGFyZCB2YWx1ZXMgZGVmaW5lZCBpbiB0aGUgUENJIEV4cHJlc3MgQmFzZSBTcGVjaWZpY2F0aW9u IHNlZQorICogaW5jbHVkZS9saW51eC9wY2ktZWNhbS5oLgorICovCisjZGVmaW5lIFRIVU5ERVJf UENJRV9FQ0FNX0JVU19TSElGVAkyNAorCiBzdHJ1Y3QgdGh1bmRlcl9wZW1fcGNpIHsKIAl1MzIJ CWVhX2VudHJ5WzNdOwogCXZvaWQgX19pb21lbQkqcGVtX3JlZ19iYXNlOwpAQCAtNDA0LDcgKzQx Myw3IEBAIHN0YXRpYyBpbnQgdGh1bmRlcl9wZW1fYWNwaV9pbml0KHN0cnVjdCBwY2lfY29uZmln X3dpbmRvdyAqY2ZnKQogfQogCiBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIHRodW5kZXJfcGVt X2VjYW1fb3BzID0gewotCS5idXNfc2hpZnQJPSAyNCwKKwkuYnVzX3NoaWZ0CT0gVEhVTkRFUl9Q Q0lFX0VDQU1fQlVTX1NISUZULAogCS5pbml0CQk9IHRodW5kZXJfcGVtX2FjcGlfaW5pdCwKIAku cGNpX29wcwk9IHsKIAkJLm1hcF9idXMJPSBwY2lfZWNhbV9tYXBfYnVzLApAQCAtNDQxLDcgKzQ1 MCw3IEBAIHN0YXRpYyBpbnQgdGh1bmRlcl9wZW1fcGxhdGZvcm1faW5pdChzdHJ1Y3QgcGNpX2Nv bmZpZ193aW5kb3cgKmNmZykKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMg cGNpX3RodW5kZXJfcGVtX29wcyA9IHsKLQkuYnVzX3NoaWZ0CT0gMjQsCisJLmJ1c19zaGlmdAk9 IFRIVU5ERVJfUENJRV9FQ0FNX0JVU19TSElGVCwKIAkuaW5pdAkJPSB0aHVuZGVyX3BlbV9wbGF0 Zm9ybV9pbml0LAogCS5wY2lfb3BzCT0gewogCQkubWFwX2J1cwk9IHBjaV9lY2FtX21hcF9idXMs CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS14Z2VuZS5jIGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2kteGdlbmUuYwppbmRleCA4ZTBkYjg0ZjA4OWQuLmU2N2U3Mjgx OGQyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kteGdlbmUuYworKysg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS14Z2VuZS5jCkBAIC02MCw2ICs2MCwxNSBAQAog I2RlZmluZSBYR0VORV9QQ0lFX0lQX1ZFUl8xCQkxCiAjZGVmaW5lIFhHRU5FX1BDSUVfSVBfVkVS XzIJCTIKIAorLyoKKyAqIEVuaGFuY2VkIENvbmZpZ3VyYXRpb24gQWNjZXNzIE1lY2hhbmlzbSAo RUNBTSkKKyAqCisgKiBOLkIuIFRoaXMgaXMgYSBub24tc3RhbmRhcmQgcGxhdGZvcm0tc3BlY2lm aWMgRUNBTSBidXMgc2hpZnQgdmFsdWUuICBGb3IKKyAqIHN0YW5kYXJkIHZhbHVlcyBkZWZpbmVk IGluIHRoZSBQQ0kgRXhwcmVzcyBCYXNlIFNwZWNpZmljYXRpb24gc2VlCisgKiBpbmNsdWRlL2xp bnV4L3BjaS1lY2FtLmguCisgKi8KKyNkZWZpbmUgWEdFTkVfUENJRV9FQ0FNX0JVU19TSElGVAkx NgorCiAjaWYgZGVmaW5lZChDT05GSUdfUENJX1hHRU5FKSB8fCAoZGVmaW5lZChDT05GSUdfQUNQ SSkgJiYgZGVmaW5lZChDT05GSUdfUENJX1FVSVJLUykpCiBzdHJ1Y3QgeGdlbmVfcGNpZV9wb3J0 IHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUJKm5vZGU7CkBAIC0yNTcsNyArMjY2LDcgQEAgc3RhdGlj IGludCB4Z2VuZV92MV9wY2llX2VjYW1faW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNm ZykKIH0KIAogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyB4Z2VuZV92MV9wY2llX2VjYW1fb3Bz ID0gewotCS5idXNfc2hpZnQJPSAxNiwKKwkuYnVzX3NoaWZ0CT0gWEdFTkVfUENJRV9FQ0FNX0JV U19TSElGVCwKIAkuaW5pdAkJPSB4Z2VuZV92MV9wY2llX2VjYW1faW5pdCwKIAkucGNpX29wcwk9 IHsKIAkJLm1hcF9idXMJPSB4Z2VuZV9wY2llX21hcF9idXMsCkBAIC0yNzIsNyArMjgxLDcgQEAg c3RhdGljIGludCB4Z2VuZV92Ml9wY2llX2VjYW1faW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5k b3cgKmNmZykKIH0KIAogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyB4Z2VuZV92Ml9wY2llX2Vj YW1fb3BzID0gewotCS5idXNfc2hpZnQJPSAxNiwKKwkuYnVzX3NoaWZ0CT0gWEdFTkVfUENJRV9F Q0FNX0JVU19TSElGVCwKIAkuaW5pdAkJPSB4Z2VuZV92Ml9wY2llX2VjYW1faW5pdCwKIAkucGNp X29wcwk9IHsKIAkJLm1hcF9idXMJPSB4Z2VuZV9wY2llX21hcF9idXMsCmRpZmYgLS1naXQgYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5jIGIvZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYwppbmRleCAwYmIyZmIzZThhMGIuLjRjMDY5 ZjhmYTQyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlw LWhvc3QuYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5j CkBAIC0xNjAsMTIgKzE2MCwxMSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX3BjaWVfcmRfb3RoZXJf Y29uZihzdHJ1Y3Qgcm9ja2NoaXBfcGNpZSAqcm9ja2NoaXAsCiAJCQkJICAgICAgIHN0cnVjdCBw Y2lfYnVzICpidXMsIHUzMiBkZXZmbiwKIAkJCQkgICAgICAgaW50IHdoZXJlLCBpbnQgc2l6ZSwg dTMyICp2YWwpCiB7Ci0JdTMyIGJ1c2RldjsKKwl2b2lkIF9faW9tZW0gKmFkZHI7CiAKLQlidXNk ZXYgPSBQQ0lFX0VDQU1fQUREUihidXMtPm51bWJlciwgUENJX1NMT1QoZGV2Zm4pLAotCQkJCVBD SV9GVU5DKGRldmZuKSwgd2hlcmUpOworCWFkZHIgPSByb2NrY2hpcC0+cmVnX2Jhc2UgKyBQQ0lF X0VDQU1fT0ZGU0VUKGJ1cywgZGV2Zm4sIHdoZXJlKTsKIAotCWlmICghSVNfQUxJR05FRChidXNk ZXYsIHNpemUpKSB7CisJaWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpYWRkciwgc2l6ZSkpIHsK IAkJKnZhbCA9IDA7CiAJCXJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RFUl9OVU1CRVI7CiAJfQpA QCAtMTc4LDExICsxNzcsMTEgQEAgc3RhdGljIGludCByb2NrY2hpcF9wY2llX3JkX290aGVyX2Nv bmYoc3RydWN0IHJvY2tjaGlwX3BjaWUgKnJvY2tjaGlwLAogCQkJCQkJQVhJX1dSQVBQRVJfVFlQ RTFfQ0ZHKTsKIAogCWlmIChzaXplID09IDQpIHsKLQkJKnZhbCA9IHJlYWRsKHJvY2tjaGlwLT5y ZWdfYmFzZSArIGJ1c2Rldik7CisJCSp2YWwgPSByZWFkbChhZGRyKTsKIAl9IGVsc2UgaWYgKHNp emUgPT0gMikgewotCQkqdmFsID0gcmVhZHcocm9ja2NoaXAtPnJlZ19iYXNlICsgYnVzZGV2KTsK KwkJKnZhbCA9IHJlYWR3KGFkZHIpOwogCX0gZWxzZSBpZiAoc2l6ZSA9PSAxKSB7Ci0JCSp2YWwg PSByZWFkYihyb2NrY2hpcC0+cmVnX2Jhc2UgKyBidXNkZXYpOworCQkqdmFsID0gcmVhZGIoYWRk cik7CiAJfSBlbHNlIHsKIAkJKnZhbCA9IDA7CiAJCXJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RF Ul9OVU1CRVI7CkBAIC0xOTQsMTEgKzE5MywxMSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX3BjaWVf d3Jfb3RoZXJfY29uZihzdHJ1Y3Qgcm9ja2NoaXBfcGNpZSAqcm9ja2NoaXAsCiAJCQkJICAgICAg IHN0cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZmbiwKIAkJCQkgICAgICAgaW50IHdoZXJlLCBp bnQgc2l6ZSwgdTMyIHZhbCkKIHsKLQl1MzIgYnVzZGV2OworCXZvaWQgX19pb21lbSAqYWRkcjsK IAotCWJ1c2RldiA9IFBDSUVfRUNBTV9BRERSKGJ1cy0+bnVtYmVyLCBQQ0lfU0xPVChkZXZmbiks Ci0JCQkJUENJX0ZVTkMoZGV2Zm4pLCB3aGVyZSk7Ci0JaWYgKCFJU19BTElHTkVEKGJ1c2Rldiwg c2l6ZSkpCisJYWRkciA9IHJvY2tjaGlwLT5yZWdfYmFzZSArIFBDSUVfRUNBTV9PRkZTRVQoYnVz LCBkZXZmbiwgd2hlcmUpOworCisJaWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpYWRkciwgc2l6 ZSkpCiAJCXJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RFUl9OVU1CRVI7CiAKIAlpZiAocGNpX2lz X3Jvb3RfYnVzKGJ1cy0+cGFyZW50KSkKQEAgLTIwOSwxMSArMjA4LDExIEBAIHN0YXRpYyBpbnQg cm9ja2NoaXBfcGNpZV93cl9vdGhlcl9jb25mKHN0cnVjdCByb2NrY2hpcF9wY2llICpyb2NrY2hp cCwKIAkJCQkJCUFYSV9XUkFQUEVSX1RZUEUxX0NGRyk7CiAKIAlpZiAoc2l6ZSA9PSA0KQotCQl3 cml0ZWwodmFsLCByb2NrY2hpcC0+cmVnX2Jhc2UgKyBidXNkZXYpOworCQl3cml0ZWwodmFsLCBh ZGRyKTsKIAllbHNlIGlmIChzaXplID09IDIpCi0JCXdyaXRldyh2YWwsIHJvY2tjaGlwLT5yZWdf YmFzZSArIGJ1c2Rldik7CisJCXdyaXRldyh2YWwsIGFkZHIpOwogCWVsc2UgaWYgKHNpemUgPT0g MSkKLQkJd3JpdGViKHZhbCwgcm9ja2NoaXAtPnJlZ19iYXNlICsgYnVzZGV2KTsKKwkJd3JpdGVi KHZhbCwgYWRkcik7CiAJZWxzZQogCQlyZXR1cm4gUENJQklPU19CQURfUkVHSVNURVJfTlVNQkVS OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaCBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC5oCmluZGV4IGM3ZDAxNzhmYzhj Mi4uMTY1MGE1MDg3NDUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUt cm9ja2NoaXAuaAorKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaApA QCAtMTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8 bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLWVjYW0uaD4KIAogLyoKICAqIFRoZSB1 cHBlciAxNiBiaXRzIG9mIFBDSUVfQ0xJRU5UX0NPTkZJRyBhcmUgYSB3cml0ZSBtYXNrIGZvciB0 aGUgbG93ZXIgMTYKQEAgLTE3OCwxMyArMTc5LDYgQEAKICNkZWZpbmUgTUlOX0FYSV9BRERSX0JJ VFNfUEFTU0VECQk4CiAjZGVmaW5lIFBDSUVfUkNfU0VORF9QTUVfT0ZGCQkJMHgxMTk2MAogI2Rl ZmluZSBST0NLQ0hJUF9WRU5ET1JfSUQJCQkweDFkODcKLSNkZWZpbmUgUENJRV9FQ0FNX0JVUyh4 KQkJCSgoKHgpICYgMHhmZikgPDwgMjApCi0jZGVmaW5lIFBDSUVfRUNBTV9ERVYoeCkJCQkoKCh4 KSAmIDB4MWYpIDw8IDE1KQotI2RlZmluZSBQQ0lFX0VDQU1fRlVOQyh4KQkJCSgoKHgpICYgMHg3 KSA8PCAxMikKLSNkZWZpbmUgUENJRV9FQ0FNX1JFRyh4KQkJCSgoKHgpICYgMHhmZmYpIDw8IDAp Ci0jZGVmaW5lIFBDSUVfRUNBTV9BRERSKGJ1cywgZGV2LCBmdW5jLCByZWcpIFwKLQkgIChQQ0lF X0VDQU1fQlVTKGJ1cykgfCBQQ0lFX0VDQU1fREVWKGRldikgfCBcCi0JICAgUENJRV9FQ0FNX0ZV TkMoZnVuYykgfCBQQ0lFX0VDQU1fUkVHKHJlZykpCiAjZGVmaW5lIFBDSUVfTElOS19JU19MMih4 KSBcCiAJKCgoeCkgJiBQQ0lFX0NMSUVOVF9ERUJVR19MVFNTTV9NQVNLKSA9PSBQQ0lFX0NMSUVO VF9ERUJVR19MVFNTTV9MMikKICNkZWZpbmUgUENJRV9MSU5LX1VQKHgpIFwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS10YW5nby5jIGIvZHJpdmVycy9wY2kvY29udHJv bGxlci9wY2llLXRhbmdvLmMKaW5kZXggZDA5M2E4Y2U0YmIxLi44ZjBkNjk1YWZiZGUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS10YW5nby5jCisrKyBiL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvcGNpZS10YW5nby5jCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIGlu dCBzbXA4NzU5X2NvbmZpZ193cml0ZShzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNpZ25lZCBpbnQg ZGV2Zm4sCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIHNtcDg3NTlfZWNh bV9vcHMgPSB7Ci0JLmJ1c19zaGlmdAk9IDIwLAorCS5idXNfc2hpZnQJPSBQQ0lFX0VDQU1fQlVT X1NISUZULAogCS5wY2lfb3BzCT0gewogCQkubWFwX2J1cwk9IHBjaV9lY2FtX21hcF9idXMsCiAJ CS5yZWFkCQk9IHNtcDg3NTlfY29uZmlnX3JlYWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9j b250cm9sbGVyL3BjaWUteGlsaW54LW53bC5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ll LXhpbGlueC1ud2wuYwppbmRleCBmM2NmN2Q2MTkyNGYuLmNmZDEyYjc1YmFjYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXhpbGlueC1ud2wuYworKysgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LW53bC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5j bHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KICNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KICNp bmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2ktZWNhbS5oPgogI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L2lycWNoaXAvY2hh aW5lZF9pcnEuaD4KIApAQCAtMTI0LDggKzEyNSw2IEBACiAjZGVmaW5lIEVfRUNBTV9DUl9FTkFC TEUJCUJJVCgwKQogI2RlZmluZSBFX0VDQU1fU0laRV9MT0MJCQlHRU5NQVNLKDIwLCAxNikKICNk ZWZpbmUgRV9FQ0FNX1NJWkVfU0hJRlQJCTE2Ci0jZGVmaW5lIEVDQU1fQlVTX0xPQ19TSElGVAkJ MjAKLSNkZWZpbmUgRUNBTV9ERVZfTE9DX1NISUZUCQkxMgogI2RlZmluZSBOV0xfRUNBTV9WQUxV RV9ERUZBVUxUCQkxMgogCiAjZGVmaW5lIENGR19ETUFfUkVHX0JBUgkJCUdFTk1BU0soMiwgMCkK QEAgLTI0MCwxNSArMjM5LDExIEBAIHN0YXRpYyB2b2lkIF9faW9tZW0gKm53bF9wY2llX21hcF9i dXMoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IGRldmZuLAogCQkJCSAgICAgIGlu dCB3aGVyZSkKIHsKIAlzdHJ1Y3QgbndsX3BjaWUgKnBjaWUgPSBidXMtPnN5c2RhdGE7Ci0JaW50 IHJlbGJ1czsKIAogCWlmICghbndsX3BjaWVfdmFsaWRfZGV2aWNlKGJ1cywgZGV2Zm4pKQogCQly ZXR1cm4gTlVMTDsKIAotCXJlbGJ1cyA9IChidXMtPm51bWJlciA8PCBFQ0FNX0JVU19MT0NfU0hJ RlQpIHwKLQkJCShkZXZmbiA8PCBFQ0FNX0RFVl9MT0NfU0hJRlQpOwotCi0JcmV0dXJuIHBjaWUt PmVjYW1fYmFzZSArIHJlbGJ1cyArIHdoZXJlOworCXJldHVybiBwY2llLT5lY2FtX2Jhc2UgKyBQ Q0lFX0VDQU1fT0ZGU0VUKGJ1cywgZGV2Zm4sIHdoZXJlKTsKIH0KIAogLyogUENJZSBvcGVyYXRp b25zICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMKaW5kZXggODUyM2JlNjFiYmE1 Li40OWJkZTUyNjZhYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14 aWxpbnguYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMKQEAgLTIx LDYgKzIxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgogI2luY2x1ZGUgPGxp bnV4L29mX2lycS5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L3Bj aS1lY2FtLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAKICNpbmNsdWRl ICIuLi9wY2kuaCIKQEAgLTg2LDEwICs4Nyw2IEBACiAvKiBQaHkgU3RhdHVzL0NvbnRyb2wgUmVn aXN0ZXIgZGVmaW5pdGlvbnMgKi8KICNkZWZpbmUgWElMSU5YX1BDSUVfUkVHX1BTQ1JfTE5LVVAJ QklUKDExKQogCi0vKiBFQ0FNIGRlZmluaXRpb25zICovCi0jZGVmaW5lIEVDQU1fQlVTX05VTV9T SElGVAkJMjAKLSNkZWZpbmUgRUNBTV9ERVZfTlVNX1NISUZUCQkxMgotCiAvKiBOdW1iZXIgb2Yg TVNJIElSUXMgKi8KICNkZWZpbmUgWElMSU5YX05VTV9NU0lfSVJRUwkJMTI4CiAKQEAgLTE4Mywx NSArMTgwLDExIEBAIHN0YXRpYyB2b2lkIF9faW9tZW0gKnhpbGlueF9wY2llX21hcF9idXMoc3Ry dWN0IHBjaV9idXMgKmJ1cywKIAkJCQkJIHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHdoZXJlKQog ewogCXN0cnVjdCB4aWxpbnhfcGNpZV9wb3J0ICpwb3J0ID0gYnVzLT5zeXNkYXRhOwotCWludCBy ZWxidXM7CiAKIAlpZiAoIXhpbGlueF9wY2llX3ZhbGlkX2RldmljZShidXMsIGRldmZuKSkKIAkJ cmV0dXJuIE5VTEw7CiAKLQlyZWxidXMgPSAoYnVzLT5udW1iZXIgPDwgRUNBTV9CVVNfTlVNX1NI SUZUKSB8Ci0JCSAoZGV2Zm4gPDwgRUNBTV9ERVZfTlVNX1NISUZUKTsKLQotCXJldHVybiBwb3J0 LT5yZWdfYmFzZSArIHJlbGJ1cyArIHdoZXJlOworCXJldHVybiBwb3J0LT5yZWdfYmFzZSArIFBD SUVfRUNBTV9PRkZTRVQoYnVzLCBkZXZmbiwgd2hlcmUpOwogfQogCiAvKiBQQ0llIG9wZXJhdGlv bnMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2VjYW0uYyBiL2RyaXZlcnMvcGNpL2VjYW0u YwppbmRleCA4ZjA2NWE0MmZjMWEuLmZmZDAxMDI5MDA4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9w Y2kvZWNhbS5jCisrKyBiL2RyaXZlcnMvcGNpL2VjYW0uYwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVY UE9SVF9TWU1CT0xfR1BMKHBjaV9lY2FtX21hcF9idXMpOwogCiAvKiBFQ0FNIG9wcyAqLwogY29u c3Qgc3RydWN0IHBjaV9lY2FtX29wcyBwY2lfZ2VuZXJpY19lY2FtX29wcyA9IHsKLQkuYnVzX3No aWZ0CT0gMjAsCisJLmJ1c19zaGlmdAk9IFBDSUVfRUNBTV9CVVNfU0hJRlQsCiAJLnBjaV9vcHMJ PSB7CiAJCS5tYXBfYnVzCT0gcGNpX2VjYW1fbWFwX2J1cywKIAkJLnJlYWQJCT0gcGNpX2dlbmVy aWNfY29uZmlnX3JlYWQsCkBAIC0xNjEsNyArMTYxLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGNp X2dlbmVyaWNfZWNhbV9vcHMpOwogI2lmIGRlZmluZWQoQ09ORklHX0FDUEkpICYmIGRlZmluZWQo Q09ORklHX1BDSV9RVUlSS1MpCiAvKiBFQ0FNIG9wcyBmb3IgMzItYml0IGFjY2VzcyBvbmx5IChu b24tY29tcGxpYW50KSAqLwogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyBwY2lfMzJiX29wcyA9 IHsKLQkuYnVzX3NoaWZ0CT0gMjAsCisJLmJ1c19zaGlmdAk9IFBDSUVfRUNBTV9CVVNfU0hJRlQs CiAJLnBjaV9vcHMJPSB7CiAJCS5tYXBfYnVzCT0gcGNpX2VjYW1fbWFwX2J1cywKIAkJLnJlYWQJ CT0gcGNpX2dlbmVyaWNfY29uZmlnX3JlYWQzMiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv cGNpLWVjYW0uaCBiL2luY2x1ZGUvbGludXgvcGNpLWVjYW0uaAppbmRleCAxYWY1Y2IwMmVmN2Yu LjJjMjJkYTZiZjgxOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wY2ktZWNhbS5oCisrKyBi L2luY2x1ZGUvbGludXgvcGNpLWVjYW0uaApAQCAtOSw2ICs5LDM4IEBACiAjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAKKy8qCisg KiBNZW1vcnkgYWRkcmVzcyBzaGlmdCB2YWx1ZXMgZm9yIHRoZSBieXRlLWxldmVsIGFkZHJlc3Mg dGhhdAorICogY2FuIGJlIHVzZWQgd2hlbiBhY2Nlc3NpbmcgdGhlIFBDSS9QQ0kgRXhwcmVzcyBD b25maWd1cmF0aW9uIFNwYWNlLgorICovCisKKy8qCisgKiBDb25maWd1cmF0aW9uIEFjY2VzcyBN ZWNoYW5pc20gKENBTSkKKyAqCisgKiBTZWUgUENJIExvY2FsIEJ1cyBTcGVjaWZpY2F0aW9uLCBS ZXZpc2lvbiAzLjAsIFNlY3Rpb24gMy4yLjIuMywKKyAqIHAuIDQ4IGFuZCBTZWN0aW9uIDYuMSwg cC4gMjEzLgorICovCisjZGVmaW5lIFBDSUVfQ0FNX0JVU19TSElGVAkxNiAvKiBCdXMgTnVtYmVy ICovCisKKy8qCisgKiBFbmhhbmNlZCBDb25maWd1cmF0aW9uIEFjY2VzcyBNZWNoYW5pc20gKEVD QU0pCisgKgorICogU2VlIFBDSSBFeHByZXNzIEJhc2UgU3BlY2lmaWNhdGlvbiwgUmV2aXNpb24g NS4wLCBWZXJzaW9uIDEuMCwKKyAqIFNlY3Rpb24gNy4yLjIsIFRhYmxlIDctMSwgcC4gNjc3Lgor ICovCisjZGVmaW5lIFBDSUVfRUNBTV9CVVNfU0hJRlQJMjAgLyogQnVzIE51bWJlciAqLworI2Rl ZmluZSBQQ0lFX0VDQU1fREVWX1NISUZUCTE1IC8qIERldmljZSBOdW1iZXIgKi8KKyNkZWZpbmUg UENJRV9FQ0FNX0ZVTl9TSElGVAkxMiAvKiBGdW5jdGlvbiBOdW1iZXIgKi8KKworI2RlZmluZSBQ Q0lFX0VDQU1fQlVTKHgpCSgoKHgpICYgMHhmZikgPDwgUENJRV9FQ0FNX0JVU19TSElGVCkKKyNk ZWZpbmUgUENJRV9FQ0FNX0RFVkZOKHgpCSgoKHgpICYgMHhmZikgPDwgUENJRV9FQ0FNX0ZVTl9T SElGVCkKKyNkZWZpbmUgUENJRV9FQ0FNX1JFRyh4KQkoKHgpICYgMHhmZmYpCisKKyNkZWZpbmUg UENJRV9FQ0FNX09GRlNFVChidXMsIGRldmZuLCB3aGVyZSkgXAorICAgIChQQ0lFX0VDQU1fQlVT KGJ1cy0+bnVtYmVyKSB8IFwKKyAgICAgUENJRV9FQ0FNX0RFVkZOKGRldmZuKSB8IFwKKyAgICAg UENJRV9FQ0FNX1JFRyh3aGVyZSkpCisKIC8qCiAgKiBzdHJ1Y3QgdG8gaG9sZCBwY2kgb3BzIGFu ZCBidXMgc2hpZnQgb2YgdGhlIGNvbmZpZyB3aW5kb3cKICAqIGZvciBhIFBDSSBjb250cm9sbGVy LgotLSAKMi4yOC4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmlu ZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9s aW51eC1yb2NrY2hpcAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87F5AC4727E for ; Thu, 1 Oct 2020 22:04:34 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 24DD4206FC for ; Thu, 1 Oct 2020 22:04:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="2SYV6qRK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 24DD4206FC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=BDGK8mvNynbr1ZO/K5jtEu1fKnym9jFBEdrH5+UryxA=; b=2SYV6qRKJD9xqEuiuOeCebeZEC Y+H8dF5ePOXF4j16hwdDPlL/NLbFCBPBt1L9Hp7AfC+wcPOb1lPUex9TQDPB4WUvTQFFsBJdrCN+I kGDlx2A1jOKY6PZeW5LID8AeJL6NHIEeryHYKaDT9IxH6WYd5Ey0Ok6TJ+Tf1Pn+sGeZ16A3DAma8 JFzSqEY0yyGqXVxfupQqJgLCerl2vnxWXyh/VnNMAHfpX4Z9uCXzRHrdPpMMccm9+4yBrPgICHVYu fJFjX+/zK1+o+EiJTWDZ3qxg3p2cJKnUz3Z95bv8UlpcbdfeZxqs5ZVSo3/RSFViWsKLQBIk4pBeU fkBixvhw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kO6fG-0004kY-34; Thu, 01 Oct 2020 22:03:02 +0000 Received: from mail-lj1-f193.google.com ([209.85.208.193]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kO6f3-0004fy-6u; Thu, 01 Oct 2020 22:02:51 +0000 Received: by mail-lj1-f193.google.com with SMTP id u4so135235ljd.10; Thu, 01 Oct 2020 15:02:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=7+0iqnqR1+uN0pgQm+DWt3g7O2MdVYRWt5r0a7zSrgA=; b=H4HQHu2NPdH3ipot1jvCfwjaa9AWzF1A3bTAAYIAVvKKBiQryMaZQZbgoXhCeUVAhk 9HJCqO7yI0PUuZyvp6tx8fjlwTgxf0ew6EYZ+QtwL74FjbaWwFRe/Dea7VdXdavHLMqB NYnM7PZqdRPhWwqb1s2jEPf+J5+c3Mop7HS5LoSlJEKUPOqfVBeo4JAIBRPNxTUn9Hl6 Igei1rNEVXuK/fvnj7zwmLHdRJIFV0gBSMkd1wnE4gA2/FMRKJVCrYimw7s47H8XwHoS YqftVKWQtvwLj+za8wHX8muwNC0xoDvSQh9/pCwnrhcYg9qdq4ZFeDGn1DuJkVEDKdWi O4tw== X-Gm-Message-State: AOAM530oxRqwrKGRYJhYT0WFwYPKroAVtIKp2jxNCi2Kx9MlELhef+Yk wF6914Z8LuWWpj00tJJsxTI= X-Google-Smtp-Source: ABdhPJzxiz4ywkGK2++fFndUVni9+gOpIkzZCHiZNrN9W0+g0WvnhxG4vDFORBo9gt/sSS5qSz4cxw== X-Received: by 2002:a2e:90c3:: with SMTP id o3mr2843247ljg.147.1601589765998; Thu, 01 Oct 2020 15:02:45 -0700 (PDT) Received: from workstation.lan ([95.155.85.46]) by smtp.gmail.com with ESMTPSA id f25sm582154ljn.29.2020.10.01.15.02.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Oct 2020 15:02:45 -0700 (PDT) From: =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= To: Bjorn Helgaas Subject: [PATCH v3] PCI: Unify ECAM constants in native PCI Express drivers Date: Thu, 1 Oct 2020 22:02:44 +0000 Message-Id: <20201001220244.1271878-1-kw@linux.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201001_180249_278942_DE2EC328 X-CRM114-Status: GOOD ( 24.10 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Herring , Lorenzo Pieralisi , Heiko Stuebner , linux-pci@vger.kernel.org, Shawn Lin , Jonathan Cameron , Michal Simek , linux-rockchip@lists.infradead.org, Zhou Wang , Robert Richter , Jonathan Chocron , Toan Le , Will Deacon , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org VW5pZnkgRUNBTS1yZWxhdGVkIGNvbnN0YW50cyBpbnRvIGEgc2luZ2xlIHNldCBvZiBzdGFuZGFy ZCBjb25zdGFudHMKZGVmaW5pbmcgbWVtb3J5IGFkZHJlc3Mgc2hpZnQgdmFsdWVzIGZvciB0aGUg Ynl0ZS1sZXZlbCBhZGRyZXNzIHRoYXQgY2FuCmJlIHVzZWQgd2hlbiBhY2Nlc3NpbmcgdGhlIFBD SSBFeHByZXNzIENvbmZpZ3VyYXRpb24gU3BhY2UsIGFuZCB0aGVuCm1vdmUgbmF0aXZlIFBDSSBF eHByZXNzIGNvbnRyb2xsZXIgZHJpdmVycyB0byB1c2UgbmV3bHkgaW50cm9kdWNlZApkZWZpbml0 aW9ucyByZXRpcmluZyBhbnkgZHJpdmVyLXNwZWNpZmljIG9uZXMuCgpUaGUgRUNBTSAoIkVuaGFu Y2VkIENvbmZpZ3VyYXRpb24gQWNjZXNzIE1lY2hhbmlzbSIpIGlzIGRlZmluZWQgYnkgdGhlClBD SSBFeHByZXNzIHNwZWNpZmljYXRpb24gKHNlZSBQQ0kgRXhwcmVzcyBCYXNlIFNwZWNpZmljYXRp b24sIFJldmlzaW9uCjUuMCwgVmVyc2lvbiAxLjAsIFNlY3Rpb24gNy4yLjIsIHAuIDY3NiksIHRo dXMgbW9zdCBoYXJkd2FyZSBzaG91bGQKaW1wbGVtZW50IGl0IHRoZSBzYW1lIHdheS4gIE1vc3Qg b2YgdGhlIG5hdGl2ZSBQQ0kgRXhwcmVzcyBjb250cm9sbGVyCmRyaXZlcnMgZGVmaW5lIHRoZWly IEVDQU0tcmVsYXRlZCBjb25zdGFudHMsIG1hbnkgb2YgdGhlc2UgY291bGQgYmUKc2hhcmVkLCBv ciB1c2Ugb3Blbi1jb2RlZCB2YWx1ZXMgd2hlbiBzZXR0aW5nIHRoZSAuYnVzX3NoaWZ0IGZpZWxk IG9mCnRoZSBzdHJ1Y3QgcGNpX2VjYW1fb3BzLgoKQWxsIG9mIHRoZSBuZXdseSBhZGRlZCBjb25z dGFudHMgc2hvdWxkIHJlbW92ZSBhbWJpZ3VpdHkgYW5kIHJlZHVjZSB0aGUKbnVtYmVyIG9mIG9w ZW4tY29kZWQgdmFsdWVzLCBhbmQgYWxzbyBjb3JyZWxhdGUgbW9yZSBzdHJvbmdseSB3aXRoIHRo ZQpkZXNjcmlwdGlvbnMgaW4gdGhlIGFmb3JlbWVudGlvbmVkIHNwZWNpZmljYXRpb24gKHNlZSBU YWJsZSA3LTEKIkVuaGFuY2VkIENvbmZpZ3VyYXRpb24gQWRkcmVzcyBNYXBwaW5nIiwgcC4gNjc3 KS4KClRoZXJlIGlzIG5vIGNoYW5nZSB0byBmdW5jdGlvbmFsaXR5LgoKU3VnZ2VzdGVkLWJ5OiBC am9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBLcnp5c3p0 b2YgV2lsY3p5xYRza2kgPGt3QGxpbnV4LmNvbT4KLS0tCkNoYW5nZXMgaW4gdjM6CiAgVXBkYXRl ZCBjb21taXQgbWVzc2FnZSB3b3JkaW5nLgogIFVwZGF0ZWQgcmVnYXJkaW5nIGN1c3RvbSBFQ0FN IGJ1cyBzaGlmdCB2YWx1ZXMgYW5kIGNvbmNlcm5pbmcgUENJIGJhc2UKICBjb25maWd1cmF0aW9u IHNwYWNlIGFjY2VzcyBmb3IgVHlwZSAxIGFjY2Vzcy4KICBSZWZhY3RvcmVkIHJvY2tjaGlwX3Bj aWVfcmRfb3RoZXJfY29uZigpIGFuZCByb2NrY2hpcF9wY2llX3dyX290aGVyX2NvbmYoKQogIGFu ZCByZW1vdmVkIHRoZSAiYnVzZGV2IiB2YXJpYWJsZS4KICBSZW1vdmVkIHN1cnBsdXMgInJlbGJ1 cyIgdmFyaWFibGUgZnJvbSBud2xfcGNpZV9tYXBfYnVzKCkgYW5kCiAgeGlsaW54X3BjaWVfbWFw X2J1cygpLgogIFJlbmFtZWQgdGhlIFBDSUVfRUNBTV9BRERSKCkgbWFjcm8gdG8gUENJRV9FQ0FN X09GRlNFVCgpLgoKQ2hhbmdlcyBpbiB2MjoKICBVc2UgUENJRV9FQ0FNX0FERFIgbWFjcm8gd2hl biBjb21wdXRpbmcgRUNBTSBhZGRyZXNzIG9mZnNldCwgYnV0IGRyb3AKICBQQ0lfU0xPVCBhbmQg UENJX0ZVTkMgbWFjcm9zIGZyb20gdGhlIFBDSUVfRUNBTV9BRERSIG1hY3JvIGluIGZhdm91cgog IG9mIHVzaW5nIGEgc2luZ2xlIHZhbHVlIGZvciB0aGUgZGV2aWNlL2Z1bmN0aW9uLgoKIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtYWwuYyAgICAgICAgfCAgOCArKy0tLS0KIGRyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jICAgICAgfCAgNCArLS0KIGRyaXZlcnMv cGNpL2NvbnRyb2xsZXIvcGNpLWhvc3QtZ2VuZXJpYy5jICAgfCAgNCArLS0KIGRyaXZlcnMvcGNp L2NvbnRyb2xsZXIvcGNpLXRodW5kZXItZWNhbS5jICAgfCAgMiArLQogZHJpdmVycy9wY2kvY29u dHJvbGxlci9wY2ktdGh1bmRlci1wZW0uYyAgICB8IDEzICsrKysrKystLQogZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2kteGdlbmUuYyAgICAgICAgICB8IDEzICsrKysrKystLQogZHJpdmVycy9w Y2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYyB8IDI3ICsrKysrKysrKy0tLS0tLS0t CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaCAgICAgIHwgIDggKy0tLS0t CiBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtdGFuZ28uYyAgICAgICAgIHwgIDIgKy0KIGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbngtbndsLmMgICAgfCAgOSArKy0tLS0KIGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14aWxpbnguYyAgICAgICAgfCAxMSArKy0tLS0tCiBk cml2ZXJzL3BjaS9lY2FtLmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0tCiBpbmNs dWRlL2xpbnV4L3BjaS1lY2FtLmggICAgICAgICAgICAgICAgICAgIHwgMzIgKysrKysrKysrKysr KysrKysrKysrCiAxMyBmaWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMKaW5kZXggZDU3ZDRlZTE1ODQ4 Li43YzJhYTA0OTExM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3Bj aWUtYWwuYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWFsLmMKQEAgLTc2 LDcgKzc2LDcgQEAgc3RhdGljIGludCBhbF9wY2llX2luaXQoc3RydWN0IHBjaV9jb25maWdfd2lu ZG93ICpjZmcpCiB9CiAKIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgYWxfcGNpZV9vcHMgPSB7 Ci0JLmJ1c19zaGlmdCAgICA9IDIwLAorCS5idXNfc2hpZnQgICAgPSBQQ0lFX0VDQU1fQlVTX1NI SUZULAogCS5pbml0ICAgICAgICAgPSAgYWxfcGNpZV9pbml0LAogCS5wY2lfb3BzICAgICAgPSB7 CiAJCS5tYXBfYnVzICAgID0gYWxfcGNpZV9tYXBfYnVzLApAQCAtMTM4LDggKzEzOCw2IEBAIHN0 cnVjdCBhbF9wY2llIHsKIAlzdHJ1Y3QgYWxfcGNpZV90YXJnZXRfYnVzX2NmZyB0YXJnZXRfYnVz X2NmZzsKIH07CiAKLSNkZWZpbmUgUENJRV9FQ0FNX0RFVkZOKHgpCQkoKCh4KSAmIDB4ZmYpIDw8 IDEyKQotCiAjZGVmaW5lIHRvX2FsX3BjaWUoeCkJCWRldl9nZXRfZHJ2ZGF0YSgoeCktPmRldikK IAogc3RhdGljIGlubGluZSB1MzIgYWxfcGNpZV9jb250cm9sbGVyX3JlYWRsKHN0cnVjdCBhbF9w Y2llICpwY2llLCB1MzIgb2Zmc2V0KQpAQCAtMjI4LDcgKzIyNiw3IEBAIHN0YXRpYyB2b2lkIF9f aW9tZW0gKmFsX3BjaWVfY29uZl9hZGRyX21hcChzdHJ1Y3QgYWxfcGNpZSAqcGNpZSwKIAl2b2lk IF9faW9tZW0gKnBjaV9iYXNlX2FkZHI7CiAKIAlwY2lfYmFzZV9hZGRyID0gKHZvaWQgX19pb21l bSAqKSgodWludHB0cl90KXBwLT52YV9jZmcwX2Jhc2UgKwotCQkJCQkgKGJ1c25yX2VjYW0gPDwg MjApICsKKwkJCQkJIFBDSUVfRUNBTV9CVVMoYnVzbnJfZWNhbSkgKwogCQkJCQkgUENJRV9FQ0FN X0RFVkZOKGRldmZuKSk7CiAKIAlpZiAoYnVzbnJfcmVnICE9IHRhcmdldF9idXNfY2ZnLT5yZWdf dmFsKSB7CkBAIC0zMDAsNyArMjk4LDcgQEAgc3RhdGljIHZvaWQgYWxfcGNpZV9jb25maWdfcHJl cGFyZShzdHJ1Y3QgYWxfcGNpZSAqcGNpZSkKIAogCXRhcmdldF9idXNfY2ZnID0gJnBjaWUtPnRh cmdldF9idXNfY2ZnOwogCi0JZWNhbV9idXNfbWFzayA9IChwY2llLT5lY2FtX3NpemUgPj4gMjAp IC0gMTsKKwllY2FtX2J1c19tYXNrID0gKHBjaWUtPmVjYW1fc2l6ZSA+PiBQQ0lFX0VDQU1fQlVT X1NISUZUKSAtIDE7CiAJaWYgKGVjYW1fYnVzX21hc2sgPiAyNTUpIHsKIAkJZGV2X3dhcm4ocGNp ZS0+ZGV2LCAiRUNBTSB3aW5kb3cgc2l6ZSBpcyBsYXJnZXIgdGhhbiAyNTZNQi4gQ3V0dGluZyBv ZmYgYXQgMjU2XG4iKTsKIAkJZWNhbV9idXNfbWFzayA9IDI1NTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxl ci9kd2MvcGNpZS1oaXNpLmMKaW5kZXggNWNhODY3OTZkNDNhLi5iN2FmYmYxZDRiZDkgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jCisrKyBiL2RyaXZl cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtaGlzaS5jCkBAIC0xMDAsNyArMTAwLDcgQEAgc3Rh dGljIGludCBoaXNpX3BjaWVfaW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNmZykKIH0K IAogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyBoaXNpX3BjaWVfb3BzID0gewotCS5idXNfc2hp ZnQgICAgPSAyMCwKKwkuYnVzX3NoaWZ0ICAgID0gUENJRV9FQ0FNX0JVU19TSElGVCwKIAkuaW5p dCAgICAgICAgID0gIGhpc2lfcGNpZV9pbml0LAogCS5wY2lfb3BzICAgICAgPSB7CiAJCS5tYXBf YnVzICAgID0gaGlzaV9wY2llX21hcF9idXMsCkBAIC0xMzUsNyArMTM1LDcgQEAgc3RhdGljIGlu dCBoaXNpX3BjaWVfcGxhdGZvcm1faW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNmZykK IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgaGlzaV9wY2llX3BsYXRmb3Jt X29wcyA9IHsKLQkuYnVzX3NoaWZ0ICAgID0gMjAsCisJLmJ1c19zaGlmdCAgICA9IFBDSUVfRUNB TV9CVVNfU0hJRlQsCiAJLmluaXQgICAgICAgICA9ICBoaXNpX3BjaWVfcGxhdGZvcm1faW5pdCwK IAkucGNpX29wcyAgICAgID0gewogCQkubWFwX2J1cyAgICA9IGhpc2lfcGNpZV9tYXBfYnVzLApk aWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaG9zdC1nZW5lcmljLmMgYi9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1ob3N0LWdlbmVyaWMuYwppbmRleCBiNTE5NzdhYmZk ZjEuLjU5MzQzNmFlZTdhMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kt aG9zdC1nZW5lcmljLmMKKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaG9zdC1nZW5l cmljLmMKQEAgLTE1LDcgKzE1LDcgQEAKICNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2Uu aD4KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgZ2VuX3BjaV9jZmdfY2FtX2J1 c19vcHMgPSB7Ci0JLmJ1c19zaGlmdAk9IDE2LAorCS5idXNfc2hpZnQJPSBQQ0lFX0NBTV9CVVNf U0hJRlQsCiAJLnBjaV9vcHMJPSB7CiAJCS5tYXBfYnVzCT0gcGNpX2VjYW1fbWFwX2J1cywKIAkJ LnJlYWQJCT0gcGNpX2dlbmVyaWNfY29uZmlnX3JlYWQsCkBAIC00OSw3ICs0OSw3IEBAIHN0YXRp YyB2b2lkIF9faW9tZW0gKnBjaV9kd19lY2FtX21hcF9idXMoc3RydWN0IHBjaV9idXMgKmJ1cywK IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMgcGNpX2R3X2VjYW1fYnVzX29w cyA9IHsKLQkuYnVzX3NoaWZ0CT0gMjAsCisJLmJ1c19zaGlmdAk9IFBDSUVfRUNBTV9CVVNfU0hJ RlQsCiAJLnBjaV9vcHMJPSB7CiAJCS5tYXBfYnVzCT0gcGNpX2R3X2VjYW1fbWFwX2J1cywKIAkJ LnJlYWQJCT0gcGNpX2dlbmVyaWNfY29uZmlnX3JlYWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL3BjaS10aHVuZGVyLWVjYW0uYyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIv cGNpLXRodW5kZXItZWNhbS5jCmluZGV4IDdlODgzNWZlZTVmNy4uMjJlZDdlOTk1YjM5IDEwMDY0 NAotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVyLWVjYW0uYworKysgYi9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVyLWVjYW0uYwpAQCAtMzQ2LDcgKzM0Niw3 IEBAIHN0YXRpYyBpbnQgdGh1bmRlcl9lY2FtX2NvbmZpZ193cml0ZShzdHJ1Y3QgcGNpX2J1cyAq YnVzLCB1bnNpZ25lZCBpbnQgZGV2Zm4sCiB9CiAKIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMg cGNpX3RodW5kZXJfZWNhbV9vcHMgPSB7Ci0JLmJ1c19zaGlmdAk9IDIwLAorCS5idXNfc2hpZnQJ PSBQQ0lFX0VDQU1fQlVTX1NISUZULAogCS5wY2lfb3BzCT0gewogCQkubWFwX2J1cyAgICAgICAg PSBwY2lfZWNhbV9tYXBfYnVzLAogCQkucmVhZCAgICAgICAgICAgPSB0aHVuZGVyX2VjYW1fY29u ZmlnX3JlYWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10aHVuZGVy LXBlbS5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktdGh1bmRlci1wZW0uYwppbmRleCAz Zjg0Nzk2OTE0M2UuLjFhM2Y3MGFjNjFmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJv bGxlci9wY2ktdGh1bmRlci1wZW0uYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS10 aHVuZGVyLXBlbS5jCkBAIC0xOSw2ICsxOSwxNSBAQAogI2RlZmluZSBQRU1fQ0ZHX1dSIDB4MjgK ICNkZWZpbmUgUEVNX0NGR19SRCAweDMwCiAKKy8qCisgKiBFbmhhbmNlZCBDb25maWd1cmF0aW9u IEFjY2VzcyBNZWNoYW5pc20gKEVDQU0pCisgKgorICogTi5CLiBUaGlzIGlzIGEgbm9uLXN0YW5k YXJkIHBsYXRmb3JtLXNwZWNpZmljIEVDQU0gYnVzIHNoaWZ0IHZhbHVlLiAgRm9yCisgKiBzdGFu ZGFyZCB2YWx1ZXMgZGVmaW5lZCBpbiB0aGUgUENJIEV4cHJlc3MgQmFzZSBTcGVjaWZpY2F0aW9u IHNlZQorICogaW5jbHVkZS9saW51eC9wY2ktZWNhbS5oLgorICovCisjZGVmaW5lIFRIVU5ERVJf UENJRV9FQ0FNX0JVU19TSElGVAkyNAorCiBzdHJ1Y3QgdGh1bmRlcl9wZW1fcGNpIHsKIAl1MzIJ CWVhX2VudHJ5WzNdOwogCXZvaWQgX19pb21lbQkqcGVtX3JlZ19iYXNlOwpAQCAtNDA0LDcgKzQx Myw3IEBAIHN0YXRpYyBpbnQgdGh1bmRlcl9wZW1fYWNwaV9pbml0KHN0cnVjdCBwY2lfY29uZmln X3dpbmRvdyAqY2ZnKQogfQogCiBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIHRodW5kZXJfcGVt X2VjYW1fb3BzID0gewotCS5idXNfc2hpZnQJPSAyNCwKKwkuYnVzX3NoaWZ0CT0gVEhVTkRFUl9Q Q0lFX0VDQU1fQlVTX1NISUZULAogCS5pbml0CQk9IHRodW5kZXJfcGVtX2FjcGlfaW5pdCwKIAku cGNpX29wcwk9IHsKIAkJLm1hcF9idXMJPSBwY2lfZWNhbV9tYXBfYnVzLApAQCAtNDQxLDcgKzQ1 MCw3IEBAIHN0YXRpYyBpbnQgdGh1bmRlcl9wZW1fcGxhdGZvcm1faW5pdChzdHJ1Y3QgcGNpX2Nv bmZpZ193aW5kb3cgKmNmZykKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZWNhbV9vcHMg cGNpX3RodW5kZXJfcGVtX29wcyA9IHsKLQkuYnVzX3NoaWZ0CT0gMjQsCisJLmJ1c19zaGlmdAk9 IFRIVU5ERVJfUENJRV9FQ0FNX0JVU19TSElGVCwKIAkuaW5pdAkJPSB0aHVuZGVyX3BlbV9wbGF0 Zm9ybV9pbml0LAogCS5wY2lfb3BzCT0gewogCQkubWFwX2J1cwk9IHBjaV9lY2FtX21hcF9idXMs CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS14Z2VuZS5jIGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2kteGdlbmUuYwppbmRleCA4ZTBkYjg0ZjA4OWQuLmU2N2U3Mjgx OGQyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kteGdlbmUuYworKysg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS14Z2VuZS5jCkBAIC02MCw2ICs2MCwxNSBAQAog I2RlZmluZSBYR0VORV9QQ0lFX0lQX1ZFUl8xCQkxCiAjZGVmaW5lIFhHRU5FX1BDSUVfSVBfVkVS XzIJCTIKIAorLyoKKyAqIEVuaGFuY2VkIENvbmZpZ3VyYXRpb24gQWNjZXNzIE1lY2hhbmlzbSAo RUNBTSkKKyAqCisgKiBOLkIuIFRoaXMgaXMgYSBub24tc3RhbmRhcmQgcGxhdGZvcm0tc3BlY2lm aWMgRUNBTSBidXMgc2hpZnQgdmFsdWUuICBGb3IKKyAqIHN0YW5kYXJkIHZhbHVlcyBkZWZpbmVk IGluIHRoZSBQQ0kgRXhwcmVzcyBCYXNlIFNwZWNpZmljYXRpb24gc2VlCisgKiBpbmNsdWRlL2xp bnV4L3BjaS1lY2FtLmguCisgKi8KKyNkZWZpbmUgWEdFTkVfUENJRV9FQ0FNX0JVU19TSElGVAkx NgorCiAjaWYgZGVmaW5lZChDT05GSUdfUENJX1hHRU5FKSB8fCAoZGVmaW5lZChDT05GSUdfQUNQ SSkgJiYgZGVmaW5lZChDT05GSUdfUENJX1FVSVJLUykpCiBzdHJ1Y3QgeGdlbmVfcGNpZV9wb3J0 IHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUJKm5vZGU7CkBAIC0yNTcsNyArMjY2LDcgQEAgc3RhdGlj IGludCB4Z2VuZV92MV9wY2llX2VjYW1faW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5kb3cgKmNm ZykKIH0KIAogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyB4Z2VuZV92MV9wY2llX2VjYW1fb3Bz ID0gewotCS5idXNfc2hpZnQJPSAxNiwKKwkuYnVzX3NoaWZ0CT0gWEdFTkVfUENJRV9FQ0FNX0JV U19TSElGVCwKIAkuaW5pdAkJPSB4Z2VuZV92MV9wY2llX2VjYW1faW5pdCwKIAkucGNpX29wcwk9 IHsKIAkJLm1hcF9idXMJPSB4Z2VuZV9wY2llX21hcF9idXMsCkBAIC0yNzIsNyArMjgxLDcgQEAg c3RhdGljIGludCB4Z2VuZV92Ml9wY2llX2VjYW1faW5pdChzdHJ1Y3QgcGNpX2NvbmZpZ193aW5k b3cgKmNmZykKIH0KIAogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyB4Z2VuZV92Ml9wY2llX2Vj YW1fb3BzID0gewotCS5idXNfc2hpZnQJPSAxNiwKKwkuYnVzX3NoaWZ0CT0gWEdFTkVfUENJRV9F Q0FNX0JVU19TSElGVCwKIAkuaW5pdAkJPSB4Z2VuZV92Ml9wY2llX2VjYW1faW5pdCwKIAkucGNp X29wcwk9IHsKIAkJLm1hcF9idXMJPSB4Z2VuZV9wY2llX21hcF9idXMsCmRpZmYgLS1naXQgYS9k cml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5jIGIvZHJpdmVycy9wY2kv Y29udHJvbGxlci9wY2llLXJvY2tjaGlwLWhvc3QuYwppbmRleCAwYmIyZmIzZThhMGIuLjRjMDY5 ZjhmYTQyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlw LWhvc3QuYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtaG9zdC5j CkBAIC0xNjAsMTIgKzE2MCwxMSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX3BjaWVfcmRfb3RoZXJf Y29uZihzdHJ1Y3Qgcm9ja2NoaXBfcGNpZSAqcm9ja2NoaXAsCiAJCQkJICAgICAgIHN0cnVjdCBw Y2lfYnVzICpidXMsIHUzMiBkZXZmbiwKIAkJCQkgICAgICAgaW50IHdoZXJlLCBpbnQgc2l6ZSwg dTMyICp2YWwpCiB7Ci0JdTMyIGJ1c2RldjsKKwl2b2lkIF9faW9tZW0gKmFkZHI7CiAKLQlidXNk ZXYgPSBQQ0lFX0VDQU1fQUREUihidXMtPm51bWJlciwgUENJX1NMT1QoZGV2Zm4pLAotCQkJCVBD SV9GVU5DKGRldmZuKSwgd2hlcmUpOworCWFkZHIgPSByb2NrY2hpcC0+cmVnX2Jhc2UgKyBQQ0lF X0VDQU1fT0ZGU0VUKGJ1cywgZGV2Zm4sIHdoZXJlKTsKIAotCWlmICghSVNfQUxJR05FRChidXNk ZXYsIHNpemUpKSB7CisJaWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpYWRkciwgc2l6ZSkpIHsK IAkJKnZhbCA9IDA7CiAJCXJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RFUl9OVU1CRVI7CiAJfQpA QCAtMTc4LDExICsxNzcsMTEgQEAgc3RhdGljIGludCByb2NrY2hpcF9wY2llX3JkX290aGVyX2Nv bmYoc3RydWN0IHJvY2tjaGlwX3BjaWUgKnJvY2tjaGlwLAogCQkJCQkJQVhJX1dSQVBQRVJfVFlQ RTFfQ0ZHKTsKIAogCWlmIChzaXplID09IDQpIHsKLQkJKnZhbCA9IHJlYWRsKHJvY2tjaGlwLT5y ZWdfYmFzZSArIGJ1c2Rldik7CisJCSp2YWwgPSByZWFkbChhZGRyKTsKIAl9IGVsc2UgaWYgKHNp emUgPT0gMikgewotCQkqdmFsID0gcmVhZHcocm9ja2NoaXAtPnJlZ19iYXNlICsgYnVzZGV2KTsK KwkJKnZhbCA9IHJlYWR3KGFkZHIpOwogCX0gZWxzZSBpZiAoc2l6ZSA9PSAxKSB7Ci0JCSp2YWwg PSByZWFkYihyb2NrY2hpcC0+cmVnX2Jhc2UgKyBidXNkZXYpOworCQkqdmFsID0gcmVhZGIoYWRk cik7CiAJfSBlbHNlIHsKIAkJKnZhbCA9IDA7CiAJCXJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RF Ul9OVU1CRVI7CkBAIC0xOTQsMTEgKzE5MywxMSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX3BjaWVf d3Jfb3RoZXJfY29uZihzdHJ1Y3Qgcm9ja2NoaXBfcGNpZSAqcm9ja2NoaXAsCiAJCQkJICAgICAg IHN0cnVjdCBwY2lfYnVzICpidXMsIHUzMiBkZXZmbiwKIAkJCQkgICAgICAgaW50IHdoZXJlLCBp bnQgc2l6ZSwgdTMyIHZhbCkKIHsKLQl1MzIgYnVzZGV2OworCXZvaWQgX19pb21lbSAqYWRkcjsK IAotCWJ1c2RldiA9IFBDSUVfRUNBTV9BRERSKGJ1cy0+bnVtYmVyLCBQQ0lfU0xPVChkZXZmbiks Ci0JCQkJUENJX0ZVTkMoZGV2Zm4pLCB3aGVyZSk7Ci0JaWYgKCFJU19BTElHTkVEKGJ1c2Rldiwg c2l6ZSkpCisJYWRkciA9IHJvY2tjaGlwLT5yZWdfYmFzZSArIFBDSUVfRUNBTV9PRkZTRVQoYnVz LCBkZXZmbiwgd2hlcmUpOworCisJaWYgKCFJU19BTElHTkVEKCh1aW50cHRyX3QpYWRkciwgc2l6 ZSkpCiAJCXJldHVybiBQQ0lCSU9TX0JBRF9SRUdJU1RFUl9OVU1CRVI7CiAKIAlpZiAocGNpX2lz X3Jvb3RfYnVzKGJ1cy0+cGFyZW50KSkKQEAgLTIwOSwxMSArMjA4LDExIEBAIHN0YXRpYyBpbnQg cm9ja2NoaXBfcGNpZV93cl9vdGhlcl9jb25mKHN0cnVjdCByb2NrY2hpcF9wY2llICpyb2NrY2hp cCwKIAkJCQkJCUFYSV9XUkFQUEVSX1RZUEUxX0NGRyk7CiAKIAlpZiAoc2l6ZSA9PSA0KQotCQl3 cml0ZWwodmFsLCByb2NrY2hpcC0+cmVnX2Jhc2UgKyBidXNkZXYpOworCQl3cml0ZWwodmFsLCBh ZGRyKTsKIAllbHNlIGlmIChzaXplID09IDIpCi0JCXdyaXRldyh2YWwsIHJvY2tjaGlwLT5yZWdf YmFzZSArIGJ1c2Rldik7CisJCXdyaXRldyh2YWwsIGFkZHIpOwogCWVsc2UgaWYgKHNpemUgPT0g MSkKLQkJd3JpdGViKHZhbCwgcm9ja2NoaXAtPnJlZ19iYXNlICsgYnVzZGV2KTsKKwkJd3JpdGVi KHZhbCwgYWRkcik7CiAJZWxzZQogCQlyZXR1cm4gUENJQklPU19CQURfUkVHSVNURVJfTlVNQkVS OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaCBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC5oCmluZGV4IGM3ZDAxNzhmYzhj Mi4uMTY1MGE1MDg3NDUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUt cm9ja2NoaXAuaAorKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAuaApA QCAtMTMsNiArMTMsNyBAQAogCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8 bGludXgvcGNpLmg+CisjaW5jbHVkZSA8bGludXgvcGNpLWVjYW0uaD4KIAogLyoKICAqIFRoZSB1 cHBlciAxNiBiaXRzIG9mIFBDSUVfQ0xJRU5UX0NPTkZJRyBhcmUgYSB3cml0ZSBtYXNrIGZvciB0 aGUgbG93ZXIgMTYKQEAgLTE3OCwxMyArMTc5LDYgQEAKICNkZWZpbmUgTUlOX0FYSV9BRERSX0JJ VFNfUEFTU0VECQk4CiAjZGVmaW5lIFBDSUVfUkNfU0VORF9QTUVfT0ZGCQkJMHgxMTk2MAogI2Rl ZmluZSBST0NLQ0hJUF9WRU5ET1JfSUQJCQkweDFkODcKLSNkZWZpbmUgUENJRV9FQ0FNX0JVUyh4 KQkJCSgoKHgpICYgMHhmZikgPDwgMjApCi0jZGVmaW5lIFBDSUVfRUNBTV9ERVYoeCkJCQkoKCh4 KSAmIDB4MWYpIDw8IDE1KQotI2RlZmluZSBQQ0lFX0VDQU1fRlVOQyh4KQkJCSgoKHgpICYgMHg3 KSA8PCAxMikKLSNkZWZpbmUgUENJRV9FQ0FNX1JFRyh4KQkJCSgoKHgpICYgMHhmZmYpIDw8IDAp Ci0jZGVmaW5lIFBDSUVfRUNBTV9BRERSKGJ1cywgZGV2LCBmdW5jLCByZWcpIFwKLQkgIChQQ0lF X0VDQU1fQlVTKGJ1cykgfCBQQ0lFX0VDQU1fREVWKGRldikgfCBcCi0JICAgUENJRV9FQ0FNX0ZV TkMoZnVuYykgfCBQQ0lFX0VDQU1fUkVHKHJlZykpCiAjZGVmaW5lIFBDSUVfTElOS19JU19MMih4 KSBcCiAJKCgoeCkgJiBQQ0lFX0NMSUVOVF9ERUJVR19MVFNTTV9NQVNLKSA9PSBQQ0lFX0NMSUVO VF9ERUJVR19MVFNTTV9MMikKICNkZWZpbmUgUENJRV9MSU5LX1VQKHgpIFwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS10YW5nby5jIGIvZHJpdmVycy9wY2kvY29udHJv bGxlci9wY2llLXRhbmdvLmMKaW5kZXggZDA5M2E4Y2U0YmIxLi44ZjBkNjk1YWZiZGUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS10YW5nby5jCisrKyBiL2RyaXZlcnMv cGNpL2NvbnRyb2xsZXIvcGNpZS10YW5nby5jCkBAIC0yMDgsNyArMjA4LDcgQEAgc3RhdGljIGlu dCBzbXA4NzU5X2NvbmZpZ193cml0ZShzdHJ1Y3QgcGNpX2J1cyAqYnVzLCB1bnNpZ25lZCBpbnQg ZGV2Zm4sCiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2VjYW1fb3BzIHNtcDg3NTlfZWNh bV9vcHMgPSB7Ci0JLmJ1c19zaGlmdAk9IDIwLAorCS5idXNfc2hpZnQJPSBQQ0lFX0VDQU1fQlVT X1NISUZULAogCS5wY2lfb3BzCT0gewogCQkubWFwX2J1cwk9IHBjaV9lY2FtX21hcF9idXMsCiAJ CS5yZWFkCQk9IHNtcDg3NTlfY29uZmlnX3JlYWQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9j b250cm9sbGVyL3BjaWUteGlsaW54LW53bC5jIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ll LXhpbGlueC1ud2wuYwppbmRleCBmM2NmN2Q2MTkyNGYuLmNmZDEyYjc1YmFjYiAxMDA2NDQKLS0t IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXhpbGlueC1ud2wuYworKysgYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LW53bC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5j bHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4KICNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4KICNp bmNsdWRlIDxsaW51eC9wY2kuaD4KKyNpbmNsdWRlIDxsaW51eC9wY2ktZWNhbS5oPgogI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L2lycWNoaXAvY2hh aW5lZF9pcnEuaD4KIApAQCAtMTI0LDggKzEyNSw2IEBACiAjZGVmaW5lIEVfRUNBTV9DUl9FTkFC TEUJCUJJVCgwKQogI2RlZmluZSBFX0VDQU1fU0laRV9MT0MJCQlHRU5NQVNLKDIwLCAxNikKICNk ZWZpbmUgRV9FQ0FNX1NJWkVfU0hJRlQJCTE2Ci0jZGVmaW5lIEVDQU1fQlVTX0xPQ19TSElGVAkJ MjAKLSNkZWZpbmUgRUNBTV9ERVZfTE9DX1NISUZUCQkxMgogI2RlZmluZSBOV0xfRUNBTV9WQUxV RV9ERUZBVUxUCQkxMgogCiAjZGVmaW5lIENGR19ETUFfUkVHX0JBUgkJCUdFTk1BU0soMiwgMCkK QEAgLTI0MCwxNSArMjM5LDExIEBAIHN0YXRpYyB2b2lkIF9faW9tZW0gKm53bF9wY2llX21hcF9i dXMoc3RydWN0IHBjaV9idXMgKmJ1cywgdW5zaWduZWQgaW50IGRldmZuLAogCQkJCSAgICAgIGlu dCB3aGVyZSkKIHsKIAlzdHJ1Y3QgbndsX3BjaWUgKnBjaWUgPSBidXMtPnN5c2RhdGE7Ci0JaW50 IHJlbGJ1czsKIAogCWlmICghbndsX3BjaWVfdmFsaWRfZGV2aWNlKGJ1cywgZGV2Zm4pKQogCQly ZXR1cm4gTlVMTDsKIAotCXJlbGJ1cyA9IChidXMtPm51bWJlciA8PCBFQ0FNX0JVU19MT0NfU0hJ RlQpIHwKLQkJCShkZXZmbiA8PCBFQ0FNX0RFVl9MT0NfU0hJRlQpOwotCi0JcmV0dXJuIHBjaWUt PmVjYW1fYmFzZSArIHJlbGJ1cyArIHdoZXJlOworCXJldHVybiBwY2llLT5lY2FtX2Jhc2UgKyBQ Q0lFX0VDQU1fT0ZGU0VUKGJ1cywgZGV2Zm4sIHdoZXJlKTsKIH0KIAogLyogUENJZSBvcGVyYXRp b25zICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMg Yi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMKaW5kZXggODUyM2JlNjFiYmE1 Li40OWJkZTUyNjZhYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS14 aWxpbnguYworKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUteGlsaW54LmMKQEAgLTIx LDYgKzIxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgogI2luY2x1ZGUgPGxp bnV4L29mX2lycS5oPgogI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L3Bj aS1lY2FtLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAKICNpbmNsdWRl ICIuLi9wY2kuaCIKQEAgLTg2LDEwICs4Nyw2IEBACiAvKiBQaHkgU3RhdHVzL0NvbnRyb2wgUmVn aXN0ZXIgZGVmaW5pdGlvbnMgKi8KICNkZWZpbmUgWElMSU5YX1BDSUVfUkVHX1BTQ1JfTE5LVVAJ QklUKDExKQogCi0vKiBFQ0FNIGRlZmluaXRpb25zICovCi0jZGVmaW5lIEVDQU1fQlVTX05VTV9T SElGVAkJMjAKLSNkZWZpbmUgRUNBTV9ERVZfTlVNX1NISUZUCQkxMgotCiAvKiBOdW1iZXIgb2Yg TVNJIElSUXMgKi8KICNkZWZpbmUgWElMSU5YX05VTV9NU0lfSVJRUwkJMTI4CiAKQEAgLTE4Mywx NSArMTgwLDExIEBAIHN0YXRpYyB2b2lkIF9faW9tZW0gKnhpbGlueF9wY2llX21hcF9idXMoc3Ry dWN0IHBjaV9idXMgKmJ1cywKIAkJCQkJIHVuc2lnbmVkIGludCBkZXZmbiwgaW50IHdoZXJlKQog ewogCXN0cnVjdCB4aWxpbnhfcGNpZV9wb3J0ICpwb3J0ID0gYnVzLT5zeXNkYXRhOwotCWludCBy ZWxidXM7CiAKIAlpZiAoIXhpbGlueF9wY2llX3ZhbGlkX2RldmljZShidXMsIGRldmZuKSkKIAkJ cmV0dXJuIE5VTEw7CiAKLQlyZWxidXMgPSAoYnVzLT5udW1iZXIgPDwgRUNBTV9CVVNfTlVNX1NI SUZUKSB8Ci0JCSAoZGV2Zm4gPDwgRUNBTV9ERVZfTlVNX1NISUZUKTsKLQotCXJldHVybiBwb3J0 LT5yZWdfYmFzZSArIHJlbGJ1cyArIHdoZXJlOworCXJldHVybiBwb3J0LT5yZWdfYmFzZSArIFBD SUVfRUNBTV9PRkZTRVQoYnVzLCBkZXZmbiwgd2hlcmUpOwogfQogCiAvKiBQQ0llIG9wZXJhdGlv bnMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2VjYW0uYyBiL2RyaXZlcnMvcGNpL2VjYW0u YwppbmRleCA4ZjA2NWE0MmZjMWEuLmZmZDAxMDI5MDA4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9w Y2kvZWNhbS5jCisrKyBiL2RyaXZlcnMvcGNpL2VjYW0uYwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEVY UE9SVF9TWU1CT0xfR1BMKHBjaV9lY2FtX21hcF9idXMpOwogCiAvKiBFQ0FNIG9wcyAqLwogY29u c3Qgc3RydWN0IHBjaV9lY2FtX29wcyBwY2lfZ2VuZXJpY19lY2FtX29wcyA9IHsKLQkuYnVzX3No aWZ0CT0gMjAsCisJLmJ1c19zaGlmdAk9IFBDSUVfRUNBTV9CVVNfU0hJRlQsCiAJLnBjaV9vcHMJ PSB7CiAJCS5tYXBfYnVzCT0gcGNpX2VjYW1fbWFwX2J1cywKIAkJLnJlYWQJCT0gcGNpX2dlbmVy aWNfY29uZmlnX3JlYWQsCkBAIC0xNjEsNyArMTYxLDcgQEAgRVhQT1JUX1NZTUJPTF9HUEwocGNp X2dlbmVyaWNfZWNhbV9vcHMpOwogI2lmIGRlZmluZWQoQ09ORklHX0FDUEkpICYmIGRlZmluZWQo Q09ORklHX1BDSV9RVUlSS1MpCiAvKiBFQ0FNIG9wcyBmb3IgMzItYml0IGFjY2VzcyBvbmx5IChu b24tY29tcGxpYW50KSAqLwogY29uc3Qgc3RydWN0IHBjaV9lY2FtX29wcyBwY2lfMzJiX29wcyA9 IHsKLQkuYnVzX3NoaWZ0CT0gMjAsCisJLmJ1c19zaGlmdAk9IFBDSUVfRUNBTV9CVVNfU0hJRlQs CiAJLnBjaV9vcHMJPSB7CiAJCS5tYXBfYnVzCT0gcGNpX2VjYW1fbWFwX2J1cywKIAkJLnJlYWQJ CT0gcGNpX2dlbmVyaWNfY29uZmlnX3JlYWQzMiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgv cGNpLWVjYW0uaCBiL2luY2x1ZGUvbGludXgvcGNpLWVjYW0uaAppbmRleCAxYWY1Y2IwMmVmN2Yu LjJjMjJkYTZiZjgxOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wY2ktZWNhbS5oCisrKyBi L2luY2x1ZGUvbGludXgvcGNpLWVjYW0uaApAQCAtOSw2ICs5LDM4IEBACiAjaW5jbHVkZSA8bGlu dXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAKKy8qCisg KiBNZW1vcnkgYWRkcmVzcyBzaGlmdCB2YWx1ZXMgZm9yIHRoZSBieXRlLWxldmVsIGFkZHJlc3Mg dGhhdAorICogY2FuIGJlIHVzZWQgd2hlbiBhY2Nlc3NpbmcgdGhlIFBDSS9QQ0kgRXhwcmVzcyBD b25maWd1cmF0aW9uIFNwYWNlLgorICovCisKKy8qCisgKiBDb25maWd1cmF0aW9uIEFjY2VzcyBN ZWNoYW5pc20gKENBTSkKKyAqCisgKiBTZWUgUENJIExvY2FsIEJ1cyBTcGVjaWZpY2F0aW9uLCBS ZXZpc2lvbiAzLjAsIFNlY3Rpb24gMy4yLjIuMywKKyAqIHAuIDQ4IGFuZCBTZWN0aW9uIDYuMSwg cC4gMjEzLgorICovCisjZGVmaW5lIFBDSUVfQ0FNX0JVU19TSElGVAkxNiAvKiBCdXMgTnVtYmVy ICovCisKKy8qCisgKiBFbmhhbmNlZCBDb25maWd1cmF0aW9uIEFjY2VzcyBNZWNoYW5pc20gKEVD QU0pCisgKgorICogU2VlIFBDSSBFeHByZXNzIEJhc2UgU3BlY2lmaWNhdGlvbiwgUmV2aXNpb24g NS4wLCBWZXJzaW9uIDEuMCwKKyAqIFNlY3Rpb24gNy4yLjIsIFRhYmxlIDctMSwgcC4gNjc3Lgor ICovCisjZGVmaW5lIFBDSUVfRUNBTV9CVVNfU0hJRlQJMjAgLyogQnVzIE51bWJlciAqLworI2Rl ZmluZSBQQ0lFX0VDQU1fREVWX1NISUZUCTE1IC8qIERldmljZSBOdW1iZXIgKi8KKyNkZWZpbmUg UENJRV9FQ0FNX0ZVTl9TSElGVAkxMiAvKiBGdW5jdGlvbiBOdW1iZXIgKi8KKworI2RlZmluZSBQ Q0lFX0VDQU1fQlVTKHgpCSgoKHgpICYgMHhmZikgPDwgUENJRV9FQ0FNX0JVU19TSElGVCkKKyNk ZWZpbmUgUENJRV9FQ0FNX0RFVkZOKHgpCSgoKHgpICYgMHhmZikgPDwgUENJRV9FQ0FNX0ZVTl9T SElGVCkKKyNkZWZpbmUgUENJRV9FQ0FNX1JFRyh4KQkoKHgpICYgMHhmZmYpCisKKyNkZWZpbmUg UENJRV9FQ0FNX09GRlNFVChidXMsIGRldmZuLCB3aGVyZSkgXAorICAgIChQQ0lFX0VDQU1fQlVT KGJ1cy0+bnVtYmVyKSB8IFwKKyAgICAgUENJRV9FQ0FNX0RFVkZOKGRldmZuKSB8IFwKKyAgICAg UENJRV9FQ0FNX1JFRyh3aGVyZSkpCisKIC8qCiAgKiBzdHJ1Y3QgdG8gaG9sZCBwY2kgb3BzIGFu ZCBidXMgc2hpZnQgb2YgdGhlIGNvbmZpZyB3aW5kb3cKICAqIGZvciBhIFBDSSBjb250cm9sbGVy LgotLSAKMi4yOC4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtYXJtLWtlcm5lbAo=