amd64/174409: stopping during resume caused by io_apic.c change(r243764)
Andriy Gapon
avg at FreeBSD.org
Mon Dec 17 22:40:01 UTC 2012
The following reply was made to PR amd64/174409; it has been noted by GNATS.
From: Andriy Gapon <avg at FreeBSD.org>
To: Kaho Toshikazu <kaho at elam.kais.kyoto-u.ac.jp>
Cc: bug-followup at 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
More information about the freebsd-amd64
mailing list