From nobody Mon Oct 17 20:41:30 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Mrpn64x0Zz4fQkn; Mon, 17 Oct 2022 20:41:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Mrpn63c6nz45bC; Mon, 17 Oct 2022 20:41:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1666039290; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qLFpJd5aFOoWb8nY2UnsdrVat7C7k1TRjgvV37KnSfw=; b=pm0qdOrychLcOshwphwk0ktj3hZJsZoVGTXRxcHz2TL+shFuuigJF2ZGk9EYPjMSjgDsSO xrsSxwv9dL+7aFdwhxM2XLH1YBshV5LgbPBDTAyfcJjD+tjPpoHc4lt7nIcnk5WFtOsMaa zCz8yxBf8Ygx4w3FhPF9x64cBZycx7FLh5LWQygZBkMGiqYWykjub2VkYqh9MOoMsDCC7O wy9yOUhAmWx13sQMgekiNyRNcN6pUNYKWJWdJpuo4T2dVfws4pHgQp8dtBWknmTjS7VaFh 8E4reT5e8vIqkwWRtxMmVMWqXXRIestK5IGysOZ8F2xdKOw68m+ngmC6t0lKew== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Mrpn62J3bzxQH; Mon, 17 Oct 2022 20:41:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 29HKfUCv096337; Mon, 17 Oct 2022 20:41:30 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 29HKfUAg096336; Mon, 17 Oct 2022 20:41:30 GMT (envelope-from git) Date: Mon, 17 Oct 2022 20:41:30 GMT Message-Id: <202210172041.29HKfUAg096336@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 60ddb0cc3193 - stable/13 - LinuxKPI: pci.h split up pcim_iomap_regions_request_all() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 60ddb0cc3193ca98042f260685bbbf93369b472b Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1666039290; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=qLFpJd5aFOoWb8nY2UnsdrVat7C7k1TRjgvV37KnSfw=; b=p5JGS7A3jtMVV7gs28y1Xmnnw58gmki5KwJ43uHyRM+egnHOyhLx4VLrtBt+7/hsQb+1Pw a2LUu2PgXO/bbY1P2dP9f4r/0cVf/tNBDHVt4NsXQmGmU3qWgxpz74314M6lCsqDAngp/y rNhMoED01CuUC4uXwNdXgx8oTCJnURHAx/LciFUbuHB7QhG7kIX81kXf5lsHoYG+kvE4qY U8aQt9AXnPd8SfUOdCN3XN4R7bTcR8xxIswrfsQwG5rAAGCEWjJbr/yYrp9AudkT+nPj+3 WJ0bYlxI5UZBFerUNn9EMMppNpUqL9SIq+/miZE67/Px2PqD3rx12Ju89961nw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1666039290; a=rsa-sha256; cv=none; b=EKKBDknwn/YXEJKoAVcnOViMJLi4/mZkb+TpiLEW4ZAXA8+RJK7BGaWYYnyk4yoE1wSa8i /d+xSwbv1aVUJ3Iv+bnofxFVVI9eIK2j8YmUEOq2nsi8VoTYhyIt0kcMhK5u0JxKkqLqbQ RCrs2Bl492X39lrNixzPuhelg0BmmI/uh0yVfd1rn11wV2dfakNGUc/dciYyHknv0/ZCVh dDlAy2w5ssPZOTiWHNoq8UdaiDlBtcLltp3dAQwwDU17AciSO0tXvFFxf0X1F5yIlYwXfa jdKHx8zlDSI3+iJtJlY9RptNClj9NFhmA71S5h0ONlwZJQI9b4MWwBj6RK3+Lw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=60ddb0cc3193ca98042f260685bbbf93369b472b commit 60ddb0cc3193ca98042f260685bbbf93369b472b Author: Bjoern A. Zeeb AuthorDate: 2022-09-21 19:41:37 +0000 Commit: Bjoern A. Zeeb CommitDate: 2022-10-17 20:37:03 +0000 LinuxKPI: pci.h split up pcim_iomap_regions_request_all() Factor out parts of pcim_iomap_regions_request_all() into pcim_iomap_regions() now needed for a driver. Sponsored by: The FreeBSD Foundation Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D36654 (cherry picked from commit 30048f61423bed87912686a7adfd12be9a4c7c27) --- sys/compat/linuxkpi/common/include/linux/pci.h | 52 +++++++++++++++++--------- 1 file changed, 35 insertions(+), 17 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/pci.h b/sys/compat/linuxkpi/common/include/linux/pci.h index 1734fb52baa9..6493391926e2 100644 --- a/sys/compat/linuxkpi/common/include/linux/pci.h +++ b/sys/compat/linuxkpi/common/include/linux/pci.h @@ -1471,28 +1471,17 @@ pcim_iomap_table(struct pci_dev *pdev) } static inline int -pcim_iomap_regions_request_all(struct pci_dev *pdev, uint32_t mask, char *name) +pcim_iomap_regions(struct pci_dev *pdev, uint32_t mask, const char *name) { struct pcim_iomap_devres *dr; void *res; - uint32_t mappings, requests, req_mask; - int bar, error; + uint32_t mappings; + int bar; dr = lkpi_pcim_iomap_devres_find(pdev); if (dr == NULL) return (-ENOMEM); - /* Request all the BARs ("regions") we do not iomap. */ - req_mask = ((1 << (PCIR_MAX_BAR_0 + 1)) - 1) & ~mask; - for (bar = requests = 0; requests != req_mask; bar++) { - if ((req_mask & (1 << bar)) == 0) - continue; - error = pci_request_region(pdev, bar, name); - if (error != 0 && error != -ENODEV) - goto err; - requests |= (1 << bar); - } - /* Now iomap all the requested (by "mask") ones. */ for (bar = mappings = 0; mappings != mask; bar++) { if ((mask & (1 << bar)) == 0) @@ -1515,7 +1504,6 @@ pcim_iomap_regions_request_all(struct pci_dev *pdev, uint32_t mask, char *name) } return (0); - err: for (bar = PCIR_MAX_BAR_0; bar >= 0; bar--) { if ((mappings & (1 << bar)) != 0) { @@ -1523,14 +1511,44 @@ err: if (res == NULL) continue; pci_iounmap(pdev, res); - } else if ((requests & (1 << bar)) != 0) { - pci_release_region(pdev, bar); } } return (-EINVAL); } +static inline int +pcim_iomap_regions_request_all(struct pci_dev *pdev, uint32_t mask, char *name) +{ + uint32_t requests, req_mask; + int bar, error; + + /* Request all the BARs ("regions") we do not iomap. */ + req_mask = ((1 << (PCIR_MAX_BAR_0 + 1)) - 1) & ~mask; + for (bar = requests = 0; requests != req_mask; bar++) { + if ((req_mask & (1 << bar)) == 0) + continue; + error = pci_request_region(pdev, bar, name); + if (error != 0 && error != -ENODEV) + goto err; + requests |= (1 << bar); + } + + error = pcim_iomap_regions(pdev, mask, name); + if (error != 0) + goto err; + + return (0); + +err: + for (bar = PCIR_MAX_BAR_0; bar >= 0; bar--) { + if ((requests & (1 << bar)) != 0) + pci_release_region(pdev, bar); + } + + return (-EINVAL); +} + /* This is a FreeBSD extension so we can use bus_*(). */ static inline void linuxkpi_pcim_want_to_use_bus_functions(struct pci_dev *pdev)