From nobody Sun Feb 8 01:30:18 2026 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) (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 1267A35CB7C; Thu, 22 Jan 2026 01:50:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.15 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769046603; cv=none; b=sJfuaQhWFnvRoYu4DBnNksv1CATrJdSAoqrtDBk9FN3F6k6ZFTjXML8Gwao/Q57Al6ZL42+imXBRXXAk8dTTTH/ZYYt1Bg2Uyp1R1ntf8l5vvv1wUZwIB7vfLFHqmJvCj0HpM/3uS8tR7DfJ6EI2D5iFISLnhS2TwmrsLqLZeZQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769046603; c=relaxed/simple; bh=ym9oGfPvjz7Z8WTF9Cp66lX50243R2u/7n029qSwN9I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jvngtQKJHcuaAqviRTQY/P9oNUi2lW0AS7S0vBaz7wg0/toSH+TaLQWlxY6bo5IoRnCQt66hD1xSDSeCx8G63yBjzTJdo3MUTN1GeELGM9f/XC1Eoi1iS2EQ88B+m2Q9SDXJ2QgzJWrSJBhajXqdzTgRUDgIQClHcHcVgUPxLCQ= 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=R3pzahPk; arc=none smtp.client-ip=198.175.65.15 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="R3pzahPk" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1769046602; x=1800582602; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ym9oGfPvjz7Z8WTF9Cp66lX50243R2u/7n029qSwN9I=; b=R3pzahPkjW6A0KorSb4yo2/xZr24QG7dyIhfwNSK5gd+DOgscWUgzLqG rKq4gxgZcrlW5xdvmoE0gMeu8hJSxfBN0BjyazvBLZ5HHadUpbzDxcQAA /pV8F5b0riD0vUESmImYVqtx4usUEdqVVFAIw+yISIkad8f2IqJFOXUN8 nXpUdflDmj4HRMpVZfRWiMqILl5FXlneATIrhRb7gOE3+KMZL0egxnywE 03YLf9IdAQR5uhgX+2BaoBniKfwK5hNoF4Jhl1i3CasOZn8xXRsAYc4sg dH9QyeKqzSpUdEKBfpj6ZlGI3xS+U/nVq/J0McKDVskJPE9mwObHQYxAL A==; X-CSE-ConnectionGUID: I07BnLhaTOuojtpxZz3QwQ== X-CSE-MsgGUID: N4ygeQL1TsOS6nDTy9Bx+Q== X-IronPort-AV: E=McAfee;i="6800,10657,11678"; a="73910927" X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="73910927" Received: from orviesa005.jf.intel.com ([10.64.159.145]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 17:49:56 -0800 X-CSE-ConnectionGUID: 6zRire75Q729ohnbzQSYow== X-CSE-MsgGUID: rRHpWbHtQ1Cy0PKOY5krMA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.21,244,1763452800"; d="scan'208";a="211616420" Received: from debox1-desk4.jf.intel.com ([10.88.27.138]) by orviesa005-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Jan 2026 17:49:56 -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 v2 1/6] platform/x86/intel/vsec: Refactor base_addr handling Date: Wed, 21 Jan 2026 17:49:42 -0800 Message-ID: <20260122014948.3158069-2-david.e.box@linux.intel.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260122014948.3158069-1-david.e.box@linux.intel.com> References: <20260122014948.3158069-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 --- 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