From owner-freebsd-acpi@FreeBSD.ORG Wed Apr 24 16:59:25 2013 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id CA11FDBA; Wed, 24 Apr 2013 16:59:25 +0000 (UTC) (envelope-from hiren.panchasara@gmail.com) Received: from mail-ee0-f50.google.com (mail-ee0-f50.google.com [74.125.83.50]) by mx1.freebsd.org (Postfix) with ESMTP id 3B94610A8; Wed, 24 Apr 2013 16:59:23 +0000 (UTC) Received: by mail-ee0-f50.google.com with SMTP id e53so889491eek.37 for ; Wed, 24 Apr 2013 09:59:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=ifcM3rIUgFdTLf0URxs2v080pKuQOANy75b/+6sSZ2Y=; b=UxhMkIuoY0jffGhVj1dGagG5vVGKR6k5tbXgdeT7ronmFpzKbLTXQ7zcqQrjQHG0IA viK9N8BkTUHThm3jkkKELraWHjuDhFEqJtpaHQ7xKQ3X12tr2hgoaBnLBP86U3foVa6H aC3jX+5rqB4kGHpMHAtMftreP7Uy8ciOCYWyuru8Jbj+QuMgqOanjFIbCBGI2Ff31AIT 4pqEIfZsPS5y3B92nuc4A4wznM08xSAUUTchG0sFkTrlIRQHetPlF5tj+PsL929eU0Ys 4yqf19GCM1TmaNSU3JnY6oIT7f/YuHnr/AQaZz6BbSN76bcmxEaOyDhER96lfDnCOo4/ Qk6A== MIME-Version: 1.0 X-Received: by 10.14.206.129 with SMTP id l1mr20711269eeo.30.1366822757200; Wed, 24 Apr 2013 09:59:17 -0700 (PDT) Received: by 10.14.204.200 with HTTP; Wed, 24 Apr 2013 09:59:17 -0700 (PDT) In-Reply-To: References: <201304081930.r38JU1Ih054443@freefall.freebsd.org> <201304121142.02419.jhb@freebsd.org> Date: Wed, 24 Apr 2013 09:59:17 -0700 Message-ID: Subject: Re: kern/163268: [acpi_hp] [patch] fix driver detach in absence of CMI From: hiren panchasara To: John Baldwin Content-Type: text/plain; charset=UTF-8 Cc: freebsd-acpi@freebsd.org X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Apr 2013 16:59:25 -0000 On Fri, Apr 12, 2013 at 10:27 AM, hiren panchasara wrote: > On Fri, Apr 12, 2013 at 8:42 AM, John Baldwin wrote: >> >> On Monday, April 08, 2013 3:30:01 pm hiren panchasara wrote: >> > The following reply was made to PR kern/163268; it has been noted by GNATS. >> > >> > From: hiren panchasara >> > To: bug-followup@FreeBSD.org, yuri.pankov@gmail.com >> > Cc: >> > Subject: Re: kern/163268: [acpi_hp] [patch] fix driver detach in absence of >> CMI >> > Date: Mon, 8 Apr 2013 12:29:11 -0700 >> > >> > I do not see any apparent problem in the proposed patch. Unfortunately >> > I do not have an hp to play with. >> > >> > Can someone look at the patch and try or approve so that we can make >> > progress on this? >> >> The current patch would incorrectly remove the notification handler if it >> failed with EBUSY. I'm compiling the following to see if it builds. I also >> think it is a bit less invasive. I have no way to test it however: > > Just got an HP elitebook. I am not sure if it has the same cmi > interface or not to reproduce the problem. I am setting up X and all > at the moment. Once that's done, I can give this patch a try. John, I do not see myself trying this out anytime soon so please go ahead and commit the patch if you think this is the correct way. Do not want to keep you waiting on my testing. cheers, Hiren > > Thanks, > Hiren >> >> Index: dev/acpi_support/acpi_hp.c >> =================================================================== >> --- dev/acpi_support/acpi_hp.c (revision 248326) >> +++ dev/acpi_support/acpi_hp.c (working copy) >> @@ -574,28 +574,26 @@ >> static int >> acpi_hp_detach(device_t dev) >> { >> - int ret; >> + struct acpi_hp_softc *sc; >> >> ACPI_FUNCTION_TRACE((char *)(uintptr_t) __func__); >> - struct acpi_hp_softc *sc = device_get_softc(dev); >> - if (sc->has_cmi && sc->hpcmi_open_pid != 0) { >> - ret = EBUSY; >> - } >> - else { >> - if (sc->has_notify) { >> - ACPI_WMI_REMOVE_EVENT_HANDLER(dev, >> - ACPI_HP_WMI_EVENT_GUID); >> - } >> + sc = device_get_softc(dev); >> + if (sc->has_cmi && sc->hpcmi_open_pid != 0) >> + return (EBUSY); >> + >> + if (sc->has_notify) >> + ACPI_WMI_REMOVE_EVENT_HANDLER(dev, ACPI_HP_WMI_EVENT_GUID); >> + >> + if (sc->has_cmi) { >> if (sc->hpcmi_bufptr != -1) { >> sbuf_delete(&sc->hpcmi_sbuf); >> sc->hpcmi_bufptr = -1; >> } >> sc->hpcmi_open_pid = 0; >> destroy_dev(sc->hpcmi_dev_t); >> - ret = 0; >> } >> >> - return (ret); >> + return (0); >> } >> >> static int >> >> -- >> John Baldwin