Date: Fri, 12 Apr 2013 10:27:08 -0700 From: hiren panchasara <hiren.panchasara@gmail.com> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-acpi@freebsd.org Subject: Re: kern/163268: [acpi_hp] [patch] fix driver detach in absence of CMI Message-ID: <CALCpEUFwxrL0dWP9oYW%2BbGpwhj86Gei8UpnwZj4WuV_=errR=A@mail.gmail.com> In-Reply-To: <201304121142.02419.jhb@freebsd.org> References: <201304081930.r38JU1Ih054443@freefall.freebsd.org> <201304121142.02419.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Apr 12, 2013 at 8:42 AM, John Baldwin <jhb@freebsd.org> 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 <hiren.panchasara@gmail.com> > > 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. 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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALCpEUFwxrL0dWP9oYW%2BbGpwhj86Gei8UpnwZj4WuV_=errR=A>