All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David E. Box" <david.e.box@linux.intel.com>
To: linux-kernel@vger.kernel.org,
	platform-driver-x86@vger.kernel.org,
	ilpo.jarvinen@linux.intel.com, rajvi.jingar@linux.intel.com
Subject: [PATCH V2 03/13] platform/x86/intel/vsec: Add intel_vsec_register
Date: Tue,  3 Oct 2023 19:02:12 -0700	[thread overview]
Message-ID: <20231004020222.193445-4-david.e.box@linux.intel.com> (raw)
In-Reply-To: <20231004020222.193445-1-david.e.box@linux.intel.com>

From: Gayatri Kammela <gayatri.kammela@linux.intel.com>

Add and export intel_vsec_register() to allow the registration of Intel
extended capabilities from other drivers. Add check to look for memory
conflicts before registering a new capability. Add a parent field to
intel_vsec_platform_info to allow specifying the parent device for
device managed cleanup.

Signed-off-by: Gayatri Kammela <gayatri.kammela@linux.intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
---
V2 - New patch splitting previous PATCH 1

 drivers/platform/x86/intel/vsec.c | 21 ++++++++++++++++++++-
 drivers/platform/x86/intel/vsec.h |  4 ++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/drivers/platform/x86/intel/vsec.c b/drivers/platform/x86/intel/vsec.c
index b14eba545770..c5d0202068cf 100644
--- a/drivers/platform/x86/intel/vsec.c
+++ b/drivers/platform/x86/intel/vsec.c
@@ -188,6 +188,15 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *he
 			     header->offset + i * (header->entry_size * sizeof(u32));
 		tmp->end = tmp->start + (header->entry_size * sizeof(u32)) - 1;
 		tmp->flags = IORESOURCE_MEM;
+
+		/* Check resource is not in use */
+		if (!request_mem_region(tmp->start, resource_size(tmp), "")) {
+			kfree(res);
+			kfree(intel_vsec_dev);
+			return -EBUSY;
+		}
+
+		release_mem_region(tmp->start, resource_size(tmp));
 	}
 
 	intel_vsec_dev->pcidev = pdev;
@@ -200,7 +209,7 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *he
 	else
 		intel_vsec_dev->ida = &intel_vsec_ida;
 
-	return intel_vsec_add_aux(pdev, NULL, intel_vsec_dev,
+	return intel_vsec_add_aux(pdev, info->parent, intel_vsec_dev,
 				  intel_vsec_name(header->id));
 }
 
@@ -318,6 +327,16 @@ static bool intel_vsec_walk_vsec(struct pci_dev *pdev,
 	return have_devices;
 }
 
+void intel_vsec_register(struct pci_dev *pdev,
+			 struct intel_vsec_platform_info *info)
+{
+	if (!pdev || !info)
+		return;
+
+	intel_vsec_walk_header(pdev, info);
+}
+EXPORT_SYMBOL_NS_GPL(intel_vsec_register, INTEL_VSEC);
+
 static int intel_vsec_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 {
 	struct intel_vsec_platform_info *info;
diff --git a/drivers/platform/x86/intel/vsec.h b/drivers/platform/x86/intel/vsec.h
index d3fefba3e623..a15fda2fcd28 100644
--- a/drivers/platform/x86/intel/vsec.h
+++ b/drivers/platform/x86/intel/vsec.h
@@ -69,6 +69,7 @@ enum intel_vsec_quirks {
 
 /* Platform specific data */
 struct intel_vsec_platform_info {
+	struct device *parent;
 	struct intel_vsec_header **headers;
 	unsigned long caps;
 	unsigned long quirks;
@@ -98,4 +99,7 @@ static inline struct intel_vsec_device *auxdev_to_ivdev(struct auxiliary_device
 {
 	return container_of(auxdev, struct intel_vsec_device, auxdev);
 }
+
+void intel_vsec_register(struct pci_dev *pdev,
+			 struct intel_vsec_platform_info *info);
 #endif
-- 
2.34.1


  parent reply	other threads:[~2023-10-04  2:02 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-04  2:02 [PATCH V2 00/13] intel_pmc: Add telemetry API to read counters David E. Box
2023-10-04  2:02 ` [PATCH V2 01/13] platform/x86/intel/vsec: Move structures to header David E. Box
2023-10-04  7:24   ` Ilpo Järvinen
2023-10-04  2:02 ` [PATCH V2 02/13] platform/x86/intel/vsec: remove platform_info from vsec device structure David E. Box
2023-10-04  7:27   ` Ilpo Järvinen
2023-10-04  2:02 ` David E. Box [this message]
2023-10-04  7:44   ` [PATCH V2 03/13] platform/x86/intel/vsec: Add intel_vsec_register Ilpo Järvinen
2023-10-04  2:02 ` [PATCH V2 04/13] platform/x86/intel/vsec: Add base address field David E. Box
2023-10-04  2:02 ` [PATCH V2 05/13] platform/x86/intel/pmt: Add header to struct intel_pmt_entry David E. Box
2023-10-04  2:02 ` [PATCH V2 06/13] platform/x86/intel/pmt: telemetry: Export API to read telemetry David E. Box
2023-10-04  7:22   ` Ilpo Järvinen
2023-10-04  2:02 ` [PATCH V2 07/13] platform/x86:intel/pmc: Call pmc_get_low_power_modes from platform init David E. Box
2023-10-04  7:45   ` Ilpo Järvinen
2023-10-04  2:02 ` [PATCH V2 08/13] platform/x86/intel/pmc: Split pmc_core_ssram_get_pmc() David E. Box
2023-10-04  2:02 ` [PATCH V2 09/13] platform/x86/intel/pmc: Find and register PMC telemetry entries David E. Box
2023-10-04  2:02 ` [PATCH V2 10/13] platform/x86/intel/pmc: Display LPM requirements for multiple PMCs David E. Box
2023-10-04  2:02 ` [PATCH V2 11/13] platform/x86/intel/pmc: Retrieve LPM information using Intel PMT David E. Box
2023-10-04  2:02 ` [PATCH V2 12/13] platform/x86/intel/pmc: Read low power mode requirements for MTL-M and MTL-P David E. Box
2023-10-04  7:48   ` Ilpo Järvinen
2023-10-04  2:02 ` [PATCH V2 13/13] platform/x86/intel/pmc: Add debug attribute for Die C6 counter David E. Box

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231004020222.193445-4-david.e.box@linux.intel.com \
    --to=david.e.box@linux.intel.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rajvi.jingar@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.