From nobody Thu Sep 22 16:16:31 2022 X-Original-To: dev-commits-src-main@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 4MYL4w2XHPz4cjHl; Thu, 22 Sep 2022 16:16:32 +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 4MYL4w080Lz3PRP; Thu, 22 Sep 2022 16:16:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663863392; 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=9VmClTEvBEjJ0bwaXNl3+R/64J3hC3X4BEalb9Tbxk8=; b=Kk/NaDqlbmYAftbsLu4861R9nD99qqV2NcSNQ880Y2kw1ZBbeR5FhTYG2RBZTDSOZONQo6 9/+UtwohOJe2smNwPpOJKWiMiIjI52+LoCVoFcmTVqwHq5Ke8V9hY3360PJPW6KJRsVP+S jxk2gg+tQVQnmTBgEh/0XF/1ieW72900UhaWA0NEwv57p6iyosvPWLzuNZ7nyp5FnazRZ5 dpiOPaJV1AUS2KQmCTZpg+fyhkaqRrfx5lmAfJJt9VBYLHk0rQqCBxkkWhD6jODs3Ke4oJ GuZqMzCiyC+zvE8f6v43CQawWkELMj682cXs7RinxVq4NtRIkC4ZQycUC6Y1UA== 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 4MYL4v6DqLzSDD; Thu, 22 Sep 2022 16:16:31 +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 28MGGV87050469; Thu, 22 Sep 2022 16:16:31 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 28MGGVnM050468; Thu, 22 Sep 2022 16:16:31 GMT (envelope-from git) Date: Thu, 22 Sep 2022 16:16:31 GMT Message-Id: <202209221616.28MGGVnM050468@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 30048f61423b - main - LinuxKPI: pci.h split up pcim_iomap_regions_request_all() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@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/main X-Git-Reftype: branch X-Git-Commit: 30048f61423bed87912686a7adfd12be9a4c7c27 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1663863392; 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=9VmClTEvBEjJ0bwaXNl3+R/64J3hC3X4BEalb9Tbxk8=; b=vRDtU3Vhy/zuPLRoXGfETFcGjkH2XVMxkw9BIhA6rvjg34OnWkGMLBtjjLDdJTzWYML78G 30PJVJOeSRtsbIKnXPUjx1yD/AEYhkaveIgVTHOGODQr3qN72dBoyimQfIyDWBv6bc6bm0 4M3WSg6WqHVUmvNK1v+uordwahK4LAQsda/DPwVz+npacmvOC3GbU2Ptdl6hAV5hOEm5yP Ssy1xsPYY4tE2ih7RJPlOssoQp7KuG2WJtIk2LEtamtLfSr/FgQ61uTghmS6rjTngeitZp 86zsWv5Q5J82SsCLJoRy3VRWZaPkbsv/54BoHu1DrGR65FuWDBN51mzjjRM9qw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1663863392; a=rsa-sha256; cv=none; b=jElVywNNLSklpB5Hp41SpUfngVQpahpNSe01/7emShxBLjJhSi+yiZbvYGHwoy1C51+ncr Zq+Ln8ZkXzNEa0l96SYzpUucp4JSixrW4ZvgWAUd97vkW27Sy97WYcMRn3tHBDmLY5syKV o7JN0OerBTIw6yVm8gPVgN0hiMn0mhWwVjqaTwbzeadwiH2cBIWDxu2Yd6S38Bu0V/nn2G KgDUmyjaUOS4joaB8M/8bdjlEYfhOUPDQlFxA90WfVqgUIRN/3F6Rk9qxIx5ddJM0MwETp OD7lu+N51CgBXpidG2KCSHiteHMqrzSkgGZA1E4GnS1CrwVPzaJzw/LGSNoTjA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=30048f61423bed87912686a7adfd12be9a4c7c27 commit 30048f61423bed87912686a7adfd12be9a4c7c27 Author: Bjoern A. Zeeb AuthorDate: 2022-09-21 19:41:37 +0000 Commit: Bjoern A. Zeeb CommitDate: 2022-09-22 15:10:04 +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 MFC after: 7 days Reviewed by: hselasky Differential Revision: https://reviews.freebsd.org/D36654 --- 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 1f41bdb5b1db..34076e0ff1d5 100644 --- a/sys/compat/linuxkpi/common/include/linux/pci.h +++ b/sys/compat/linuxkpi/common/include/linux/pci.h @@ -1472,28 +1472,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) @@ -1516,7 +1505,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) { @@ -1524,14 +1512,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)