Date: Mon, 17 Dec 2012 22:40:01 GMT From: Andriy Gapon <avg@FreeBSD.org> To: freebsd-amd64@FreeBSD.org Subject: Re: amd64/174409: stopping during resume caused by io_apic.c change(r243764) Message-ID: <201212172240.qBHMe1Zc062276@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR amd64/174409; it has been noted by GNATS. From: Andriy Gapon <avg@FreeBSD.org> To: Kaho Toshikazu <kaho@elam.kais.kyoto-u.ac.jp> Cc: bug-followup@FreeBSD.org Subject: Re: amd64/174409: stopping during resume caused by io_apic.c change(r243764) Date: Tue, 18 Dec 2012 00:39:30 +0200 on 17/12/2012 13:59 Kaho Toshikazu said the following: > Hello, and sorry for delay reply. No problem and thank you for the data. Could you please try the following patch? I suspect that it might not be sufficient, I am working on some additional changes. --- a/sys/x86/x86/intr_machdep.c +++ b/sys/x86/x86/intr_machdep.c @@ -287,6 +287,7 @@ intr_resume(void) atpic_reset(); #endif mtx_lock(&intr_table_lock); + lapic_setup(0); STAILQ_FOREACH(pic, &pics, pics) { if (pic->pic_resume != NULL) pic->pic_resume(pic); diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c index 9b1e259..0df973a 100644 --- a/sys/x86/x86/local_apic.c +++ b/sys/x86/x86/local_apic.c @@ -160,7 +160,6 @@ static u_long lapic_timer_divisor; static struct eventtimer lapic_et; static void lapic_enable(void); -static void lapic_resume(struct pic *pic); static void lapic_timer_oneshot(struct lapic *, u_int count, int enable_int); static void lapic_timer_periodic(struct lapic *, @@ -172,8 +171,6 @@ static int lapic_et_start(struct eventtimer *et, struct bintime *first, struct bintime *period); static int lapic_et_stop(struct eventtimer *et); -struct pic lapic_pic = { .pic_resume = lapic_resume }; - static uint32_t lvt_mode(struct lapic *la, u_int pin, uint32_t value) { @@ -573,14 +570,6 @@ lapic_enable(void) lapic->svr = value; } -/* Reset the local APIC on the BSP during resume. */ -static void -lapic_resume(struct pic *pic) -{ - - lapic_setup(0); -} - int lapic_id(void) { @@ -1409,7 +1398,6 @@ apic_setup_io(void *dummy __unused) * properly program the LINT pins. */ lapic_setup(1); - intr_register_pic(&lapic_pic); if (bootverbose) lapic_dump("BSP"); -- Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212172240.qBHMe1Zc062276>