Messages in this thread | | | Date | Mon, 23 Nov 2015 12:13:46 +0100 | From | Borislav Petkov <> | Subject | Re: [PATCH] x86: correct saving and restoring of lapic vectors in suspend/resume |
| |
On Mon, Nov 23, 2015 at 11:59:24AM +0100, Juergen Gross wrote: > Saving and restoring lapic vectors in lapic_suspend() and > lapic_resume() is not consistent: the thmr vector saving is guarded > by a different config option than the restore part. The cmci vector > isn't handled at all. > > Those inconsistencies are not very critical, as the missing cmci > vector will be set via mce resume handling, the wrong config option > used for restoring the thmr vector can't be configured differently > than the one which should be used. > > Nevertheless correct the thmr vector restore and add cmci vector > handling. > > Signed-off-by: Juergen Gross <jgross@suse.com> > --- > arch/x86/kernel/apic/apic.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-)
Acked-by: Borislav Petkov <bp@suse.de>
Add Tony to CC and leave in the rest for him to look at:
> diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c > index 2f69e3b..bc06c9d 100644 > --- a/arch/x86/kernel/apic/apic.c > +++ b/arch/x86/kernel/apic/apic.c > @@ -2270,6 +2270,7 @@ static struct { > unsigned int apic_tmict; > unsigned int apic_tdcr; > unsigned int apic_thmr; > + unsigned int apic_cmci; > } apic_pm_state; > > static int lapic_suspend(void) > @@ -2299,6 +2300,10 @@ static int lapic_suspend(void) > if (maxlvt >= 5) > apic_pm_state.apic_thmr = apic_read(APIC_LVTTHMR); > #endif > +#ifdef CONFIG_X86_MCE_INTEL > + if (maxlvt >= 6) > + apic_pm_state.apic_cmci = apic_read(APIC_LVTCMCI); > +#endif > > local_irq_save(flags); > disable_local_APIC(); > @@ -2355,10 +2360,14 @@ static void lapic_resume(void) > apic_write(APIC_SPIV, apic_pm_state.apic_spiv); > apic_write(APIC_LVT0, apic_pm_state.apic_lvt0); > apic_write(APIC_LVT1, apic_pm_state.apic_lvt1); > -#if defined(CONFIG_X86_MCE_INTEL) > +#if defined(CONFIG_X86_THERMAL_VECTOR) > if (maxlvt >= 5) > apic_write(APIC_LVTTHMR, apic_pm_state.apic_thmr); > #endif > +#if defined(CONFIG_X86_MCE_INTEL) > + if (maxlvt >= 6) > + apic_write(APIC_LVTCMCI, apic_pm_state.apic_cmci); > +#endif > if (maxlvt >= 4) > apic_write(APIC_LVTPC, apic_pm_state.apic_lvtpc); > apic_write(APIC_LVTT, apic_pm_state.apic_lvtt); > -- > 2.6.2 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ >
-- Regards/Gruss, Boris.
ECO tip #101: Trim your mails when you reply.
| |