Commit 0e74f45b authored by Aichun Shi's avatar Aichun Shi
Browse files

Revert "x86/microcode: Kill refresh_fw"

Intel inclusion
category: feature
feature: Backport Intel In Field Scan(IFS) multi-blob images support
bugzilla: https://gitee.com/openeuler/intel-kernel/issues/I6L337


CVE: N/A
Reference: N/A

Intel-SIG: Revert commit 8b0c0efc ("x86/microcode: Kill refresh_fw")

-------------------------------------

This reverts commit 8b0c0efc.

This revert is to recover old microcode interface /dev/cpu/microcode.

Signed-off-by: default avatarAichun Shi <aichun.shi@intel.com>
parent baacd328
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -32,7 +32,8 @@ enum ucode_state {
};

struct microcode_ops {
	enum ucode_state (*request_microcode_fw) (int cpu, struct device *);
	enum ucode_state (*request_microcode_fw) (int cpu, struct device *,
						  bool refresh_fw);

	void (*microcode_fini_cpu) (int cpu);

+3 −2
Original line number Diff line number Diff line
@@ -885,7 +885,8 @@ load_microcode_amd(bool save, u8 family, const u8 *data, size_t size)
 *
 * These might be larger than 2K.
 */
static enum ucode_state request_microcode_amd(int cpu, struct device *device)
static enum ucode_state request_microcode_amd(int cpu, struct device *device,
					      bool refresh_fw)
{
	char fw_name[36] = "amd-ucode/microcode_amd.bin";
	struct cpuinfo_x86 *c = &cpu_data(cpu);
@@ -894,7 +895,7 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device)
	const struct firmware *fw;

	/* reload ucode container only on the boot cpu */
	if (!bsp)
	if (!refresh_fw || !bsp)
		return UCODE_OK;

	if (c->x86 >= 0x15)
+1 −1
Original line number Diff line number Diff line
@@ -494,7 +494,7 @@ static ssize_t reload_store(struct device *dev,
	if (ret)
		goto put;

	tmp_ret = microcode_ops->request_microcode_fw(bsp, &microcode_pdev->dev);
	tmp_ret = microcode_ops->request_microcode_fw(bsp, &microcode_pdev->dev, true);
	if (tmp_ret != UCODE_NEW)
		goto put;

+2 −1
Original line number Diff line number Diff line
@@ -738,7 +738,8 @@ static bool is_blacklisted(unsigned int cpu)
	return false;
}

static enum ucode_state request_microcode_fw(int cpu, struct device *device)
static enum ucode_state request_microcode_fw(int cpu, struct device *device,
					     bool refresh_fw)
{
	struct cpuinfo_x86 *c = &cpu_data(cpu);
	const struct firmware *firmware;