Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb48c9cb authored by Robert Richter's avatar Robert Richter Committed by Ingo Molnar
Browse files

apic, amd: Make firmware bug messages more meaningful



This improves error messages in case the BIOS was setting up
wrong LVT offsets.

Signed-off-by: default avatarRobert Richter <robert.richter@amd.com>
Acked-by: default avatarBorislav Petkov <borislav.petkov@amd.com>
LKML-Reference: <1288015419-29543-6-git-send-email-robert.richter@amd.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 0a17941e
Loading
Loading
Loading
Loading
+8 −7
Original line number Original line Diff line number Diff line
@@ -433,17 +433,18 @@ int setup_APIC_eilvt(u8 offset, u8 vector, u8 msg_type, u8 mask)
	reserved = reserve_eilvt_offset(offset, new);
	reserved = reserve_eilvt_offset(offset, new);


	if (reserved != new) {
	if (reserved != new) {
		pr_err(FW_BUG "cpu %d, try to setup vector 0x%x, but "
		pr_err(FW_BUG "cpu %d, try to use APIC%lX (LVT offset %d) for "
		       "vector 0x%x was already reserved by another core, "
		       "vector 0x%x, but the register is already in use for "
		       "APIC%lX=0x%x\n",
		       "vector 0x%x on another cpu\n",
		       smp_processor_id(), new, reserved, reg, old);
		       smp_processor_id(), reg, offset, new, reserved);
		return -EINVAL;
		return -EINVAL;
	}
	}


	if (!eilvt_entry_is_changeable(old, new)) {
	if (!eilvt_entry_is_changeable(old, new)) {
		pr_err(FW_BUG "cpu %d, try to setup vector 0x%x but "
		pr_err(FW_BUG "cpu %d, try to use APIC%lX (LVT offset %d) for "
		       "register already in use, APIC%lX=0x%x\n",
		       "vector 0x%x, but the register is already in use for "
		       smp_processor_id(), new, reg, old);
		       "vector 0x%x on this cpu\n",
		       smp_processor_id(), reg, offset, new, old);
		return -EBUSY;
		return -EBUSY;
	}
	}


+1 −0
Original line number Original line Diff line number Diff line
@@ -566,6 +566,7 @@ static int force_ibs_eilvt_setup(void)
		ret = setup_ibs_ctl(i);
		ret = setup_ibs_ctl(i);
		if (ret)
		if (ret)
			return ret;
			return ret;
		pr_err(FW_BUG "using offset %d for IBS interrupts\n", i);
		return 0;
		return 0;
	}
	}