From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752921AbbKWLN6 (ORCPT ); Mon, 23 Nov 2015 06:13:58 -0500 Received: from mail.skyhub.de ([78.46.96.112]:37490 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752661AbbKWLNz (ORCPT ); Mon, 23 Nov 2015 06:13:55 -0500 Date: Mon, 23 Nov 2015 12:13:46 +0100 From: Borislav Petkov To: Juergen Gross Cc: linux-kernel@vger.kernel.org, x86@kernel.org, hpa@zytor.com, tglx@linutronix.de, mingo@redhat.com, Tony Luck Subject: Re: [PATCH] x86: correct saving and restoring of lapic vectors in suspend/resume Message-ID: <20151123111346.GA5400@pd.tnic> References: <1448276364-31334-1-git-send-email-jgross@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1448276364-31334-1-git-send-email-jgross@suse.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > arch/x86/kernel/apic/apic.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) Acked-by: Borislav Petkov 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.