From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oa1-f44.google.com (mail-oa1-f44.google.com [209.85.160.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA3B4548E7 for ; Wed, 3 Apr 2024 06:46:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712126780; cv=none; b=GqG9Xm4lYJ+fNrbshi2yO05eCVFlGbafGu3pbUiZcUnN0dBfsVAns4rzqPgxNWyvQCsBo0830jVDAjDiCgoUUp5/I1jnUeKykHH65lZxen8nvH5XpyQJis6Mm/2FM5mgl0cccnwn3isO1YvzJ5gloBrqEvDo9o5rVxKbaWiDA1w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712126780; c=relaxed/simple; bh=EtLzbRs1jyXC2EzWtrlyjhshVeLBDRwrWIp3gdtJp2g=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=VqmpdJOt9GnTE6RWdvFg4HXhDNGomtMVTDNtfoRNVbx55t+uk8rERG5qmJsa9tAU7qALOTvIlVsPNfX+NGt36c45oXA3z5z1dfLMPedOXZLT8PqhugWx82qM/WT41gVWwlvH679tW2AD0e+b+ei0/C86RhSpGiPC5JZzLpe/vu8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=fktE8wSR; arc=none smtp.client-ip=209.85.160.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="fktE8wSR" Received: by mail-oa1-f44.google.com with SMTP id 586e51a60fabf-22e7444c5a0so702848fac.2 for ; Tue, 02 Apr 2024 23:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712126778; x=1712731578; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=fktE8wSRoxw/1c74LY4UcOYVWm6DBRDTpxKt5Dv4mjFdU1465t1PghL0lZJK3f36RQ 9aVAKuDTHD9lUmXPwIjfMZLD0LWAI4XEHHXTCcDDsQw8hIWOKI7rPZNaAJU8VvxgGeKP kgO0VUGUFxZldXXZyDm72ZaJj1eJIqikFKU4tG4KqO0Js9unWiCAG8WswS2FvQMzECpY CzZQJ5Uv7CcmtyVAmAnS3U4bu6ju0Scm5KnWpYkAIJ/umNsQtovG0WcKN0teOPfCmneF iHGV75XbNY0m6A/w38GrVTP5yoFb1l8l7CkRVUq/DvkhRLPCiYUqGk79zBiWw/8kVTll /LnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712126778; x=1712731578; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=kq67rahIr7hVv/N+W1U1EPpS5Ku0ueg3V8oRNvTl3jHsObTgSDB/NwCUARHUIscvn2 69NJqAQ72MgwBb6EXLngiO3Hq4V9hCW/DosRC2DkOzKQNtPs42b4y5DPtKcE24ISwuZU 7OdbPAzhdDVH05lpcYnTG3o2W9zlsRj5RnwJ9BfR9HtO7Plie4mJceWi+Kf69k3Gu8IX wunbtuUjh46hthlgrI4VGdS7cAjDw+7JTgXj03JXpLr5tFGKbzA1QYrRl6U/BY1pe6+V L9/3mSCW8dyKSWw5aaufuc0AZlAvVk3WK5plqnpUB+7kTn/R8tMB5jC9eQ7xXtthtlpf 72jA== X-Forwarded-Encrypted: i=1; AJvYcCVFnjZTePZGyvgez5TbeYKIHkoyzvya9Yz+u1ui8LsdTWBojxlJpN/QO29i2TwwF7GwYoVjIT60kSVBg6DpNKIYolxbAZylj+SE X-Gm-Message-State: AOJu0YwVgEkHghGkXgEpcPFVQOeW6bnokepAPU2Edo6qwfHvZcHmLHsI rlcMityQpRAUUG0fD2XmRGz883MKzAVhlqsU95HdsLZH3Xcqyjm9vwDMODdJog== X-Google-Smtp-Source: AGHT+IGpI2xtNByiryiE2cJzVu481+eI1+G8W13TvfGzP3+1XQ6iPKh97Q6OebN9sY+msv6hN6A8yg== X-Received: by 2002:a05:6871:547:b0:22e:7c64:af74 with SMTP id t7-20020a056871054700b0022e7c64af74mr2036337oal.44.1712126777521; Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Received: from thinkpad ([103.28.246.48]) by smtp.gmail.com with ESMTPSA id j15-20020aa7928f000000b006ea7d877191sm11041957pfa.2.2024.04.02.23.46.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Date: Wed, 3 Apr 2024 12:16:10 +0530 From: Manivannan Sadhasivam To: Damien Le Moal Cc: Lorenzo Pieralisi , Kishon Vijay Abraham I , Shawn Lin , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Heiko Stuebner , linux-pci@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Rick Wertenbroek , Wilfred Mallawa , Niklas Cassel Subject: Re: [PATCH v2 01/18] PCI: endpoint: Introduce pci_epc_function_is_valid() Message-ID: <20240403064610.GB25309@thinkpad> References: <20240330041928.1555578-1-dlemoal@kernel.org> <20240330041928.1555578-2-dlemoal@kernel.org> Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240330041928.1555578-2-dlemoal@kernel.org> On Sat, Mar 30, 2024 at 01:19:11PM +0900, Damien Le Moal wrote: > Introduce the epc core helper function pci_epc_function_is_valid() to > verify that an epc pointer, a physical function number and a virtual > function number are all valid. This avoids repeating the code pattern: > > if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > return err; > > if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > return err; > > in many functions of the endpoint controller core code. > > Signed-off-by: Damien Le Moal One nit below. With that fixed, Reviewed-by: Manivannan Sadhasivam > --- > drivers/pci/endpoint/pci-epc-core.c | 79 +++++++++++------------------ > 1 file changed, 31 insertions(+), 48 deletions(-) > > diff --git a/drivers/pci/endpoint/pci-epc-core.c b/drivers/pci/endpoint/pci-epc-core.c > index da3fc0795b0b..754afd115bbd 100644 > --- a/drivers/pci/endpoint/pci-epc-core.c > +++ b/drivers/pci/endpoint/pci-epc-core.c > @@ -126,6 +126,18 @@ enum pci_barno pci_epc_get_next_free_bar(const struct pci_epc_features > } > EXPORT_SYMBOL_GPL(pci_epc_get_next_free_bar); > > +static inline bool pci_epc_function_is_valid(struct pci_epc *epc, > + u8 func_no, u8 vfunc_no) No need to add 'inline' keyword to function definitions in a .c file. Compiler will handle that. - Mani > +{ > + if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > + return false; > + > + if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + return false; > + > + return true; > +} > + > /** > * pci_epc_get_features() - get the features supported by EPC > * @epc: the features supported by *this* EPC device will be returned > @@ -143,10 +155,7 @@ const struct pci_epc_features *pci_epc_get_features(struct pci_epc *epc, > { > const struct pci_epc_features *epc_features; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > - return NULL; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return NULL; > > if (!epc->ops->get_features) > @@ -216,10 +225,7 @@ int pci_epc_raise_irq(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > { > int ret; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > - return -EINVAL; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return -EINVAL; > > if (!epc->ops->raise_irq) > @@ -260,10 +266,7 @@ int pci_epc_map_msi_irq(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > { > int ret; > > - if (IS_ERR_OR_NULL(epc)) > - return -EINVAL; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return -EINVAL; > > if (!epc->ops->map_msi_irq) > @@ -291,10 +294,7 @@ int pci_epc_get_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no) > { > int interrupt; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > - return 0; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return 0; > > if (!epc->ops->get_msi) > @@ -327,11 +327,10 @@ int pci_epc_set_msi(struct pci_epc *epc, u8 func_no, u8 vfunc_no, u8 interrupts) > int ret; > u8 encode_int; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions || > - interrupts < 1 || interrupts > 32) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return -EINVAL; > > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (interrupts < 1 || interrupts > 32) > return -EINVAL; > > if (!epc->ops->set_msi) > @@ -359,10 +358,7 @@ int pci_epc_get_msix(struct pci_epc *epc, u8 func_no, u8 vfunc_no) > { > int interrupt; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > - return 0; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return 0; > > if (!epc->ops->get_msix) > @@ -395,11 +391,10 @@ int pci_epc_set_msix(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > { > int ret; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions || > - interrupts < 1 || interrupts > 2048) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return -EINVAL; > > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (interrupts < 1 || interrupts > 2048) > return -EINVAL; > > if (!epc->ops->set_msix) > @@ -426,10 +421,7 @@ EXPORT_SYMBOL_GPL(pci_epc_set_msix); > void pci_epc_unmap_addr(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > phys_addr_t phys_addr) > { > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > - return; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return; > > if (!epc->ops->unmap_addr) > @@ -457,10 +449,7 @@ int pci_epc_map_addr(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > { > int ret; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > - return -EINVAL; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return -EINVAL; > > if (!epc->ops->map_addr) > @@ -487,12 +476,11 @@ EXPORT_SYMBOL_GPL(pci_epc_map_addr); > void pci_epc_clear_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > struct pci_epf_bar *epf_bar) > { > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions || > - (epf_bar->barno == BAR_5 && > - epf_bar->flags & PCI_BASE_ADDRESS_MEM_TYPE_64)) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return; > > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (epf_bar->barno == BAR_5 && > + epf_bar->flags & PCI_BASE_ADDRESS_MEM_TYPE_64) > return; > > if (!epc->ops->clear_bar) > @@ -519,18 +507,16 @@ int pci_epc_set_bar(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > int ret; > int flags = epf_bar->flags; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions || > - (epf_bar->barno == BAR_5 && > - flags & PCI_BASE_ADDRESS_MEM_TYPE_64) || > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > + return -EINVAL; > + > + if ((epf_bar->barno == BAR_5 && flags & PCI_BASE_ADDRESS_MEM_TYPE_64) || > (flags & PCI_BASE_ADDRESS_SPACE_IO && > flags & PCI_BASE_ADDRESS_IO_MASK) || > (upper_32_bits(epf_bar->size) && > !(flags & PCI_BASE_ADDRESS_MEM_TYPE_64))) > return -EINVAL; > > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > - return -EINVAL; > - > if (!epc->ops->set_bar) > return 0; > > @@ -559,10 +545,7 @@ int pci_epc_write_header(struct pci_epc *epc, u8 func_no, u8 vfunc_no, > { > int ret; > > - if (IS_ERR_OR_NULL(epc) || func_no >= epc->max_functions) > - return -EINVAL; > - > - if (vfunc_no > 0 && (!epc->max_vfs || vfunc_no > epc->max_vfs[func_no])) > + if (!pci_epc_function_is_valid(epc, func_no, vfunc_no)) > return -EINVAL; > > /* Only Virtual Function #1 has deviceID */ > -- > 2.44.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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id DDE54CD1288 for ; Wed, 3 Apr 2024 06:46:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=svdKQfFAAKZ698ctChpnfjyovJBXt1jlSsF1aw9Bhv0=; b=UkSClWiiJNB1Yp 37dJvQdC8qgQIXBChoMew7viECZi3VgjAqyJXUNr5/SacL3J4DMC1lfmtVUjcfpV414Uc4YkWa/Pv 0FNR9RD3TOlxCmITPV7hZspEN/Cn1kx5X4pGAFWlquBHZ91FuI8bnnjOi3/SDWBzxocacfZVUDzh0 Us1pc5YIp/FZOoq/J8MMOzUc2bcSIkDijfFfe0BatuuxPbghgealvsR+n9cJjAKI/AAWmgd76nqDM QEXlnNgHuKX8lXZiffxRCEEOD79uDDL/azuWMYxfLBOB4P3G+8zrZshErIGw2lZW8ob2FG9nqfvvx 8nSwfoSUTYETTq1P+Eng==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO6-0000000EJIV-1RUp; Wed, 03 Apr 2024 06:46:22 +0000 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO2-0000000EJGh-3rjK for linux-rockchip@lists.infradead.org; Wed, 03 Apr 2024 06:46:20 +0000 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-221e6bf537dso3932306fac.1 for ; Tue, 02 Apr 2024 23:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712126778; x=1712731578; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=YniK1+FrMc+9N4JStvUB+ACMSlTdRaZa7vYjjo4ANSJbICR8ifTrGkZOpPLoHpl9k9 7S1V2UDoNw3ieF4vJBCoWFSAnl9Sov3OsFRAp+8gyb62RjnSkHB0Gmd4Zj06Buvbqy0p RrHnbFYLlukBC7dWqAmibzdXfZxCJrq3N7Pc0hHFjcWMZDipcPjOUboaZ1Wy+c0dymFY G/MOHFXOgM9UP4c3aUa7apOKYEzumdC1Gw3Sn0zx0+98kMVM2+leW1x/HCkXbeM/aFJt Eclbe3Hh/7U6q19npXsBdyhb1YQf0YOB3njUkFYLQaNQY4T6QFN6eccpL2ZEZUxn+i9A KYHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712126778; x=1712731578; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=eyF6yetM+aMgi8GfU4zf68fRq1fLB5vlbSoyvfpZF0sy0Rx3D0AkdR9Nr6J1Qd+H2h 5iIYVDybM+A/Q9a8xD3OrZe5HdQsNhLg/SnJH+cr/GB2slxkFNvqIABbrpChjSHXtnDg 6McGPKqyJyycMmRZ7h4lEhBswivRReY4Aj9wNfWX5QzU6UbPol/PKmTR7MmDps5Uf5L7 bHcHL3G7qr8266Caak4ZvoXkrjGtib0ZZTXrF3FoL1KD4ptQO+KZaBIqO8gcX4VsKSHU xDdheXhMKtqHdPnRwJguxHi8bhwjrCKsbC3vayaBJv8lDKGZMV+2h3Fz2BEBQLkxJUHE fZNA== X-Forwarded-Encrypted: i=1; AJvYcCUxPYJWiRseGnUPFwEk97AIhYgzBM+1aKObM4m7nFx15k74wI0iRfrbbhtnnHBJg2HD2Q85nj1qaA0hi+JLOKmbeCXXM5nM/k9vvqAMWfMZEn1X X-Gm-Message-State: AOJu0YzqiyedG7jnosjkB1uNnpD7jFKvV8bpGx3WOYVc2LTDI0KNujYP oHVp5ynE7m5FdZiKVMzOU+T+mb4O2s+DEfLug2T+7/VOgCaG1nOV/HmQSLYZjQ== X-Google-Smtp-Source: AGHT+IGpI2xtNByiryiE2cJzVu481+eI1+G8W13TvfGzP3+1XQ6iPKh97Q6OebN9sY+msv6hN6A8yg== X-Received: by 2002:a05:6871:547:b0:22e:7c64:af74 with SMTP id t7-20020a056871054700b0022e7c64af74mr2036337oal.44.1712126777521; Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Received: from thinkpad ([103.28.246.48]) by smtp.gmail.com with ESMTPSA id j15-20020aa7928f000000b006ea7d877191sm11041957pfa.2.2024.04.02.23.46.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Date: Wed, 3 Apr 2024 12:16:10 +0530 From: Manivannan Sadhasivam To: Damien Le Moal Cc: Lorenzo Pieralisi , Kishon Vijay Abraham I , Shawn Lin , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Heiko Stuebner , linux-pci@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Rick Wertenbroek , Wilfred Mallawa , Niklas Cassel Subject: Re: [PATCH v2 01/18] PCI: endpoint: Introduce pci_epc_function_is_valid() Message-ID: <20240403064610.GB25309@thinkpad> References: <20240330041928.1555578-1-dlemoal@kernel.org> <20240330041928.1555578-2-dlemoal@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240330041928.1555578-2-dlemoal@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240402_234619_100445_94B2D970 X-CRM114-Status: GOOD ( 19.96 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 T24gU2F0LCBNYXIgMzAsIDIwMjQgYXQgMDE6MTk6MTFQTSArMDkwMCwgRGFtaWVuIExlIE1vYWwg d3JvdGU6Cj4gSW50cm9kdWNlIHRoZSBlcGMgY29yZSBoZWxwZXIgZnVuY3Rpb24gcGNpX2VwY19m dW5jdGlvbl9pc192YWxpZCgpIHRvCj4gdmVyaWZ5IHRoYXQgYW4gZXBjIHBvaW50ZXIsIGEgcGh5 c2ljYWwgZnVuY3Rpb24gbnVtYmVyIGFuZCBhIHZpcnR1YWwKPiBmdW5jdGlvbiBudW1iZXIgYXJl IGFsbCB2YWxpZC4gVGhpcyBhdm9pZHMgcmVwZWF0aW5nIHRoZSBjb2RlIHBhdHRlcm46Cj4gCj4g aWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMp Cj4gCXJldHVybiBlcnI7Cj4gCj4gaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8 fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gCXJldHVybiBlcnI7Cj4gCj4g aW4gbWFueSBmdW5jdGlvbnMgb2YgdGhlIGVuZHBvaW50IGNvbnRyb2xsZXIgY29yZSBjb2RlLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IERhbWllbiBMZSBNb2FsIDxkbGVtb2FsQGtlcm5lbC5vcmc+CgpP bmUgbml0IGJlbG93LiBXaXRoIHRoYXQgZml4ZWQsCgpSZXZpZXdlZC1ieTogTWFuaXZhbm5hbiBT YWRoYXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJvLm9yZz4KCj4gLS0tCj4gIGRy aXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jIHwgNzkgKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNv cmUuYyBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jCj4gaW5kZXggZGEzZmMw Nzk1YjBiLi43NTRhZmQxMTViYmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wY2kvZW5kcG9pbnQv cGNpLWVwYy1jb3JlLmMKPiArKysgYi9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUu Ywo+IEBAIC0xMjYsNiArMTI2LDE4IEBAIGVudW0gcGNpX2Jhcm5vIHBjaV9lcGNfZ2V0X25leHRf ZnJlZV9iYXIoY29uc3Qgc3RydWN0IHBjaV9lcGNfZmVhdHVyZXMKPiAgfQo+ICBFWFBPUlRfU1lN Qk9MX0dQTChwY2lfZXBjX2dldF9uZXh0X2ZyZWVfYmFyKTsKPiAgCj4gK3N0YXRpYyBpbmxpbmUg Ym9vbCBwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKHN0cnVjdCBwY2lfZXBjICplcGMsCj4gKwkJ CQkJICAgICB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubykKCk5vIG5lZWQgdG8gYWRkICdpbmxpbmUn IGtleXdvcmQgdG8gZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gYSAuYyBmaWxlLiBDb21waWxlcgp3 aWxsIGhhbmRsZSB0aGF0LgoKLSBNYW5pCgo+ICt7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBj KSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwo+ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVw Yy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0 cnVlOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogcGNpX2VwY19nZXRfZmVhdHVyZXMoKSAtIGdldCB0 aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IEVQQwo+ICAgKiBAZXBjOiB0aGUgZmVhdHVyZXMgc3Vw cG9ydGVkIGJ5ICp0aGlzKiBFUEMgZGV2aWNlIHdpbGwgYmUgcmV0dXJuZWQKPiBAQCAtMTQzLDEw ICsxNTUsNyBAQCBjb25zdCBzdHJ1Y3QgcGNpX2VwY19mZWF0dXJlcyAqcGNpX2VwY19nZXRfZmVh dHVyZXMoc3RydWN0IHBjaV9lcGMgKmVwYywKPiAgewo+ICAJY29uc3Qgc3RydWN0IHBjaV9lcGNf ZmVhdHVyZXMgKmVwY19mZWF0dXJlczsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8 fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCj4g LQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5t YXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMs IGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gIAlpZiAoIWVwYy0+ b3BzLT5nZXRfZmVhdHVyZXMpCj4gQEAgLTIxNiwxMCArMjI1LDcgQEAgaW50IHBjaV9lcGNfcmFp c2VfaXJxKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7 Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8g Pj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2 ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNb ZnVuY19ub10pKQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19u bywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWlmICghZXBjLT5vcHMt PnJhaXNlX2lycSkKPiBAQCAtMjYwLDEwICsyNjYsNyBAQCBpbnQgcGNpX2VwY19tYXBfbXNpX2ly cShzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubywKPiAgewo+ICAJ aW50IHJldDsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSkKPiAtCQlyZXR1cm4gLUVJ TlZBTDsKPiAtCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5j X25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9p c192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg Cj4gIAlpZiAoIWVwYy0+b3BzLT5tYXBfbXNpX2lycSkKPiBAQCAtMjkxLDEwICsyOTQsNyBAQCBp bnQgcGNpX2VwY19nZXRfbXNpKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZm dW5jX25vKQo+ICB7Cj4gIAlpbnQgaW50ZXJydXB0Owo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVM TChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+IC0JCXJldHVybiAwOwo+ IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBl cGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlk KGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlmICghZXBj LT5vcHMtPmdldF9tc2kpCj4gQEAgLTMyNywxMSArMzI3LDEwIEBAIGludCBwY2lfZXBjX3NldF9t c2koc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sIHU4IGludGVy cnVwdHMpCj4gIAlpbnQgcmV0Owo+ICAJdTggZW5jb2RlX2ludDsKPiAgCj4gLQlpZiAoSVNfRVJS X09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucyB8fAo+IC0JICAg IGludGVycnVwdHMgPCAxIHx8IGludGVycnVwdHMgPiAzMikKPiArCWlmICghcGNpX2VwY19mdW5j dGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25v ID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChpbnRlcnJ1cHRzIDwgMSB8fCBpbnRl cnJ1cHRzID4gMzIpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWYgKCFlcGMtPm9wcy0+ c2V0X21zaSkKPiBAQCAtMzU5LDEwICszNTgsNyBAQCBpbnQgcGNpX2VwY19nZXRfbXNpeChzdHJ1 Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubykKPiAgewo+ICAJaW50IGlu dGVycnVwdDsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVw Yy0+bWF4X2Z1bmN0aW9ucykKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAodmZ1bmNfbm8gPiAw ICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkK PiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25v KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAoIWVwYy0+b3BzLT5nZXRfbXNpeCkKPiBAQCAt Mzk1LDExICszOTEsMTAgQEAgaW50IHBjaV9lcGNfc2V0X21zaXgoc3RydWN0IHBjaV9lcGMgKmVw YywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sCj4gIHsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYg KElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMgfHwK PiAtCSAgICBpbnRlcnJ1cHRzIDwgMSB8fCBpbnRlcnJ1cHRzID4gMjA0OCkKPiArCWlmICghcGNp X2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8 IHZmdW5jX25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChpbnRlcnJ1cHRzIDwg MSB8fCBpbnRlcnJ1cHRzID4gMjA0OCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlpZiAo IWVwYy0+b3BzLT5zZXRfbXNpeCkKPiBAQCAtNDI2LDEwICs0MjEsNyBAQCBFWFBPUlRfU1lNQk9M X0dQTChwY2lfZXBjX3NldF9tc2l4KTsKPiAgdm9pZCBwY2lfZXBjX3VubWFwX2FkZHIoc3RydWN0 IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sCj4gIAkJCXBoeXNfYWRkcl90 IHBoeXNfYWRkcikKPiAgewo+IC0JaWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+ PSBlcGMtPm1heF9mdW5jdGlvbnMpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+ IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10p KQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNf bm8pKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoIWVwYy0+b3BzLT51bm1hcF9hZGRyKQo+IEBA IC00NTcsMTAgKzQ0OSw3IEBAIGludCBwY2lfZXBjX21hcF9hZGRyKHN0cnVjdCBwY2lfZXBjICpl cGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlm IChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+ IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1h eF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYgKCFwY2lf ZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAKPiAgCWlmICghZXBjLT5vcHMtPm1hcF9hZGRyKQo+IEBAIC00ODcsMTIg KzQ3NiwxMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX21hcF9hZGRyKTsKPiAgdm9pZCBw Y2lfZXBjX2NsZWFyX2JhcihzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVu Y19ubywKPiAgCQkgICAgICAgc3RydWN0IHBjaV9lcGZfYmFyICplcGZfYmFyKQo+ICB7Cj4gLQlp ZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucyB8 fAo+IC0JICAgIChlcGZfYmFyLT5iYXJubyA9PSBCQVJfNSAmJgo+IC0JICAgICBlcGZfYmFyLT5m bGFncyAmIFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfNjQpKQo+ICsJaWYgKCFwY2lfZXBjX2Z1 bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybjsKPiAg Cj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBj LT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChlcGZfYmFyLT5iYXJubyA9PSBCQVJfNSAmJgo+ ICsJICAgIGVwZl9iYXItPmZsYWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkKPiAg CQlyZXR1cm47Cj4gIAo+ICAJaWYgKCFlcGMtPm9wcy0+Y2xlYXJfYmFyKQo+IEBAIC01MTksMTgg KzUwNywxNiBAQCBpbnQgcGNpX2VwY19zZXRfYmFyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1 bmNfbm8sIHU4IHZmdW5jX25vLAo+ICAJaW50IHJldDsKPiAgCWludCBmbGFncyA9IGVwZl9iYXIt PmZsYWdzOwo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBj LT5tYXhfZnVuY3Rpb25zIHx8Cj4gLQkgICAgKGVwZl9iYXItPmJhcm5vID09IEJBUl81ICYmCj4g LQkgICAgIGZsYWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkgfHwKPiArCWlmICgh cGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoKGVwZl9iYXItPmJhcm5vID09IEJBUl81ICYmIGZs YWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkgfHwKPiAgCSAgICAoZmxhZ3MgJiBQ Q0lfQkFTRV9BRERSRVNTX1NQQUNFX0lPICYmCj4gIAkgICAgIGZsYWdzICYgUENJX0JBU0VfQURE UkVTU19JT19NQVNLKSB8fAo+ICAJICAgICh1cHBlcl8zMl9iaXRzKGVwZl9iYXItPnNpemUpICYm Cj4gIAkgICAgICEoZmxhZ3MgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0KSkpCj4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3Zm cyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gLQkJcmV0dXJuIC1FSU5W QUw7Cj4gLQo+ICAJaWYgKCFlcGMtPm9wcy0+c2V0X2JhcikKPiAgCQlyZXR1cm4gMDsKPiAgCj4g QEAgLTU1OSwxMCArNTQ1LDcgQEAgaW50IHBjaV9lcGNfd3JpdGVfaGVhZGVyKHN0cnVjdCBwY2lf ZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAK PiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rp b25zKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFl cGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYg KCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJ CXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCS8qIE9ubHkgVmlydHVhbCBGdW5jdGlvbiAjMSBoYXMg ZGV2aWNlSUQgKi8KPiAtLSAKPiAyLjQ0LjAKPiAKCi0tIArgrq7grqPgrr/grrXgrqPgr43grqPg rqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1yb2NrY2hpcCBtYWlsaW5nIGxpc3QKTGludXgt cm9ja2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJvY2tjaGlwCg== 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A1C70CD1288 for ; Wed, 3 Apr 2024 06:46:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tWi5/ACutKX0kSauKp/IRWQUZlkC/2tBHINiRa+3w0U=; b=3aPWxrM1OjegOx UeEsDxGIdkgezbaMrRp5ZUsMRRurbt/u1SXzHJ3kDdZL1/ecnAv/q+zW4KFPm4BqmtIJm4NjsfUb6 knkfJe3BjUcB37qfN4t+u+H7bmaRCQjKNJFhIxDg/EQRI7bKO+yu1MhLOjen+3MEIbjol86cFlWjP k6dZFYhnFLpunx6W9X1lRmHZp+TKyYhJUFnxB89uR8Ws/HikESqC8KqTHFNMAhfDlppvihqbCicZ3 Ju+jwRLiivhUXP2JgX+m63LEVXPX68v6t+5OhYsTUfXN7SYfsGql72VcTRH5DFcUDPRAfUAApjkFc UHYfJSlEcOOpifM9RSqw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO6-0000000EJIm-3cVq; Wed, 03 Apr 2024 06:46:23 +0000 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rruO2-0000000EJGj-3tsy for linux-arm-kernel@lists.infradead.org; Wed, 03 Apr 2024 06:46:21 +0000 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-221e6bf537dso3932303fac.1 for ; Tue, 02 Apr 2024 23:46:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712126778; x=1712731578; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=YniK1+FrMc+9N4JStvUB+ACMSlTdRaZa7vYjjo4ANSJbICR8ifTrGkZOpPLoHpl9k9 7S1V2UDoNw3ieF4vJBCoWFSAnl9Sov3OsFRAp+8gyb62RjnSkHB0Gmd4Zj06Buvbqy0p RrHnbFYLlukBC7dWqAmibzdXfZxCJrq3N7Pc0hHFjcWMZDipcPjOUboaZ1Wy+c0dymFY G/MOHFXOgM9UP4c3aUa7apOKYEzumdC1Gw3Sn0zx0+98kMVM2+leW1x/HCkXbeM/aFJt Eclbe3Hh/7U6q19npXsBdyhb1YQf0YOB3njUkFYLQaNQY4T6QFN6eccpL2ZEZUxn+i9A KYHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712126778; x=1712731578; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=t7PxrVKW+xziJG22nruxVobi3iX95Q/TH3TNd20dcL8=; b=j2dNJl/vSMRp5W62067Mu24y9vEQVisvhc5t6ufCJ2bX6VWgFydDRBhK2UDEpSCYoB 7gFd9+I3u5MTEbpMba0/Mc7cdkjT11B0ZdIO9ZKuleqsdeJ/OFoypI7MtSSfj2WerZt/ pJ0/MQdnTe/oL81GMSGmGZGKDbmt1QojB1dVmuj/ie8Jy3aD2eUMz/3ZHykdQwxLpbQg Lkv+3EF2yHDGYHWYUSQ5SFm4ISgfyCHyb4Uql/JEKMHT3jGH3XZ+mKkVyL0WMfflVsAn FFqNbODlpmC+tKPZxUsW6RuIN/mtG3CyK62Ww9GjkADQWbxbYNwcwPyqXARMnc65qmPd xB/Q== X-Forwarded-Encrypted: i=1; AJvYcCWbsjbWPmp7GlT87jfP80Lh/+y5/xvtbS5xiaWjFu/e4/vPJnqEslWnLF7xoiQzk1BRp6I6mlNqQCOIc21iL9ugKa3LgmmGy+VVBzCQIJ6qVJwYPek= X-Gm-Message-State: AOJu0YwXcKSw++bmBB5NEcwALKFx3vbCcqU4skdnSwH8aOWmkNLtzq71 NkSbwVyNjG2wEJh9ziw22xfw0gWNndq9HFfwbIkGrCHgYTku+iewy66OQug49IuisJn3jiaL6Ng = X-Google-Smtp-Source: AGHT+IGpI2xtNByiryiE2cJzVu481+eI1+G8W13TvfGzP3+1XQ6iPKh97Q6OebN9sY+msv6hN6A8yg== X-Received: by 2002:a05:6871:547:b0:22e:7c64:af74 with SMTP id t7-20020a056871054700b0022e7c64af74mr2036337oal.44.1712126777521; Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Received: from thinkpad ([103.28.246.48]) by smtp.gmail.com with ESMTPSA id j15-20020aa7928f000000b006ea7d877191sm11041957pfa.2.2024.04.02.23.46.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Apr 2024 23:46:17 -0700 (PDT) Date: Wed, 3 Apr 2024 12:16:10 +0530 From: Manivannan Sadhasivam To: Damien Le Moal Cc: Lorenzo Pieralisi , Kishon Vijay Abraham I , Shawn Lin , Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= , Bjorn Helgaas , Heiko Stuebner , linux-pci@vger.kernel.org, Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, Rick Wertenbroek , Wilfred Mallawa , Niklas Cassel Subject: Re: [PATCH v2 01/18] PCI: endpoint: Introduce pci_epc_function_is_valid() Message-ID: <20240403064610.GB25309@thinkpad> References: <20240330041928.1555578-1-dlemoal@kernel.org> <20240330041928.1555578-2-dlemoal@kernel.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240330041928.1555578-2-dlemoal@kernel.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240402_234619_105647_443BE69D X-CRM114-Status: GOOD ( 21.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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 T24gU2F0LCBNYXIgMzAsIDIwMjQgYXQgMDE6MTk6MTFQTSArMDkwMCwgRGFtaWVuIExlIE1vYWwg d3JvdGU6Cj4gSW50cm9kdWNlIHRoZSBlcGMgY29yZSBoZWxwZXIgZnVuY3Rpb24gcGNpX2VwY19m dW5jdGlvbl9pc192YWxpZCgpIHRvCj4gdmVyaWZ5IHRoYXQgYW4gZXBjIHBvaW50ZXIsIGEgcGh5 c2ljYWwgZnVuY3Rpb24gbnVtYmVyIGFuZCBhIHZpcnR1YWwKPiBmdW5jdGlvbiBudW1iZXIgYXJl IGFsbCB2YWxpZC4gVGhpcyBhdm9pZHMgcmVwZWF0aW5nIHRoZSBjb2RlIHBhdHRlcm46Cj4gCj4g aWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMp Cj4gCXJldHVybiBlcnI7Cj4gCj4gaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8 fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gCXJldHVybiBlcnI7Cj4gCj4g aW4gbWFueSBmdW5jdGlvbnMgb2YgdGhlIGVuZHBvaW50IGNvbnRyb2xsZXIgY29yZSBjb2RlLgo+ IAo+IFNpZ25lZC1vZmYtYnk6IERhbWllbiBMZSBNb2FsIDxkbGVtb2FsQGtlcm5lbC5vcmc+CgpP bmUgbml0IGJlbG93LiBXaXRoIHRoYXQgZml4ZWQsCgpSZXZpZXdlZC1ieTogTWFuaXZhbm5hbiBT YWRoYXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJvLm9yZz4KCj4gLS0tCj4gIGRy aXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jIHwgNzkgKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNv cmUuYyBiL2RyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jCj4gaW5kZXggZGEzZmMw Nzk1YjBiLi43NTRhZmQxMTViYmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9wY2kvZW5kcG9pbnQv cGNpLWVwYy1jb3JlLmMKPiArKysgYi9kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUu Ywo+IEBAIC0xMjYsNiArMTI2LDE4IEBAIGVudW0gcGNpX2Jhcm5vIHBjaV9lcGNfZ2V0X25leHRf ZnJlZV9iYXIoY29uc3Qgc3RydWN0IHBjaV9lcGNfZmVhdHVyZXMKPiAgfQo+ICBFWFBPUlRfU1lN Qk9MX0dQTChwY2lfZXBjX2dldF9uZXh0X2ZyZWVfYmFyKTsKPiAgCj4gK3N0YXRpYyBpbmxpbmUg Ym9vbCBwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKHN0cnVjdCBwY2lfZXBjICplcGMsCj4gKwkJ CQkJICAgICB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubykKCk5vIG5lZWQgdG8gYWRkICdpbmxpbmUn IGtleXdvcmQgdG8gZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW4gYSAuYyBmaWxlLiBDb21waWxlcgp3 aWxsIGhhbmRsZSB0aGF0LgoKLSBNYW5pCgo+ICt7Cj4gKwlpZiAoSVNfRVJSX09SX05VTEwoZXBj KSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwo+ICsJaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3ZmcyB8fCB2ZnVuY19ubyA+IGVw Yy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCXJldHVybiB0 cnVlOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogcGNpX2VwY19nZXRfZmVhdHVyZXMoKSAtIGdldCB0 aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IEVQQwo+ICAgKiBAZXBjOiB0aGUgZmVhdHVyZXMgc3Vw cG9ydGVkIGJ5ICp0aGlzKiBFUEMgZGV2aWNlIHdpbGwgYmUgcmV0dXJuZWQKPiBAQCAtMTQzLDEw ICsxNTUsNyBAQCBjb25zdCBzdHJ1Y3QgcGNpX2VwY19mZWF0dXJlcyAqcGNpX2VwY19nZXRfZmVh dHVyZXMoc3RydWN0IHBjaV9lcGMgKmVwYywKPiAgewo+ICAJY29uc3Qgc3RydWN0IHBjaV9lcGNf ZmVhdHVyZXMgKmVwY19mZWF0dXJlczsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8 fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucykKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCj4g LQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5t YXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMs IGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gIAlpZiAoIWVwYy0+ b3BzLT5nZXRfZmVhdHVyZXMpCj4gQEAgLTIxNiwxMCArMjI1LDcgQEAgaW50IHBjaV9lcGNfcmFp c2VfaXJxKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7 Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8g Pj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2 ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNb ZnVuY19ub10pKQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19u bywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCWlmICghZXBjLT5vcHMt PnJhaXNlX2lycSkKPiBAQCAtMjYwLDEwICsyNjYsNyBAQCBpbnQgcGNpX2VwY19tYXBfbXNpX2ly cShzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubywKPiAgewo+ICAJ aW50IHJldDsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSkKPiAtCQlyZXR1cm4gLUVJ TlZBTDsKPiAtCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5j X25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9p c192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg Cj4gIAlpZiAoIWVwYy0+b3BzLT5tYXBfbXNpX2lycSkKPiBAQCAtMjkxLDEwICsyOTQsNyBAQCBp bnQgcGNpX2VwY19nZXRfbXNpKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZm dW5jX25vKQo+ICB7Cj4gIAlpbnQgaW50ZXJydXB0Owo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVM TChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+IC0JCXJldHVybiAwOwo+ IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBl cGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlk KGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlmICghZXBj LT5vcHMtPmdldF9tc2kpCj4gQEAgLTMyNywxMSArMzI3LDEwIEBAIGludCBwY2lfZXBjX3NldF9t c2koc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sIHU4IGludGVy cnVwdHMpCj4gIAlpbnQgcmV0Owo+ICAJdTggZW5jb2RlX2ludDsKPiAgCj4gLQlpZiAoSVNfRVJS X09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucyB8fAo+IC0JICAg IGludGVycnVwdHMgPCAxIHx8IGludGVycnVwdHMgPiAzMikKPiArCWlmICghcGNpX2VwY19mdW5j dGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1cm4gLUVJTlZB TDsKPiAgCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25v ID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChpbnRlcnJ1cHRzIDwgMSB8fCBpbnRl cnJ1cHRzID4gMzIpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWYgKCFlcGMtPm9wcy0+ c2V0X21zaSkKPiBAQCAtMzU5LDEwICszNTgsNyBAQCBpbnQgcGNpX2VwY19nZXRfbXNpeChzdHJ1 Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVuY19ubykKPiAgewo+ICAJaW50IGlu dGVycnVwdDsKPiAgCj4gLQlpZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVw Yy0+bWF4X2Z1bmN0aW9ucykKPiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlpZiAodmZ1bmNfbm8gPiAw ICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkK PiArCWlmICghcGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25v KSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAoIWVwYy0+b3BzLT5nZXRfbXNpeCkKPiBAQCAt Mzk1LDExICszOTEsMTAgQEAgaW50IHBjaV9lcGNfc2V0X21zaXgoc3RydWN0IHBjaV9lcGMgKmVw YywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sCj4gIHsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYg KElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+PSBlcGMtPm1heF9mdW5jdGlvbnMgfHwK PiAtCSAgICBpbnRlcnJ1cHRzIDwgMSB8fCBpbnRlcnJ1cHRzID4gMjA0OCkKPiArCWlmICghcGNp X2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiAgCQlyZXR1 cm4gLUVJTlZBTDsKPiAgCj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8 IHZmdW5jX25vID4gZXBjLT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChpbnRlcnJ1cHRzIDwg MSB8fCBpbnRlcnJ1cHRzID4gMjA0OCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gIAlpZiAo IWVwYy0+b3BzLT5zZXRfbXNpeCkKPiBAQCAtNDI2LDEwICs0MjEsNyBAQCBFWFBPUlRfU1lNQk9M X0dQTChwY2lfZXBjX3NldF9tc2l4KTsKPiAgdm9pZCBwY2lfZXBjX3VubWFwX2FkZHIoc3RydWN0 IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywgdTggdmZ1bmNfbm8sCj4gIAkJCXBoeXNfYWRkcl90 IHBoeXNfYWRkcikKPiAgewo+IC0JaWYgKElTX0VSUl9PUl9OVUxMKGVwYykgfHwgZnVuY19ubyA+ PSBlcGMtPm1heF9mdW5jdGlvbnMpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+ IDAgJiYgKCFlcGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10p KQo+ICsJaWYgKCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNf bm8pKQo+ICAJCXJldHVybjsKPiAgCj4gIAlpZiAoIWVwYy0+b3BzLT51bm1hcF9hZGRyKQo+IEBA IC00NTcsMTAgKzQ0OSw3IEBAIGludCBwY2lfZXBjX21hcF9hZGRyKHN0cnVjdCBwY2lfZXBjICpl cGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlm IChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rpb25zKQo+ IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFlcGMtPm1h eF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYgKCFwY2lf ZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVy biAtRUlOVkFMOwo+ICAKPiAgCWlmICghZXBjLT5vcHMtPm1hcF9hZGRyKQo+IEBAIC00ODcsMTIg KzQ3NiwxMSBAQCBFWFBPUlRfU1lNQk9MX0dQTChwY2lfZXBjX21hcF9hZGRyKTsKPiAgdm9pZCBw Y2lfZXBjX2NsZWFyX2JhcihzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5jX25vLCB1OCB2ZnVu Y19ubywKPiAgCQkgICAgICAgc3RydWN0IHBjaV9lcGZfYmFyICplcGZfYmFyKQo+ICB7Cj4gLQlp ZiAoSVNfRVJSX09SX05VTEwoZXBjKSB8fCBmdW5jX25vID49IGVwYy0+bWF4X2Z1bmN0aW9ucyB8 fAo+IC0JICAgIChlcGZfYmFyLT5iYXJubyA9PSBCQVJfNSAmJgo+IC0JICAgICBlcGZfYmFyLT5m bGFncyAmIFBDSV9CQVNFX0FERFJFU1NfTUVNX1RZUEVfNjQpKQo+ICsJaWYgKCFwY2lfZXBjX2Z1 bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJCXJldHVybjsKPiAg Cj4gLQlpZiAodmZ1bmNfbm8gPiAwICYmICghZXBjLT5tYXhfdmZzIHx8IHZmdW5jX25vID4gZXBj LT5tYXhfdmZzW2Z1bmNfbm9dKSkKPiArCWlmIChlcGZfYmFyLT5iYXJubyA9PSBCQVJfNSAmJgo+ ICsJICAgIGVwZl9iYXItPmZsYWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkKPiAg CQlyZXR1cm47Cj4gIAo+ICAJaWYgKCFlcGMtPm9wcy0+Y2xlYXJfYmFyKQo+IEBAIC01MTksMTgg KzUwNywxNiBAQCBpbnQgcGNpX2VwY19zZXRfYmFyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1 bmNfbm8sIHU4IHZmdW5jX25vLAo+ICAJaW50IHJldDsKPiAgCWludCBmbGFncyA9IGVwZl9iYXIt PmZsYWdzOwo+ICAKPiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBj LT5tYXhfZnVuY3Rpb25zIHx8Cj4gLQkgICAgKGVwZl9iYXItPmJhcm5vID09IEJBUl81ICYmCj4g LQkgICAgIGZsYWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkgfHwKPiArCWlmICgh cGNpX2VwY19mdW5jdGlvbl9pc192YWxpZChlcGMsIGZ1bmNfbm8sIHZmdW5jX25vKSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAoKGVwZl9iYXItPmJhcm5vID09IEJBUl81ICYmIGZs YWdzICYgUENJX0JBU0VfQUREUkVTU19NRU1fVFlQRV82NCkgfHwKPiAgCSAgICAoZmxhZ3MgJiBQ Q0lfQkFTRV9BRERSRVNTX1NQQUNFX0lPICYmCj4gIAkgICAgIGZsYWdzICYgUENJX0JBU0VfQURE UkVTU19JT19NQVNLKSB8fAo+ICAJICAgICh1cHBlcl8zMl9iaXRzKGVwZl9iYXItPnNpemUpICYm Cj4gIAkgICAgICEoZmxhZ3MgJiBQQ0lfQkFTRV9BRERSRVNTX01FTV9UWVBFXzY0KSkpCj4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JaWYgKHZmdW5jX25vID4gMCAmJiAoIWVwYy0+bWF4X3Zm cyB8fCB2ZnVuY19ubyA+IGVwYy0+bWF4X3Zmc1tmdW5jX25vXSkpCj4gLQkJcmV0dXJuIC1FSU5W QUw7Cj4gLQo+ICAJaWYgKCFlcGMtPm9wcy0+c2V0X2JhcikKPiAgCQlyZXR1cm4gMDsKPiAgCj4g QEAgLTU1OSwxMCArNTQ1LDcgQEAgaW50IHBjaV9lcGNfd3JpdGVfaGVhZGVyKHN0cnVjdCBwY2lf ZXBjICplcGMsIHU4IGZ1bmNfbm8sIHU4IHZmdW5jX25vLAo+ICB7Cj4gIAlpbnQgcmV0Owo+ICAK PiAtCWlmIChJU19FUlJfT1JfTlVMTChlcGMpIHx8IGZ1bmNfbm8gPj0gZXBjLT5tYXhfZnVuY3Rp b25zKQo+IC0JCXJldHVybiAtRUlOVkFMOwo+IC0KPiAtCWlmICh2ZnVuY19ubyA+IDAgJiYgKCFl cGMtPm1heF92ZnMgfHwgdmZ1bmNfbm8gPiBlcGMtPm1heF92ZnNbZnVuY19ub10pKQo+ICsJaWYg KCFwY2lfZXBjX2Z1bmN0aW9uX2lzX3ZhbGlkKGVwYywgZnVuY19ubywgdmZ1bmNfbm8pKQo+ICAJ CXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCS8qIE9ubHkgVmlydHVhbCBGdW5jdGlvbiAjMSBoYXMg ZGV2aWNlSUQgKi8KPiAtLSAKPiAyLjQ0LjAKPiAKCi0tIArgrq7grqPgrr/grrXgrqPgr43grqPg rqngr40g4K6a4K6k4K6+4K6a4K6/4K614K6u4K+NCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVsIG1haWxpbmcgbGlzdApsaW51 eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==