Commit c868a189 authored by Miri Korenblit's avatar Miri Korenblit Committed by Johannes Berg
Browse files

wifi: iwlwifi: read BIOS PNVM only for non-Intel SKU



The driver is supposed to read the PNVM from BIOS only for non-Intel
SKUs. For Intel SKUs the OEM ID will be 0.
Read BIOS PNVM only when a non-Intel SKU is indicated.

Fixes: b99e32cb ("wifi: iwlwifi: Take loading and setting of pnvm image out of parsing part")
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Reviewed-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Link: https://msgid.link/20240131091413.3625cf1223d3.Ieffda5f506713b1c979388dd7a0e1c1a0145cfca@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent cfbb2add
Loading
Loading
Loading
Loading
+18 −12
Original line number Diff line number Diff line
@@ -268,21 +268,27 @@ static u8 *iwl_get_pnvm_image(struct iwl_trans *trans_p, size_t *len)
	struct pnvm_sku_package *package;
	u8 *image = NULL;

	/* First attempt to get the PNVM from BIOS */
	/* Get PNVM from BIOS for non-Intel SKU */
	if (trans_p->sku_id[2]) {
		package = iwl_uefi_get_pnvm(trans_p, len);
		if (!IS_ERR_OR_NULL(package)) {
			if (*len >= sizeof(*package)) {
				/* we need only the data */
				*len -= sizeof(*package);
			image = kmemdup(package->data, *len, GFP_KERNEL);
				image = kmemdup(package->data,
						*len, GFP_KERNEL);
			}
		/* free package regardless of whether kmemdup succeeded */
			/*
			 * free package regardless of whether kmemdup
			 * succeeded
			 */
			kfree(package);
			if (image)
				return image;
		}
	}

	/* If it's not available, try from the filesystem */
	/* If it's not available, or for Intel SKU, try from the filesystem */
	if (iwl_pnvm_get_from_fs(trans_p, &image, len))
		return NULL;
	return image;