From owner-freebsd-amd64@FreeBSD.ORG Mon Dec 17 22:40:01 2012 Return-Path: Delivered-To: freebsd-amd64@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 735F1CB3 for ; Mon, 17 Dec 2012 22:40:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 3BFA78FC0C for ; Mon, 17 Dec 2012 22:40:01 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id qBHMe1BU062277 for ; Mon, 17 Dec 2012 22:40:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id qBHMe1Zc062276; Mon, 17 Dec 2012 22:40:01 GMT (envelope-from gnats) Date: Mon, 17 Dec 2012 22:40:01 GMT Message-Id: <201212172240.qBHMe1Zc062276@freefall.freebsd.org> To: freebsd-amd64@FreeBSD.org Cc: From: Andriy Gapon Subject: Re: amd64/174409: stopping during resume caused by io_apic.c change(r243764) X-Mailman-Approved-At: Mon, 17 Dec 2012 22:45:40 +0000 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Andriy Gapon List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 17 Dec 2012 22:40:01 -0000 The following reply was made to PR amd64/174409; it has been noted by GNATS. From: Andriy Gapon To: Kaho Toshikazu 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