From nobody Sun Feb 8 01:30:14 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3511F36B065; Thu, 22 Jan 2026 03:09:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769051355; cv=none; b=qIj8417qUI1OGoK82kRtfl6kGSepSsGihs//zpu8AWe6tsXzLtOmGl5gQOluUaw9mQZxAU6JPWPPHPXPptJHSWSMp+4F7gQFia6mSik0j3EfYfRu/uPIR0s0DhmeMO8vBLoJIVseCJ6t6MtAQc9j3uB319FZBjTonwWMqQAxfe8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769051355; c=relaxed/simple; bh=5edyFhinTJ4kJ9oghaK75bFMOFjyWeVoOxX/jRXbqsw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n01sxsT6D7zJFNO/S3RouJoWzIY544TOKNHAjKzg6NLo+2WlZ7q045qYMGroiZjFZl+kVFkQpcSiCySdRWWF0wOuCDrHj2sBDetpppeRL4dmbn3a/ONUO+wQYXrJ4r0InfhBtRxDFXxAvohkuxVTYKsq6TIoLHT1zWfIJyOu40Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=ATmkP3bE; arc=none smtp.client-ip=198.175.65.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ATmkP3bE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769051354; x=1800587354; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=5edyFhinTJ4kJ9oghaK75bFMOFjyWeVoOxX/jRXbqsw=; b=ATmkP3bEDpK7hVG46N52aFwEvUIHtyOEJK4nIs08hFRkcBx/hYh4kU8E GEA5rjENU/JNuK1A1Z5uWciFrmAK7W/LWb/l/mRx3ApVX13eT347Xdt1N JzFJJhlZqeNz1jGEew0uu8VHTVZ8xWe2UaQLPdLLKFATzzQaZQWjsnk0g jyHaxSu7t98gHXrR7hEDs9dZuyIinr94qqf7dfD0HikZa194BZBYBMy7S hIsQTHIIR2JfWWA/+S3uNiYK+rhUPE8l7qjP81ei3uMSZd3l003qaoJs+ vWzzTKPZs92trPRpfKQeeS1Q5zAf0DrdM3FMNKiGObX4f29sU+TG/5UN2 g==; X-CSE-ConnectionGUID: a7zJPgqgTp+8bTq5b5tSOQ== X-CSE-MsgGUID: o6bwQDWdQJiCVY8Z6qV3PQ== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="81733090" X-IronPort-AV: E=Sophos;i="6.21,245,1763452800"; d="scan'208";a="81733090" Received: from fmviesa005.fm.intel.com ([10.60.135.145]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 19:09:12 -0800 X-CSE-ConnectionGUID: XFxxqX2gQLGBXASSs0kDaA== X-CSE-MsgGUID: ysZpLgJ+RUuGkax96631bQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,245,1763452800"; d="scan'208";a="211058815" Received: from debox1-desk4.jf.intel.com ([10.88.27.138]) by fmviesa005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 19:09:11 -0800 From: "David E. Box" To: thomas.hellstrom@linux.intel.com, rodrigo.vivi@intel.com, irenic.rajneesh@gmail.com, ilpo.jarvinen@linux.intel.com, srinivas.pandruvada@linux.intel.com, intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, xi.pardee@linux.intel.com Cc: "David E. Box" , hansg@kernel.org, linux-kernel@vger.kernel.org, platform-driver-x86@vger.kernel.org Subject: [PATCH v3 1/6] platform/x86/intel/vsec: Refactor base_addr handling Date: Wed, 21 Jan 2026 19:08:56 -0800 Message-ID: <20260122030903.3247167-2-david.e.box@linux.intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260122030903.3247167-1-david.e.box@linux.intel.com> References: <20260122030903.3247167-1-david.e.box@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The base_addr field in intel_vsec_platform_info was originally added to support devices that emulate PCI VSEC capabilities in MMIO. Previously, the code would check at registration time whether base_addr was set, falling back to the PCI BAR if not. Refactor this by making base_addr an explicit function parameter. This clarifies ownership of the value and removes conditional logic from intel_vsec_add_dev(). It also enables making intel_vsec_platform_info const in a later patch, since the function no longer needs to write to info->base_addr. No functional change intended. Signed-off-by: David E. Box --- v3: - No change v2: - Use pci_resource_start() macro instead of direct pdev->resource array a= ccess (suggested by Ilpo) drivers/platform/x86/intel/vsec.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/drivers/platform/x86/intel/vsec.c b/drivers/platform/x86/intel= /vsec.c index ecfc7703f201..a10e2c65205c 100644 --- a/drivers/platform/x86/intel/vsec.c +++ b/drivers/platform/x86/intel/vsec.c @@ -271,14 +271,13 @@ EXPORT_SYMBOL_NS_GPL(intel_vsec_add_aux, "INTEL_VSEC"= ); =20 static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_head= er *header, struct intel_vsec_platform_info *info, - unsigned long cap_id) + unsigned long cap_id, u64 base_addr) { struct intel_vsec_device __free(kfree) *intel_vsec_dev =3D NULL; struct resource __free(kfree) *res =3D NULL; struct resource *tmp; struct device *parent; unsigned long quirks =3D info->quirks; - u64 base_addr; int i; =20 if (info->parent) @@ -310,11 +309,6 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, st= ruct intel_vsec_header *he if (quirks & VSEC_QUIRK_TABLE_SHIFT) header->offset >>=3D TABLE_OFFSET_SHIFT; =20 - if (info->base_addr) - base_addr =3D info->base_addr; - else - base_addr =3D pdev->resource[header->tbir].start; - /* * The DVSEC/VSEC contains the starting offset and count for a block of * discovery tables. Create a resource array of these tables to the @@ -412,7 +406,8 @@ static int get_cap_id(u32 header_id, unsigned long *cap= _id) =20 static int intel_vsec_register_device(struct pci_dev *pdev, struct intel_vsec_header *header, - struct intel_vsec_platform_info *info) + struct intel_vsec_platform_info *info, + u64 base_addr) { const struct vsec_feature_dependency *consumer_deps; struct vsec_priv *priv; @@ -428,7 +423,7 @@ static int intel_vsec_register_device(struct pci_dev *p= dev, * For others using the exported APIs, add the device directly. */ if (!pci_match_id(intel_vsec_pci_ids, pdev)) - return intel_vsec_add_dev(pdev, header, info, cap_id); + return intel_vsec_add_dev(pdev, header, info, cap_id, base_addr); =20 priv =3D pci_get_drvdata(pdev); if (priv->state[cap_id] =3D=3D STATE_REGISTERED || @@ -444,7 +439,7 @@ static int intel_vsec_register_device(struct pci_dev *p= dev, =20 consumer_deps =3D get_consumer_dependencies(priv, cap_id); if (!consumer_deps || suppliers_ready(priv, consumer_deps, cap_id)) { - ret =3D intel_vsec_add_dev(pdev, header, info, cap_id); + ret =3D intel_vsec_add_dev(pdev, header, info, cap_id, base_addr); if (ret) priv->state[cap_id] =3D STATE_SKIP; else @@ -464,7 +459,7 @@ static bool intel_vsec_walk_header(struct pci_dev *pdev, int ret; =20 for ( ; *header; header++) { - ret =3D intel_vsec_register_device(pdev, *header, info); + ret =3D intel_vsec_register_device(pdev, *header, info, info->base_addr); if (!ret) have_devices =3D true; } @@ -512,7 +507,8 @@ static bool intel_vsec_walk_dvsec(struct pci_dev *pdev, pci_read_config_dword(pdev, pos + PCI_DVSEC_HEADER2, &hdr); header.id =3D PCI_DVSEC_HEADER2_ID(hdr); =20 - ret =3D intel_vsec_register_device(pdev, &header, info); + ret =3D intel_vsec_register_device(pdev, &header, info, + pci_resource_start(pdev, header.tbir)); if (ret) continue; =20 @@ -557,7 +553,8 @@ static bool intel_vsec_walk_vsec(struct pci_dev *pdev, header.tbir =3D INTEL_DVSEC_TABLE_BAR(table); header.offset =3D INTEL_DVSEC_TABLE_OFFSET(table); =20 - ret =3D intel_vsec_register_device(pdev, &header, info); + ret =3D intel_vsec_register_device(pdev, &header, info, + pci_resource_start(pdev, header.tbir)); if (ret) continue; =20 --=20 2.43.0