From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 09:13:30 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 161A5106566C for ; Sun, 28 Jun 2009 09:13:30 +0000 (UTC) (envelope-from onemda@gmail.com) Received: from mail-bw0-f210.google.com (mail-bw0-f210.google.com [209.85.218.210]) by mx1.freebsd.org (Postfix) with ESMTP id 8C78C8FC1B for ; Sun, 28 Jun 2009 09:13:29 +0000 (UTC) (envelope-from onemda@gmail.com) Received: by bwz6 with SMTP id 6so291046bwz.43 for ; Sun, 28 Jun 2009 02:13:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Zn7LeRUUil+j/TBxHy8iirDKYnJTcHPKsxd822w5TxY=; b=Jpbg6FGZMGdFgQZYaIVe9leJk3VEMG0Lfu8jeqN2j00vwaxZW3i1NX64hSaKga3eu1 OnbOIK7S8dWNvo5vkWJTRdAvazD0W3H0oaD9wiTNxlb4SHDqc1MJiEIhK+uh7xDsUf7y A4R64i3ggclB6blTdLMy+L9S5cBYPEB0FZVfc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=u3JYgeOXrZFC6TtIMDcQzZuXbDEH+TD1PAAEN2sK4AUF2KvOmLkZpkrVw2Gyy98co2 5rr6dW+SYs2Ywu0fB9kILeNOFflihk1P6H4NFEbFTHE4KM0iWRBsC4RzY0CrPC3xTo+F sSrdPLew9b8grogIpPvYlHn4AT2pO/9dNeRGA= MIME-Version: 1.0 Received: by 10.204.117.20 with SMTP id o20mr3612978bkq.1.1246180408652; Sun, 28 Jun 2009 02:13:28 -0700 (PDT) In-Reply-To: <4A464343.8090502@bindone.de> References: <4A3E1784.2050406@bindone.de> <3a142e750906232353g37b5f001p89948a2fe6a3e66e@mail.gmail.com> <4A41E39E.1090208@bindone.de> <4A41E66D.2080504@bindone.de> <3a142e750906240347o393ea738i54fc9ce215bebab2@mail.gmail.com> <4A44AC9B.504@bindone.de> <3a142e750906270327t765077f8ta4dffed054f70c53@mail.gmail.com> <4A45FF8C.1070604@bindone.de> <3a142e750906270839x41686881j13c7a73ae38586e4@mail.gmail.com> <4A464343.8090502@bindone.de> Date: Sun, 28 Jun 2009 11:13:28 +0200 Message-ID: <3a142e750906280213l2931a573r9479c111742bcfa0@mail.gmail.com> From: "Paul B. Mahol" To: Michael Gmelin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: Two new acpi modules, acpi_wmi and acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 09:13:30 -0000 On 6/27/09, Michael Gmelin wrote: > Paul B. Mahol wrote: >> On 6/27/09, Michael wrote: >>> Paul B. Mahol wrote: >>>> On 6/26/09, Michael wrote: >>>>> Paul B. Mahol wrote: >>>>>> On 6/24/09, Michael wrote: >>>>>>> Besides the other information requested, maybe you can also tell me >>>>>>> your >>>>>>> exact HP model number >>>>>> Here is information you requested. >>>>>> >>>>> Hi Paul, >>>>> >>>>> please find attached a patch against the current version of the acpi_hp >>>>> driver in CURRENT (source and manpage). It might need some tweaking if >>>>> you're testing on 7.2 (headers). I also provided the full acpi_hp.c and >>>>> acpi_hp.4 versions in case you can't patch. >>>>> >>>>> Patch: >>>>> patch -d /usr/src < /path/to/acpi_hp.patch >>>>> >>>>> This patch adds the sysctl dev.acpi_hp.0.verbose (as you suggested) and >>>>> should fix /dev/hpcmi on your machine. >>>>> >>>>> Please tell me if this works, so I can send it to Raul. >>>> It works. >>>> But I still get acpica error: >>>> >>>> ACPI Error: Field [C2CA] at 336 exceeds Buffer [C281] size 328 (bits) >>>> 20090521 dsopcode-697 >>>> ACPI Error (psparse-0633): Method parse/execution failed >>>> [\\_SB_.C241.WQBC] (Node 0xc3dcfb60), AE_AML_BUFFER_LIMIT >>>> >>> This is a bug in the DSDT provided by HP. The error is emitted in the >>> underlying acpi layers while reading a buffer that contains more data >>> then it should. The only thing you could do about this is patching your >>> DSDT. >> >> How, what to modify? >> I already modified and use custom DSTD, because one of thermal sensors >> reported absurd temperature most of time ... >> >> > > Search for the field C281. > Modify C281 to say 336 bits instead of 328. > (this should be line 7498 in your DSDT: > Name (C281, Buffer (0x29) {}) > should be changed to > Name (C281, Buffer (0x2A) {}) > ) > > That's the theory, I can't tell if that has any negative side effects. > It seems like that's the last BIOS entry instance in the DSDT (same > here, my machine provides 57, yours 41 if I recall correctly). So > changing this is absolutely your own risk + I don't think it make sense > to require all users to change their DSDT anyway. > > If I had more evidence that this is happening with all HPs I could > change the acpi_wmi kernel interface to allow querying the number of > instances of the GUID and iterate only over numberofinstances-1 > instances to avoid this error. I think this is best solution on long run. > What do you think of the following plan: > - Extend acpi_emi to provide a method to query the number of instances > of a GUID. This way acpi_hp could know the number of instances > and avoid hitting the last instance If querying number of instances of GUID is possible go for it. > - Make acpi_hp only iterate over maxinstances-1 instances > - Extend cmi_detail to have an additional bit that disables this > behaviour (so it behaves like it did before, assuming that there > are HP notebooks that don't have these issues) > - Document all of this in the man page Also if possible, it would be nice if acpi_hp doesn't output entries which are not available on certain laptops. -- Paul From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 11:15:37 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 39CE81065672 for ; Sun, 28 Jun 2009 11:15:37 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id A82268FC24 for ; Sun, 28 Jun 2009 11:15:36 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 13085 invoked by uid 89); 28 Jun 2009 11:15:35 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.188.16) by mail.bindone.de with ESMTPA; 28 Jun 2009 11:15:35 -0000 Message-ID: <4A4750D1.9040505@bindone.de> Date: Sun, 28 Jun 2009 13:15:29 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: "Paul B. Mahol" References: <4A3E1784.2050406@bindone.de> <3a142e750906232353g37b5f001p89948a2fe6a3e66e@mail.gmail.com> <4A41E39E.1090208@bindone.de> <4A41E66D.2080504@bindone.de> <3a142e750906240347o393ea738i54fc9ce215bebab2@mail.gmail.com> <4A44AC9B.504@bindone.de> <3a142e750906270327t765077f8ta4dffed054f70c53@mail.gmail.com> <4A45FF8C.1070604@bindone.de> <3a142e750906270839x41686881j13c7a73ae38586e4@mail.gmail.com> <4A464343.8090502@bindone.de> <3a142e750906280213l2931a573r9479c111742bcfa0@mail.gmail.com> In-Reply-To: <3a142e750906280213l2931a573r9479c111742bcfa0@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: Two new acpi modules, acpi_wmi and acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 11:15:37 -0000 Paul B. Mahol wrote: > On 6/27/09, Michael Gmelin wrote: >> Paul B. Mahol wrote: >>> On 6/27/09, Michael wrote: >>>> Paul B. Mahol wrote: >>>>> On 6/26/09, Michael wrote: >>>>>> Paul B. Mahol wrote: >>>>>>> On 6/24/09, Michael wrote: >>>>>>>> Besides the other information requested, maybe you can also tell me >>>>>>>> your >>>>>>>> exact HP model number >>>>>>> Here is information you requested. >>>>>>> >>>>>> Hi Paul, >>>>>> >>>>>> please find attached a patch against the current version of the acpi_hp >>>>>> driver in CURRENT (source and manpage). It might need some tweaking if >>>>>> you're testing on 7.2 (headers). I also provided the full acpi_hp.c and >>>>>> acpi_hp.4 versions in case you can't patch. >>>>>> >>>>>> Patch: >>>>>> patch -d /usr/src < /path/to/acpi_hp.patch >>>>>> >>>>>> This patch adds the sysctl dev.acpi_hp.0.verbose (as you suggested) and >>>>>> should fix /dev/hpcmi on your machine. >>>>>> >>>>>> Please tell me if this works, so I can send it to Raul. >>>>> It works. >>>>> But I still get acpica error: >>>>> >>>>> ACPI Error: Field [C2CA] at 336 exceeds Buffer [C281] size 328 (bits) >>>>> 20090521 dsopcode-697 >>>>> ACPI Error (psparse-0633): Method parse/execution failed >>>>> [\\_SB_.C241.WQBC] (Node 0xc3dcfb60), AE_AML_BUFFER_LIMIT >>>>> >>>> This is a bug in the DSDT provided by HP. The error is emitted in the >>>> underlying acpi layers while reading a buffer that contains more data >>>> then it should. The only thing you could do about this is patching your >>>> DSDT. >>> How, what to modify? >>> I already modified and use custom DSTD, because one of thermal sensors >>> reported absurd temperature most of time ... >>> >>> >> Search for the field C281. >> Modify C281 to say 336 bits instead of 328. >> (this should be line 7498 in your DSDT: >> Name (C281, Buffer (0x29) {}) >> should be changed to >> Name (C281, Buffer (0x2A) {}) >> ) >> >> That's the theory, I can't tell if that has any negative side effects. >> It seems like that's the last BIOS entry instance in the DSDT (same >> here, my machine provides 57, yours 41 if I recall correctly). So >> changing this is absolutely your own risk + I don't think it make sense >> to require all users to change their DSDT anyway. >> >> If I had more evidence that this is happening with all HPs I could >> change the acpi_wmi kernel interface to allow querying the number of >> instances of the GUID and iterate only over numberofinstances-1 >> instances to avoid this error. > > I think this is best solution on long run. > >> What do you think of the following plan: >> - Extend acpi_emi to provide a method to query the number of instances >> of a GUID. This way acpi_hp could know the number of instances >> and avoid hitting the last instance > > If querying number of instances of GUID is possible go for it. > >> - Make acpi_hp only iterate over maxinstances-1 instances >> - Extend cmi_detail to have an additional bit that disables this >> behaviour (so it behaves like it did before, assuming that there >> are HP notebooks that don't have these issues) >> - Document all of this in the man page > > Also if possible, it would be nice if acpi_hp doesn't output > entries which are not available on certain laptops. > Do you mean BIOS entries? Can you give me an example? From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 14:32:03 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 50806106566C for ; Sun, 28 Jun 2009 14:32:03 +0000 (UTC) (envelope-from rfreidel@gmail.com) Received: from qw-out-2122.google.com (qw-out-2122.google.com [74.125.92.25]) by mx1.freebsd.org (Postfix) with ESMTP id 0A6D98FC0C for ; Sun, 28 Jun 2009 14:32:02 +0000 (UTC) (envelope-from rfreidel@gmail.com) Received: by qw-out-2122.google.com with SMTP id 5so472831qwd.7 for ; Sun, 28 Jun 2009 07:32:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=9nea5fMguADnid3Hv7uOkL4iVvuG2rd1yXIV2Nx1vaE=; b=J3xWgYBYDciQ8E864PWIkpGdnzEFc4BwNdvjAhJkFBaLVxxWV3UJqHhJxiwFucZ4Dk hL6t/SjI5GW0BN/HnKTI4LZ4F4O6p6nvtZWfWwYP71pWYZMq1pRF76d36ueDgsOM5aRv 6rlcTXyPLYd8bnZVVoh3aalOGEfNIc/iP7teA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=dQpc+mTd+KY2d9wDwkVWgnvaOa2D4396sumVTd4Fuulsz3BvYxXjKMTDDOOEVZSMar J/23bMHbsYLBxoh2rQlLvR7lFkJJd002c+SFTEkXGxG5JW4VjhV7McKEeD9ph1LorWTj aVkBXiwpzjjVKUR6yRrGfeNlAwDA8x2ncWt3Q= MIME-Version: 1.0 Received: by 10.229.86.196 with SMTP id t4mr1429703qcl.39.1246197831317; Sun, 28 Jun 2009 07:03:51 -0700 (PDT) Date: Sun, 28 Jun 2009 07:03:51 -0700 Message-ID: From: Ron Freidel To: freebsd-acpi@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: acpi/cpu scaling probs? Dell D820 FreeBSD current X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 14:32:03 -0000 I hope I am posting to the correct list... I have updated to FreeBSD current to try out acpi sleep, which works great by the way, and the improvements to wifi and the addition of sleep are enough to keep current on the laptop. Here's the problem, the cpu is maxed out, no scaling at all. Here's the output of powerd -v load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz load 109%, current freq 2000 MHz ( 0), wanted freq 4000 MHz load 102%, current freq 2000 MHz ( 0), wanted freq 4000 MHz load 124%, current freq 2000 MHz ( 0), wanted freq 4000 MHz load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz leroy# dmesg | grep -i cpu CPU: Intel(R) Core(TM)2 CPU T7200 @ 2.00GHz (1997.34-MHz K8-class CPU) FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs cpu0 (BSP): APIC ID: 0 cpu1 (AP): APIC ID: 1 cpu0: on acpi0 coretemp0: on cpu0 est0: on cpu0 p4tcc0: on cpu0 cpu1: on acpi0 coretemp1: on cpu1 est1: on cpu1 p4tcc1: on cpu1 SMP: AP CPU #1 Launched! leroy# sysctl dev.cpu.0.freq dev.cpu.0.freq: 2000 Plugged in or not. Hope this is enough info. -- Ron From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 20:05:59 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4085F106564A for ; Sun, 28 Jun 2009 20:05:59 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from cmail.optima.ua (cmail.optima.ua [195.248.191.121]) by mx1.freebsd.org (Postfix) with ESMTP id C44028FC0C for ; Sun, 28 Jun 2009 20:05:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from [212.86.226.226] (account mav@alkar.net HELO mavbook.mavhome.dp.ua) by cmail.optima.ua (CommuniGate Pro SMTP 5.2.9) with ESMTPSA id 247030428; Sun, 28 Jun 2009 21:55:54 +0300 Message-ID: <4A47BCB4.2040701@FreeBSD.org> Date: Sun, 28 Jun 2009 21:55:48 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.21 (X11/20090405) MIME-Version: 1.0 To: Ron Freidel References: <1246213381.00133032.1246200002@10.7.7.3> In-Reply-To: <1246213381.00133032.1246200002@10.7.7.3> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: acpi/cpu scaling probs? Dell D820 FreeBSD current X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 20:05:59 -0000 Ron Freidel wrote: > I hope I am posting to the correct list... > > I have updated to FreeBSD current to try out acpi sleep, which works great > by the way, and the improvements to wifi and the addition of sleep are > enough to keep current on the laptop. > > Here's the problem, the cpu is maxed out, no scaling at all. > > Here's the output of powerd -v > > load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > load 109%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > load 102%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > load 124%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > ^^^ This is the reason. powerd sees that one of your CPUs is constantly busy. You should investigate why and what that CPU does. -- Alexander Motin From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 20:32:46 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 94D6D10656C9; Sun, 28 Jun 2009 20:32:46 +0000 (UTC) (envelope-from oberman@es.net) Received: from mailgw.es.net (mail2.es.net [IPv6:2001:400:107:1::2]) by mx1.freebsd.org (Postfix) with ESMTP id 7E3828FC37; Sun, 28 Jun 2009 20:32:46 +0000 (UTC) (envelope-from oberman@es.net) Received: from ptavv.es.net (ptavv.es.net [IPv6:2001:400:910::29]) by mailgw.es.net (8.14.3/8.14.3) with ESMTP id n5SKWjWS026613 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Sun, 28 Jun 2009 13:32:46 -0700 Received: from ptavv.es.net (ptavv.es.net [127.0.0.1]) by ptavv.es.net (Tachyon Server) with ESMTP id B10F01CC2E; Sun, 28 Jun 2009 13:32:45 -0700 (PDT) To: Alexander Motin In-reply-to: Your message of "Sun, 28 Jun 2009 21:55:48 +0300." <4A47BCB4.2040701@FreeBSD.org> Date: Sun, 28 Jun 2009 13:32:45 -0700 From: "Kevin Oberman" Message-Id: <20090628203245.B10F01CC2E@ptavv.es.net> X-Proofpoint-Virus-Version: vendor=fsecure engine=1.12.8161:2.4.5, 1.2.40, 4.0.166 definitions=2009-06-28_01:2009-06-25, 2009-06-28, 2009-06-26 signatures=0 Cc: freebsd-acpi@freebsd.org Subject: Re: acpi/cpu scaling probs? Dell D820 FreeBSD current X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 20:32:47 -0000 > Date: Sun, 28 Jun 2009 21:55:48 +0300 > From: Alexander Motin > Sender: owner-freebsd-acpi@freebsd.org > > Ron Freidel wrote: > > I hope I am posting to the correct list... > > > > I have updated to FreeBSD current to try out acpi sleep, which works great > > by the way, and the improvements to wifi and the addition of sleep are > > enough to keep current on the laptop. > > > > Here's the problem, the cpu is maxed out, no scaling at all. > > > > Here's the output of powerd -v > > > > load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > load 109%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > load 102%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > load 124%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > > ^^^ > This is the reason. powerd sees that one of your CPUs is constantly > busy. You should investigate why and what that CPU does. Agreed, but that still does not explain why it keeps trying to set the clock to 4 GHz on a 2 GHz system. Not too surprising that it does not work. :-) You have been much more involved in powerd than I have been in recent times, so maybe there is a good reason for this that I don't understand. I have not looked at the powerd sources in at least three years. I really wish more people would monitor their systems with gkrellm2, gnome-system-monitor or some KDE tool. I like gkrellm2 because it is very compact and I can leave it on my screen all of the time. When some process takes off and tries the eat the system, at least I notice it right away. (My CPU graph is currently solid green, but I am transcoding some video, so I expect if to be.) -- R. Kevin Oberman, Network Engineer Energy Sciences Network (ESnet) Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab) E-mail: oberman@es.net Phone: +1 510 486-8634 Key fingerprint:059B 2DDF 031C 9BA3 14A4 EADA 927D EBB3 987B 3751 From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 20:42:58 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD6C910656DB for ; Sun, 28 Jun 2009 20:42:58 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from cmail.optima.ua (cmail.optima.ua [195.248.191.121]) by mx1.freebsd.org (Postfix) with ESMTP id 580878FC2C for ; Sun, 28 Jun 2009 20:42:57 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from [212.86.226.226] (account mav@alkar.net HELO mavbook.mavhome.dp.ua) by cmail.optima.ua (CommuniGate Pro SMTP 5.2.9) with ESMTPSA id 247033848; Sun, 28 Jun 2009 23:42:55 +0300 Message-ID: <4A47D5C8.4090701@FreeBSD.org> Date: Sun, 28 Jun 2009 23:42:48 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.21 (X11/20090405) MIME-Version: 1.0 To: Kevin Oberman References: <20090628203245.B10F01CC2E@ptavv.es.net> In-Reply-To: <20090628203245.B10F01CC2E@ptavv.es.net> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: acpi/cpu scaling probs? Dell D820 FreeBSD current X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 20:42:59 -0000 Kevin Oberman wrote: >> Date: Sun, 28 Jun 2009 21:55:48 +0300 >> From: Alexander Motin >> Sender: owner-freebsd-acpi@freebsd.org >> >> Ron Freidel wrote: >>> I hope I am posting to the correct list... >>> >>> I have updated to FreeBSD current to try out acpi sleep, which works great >>> by the way, and the improvements to wifi and the addition of sleep are >>> enough to keep current on the laptop. >>> >>> Here's the problem, the cpu is maxed out, no scaling at all. >>> >>> Here's the output of powerd -v >>> >>> load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz >>> load 109%, current freq 2000 MHz ( 0), wanted freq 4000 MHz >>> load 102%, current freq 2000 MHz ( 0), wanted freq 4000 MHz >>> load 124%, current freq 2000 MHz ( 0), wanted freq 4000 MHz >>> load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz >>> >> ^^^ >> This is the reason. powerd sees that one of your CPUs is constantly >> busy. You should investigate why and what that CPU does. > > Agreed, but that still does not explain why it keeps trying to set the > clock to 4 GHz on a 2 GHz system. Not too surprising that it does not > work. :-) It is not a bug, but feature. It is specific of the "hiadaptive" mode. It means that CPU is too busy now and should not drop frequency immediately after load drops to not loose system interactivity and performance. -- Alexander Motin From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 20:58:01 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D46A7106566C; Sun, 28 Jun 2009 20:58:01 +0000 (UTC) (envelope-from oberman@es.net) Received: from mailgw.es.net (mail2.es.net [IPv6:2001:400:107:1::2]) by mx1.freebsd.org (Postfix) with ESMTP id B6A038FC18; Sun, 28 Jun 2009 20:58:01 +0000 (UTC) (envelope-from oberman@es.net) Received: from ptavv.es.net (ptavv.es.net [IPv6:2001:400:910::29]) by mailgw.es.net (8.14.3/8.14.3) with ESMTP id n5SKw0Yp027197 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Sun, 28 Jun 2009 13:58:01 -0700 Received: from ptavv.es.net (ptavv.es.net [127.0.0.1]) by ptavv.es.net (Tachyon Server) with ESMTP id DF09A1CC09; Sun, 28 Jun 2009 13:58:00 -0700 (PDT) To: Alexander Motin In-reply-to: Your message of "Sun, 28 Jun 2009 23:42:48 +0300." <4A47D5C8.4090701@FreeBSD.org> Date: Sun, 28 Jun 2009 13:58:00 -0700 From: "Kevin Oberman" Message-Id: <20090628205800.DF09A1CC09@ptavv.es.net> X-Proofpoint-Virus-Version: vendor=fsecure engine=1.12.8161:2.4.5, 1.2.40, 4.0.166 definitions=2009-06-28_01:2009-06-25, 2009-06-28, 2009-06-26 signatures=0 Cc: freebsd-acpi@freebsd.org Subject: Re: acpi/cpu scaling probs? Dell D820 FreeBSD current X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 20:58:02 -0000 > Date: Sun, 28 Jun 2009 23:42:48 +0300 > From: Alexander Motin > > Kevin Oberman wrote: > >> Date: Sun, 28 Jun 2009 21:55:48 +0300 > >> From: Alexander Motin > >> Sender: owner-freebsd-acpi@freebsd.org > >> > >> Ron Freidel wrote: > >>> I hope I am posting to the correct list... > >>> > >>> I have updated to FreeBSD current to try out acpi sleep, which works great > >>> by the way, and the improvements to wifi and the addition of sleep are > >>> enough to keep current on the laptop. > >>> > >>> Here's the problem, the cpu is maxed out, no scaling at all. > >>> > >>> Here's the output of powerd -v > >>> > >>> load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > >>> load 109%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > >>> load 102%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > >>> load 124%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > >>> load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > >>> > >> ^^^ > >> This is the reason. powerd sees that one of your CPUs is constantly > >> busy. You should investigate why and what that CPU does. > > > > Agreed, but that still does not explain why it keeps trying to set the > > clock to 4 GHz on a 2 GHz system. Not too surprising that it does not > > work. :-) > > It is not a bug, but feature. It is specific of the "hiadaptive" mode. > It means that CPU is too busy now and should not drop frequency > immediately after load drops to not loose system interactivity and > performance. Thanks! This makes excellent sense. I think I need to switch mine to hiadaptive, at least on AC. Now, it Ron can get his CPU under control, I think things will be normal on his system. -- R. Kevin Oberman, Network Engineer Energy Sciences Network (ESnet) Ernest O. Lawrence Berkeley National Laboratory (Berkeley Lab) E-mail: oberman@es.net Phone: +1 510 486-8634 Key fingerprint:059B 2DDF 031C 9BA3 14A4 EADA 927D EBB3 987B 3751 From owner-freebsd-acpi@FreeBSD.ORG Sun Jun 28 21:10:20 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4790A106564A for ; Sun, 28 Jun 2009 21:10:20 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from cmail.optima.ua (cmail.optima.ua [195.248.191.121]) by mx1.freebsd.org (Postfix) with ESMTP id C26268FC20 for ; Sun, 28 Jun 2009 21:10:19 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from [212.86.226.226] (account mav@alkar.net HELO mavbook.mavhome.dp.ua) by cmail.optima.ua (CommuniGate Pro SMTP 5.2.9) with ESMTPSA id 247034737; Mon, 29 Jun 2009 00:10:16 +0300 Message-ID: <4A47DC32.90408@FreeBSD.org> Date: Mon, 29 Jun 2009 00:10:10 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.21 (X11/20090405) MIME-Version: 1.0 To: Kevin Oberman References: <20090628205800.DF09A1CC09@ptavv.es.net> In-Reply-To: <20090628205800.DF09A1CC09@ptavv.es.net> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: acpi/cpu scaling probs? Dell D820 FreeBSD current X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Jun 2009 21:10:21 -0000 Kevin Oberman wrote: > Thanks! This makes excellent sense. I think I need to switch mine to > hiadaptive, at least on AC. Now, it Ron can get his CPU under control, I > think things will be normal on his system. It is actually default now: adaptive on battery, hiadaptive on AC. -- Alexander Motin From owner-freebsd-acpi@FreeBSD.ORG Mon Jun 29 11:06:52 2009 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F3EF106566C for ; Mon, 29 Jun 2009 11:06:52 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 5C55C8FC1B for ; Mon, 29 Jun 2009 11:06:52 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id n5TB6qNC046212 for ; Mon, 29 Jun 2009 11:06:52 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id n5TB6pUR046208 for freebsd-acpi@FreeBSD.org; Mon, 29 Jun 2009 11:06:51 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 29 Jun 2009 11:06:51 GMT Message-Id: <200906291106.n5TB6pUR046208@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-acpi@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-acpi@FreeBSD.org X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Jun 2009 11:06:52 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o i386/136008 acpi [acpi] Dell Vostro 1310 will not shutdown (Requires us o bin/135349 acpi [patch] teach acpidump(8) to disassemble arbitrary mem o kern/135070 acpi [acpi] [patch] BIOS resource allocation and FreeBSD AC o kern/132602 acpi [acpi] ACPI Problem with Intel SS4200: System does not o kern/130683 acpi [ACPI] shutdown hangs after syncing disks - ACPI race? o i386/129953 acpi [acpi] ACPI timeout (CDROM) with Shuttle X27D o kern/129618 acpi [acpi] Problem with ACPI on HP Pavilion DV2899 laptop o kern/129563 acpi [acpi] sleep broken on IBM/Lenovo T61 in amd64 mode f kern/128639 acpi [patch] [acpi_asus] acpi for ASUS A6F,A3E,A3F,A3N not f kern/128634 acpi [patch] fix acpi_asus(4) in asus a6f laptop o kern/127581 acpi [patch] [acpi_sony] Add support for more Sony features o kern/124744 acpi [acpi] [patch] incorrect _BST result validation for To o kern/124412 acpi [acpi] power off error on Toshiba M40 laptop o kern/123039 acpi [acpi] ACPI AML_BUFFER_LIMIT errors during boot o kern/121504 acpi [patch] Correctly set hw.acpi.osname on certain machin f kern/121454 acpi [pst] Promise SuperTrak SX6000 does not load during bo o amd64/121439 acpi [boot] Installation of FreeBSD 7.0 fails: ACPI problem o kern/121102 acpi [acpi_fujitsu] [patch] update acpi_fujitsu for the P80 o kern/120515 acpi [acpi] [patch] acpi_alloc_wakeup_handler: can't alloc o kern/119356 acpi [acpi]: i386 ACPI wakeup not work due resource exhaust o kern/119200 acpi [acpi] Lid close switch suspends CPU for 1 second on H o kern/118973 acpi [acpi]: Kernel panic with acpi boot o kern/117605 acpi [acpi] [request] add debug.cpufreq.highest o kern/116939 acpi [acpi] PCI-to-PCI misconfigured for bus three and can o i386/114562 acpi [acpi] cardbus is dead after s3 on Thinkpad T43 with a o kern/114165 acpi [acpi] Dell C810 - ACPI problem s kern/112544 acpi [acpi] [patch] Add High Precision Event Timer Driver f o kern/108954 acpi [acpi] 'sleep(1)' sleeps >1 seconds when speedstep (Cx o kern/108695 acpi [acpi]: Fatal trap 9: general protection fault when in o kern/108488 acpi [acpi] ACPI-1304: *** Error: Method execution failed o kern/108017 acpi [acpi]: Acer Aspire 5600 o kern/106924 acpi [acpi] ACPI resume returns g_vfs_done() errors and ker o kern/105537 acpi [acpi] problems in acpi on HP Compaq nc6320 o kern/104625 acpi ACPI on ASUS A8N-32 SLI/ASUS P4P800 does not show ther o kern/102252 acpi acpi thermal does not work on Abit AW8D (intel 975) o kern/97383 acpi Volume buttons on IBM Thinkpad crash system with ACPI s i386/91748 acpi acpi problem on Acer TravelMare 4652LMi (nvidia panic, s kern/91038 acpi [panic] [ata] [acpi] 6.0-RELEASE on Fujitsu Siemens Am s kern/90243 acpi Laptop fan doesn't turn off (ACPI enabled) (Packard Be f kern/89411 acpi [acpi] acpiconf bug o i386/83018 acpi [install] Installer will not boot on Asus P4S8X BIOS 1 o kern/81000 acpi [apic] Via 8235 sound card worked great with FreeBSD 5 o i386/79081 acpi ACPI suspend/resume not working on HP nx6110 o kern/76950 acpi ACPI wrongly blacklisted on Micron ClientPro 766Xi sys s kern/73823 acpi [request] acpi / power-on by timer support o i386/72566 acpi ACPI, FreeBSD disables fan on Compaq Armada 1750 o i386/69750 acpi Boot without ACPI failed on ASUS L5 o kern/56024 acpi ACPI suspend drains battery while in S3 o i386/55661 acpi ACPI suspend/resume problem on ARMADA M700 o i386/54756 acpi ACPI suspend/resume problem on CF-W2 laptop 50 problems total. From owner-freebsd-acpi@FreeBSD.ORG Mon Jun 29 14:49:39 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 525AF1065686 for ; Mon, 29 Jun 2009 14:49:39 +0000 (UTC) (envelope-from rfreidel@gmail.com) Received: from qw-out-2122.google.com (qw-out-2122.google.com [74.125.92.25]) by mx1.freebsd.org (Postfix) with ESMTP id 0ABA68FC26 for ; Mon, 29 Jun 2009 14:49:38 +0000 (UTC) (envelope-from rfreidel@gmail.com) Received: by qw-out-2122.google.com with SMTP id 5so689589qwd.7 for ; Mon, 29 Jun 2009 07:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type; bh=45vJ2wMeoJwMS1yYaoPpdA0VUxC3aPP9c9qV0zVanuM=; b=YjPjE6oMMuJJNokZE11f2QQRooJrdKs7rQ2QUx3wnmccIJstpOlG9Yv9qmN+48C8H1 P1VcT8emwO+UMZ5ri59erZ1T2lCZPX5odWkEz0dTBMpmIe9UCydB5I8prdtTUQ+6/aut cJWu/xKjehaWhEtSchiVD2n0+U1OhsyG1T1j4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=RE3Co/Xs35W3mHyi4nszj8u/VzgS78VdADmyfPgsjFp4sarXX0NY7wtowN5bsfum1D sSvPI65aI+QMJy0IFWU2K4Elr+Bzrykqd3mDBF2AUpPQZAnt4gDkCjPyD5n8HbltztZy WCvGc27XQ4rnw8vkUT6z5H6alL54eoRsNF8x8= MIME-Version: 1.0 Received: by 10.229.89.138 with SMTP id e10mr1591200qcm.13.1246286978355; Mon, 29 Jun 2009 07:49:38 -0700 (PDT) In-Reply-To: <20090628205800.DF09A1CC09@ptavv.es.net> References: <4A47D5C8.4090701@FreeBSD.org> <20090628205800.DF09A1CC09@ptavv.es.net> Date: Mon, 29 Jun 2009 07:49:38 -0700 Message-ID: From: Ron Freidel To: Kevin Oberman , freebsd-acpi@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Re: acpi/cpu scaling probs? Dell D820 FreeBSD current X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Jun 2009 14:49:39 -0000 On Sun, Jun 28, 2009 at 1:58 PM, Kevin Oberman wrote: > > Date: Sun, 28 Jun 2009 23:42:48 +0300 > > From: Alexander Motin > > > > Kevin Oberman wrote: > > >> Date: Sun, 28 Jun 2009 21:55:48 +0300 > > >> From: Alexander Motin > > >> Sender: owner-freebsd-acpi@freebsd.org > > >> > > >> Ron Freidel wrote: > > >>> I hope I am posting to the correct list... > > >>> > > >>> I have updated to FreeBSD current to try out acpi sleep, which works > great > > >>> by the way, and the improvements to wifi and the addition of sleep > are > > >>> enough to keep current on the laptop. > > >>> > > >>> Here's the problem, the cpu is maxed out, no scaling at all. > > >>> > > >>> Here's the output of powerd -v > > >>> > > >>> load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > >>> load 109%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > >>> load 102%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > >>> load 124%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > >>> load 108%, current freq 2000 MHz ( 0), wanted freq 4000 MHz > > >>> > > > I feel so inept... but I did almost all my usual "debugging" all except for running top, if I had then I would have seen hald was running cpu1 at 100%. There was nothing in /var/log, dmesg didn't reveal anything, no boot errors, but when I did load current I used mainly the console, just wanted to see if acpi sleep really worked, but got to liking the improvements, so then I ran X/gnome to copy/paste to my email. Gnome from 7.2 ran on current all except for hald and fuse. Need to do a full upgrade now... Thanks everyone. -- Ron From owner-freebsd-acpi@FreeBSD.ORG Mon Jun 29 15:33:22 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C64C1065675 for ; Mon, 29 Jun 2009 15:33:22 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id AA4768FC15 for ; Mon, 29 Jun 2009 15:33:21 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 6871 invoked by uid 89); 29 Jun 2009 15:33:20 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.170.77) by mail.bindone.de with ESMTPA; 29 Jun 2009 15:33:20 -0000 Message-ID: <4A48DEB8.1040808@bindone.de> Date: Mon, 29 Jun 2009 17:33:12 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: Rui Paulo , freebsd-acpi@freebsd.org Content-Type: multipart/mixed; boundary="------------000802090103020201040907" Cc: "Paul B. Mahol" Subject: New patchset for acpi_wmi/acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Jun 2009 15:33:23 -0000 This is a multi-part message in MIME format. --------------000802090103020201040907 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hello, please find attached more patches against CURRENT of today. These patches include the patches I've sent on the 27th. So the complete feature list of this patchset is: acpi_wmi_if: Document different semantics for ACPI_WMI_PROVIDES_GUID_STRING_METHOD acpi_wmi.c: Modify acpi_wmi_provides_guid_string_method to return absolut number of instances known for the given GUID. acpi_hp.c: - sysctl dev.acpi_hp.0.verbose to toggle debug output - A modification so this can deal with different array lengths when reading the CMI BIOS - now it works ok on HP Compaq nx7300 as well. - Change behaviour to query only max_instance-1 CMI BIOS instances, because all HPs seen so far are broken in that respect (or there is a fundamental misunderstanding on my side, possible as well). This way a disturbing ACPI Error Field exceeds Buffer message is avoided. - New bit to set on dev.acpi_hp.0.cmi_detail (0x8) to also query the highest guid instance of CMI bios acpi_hp.4: - Document dev.acpi_hp.0.verbose sysctl in man page - Document new bit for dev.acpi_hp.0.cmi_detail - Add a section to manpage about hardware that has been reported to work ok Installation instructions (against latest CURRENT): patch -d /usr/src < /path/to/acpi_wmi_acpi_hp.patch cd /usr/src/sys/modules/acpi/acpi_wmi make all && make install cd /usr/src/sys/modules/acpi/acpi_hp make all && make install cd /usr/src/share/man/man4 make all && make install cheers Michael --------------000802090103020201040907 Content-Type: text/plain; name="acpi_wmi_acpi_hp.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="acpi_wmi_acpi_hp.patch" --- share/man/man4/acpi_hp.4.orig 2009-06-26 13:03:16.331066657 +0200 +++ share/man/man4/acpi_hp.4 2009-06-29 17:19:18.544247949 +0200 @@ -165,6 +165,9 @@ Show a list of valid options for the BIOS setting .It Li 0x04 Show additional flags of BIOS setting (ReadOnly etc.) +.It Li 0x08 +Query highest BIOS entry instance. This is broken on many HP models and +therefore disabled by default. .El .It Va dev.acpi_hp.0.verbose (read-only) --- sys/dev/acpi_support/acpi_hp.c.orig 2009-06-26 12:54:46.509994426 +0200 +++ sys/dev/acpi_support/acpi_hp.c 2009-06-29 17:18:30.928244238 +0200 @@ -107,6 +107,7 @@ #define ACPI_HP_CMI_DETAIL_PATHS 0x01 #define ACPI_HP_CMI_DETAIL_ENUMS 0x02 #define ACPI_HP_CMI_DETAIL_FLAGS 0x04 +#define ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE 0x08 struct acpi_hp_inst_seq_pair { UINT32 sequence; /* sequence number as suggested by cmi bios */ @@ -505,9 +506,10 @@ sc->has_notify = 1; } } - if (ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, ACPI_HP_WMI_CMI_GUID)) { + if ((sc->has_cmi = + ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, ACPI_HP_WMI_CMI_GUID) + )) { device_printf(dev, "HP CMI GUID detected\n"); - sc->has_cmi = 1; } if (sc->has_cmi) { @@ -772,6 +774,10 @@ arg?1:0)); case ACPI_HP_METHOD_CMI_DETAIL: sc->cmi_detail = arg; + if ((arg & ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE) != + (oldarg & ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE)) { + sc->cmi_order_size = -1; + } break; case ACPI_HP_METHOD_VERBOSE: sc->verbose = arg; @@ -1122,6 +1128,7 @@ struct acpi_hp_softc *sc; int pos, i, l, ret; UINT8 instance; + UINT8 maxInstance; UINT32 sequence; int linesize = 1025; char line[linesize]; @@ -1138,14 +1145,20 @@ else { if (!sbuf_done(&sc->hpcmi_sbuf)) { if (sc->cmi_order_size < 0) { + maxInstance = sc->has_cmi; + if (!(sc->cmi_detail & + ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE) && + maxInstance > 0) { + maxInstance--; + } sc->cmi_order_size = 0; - for (instance = 0; instance < 128; + for (instance = 0; instance < maxInstance; ++instance) { if (acpi_hp_get_cmi_block(sc->wmi_dev, ACPI_HP_WMI_CMI_GUID, instance, line, linesize, &sequence, sc->cmi_detail)) { - instance = 128; + instance = maxInstance; } else { pos = sc->cmi_order_size; --- sys/dev/acpi_support/acpi_wmi.c.orig 2009-06-21 22:27:26.897414000 +0200 +++ sys/dev/acpi_support/acpi_wmi.c 2009-06-29 17:17:39.554824991 +0200 @@ -326,11 +326,13 @@ static int acpi_wmi_provides_guid_string_method(device_t dev, const char *guid_string) { + struct wmi_info *winfo; int ret; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_BEGIN(acpi_wmi); - ret = (acpi_wmi_lookup_wmi_info_by_guid_string(guid_string) == NULL)?0:1; + winfo = acpi_wmi_lookup_wmi_info_by_guid_string(guid_string); + ret = (winfo == NULL)?0:winfo->ginfo.max_instance+1; ACPI_SERIAL_END(acpi_wmi); return (ret); --- sys/dev/acpi_support/acpi_wmi_if.m.orig 2009-06-21 22:27:31.119098000 +0200 +++ sys/dev/acpi_support/acpi_wmi_if.m 2009-06-29 17:18:38.217246332 +0200 @@ -46,6 +46,7 @@ # # Check if given GUID exists in WMI +# Returns number of instances (max_instace+1) or 0 if guid doesn't exist # # device_t dev: Device to probe # const char* guid_string: String form of the GUID --------------000802090103020201040907 Content-Type: application/octet-stream; name="patchset.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patchset.tgz" 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 UAAA --------------000802090103020201040907-- From owner-freebsd-acpi@FreeBSD.ORG Mon Jun 29 17:40:27 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BEF811065670 for ; Mon, 29 Jun 2009 17:40:27 +0000 (UTC) (envelope-from dan@dburkland.com) Received: from na3sys009aog107.obsmtp.com (na3sys009aog107.obsmtp.com [74.125.149.197]) by mx1.freebsd.org (Postfix) with SMTP id 57A768FC14 for ; Mon, 29 Jun 2009 17:40:27 +0000 (UTC) (envelope-from dan@dburkland.com) Received: from source ([173.8.114.137]) (using TLSv1) by na3sys009aob107.postini.com ([74.125.148.12]) with SMTP ID DSNKSkj8igMyoclLdLkl4HC1RM+B8Y1OD9bg@postini.com; Mon, 29 Jun 2009 10:40:27 PDT Received: from mail.dburk.local ([10.0.0.4]) by mail ([10.0.0.4]) with mapi; Mon, 29 Jun 2009 12:40:29 -0500 From: Daniel Burkland To: "freebsd-acpi@freebsd.org" Date: Mon, 29 Jun 2009 12:39:30 -0500 Thread-Topic: i386/136008: [acpi] Dell Vostro 1310 will not shutdown Thread-Index: AQHJ+OCxpSoixMP0oEevZUfVlZceSw== Message-ID: <9BF0E9EFFF8AD245AAB6AAB1542D95967CF975D8@mail> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: i386/136008: [acpi] Dell Vostro 1310 will not shutdown X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 29 Jun 2009 17:40:28 -0000 I perform the tasks listed and made sure to enable dsdt in loader.conf and = it still produces the same AE_NO_HARDWARE_RESPONSE errors upon shutdown -p.= Again I appreciate your help! Dan= From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 09:52:11 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6BC561065673 for ; Tue, 30 Jun 2009 09:52:11 +0000 (UTC) (envelope-from rpaulo@gmail.com) Received: from mail-ew0-f213.google.com (mail-ew0-f213.google.com [209.85.219.213]) by mx1.freebsd.org (Postfix) with ESMTP id EBE048FC1B for ; Tue, 30 Jun 2009 09:52:10 +0000 (UTC) (envelope-from rpaulo@gmail.com) Received: by ewy9 with SMTP id 9so9846ewy.43 for ; Tue, 30 Jun 2009 02:52:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:cc:message-id:from:to :in-reply-to:content-type:content-transfer-encoding:mime-version :subject:date:references:x-mailer; bh=PcuWdgzgf8NzGeHqn4ZCclx0JMcXS1IdXFz5Iu4qVhg=; b=CO/sgn7jC/UAmXPevFzauUe6x/B8KvpXVxCfn3+KF1wCU7d4RQIQZ4d5itmxIWAuN5 pdXoSVxWhOTZx7NWVHGVbsVYikp9Kvq5ZU+6+Jhdk4k+epL+yTDk71iCqBEQ3mGLATEb 7DTp6eKnwW9onLPd55Y095PqrrfcSBW2+CQdk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:cc:message-id:from:to:in-reply-to:content-type :content-transfer-encoding:mime-version:subject:date:references :x-mailer; b=vLYH4aDYPAvPAYfFT/TthBA1PFL40GNFcwFSCAb35Z+rv7KJBny1o+kLjcL9UxgH/I xsaw+vRLc+zQukTN3REUH0WiP4qmOmvScUlYTKRzF2YWSYknXCR5QiOjCv/oSfHsho1D O/4IMCOwyCuzNnVE2VHm/JgaRzNulL9/gut0w= Received: by 10.211.166.2 with SMTP id t2mr2631747ebo.49.1246355529929; Tue, 30 Jun 2009 02:52:09 -0700 (PDT) Received: from omega.lan (bl6-155-38.dsl.telepac.pt [82.155.155.38]) by mx.google.com with ESMTPS id 28sm2833596eye.16.2009.06.30.02.52.08 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 30 Jun 2009 02:52:09 -0700 (PDT) Sender: Rui Paulo Message-Id: <83012DEA-D524-49CA-A8D2-6B03E69C4ED5@freebsd.org> From: Rui Paulo To: Michael Gmelin In-Reply-To: <4A48DEB8.1040808@bindone.de> Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v935.3) Date: Tue, 30 Jun 2009 10:52:07 +0100 References: <4A48DEB8.1040808@bindone.de> X-Mailer: Apple Mail (2.935.3) Cc: freebsd-acpi@freebsd.org, "Paul B. Mahol" Subject: Re: New patchset for acpi_wmi/acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 09:52:11 -0000 On 29 Jun 2009, at 16:33, Michael Gmelin wrote: > Hello, > > please find attached more patches against CURRENT of today. These > patches include the patches I've sent on the 27th. Committed, thanks. -- Rui Paulo From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 10:08:29 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2A6131065689 for ; Tue, 30 Jun 2009 10:08:29 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id 6C77D8FC0C for ; Tue, 30 Jun 2009 10:08:27 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 72610 invoked by uid 89); 30 Jun 2009 10:08:27 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 10:08:27 -0000 Message-ID: <4A49E411.1060509@bindone.de> Date: Tue, 30 Jun 2009 12:08:17 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: Rui Paulo References: <4A48DEB8.1040808@bindone.de> <83012DEA-D524-49CA-A8D2-6B03E69C4ED5@freebsd.org> In-Reply-To: <83012DEA-D524-49CA-A8D2-6B03E69C4ED5@freebsd.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org, "Paul B. Mahol" Subject: Re: New patchset for acpi_wmi/acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 10:08:29 -0000 Rui Paulo wrote: > > On 29 Jun 2009, at 16:33, Michael Gmelin wrote: > >> Hello, >> >> please find attached more patches against CURRENT of today. These >> patches include the patches I've sent on the 27th. > > Committed, thanks. > > -- > Rui Paulo > cool thanks, this should be pretty stable and clean enough so I don't expect any changes besides adding supported hardware to the man page in the near future (keeping my fingers crossed :) From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 12:16:07 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D5201065679 for ; Tue, 30 Jun 2009 12:16:07 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id 7B2198FC13 for ; Tue, 30 Jun 2009 12:16:06 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 80532 invoked by uid 89); 30 Jun 2009 12:16:04 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 12:16:04 -0000 Message-ID: <4A4A01F3.1080004@bindone.de> Date: Tue, 30 Jun 2009 14:15:47 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: chflags@gmail.com, freebsd-acpi@freebsd.org References: <4A46018B.90709@bindone.de> <25cb30906300118idb4a3avb5cf1633cdebc460@mail.gmail.com> <4A49CBEB.3030007@bindone.de> <25cb30906300135v20db01ecre0dd103c3a7651c@mail.gmail.com> <4A49D498.600@bindone.de> <25cb30906300212p43a7127q2ce92f95c1fcb64@mail.gmail.com> <4A49E9F4.5010803@bindone.de> <25cb30906300423q2d61bbf6t6bb42f6c362fef2e@mail.gmail.com> <25cb30906300441y4eb862abk9e12313d6b257354@mail.gmail.com> <4A49FD78.90405@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> In-Reply-To: <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 12:16:07 -0000 Kevin Foo wrote: > On Tue, Jun 30, 2009 at 7:56 PM, Michael Gmelin wrote: > >> It seems like all acpi stuff is disabled on amd64. >> >> Could you try kldloading acpi_ibm (should give the same results) >> >> > acpi seems ok on amd64.I have acpi_video and acpi_ibm loaded without any > issue. > > zeus# uname -a > FreeBSD zeus.m0m0.org 7.2-RELEASE-p2 FreeBSD 7.2-RELEASE-p2 #0: Tue Jun 30 > 18:29:59 MYT 2009 chflags@zeus.m0m0.org:/usr/obj/usr/src/sys/ZEUS amd64 > zeus# kldload acpi_ibm > zeus# kldstat | grep acpi > 8 1 0xffffffff808bd000 5cc8 acpi_video.ko > 35 1 0xffffffff80c4b000 1dfe acpi_ibm.ko > > It's GENERIC amd64 with most devices commented out. > Interesting. Did you do this on the same machine? Have acpi_wmi and acpi_hp been really updated on make install (timestamps approx. the same as for acpi_ibm)? I hereby post this to the general mailing list, because I have no amd64 system to test on and I'm pretty sure I'm not aware of some nuts and bolts required to get that up and running on AMD64. Just for the records: On i386 the module also works on 7.2-RELEASE and HP Compaq Presario V3400 is supported as well. From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 12:33:17 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 941671065670 for ; Tue, 30 Jun 2009 12:33:17 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id ED2678FC1B for ; Tue, 30 Jun 2009 12:33:16 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 82060 invoked by uid 89); 30 Jun 2009 12:33:15 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 12:33:15 -0000 Message-ID: <4A4A05FA.8000305@bindone.de> Date: Tue, 30 Jun 2009 14:32:58 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: chflags@gmail.com References: <4A46018B.90709@bindone.de> <25cb30906300135v20db01ecre0dd103c3a7651c@mail.gmail.com> <4A49D498.600@bindone.de> <25cb30906300212p43a7127q2ce92f95c1fcb64@mail.gmail.com> <4A49E9F4.5010803@bindone.de> <25cb30906300423q2d61bbf6t6bb42f6c362fef2e@mail.gmail.com> <25cb30906300441y4eb862abk9e12313d6b257354@mail.gmail.com> <4A49FD78.90405@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> <4A4A01F3.1080004@bindone.de> <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> In-Reply-To: <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 12:33:17 -0000 Kevin Foo wrote: > On Tue, Jun 30, 2009 at 8:15 PM, Michael Gmelin wrote: > >> Interesting. Did you do this on the same machine? Have acpi_wmi and >> acpi_hp been really updated on make install (timestamps approx. the same >> as for acpi_ibm)? >> >> I hereby post this to the general mailing list, because I have no amd64 >> system to test on and I'm pretty sure I'm not aware of some nuts and >> bolts required to get that up and running on AMD64. >> >> Just for the records: >> On i386 the module also works on 7.2-RELEASE and HP Compaq Presario >> V3400 is supported as well. >> > > > Tiny missing nut attached. :) > > > %dmesg | grep ACPI > ACPI APIC Table: > Timecounter "ACPI-safe" frequency 3579545 Hz quality 850 > pcib0: port 0xcf8-0xcff on acpi0 > pci0: on pcib0 > pcib1: at device 2.0 on pci0 > pci1: on pcib1 > pcib2: at device 3.0 on pci0 > pci3: on pcib2 > acpi_video0: on vgapci0 > pcib3: at device 16.0 on pci0 > pci5: on pcib3 > battery0: on acpi0 > cpu0: on acpi0 > cpu1: on acpi0 > acpi_wmi0: on acpi0 > acpi_hp0: on acpi0 > %kldstat | grep acpi > 8 1 0xffffffff808bd000 5cc8 acpi_video.ko > 32 1 0xffffffff80c4b000 26c8 acpi_hp.ko > 33 1 0xffffffff80c4e000 1c08 acpi_wmi.ko > > Michael, thank for the excellent work and kind help. > Ah.. actually that has been done on CURRENT, so I just missed it. Thanks for pointing that out. Did you try all the major features on amd64? If yes, I will update the manpage accordingly saying that it has been tested successfully on amd64 (and HP PCompaq Presario V3400). Michael From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 12:38:01 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1B5D21065673 for ; Tue, 30 Jun 2009 12:38:01 +0000 (UTC) (envelope-from chflags@gmail.com) Received: from mail-yx0-f181.google.com (mail-yx0-f181.google.com [209.85.210.181]) by mx1.freebsd.org (Postfix) with ESMTP id C0D938FC18 for ; Tue, 30 Jun 2009 12:38:00 +0000 (UTC) (envelope-from chflags@gmail.com) Received: by yxe11 with SMTP id 11so107713yxe.3 for ; Tue, 30 Jun 2009 05:38:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:reply-to:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=fL93dtK16owEVu1VB+zInvAwawfXi85721O3JkhY56U=; b=OXxLEGR4YpSESIUIOn5lGAgxxNlo+9mgo5+sm/Hx82S+Rv7Iz0PHTWxxG+3xJsjhT/ wwYWFqHMyHHdLtiXLcsfq60irEhCPkDauc8m/ltd3AltDgXe35G6SmiP+BS1uPpMiiqJ Sy+yUp67dEx4HDU6ZLA70DB7pOgt85R9SckS0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; b=YOJN5vwAMvLo4k2l3tFj3i7SD4bH4cB3UcWHC8hseAq46GX906or0/8olDTZ1GHdde PE/Mq5w45cq0a4f76en2AdsqZ93gHZ6UTTazMbVnBfNrvaM1mH9Z5H4b5Es3Vzus+u1+ W6MsUaLp7Tb5N1XmID9jCW767Hk7E21Pygx3A= MIME-Version: 1.0 Received: by 10.100.144.14 with SMTP id r14mr11161753and.120.1246365479952; Tue, 30 Jun 2009 05:37:59 -0700 (PDT) In-Reply-To: <4A4A05FA.8000305@bindone.de> References: <4A46018B.90709@bindone.de> <25cb30906300212p43a7127q2ce92f95c1fcb64@mail.gmail.com> <4A49E9F4.5010803@bindone.de> <25cb30906300423q2d61bbf6t6bb42f6c362fef2e@mail.gmail.com> <25cb30906300441y4eb862abk9e12313d6b257354@mail.gmail.com> <4A49FD78.90405@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> <4A4A01F3.1080004@bindone.de> <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> <4A4A05FA.8000305@bindone.de> Date: Tue, 30 Jun 2009 20:37:59 +0800 Message-ID: <25cb30906300537y5fae18afo7c34d5fda170fff3@mail.gmail.com> From: Kevin Foo To: Michael Gmelin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: chflags@gmail.com List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 12:38:01 -0000 On Tue, Jun 30, 2009 at 8:32 PM, Michael Gmelin wrote: > > Ah.. actually that has been done on CURRENT, so I just missed it. Thanks > for pointing that out. > > Did you try all the major features on amd64? If yes, I will update the > manpage accordingly saying that it has been tested successfully on amd64 > (and HP PCompaq Presario V3400). > > Michael > Hi Michael, I'm currently exploring it. So far, it was good on HP compaq presario V3400 both i386 and amd64 arch, # sysctl dev.acpi_hp.0.bt_enabled=1 dmesg :- ugen0: on uhub0 # sysctl dev.acpi_hp.0.bt_enabled=0 dmesg :- ugen0: at uhub0 port 4 (addr 2) disconnected ugen0: detached Thanks! -- Regards Kevin Foo From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 12:54:02 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2CA71106566C for ; Tue, 30 Jun 2009 12:54:02 +0000 (UTC) (envelope-from chflags@gmail.com) Received: from mail-yx0-f181.google.com (mail-yx0-f181.google.com [209.85.210.181]) by mx1.freebsd.org (Postfix) with ESMTP id D1DE88FC13 for ; Tue, 30 Jun 2009 12:54:01 +0000 (UTC) (envelope-from chflags@gmail.com) Received: by yxe11 with SMTP id 11so120558yxe.3 for ; Tue, 30 Jun 2009 05:54:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:reply-to:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=8nHGtwFyW4H6I3maG/YiUZ3VkyyiRU6FkETz5aWbyyc=; b=Vqu9stIIuQpUjDhqSt9UXnMIDlQCdWyr8vCpBS8Khi8reD1OIJ+yqRDhZ6COJIRAtp EAsyyf9c1bf2APx6yPCJcR3ZpyFeboBkP2u1OmJ4maNsm6Nbj1j/AYO83K4aYx62f1fm fU+nGhGMRPbhJAlt3FRtKne0C+oFUqmHUOwMk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; b=w+iFQXeZ4DmqCbpL0FopvJ+8zo7kIzMnsjBLdzrJSO/qicfNFtZ1f00qfo//WzdLXn MuiL++2CyTGCKPLevJe3bb2EVcWwVqkscaUzHZKz4lhYhURKK0gJ5uT6c7JpKe3LLml4 mamm+nPfa3tZNoHlBMqsPZMSpN3jhZhLSpuHU= MIME-Version: 1.0 Received: by 10.100.154.14 with SMTP id b14mr11146752ane.142.1246366441217; Tue, 30 Jun 2009 05:54:01 -0700 (PDT) In-Reply-To: <25cb30906300537y5fae18afo7c34d5fda170fff3@mail.gmail.com> References: <4A46018B.90709@bindone.de> <4A49E9F4.5010803@bindone.de> <25cb30906300423q2d61bbf6t6bb42f6c362fef2e@mail.gmail.com> <25cb30906300441y4eb862abk9e12313d6b257354@mail.gmail.com> <4A49FD78.90405@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> <4A4A01F3.1080004@bindone.de> <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> <4A4A05FA.8000305@bindone.de> <25cb30906300537y5fae18afo7c34d5fda170fff3@mail.gmail.com> Date: Tue, 30 Jun 2009 20:54:01 +0800 Message-ID: <25cb30906300554u4ef7e638naa0dfe51bac3e83f@mail.gmail.com> From: Kevin Foo To: Michael Gmelin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: chflags@gmail.com List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 12:54:02 -0000 On Tue, Jun 30, 2009 at 8:37 PM, Kevin Foo wrote: > Hi Michael, > > I'm currently exploring it. So far, it was good on HP compaq presario V3400 > both i386 and amd64 arch, > > # sysctl dev.acpi_hp.0.bt_enabled=1 > > dmesg :- > ugen0: addr 2> on uhub0 > > # sysctl dev.acpi_hp.0.bt_enabled=0 > > dmesg :- > ugen0: at uhub0 port 4 (addr 2) disconnected > ugen0: detached > > Thanks! > > -- > Regards > Kevin Foo Michael, Controlling via sysctl works well so far. The hpcmi device is missing though. Perhaps I missed any patch for that? zeus# cat /dev/hpcmi cat: /dev/hpcmi: No such file or directory zeus# sysctl -a | grep dev.acpi dev.acpi.0.%desc: HPQOEM SLIC-MPC dev.acpi.0.%driver: acpi dev.acpi.0.%parent: nexus0 dev.acpi_sysresource.0.%desc: System Resource dev.acpi_sysresource.0.%driver: acpi_sysresource dev.acpi_sysresource.0.%location: handle=\_SB_.PCI0.LPC0.MBRD dev.acpi_sysresource.0.%pnpinfo: _HID=PNP0C02 _UID=31 dev.acpi_sysresource.0.%parent: acpi0 dev.acpi_sysresource.1.%desc: System Resource dev.acpi_sysresource.1.%driver: acpi_sysresource dev.acpi_sysresource.1.%location: handle=\_SB_.PCI0.LPC0.PMIO dev.acpi_sysresource.1.%pnpinfo: _HID=PNP0C02 _UID=3 dev.acpi_sysresource.1.%parent: acpi0 dev.acpi_sysresource.2.%desc: System Resource dev.acpi_sysresource.2.%driver: acpi_sysresource dev.acpi_sysresource.2.%location: handle=\_SB_.PCI0.SYS0 dev.acpi_sysresource.2.%pnpinfo: _HID=PNP0C02 _UID=1 dev.acpi_sysresource.2.%parent: acpi0 dev.acpi_timer.0.%desc: 24-bit timer at 3.579545MHz dev.acpi_timer.0.%driver: acpi_timer dev.acpi_timer.0.%location: unknown dev.acpi_timer.0.%pnpinfo: unknown dev.acpi_timer.0.%parent: acpi0 dev.acpi_ec.0.%desc: Embedded Controller: GPE 0x1 dev.acpi_ec.0.%driver: acpi_ec dev.acpi_ec.0.%location: handle=\_SB_.PCI0.EC0_ dev.acpi_ec.0.%pnpinfo: _HID=PNP0C09 _UID=0 dev.acpi_ec.0.%parent: acpi0 dev.acpi_hpet.0.%desc: High Precision Event Timer dev.acpi_hpet.0.%driver: acpi_hpet dev.acpi_hpet.0.%location: unknown dev.acpi_hpet.0.%pnpinfo: unknown dev.acpi_hpet.0.%parent: acpi0 dev.acpi_lid.0.%desc: Control Method Lid Switch dev.acpi_lid.0.%driver: acpi_lid dev.acpi_lid.0.%location: handle=\_SB_.LID0 dev.acpi_lid.0.%pnpinfo: _HID=PNP0C0D _UID=0 dev.acpi_lid.0.%parent: acpi0 dev.acpi_lid.0.wake: 1 dev.acpi_button.0.%desc: Sleep Button dev.acpi_button.0.%driver: acpi_button dev.acpi_button.0.%location: handle=\_SB_.SLPB dev.acpi_button.0.%pnpinfo: _HID=PNP0C0E _UID=0 dev.acpi_button.0.%parent: acpi0 dev.acpi_button.0.wake: 1 dev.acpi_button.1.%desc: Power Button dev.acpi_button.1.%driver: acpi_button dev.acpi_button.1.%location: handle=\_SB_.PWRB dev.acpi_button.1.%pnpinfo: _HID=PNP0C0C _UID=0 dev.acpi_button.1.%parent: acpi0 dev.acpi_video.0.%desc: ACPI video extension dev.acpi_video.0.%driver: acpi_video dev.acpi_video.0.%parent: vgapci0 dev.acpi_tz.0.%desc: Thermal Zone dev.acpi_tz.0.%driver: acpi_tz dev.acpi_tz.0.%location: handle=\_TZ_.TZS0 dev.acpi_tz.0.%pnpinfo: _HID=none _UID=0 dev.acpi_tz.0.%parent: acpi0 dev.acpi_tz.1.%desc: Thermal Zone dev.acpi_tz.1.%driver: acpi_tz dev.acpi_tz.1.%location: handle=\_TZ_.TZS1 dev.acpi_tz.1.%pnpinfo: _HID=none _UID=0 dev.acpi_tz.1.%parent: acpi0 dev.acpi_acad.0.%desc: AC Adapter dev.acpi_acad.0.%driver: acpi_acad dev.acpi_acad.0.%location: handle=\_SB_.PCI0.EC0_.ADP1 dev.acpi_acad.0.%pnpinfo: _HID=ACPI0003 _UID=0 dev.acpi_acad.0.%parent: acpi0 dev.acpi_perf.0.%driver: acpi_perf dev.acpi_perf.0.%parent: cpu0 dev.acpi_perf.1.%driver: acpi_perf dev.acpi_perf.1.%parent: cpu1 dev.acpi_wmi.0.%desc: ACPI-WMI mapping dev.acpi_wmi.0.%driver: acpi_wmi dev.acpi_wmi.0.%location: handle=\_SB_.WMID dev.acpi_wmi.0.%pnpinfo: _HID=PNP0C14 _UID=0 dev.acpi_wmi.0.%parent: acpi0 dev.acpi_hp.0.%desc: HP ACPI-WMI Mapping dev.acpi_hp.0.%driver: acpi_hp dev.acpi_hp.0.%location: handle=\_SB_.QLBD dev.acpi_hp.0.%pnpinfo: _HID=HPQ0006 _UID=0 dev.acpi_hp.0.%parent: acpi0 dev.acpi_hp.0.wlan_enabled: 1 dev.acpi_hp.0.wlan_radio: 1 dev.acpi_hp.0.wlan_on_air: 1 dev.acpi_hp.0.wlan_enable_if_radio_on: 0 dev.acpi_hp.0.wlan_disable_if_radio_off: 0 dev.acpi_hp.0.bt_enabled: 0 dev.acpi_hp.0.bt_radio: 1 dev.acpi_hp.0.bt_on_air: 0 dev.acpi_hp.0.bt_enable_if_radio_on: 0 dev.acpi_hp.0.bt_disable_if_radio_off: 0 dev.acpi_hp.0.wwan_enabled: 0 dev.acpi_hp.0.wwan_radio: 0 dev.acpi_hp.0.wwan_on_air: 0 dev.acpi_hp.0.wwan_enable_if_radio_on: 0 dev.acpi_hp.0.wwan_disable_if_radio_off: 0 dev.acpi_hp.0.als_enabled: 4 dev.acpi_hp.0.display: 1 dev.acpi_hp.0.hdd_temperature: 4 dev.acpi_hp.0.is_docked: 4 dev.acpi_hp.0.cmi_detail: 0 zeus# sysctl dev.acpi_hp.0.cmi_detail=7 dev.acpi_hp.0.cmi_detail: 0 -> 7 -- Regards Kevin Foo From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 12:58:20 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BBFF71065670 for ; Tue, 30 Jun 2009 12:58:20 +0000 (UTC) (envelope-from chflags@gmail.com) Received: from an-out-0708.google.com (an-out-0708.google.com [209.85.132.248]) by mx1.freebsd.org (Postfix) with ESMTP id 6907B8FC15 for ; Tue, 30 Jun 2009 12:58:20 +0000 (UTC) (envelope-from chflags@gmail.com) Received: by an-out-0708.google.com with SMTP id d14so33547and.13 for ; Tue, 30 Jun 2009 05:58:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:reply-to:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=YK46eL2OdFS5YJc1OmTQMFd5ZgitOsAZ/afoJoBUtqE=; b=pWQa//WPhAnHajj/UQrYD+B1p/ZVGiorw12kG3NYqm1AZ/7zOL6RBnSFSRcezuhP2R pzD3KG3+fygRFqhEHV7te7TIMEWoQbFogE51+ac0pZ8jY0+TRwB/X/1DPZqDuw5zDHbz vI4hSots6+t+NyMbFHoEyWykAuIPfOBa2GCz8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; b=oDx+fsLs5IoK1urQD0qFiJ/ttwG7dcQeh+AXU5uPwsl32KGll5eJrYMigthPY0xc78 TDox60drnO/RlUr22aM20FI61sohq0CNSdCQxEEFk0roFt883ZI+U28G2l4OriRzjBmy PWD0C/GbcDUPk22KsGZpj8K0/4BUDpzKc7EG8= MIME-Version: 1.0 Received: by 10.100.227.18 with SMTP id z18mr11143612ang.67.1246364757148; Tue, 30 Jun 2009 05:25:57 -0700 (PDT) In-Reply-To: <4A4A01F3.1080004@bindone.de> References: <4A46018B.90709@bindone.de> <25cb30906300135v20db01ecre0dd103c3a7651c@mail.gmail.com> <4A49D498.600@bindone.de> <25cb30906300212p43a7127q2ce92f95c1fcb64@mail.gmail.com> <4A49E9F4.5010803@bindone.de> <25cb30906300423q2d61bbf6t6bb42f6c362fef2e@mail.gmail.com> <25cb30906300441y4eb862abk9e12313d6b257354@mail.gmail.com> <4A49FD78.90405@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> <4A4A01F3.1080004@bindone.de> Date: Tue, 30 Jun 2009 20:25:57 +0800 Message-ID: <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> From: Kevin Foo To: Michael Gmelin Content-Type: multipart/mixed; boundary=001636c9356a9c628b046d8fe837 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: chflags@gmail.com List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 12:58:21 -0000 --001636c9356a9c628b046d8fe837 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Tue, Jun 30, 2009 at 8:15 PM, Michael Gmelin wrote: > Interesting. Did you do this on the same machine? Have acpi_wmi and > acpi_hp been really updated on make install (timestamps approx. the same > as for acpi_ibm)? > > I hereby post this to the general mailing list, because I have no amd64 > system to test on and I'm pretty sure I'm not aware of some nuts and > bolts required to get that up and running on AMD64. > > Just for the records: > On i386 the module also works on 7.2-RELEASE and HP Compaq Presario > V3400 is supported as well. > Tiny missing nut attached. :) %dmesg | grep ACPI ACPI APIC Table: Timecounter "ACPI-safe" frequency 3579545 Hz quality 850 pcib0: port 0xcf8-0xcff on acpi0 pci0: on pcib0 pcib1: at device 2.0 on pci0 pci1: on pcib1 pcib2: at device 3.0 on pci0 pci3: on pcib2 acpi_video0: on vgapci0 pcib3: at device 16.0 on pci0 pci5: on pcib3 battery0: on acpi0 cpu0: on acpi0 cpu1: on acpi0 acpi_wmi0: on acpi0 acpi_hp0: on acpi0 %kldstat | grep acpi 8 1 0xffffffff808bd000 5cc8 acpi_video.ko 32 1 0xffffffff80c4b000 26c8 acpi_hp.ko 33 1 0xffffffff80c4e000 1c08 acpi_wmi.ko Michael, thank for the excellent work and kind help. -- Regards Kevin Foo --001636c9356a9c628b046d8fe837 Content-Type: application/octet-stream; name="files.amd64.patch" Content-Disposition: attachment; filename="files.amd64.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fwklbm1e0 LS0tIC91c3Ivc3JjL3N5cy9jb25mL2ZpbGVzLmFtZDY0Lm9yaWcJMjAwOS0wNi0zMCAyMDoxMjo0 OC4wMDAwMDAwMDAgKzA4MDAKKysrIC91c3Ivc3JjL3N5cy9jb25mL2ZpbGVzLmFtZDY0CTIwMDkt MDYtMzAgMTk6NTI6MTIuMDAwMDAwMDAwICswODAwCkBAIC0xMzEsNiArMTMxLDcgQEAKIGNyeXB0 by9ibG93ZmlzaC9iZl9lbmMuYwlvcHRpb25hbAljcnlwdG8gfCBpcHNlYyAKIGNyeXB0by9kZXMv ZGVzX2VuYy5jCQlvcHRpb25hbAljcnlwdG8gfCBpcHNlYyB8IG5ldHNtYgogZGV2L2FjcGljYS9h Y3BpX2lmLm0JCXN0YW5kYXJkCitkZXYvYWNwaV9zdXBwb3J0L2FjcGlfd21pX2lmLm0Jc3RhbmRh cmQKIGRldi9hcmNtc3IvYXJjbXNyLmMJCW9wdGlvbmFsCWFyY21zciBwY2kKIGRldi9hdGtiZGMv YXRrYmQuYwkJb3B0aW9uYWwJYXRrYmQgYXRrYmRjCiBkZXYvYXRrYmRjL2F0a2JkX2F0a2JkYy5j CW9wdGlvbmFsCWF0a2JkIGF0a2JkYwo= --001636c9356a9c628b046d8fe837-- From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 13:11:39 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6995C10656CC for ; Tue, 30 Jun 2009 13:11:39 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id D60418FC18 for ; Tue, 30 Jun 2009 13:11:38 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 86223 invoked by uid 89); 30 Jun 2009 13:11:37 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 13:11:37 -0000 Message-ID: <4A4A0EF6.1080800@bindone.de> Date: Tue, 30 Jun 2009 15:11:18 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: chflags@gmail.com References: <4A46018B.90709@bindone.de> <4A49E9F4.5010803@bindone.de> <25cb30906300423q2d61bbf6t6bb42f6c362fef2e@mail.gmail.com> <25cb30906300441y4eb862abk9e12313d6b257354@mail.gmail.com> <4A49FD78.90405@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> <4A4A01F3.1080004@bindone.de> <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> <4A4A05FA.8000305@bindone.de> <25cb30906300537y5fae18afo7c34d5fda170fff3@mail.gmail.com> <25cb30906300554u4ef7e638naa0dfe51bac3e83f@mail.gmail.com> In-Reply-To: <25cb30906300554u4ef7e638naa0dfe51bac3e83f@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 13:11:40 -0000 Kevin Foo wrote: > On Tue, Jun 30, 2009 at 8:37 PM, Kevin Foo wrote: > >> Hi Michael, >> >> I'm currently exploring it. So far, it was good on HP compaq presario V3400 >> both i386 and amd64 arch, >> >> # sysctl dev.acpi_hp.0.bt_enabled=1 >> >> dmesg :- >> ugen0: > addr 2> on uhub0 >> >> # sysctl dev.acpi_hp.0.bt_enabled=0 >> >> dmesg :- >> ugen0: at uhub0 port 4 (addr 2) disconnected >> ugen0: detached >> >> Thanks! >> >> -- >> Regards >> Kevin Foo > > > > Michael, > > Controlling via sysctl works well so far. The hpcmi device is missing > though. Perhaps I missed any patch for that? > > zeus# cat /dev/hpcmi > cat: /dev/hpcmi: No such file or directory > > zeus# sysctl -a | grep dev.acpi > dev.acpi.0.%desc: HPQOEM SLIC-MPC > dev.acpi.0.%driver: acpi > dev.acpi.0.%parent: nexus0 > dev.acpi_sysresource.0.%desc: System Resource > dev.acpi_sysresource.0.%driver: acpi_sysresource > dev.acpi_sysresource.0.%location: handle=\_SB_.PCI0.LPC0.MBRD > dev.acpi_sysresource.0.%pnpinfo: _HID=PNP0C02 _UID=31 > dev.acpi_sysresource.0.%parent: acpi0 > dev.acpi_sysresource.1.%desc: System Resource > dev.acpi_sysresource.1.%driver: acpi_sysresource > dev.acpi_sysresource.1.%location: handle=\_SB_.PCI0.LPC0.PMIO > dev.acpi_sysresource.1.%pnpinfo: _HID=PNP0C02 _UID=3 > dev.acpi_sysresource.1.%parent: acpi0 > dev.acpi_sysresource.2.%desc: System Resource > dev.acpi_sysresource.2.%driver: acpi_sysresource > dev.acpi_sysresource.2.%location: handle=\_SB_.PCI0.SYS0 > dev.acpi_sysresource.2.%pnpinfo: _HID=PNP0C02 _UID=1 > dev.acpi_sysresource.2.%parent: acpi0 > dev.acpi_timer.0.%desc: 24-bit timer at 3.579545MHz > dev.acpi_timer.0.%driver: acpi_timer > dev.acpi_timer.0.%location: unknown > dev.acpi_timer.0.%pnpinfo: unknown > dev.acpi_timer.0.%parent: acpi0 > dev.acpi_ec.0.%desc: Embedded Controller: GPE 0x1 > dev.acpi_ec.0.%driver: acpi_ec > dev.acpi_ec.0.%location: handle=\_SB_.PCI0.EC0_ > dev.acpi_ec.0.%pnpinfo: _HID=PNP0C09 _UID=0 > dev.acpi_ec.0.%parent: acpi0 > dev.acpi_hpet.0.%desc: High Precision Event Timer > dev.acpi_hpet.0.%driver: acpi_hpet > dev.acpi_hpet.0.%location: unknown > dev.acpi_hpet.0.%pnpinfo: unknown > dev.acpi_hpet.0.%parent: acpi0 > dev.acpi_lid.0.%desc: Control Method Lid Switch > dev.acpi_lid.0.%driver: acpi_lid > dev.acpi_lid.0.%location: handle=\_SB_.LID0 > dev.acpi_lid.0.%pnpinfo: _HID=PNP0C0D _UID=0 > dev.acpi_lid.0.%parent: acpi0 > dev.acpi_lid.0.wake: 1 > dev.acpi_button.0.%desc: Sleep Button > dev.acpi_button.0.%driver: acpi_button > dev.acpi_button.0.%location: handle=\_SB_.SLPB > dev.acpi_button.0.%pnpinfo: _HID=PNP0C0E _UID=0 > dev.acpi_button.0.%parent: acpi0 > dev.acpi_button.0.wake: 1 > dev.acpi_button.1.%desc: Power Button > dev.acpi_button.1.%driver: acpi_button > dev.acpi_button.1.%location: handle=\_SB_.PWRB > dev.acpi_button.1.%pnpinfo: _HID=PNP0C0C _UID=0 > dev.acpi_button.1.%parent: acpi0 > dev.acpi_video.0.%desc: ACPI video extension > dev.acpi_video.0.%driver: acpi_video > dev.acpi_video.0.%parent: vgapci0 > dev.acpi_tz.0.%desc: Thermal Zone > dev.acpi_tz.0.%driver: acpi_tz > dev.acpi_tz.0.%location: handle=\_TZ_.TZS0 > dev.acpi_tz.0.%pnpinfo: _HID=none _UID=0 > dev.acpi_tz.0.%parent: acpi0 > dev.acpi_tz.1.%desc: Thermal Zone > dev.acpi_tz.1.%driver: acpi_tz > dev.acpi_tz.1.%location: handle=\_TZ_.TZS1 > dev.acpi_tz.1.%pnpinfo: _HID=none _UID=0 > dev.acpi_tz.1.%parent: acpi0 > dev.acpi_acad.0.%desc: AC Adapter > dev.acpi_acad.0.%driver: acpi_acad > dev.acpi_acad.0.%location: handle=\_SB_.PCI0.EC0_.ADP1 > dev.acpi_acad.0.%pnpinfo: _HID=ACPI0003 _UID=0 > dev.acpi_acad.0.%parent: acpi0 > dev.acpi_perf.0.%driver: acpi_perf > dev.acpi_perf.0.%parent: cpu0 > dev.acpi_perf.1.%driver: acpi_perf > dev.acpi_perf.1.%parent: cpu1 > dev.acpi_wmi.0.%desc: ACPI-WMI mapping > dev.acpi_wmi.0.%driver: acpi_wmi > dev.acpi_wmi.0.%location: handle=\_SB_.WMID > dev.acpi_wmi.0.%pnpinfo: _HID=PNP0C14 _UID=0 > dev.acpi_wmi.0.%parent: acpi0 > dev.acpi_hp.0.%desc: HP ACPI-WMI Mapping > dev.acpi_hp.0.%driver: acpi_hp > dev.acpi_hp.0.%location: handle=\_SB_.QLBD > dev.acpi_hp.0.%pnpinfo: _HID=HPQ0006 _UID=0 > dev.acpi_hp.0.%parent: acpi0 > dev.acpi_hp.0.wlan_enabled: 1 > dev.acpi_hp.0.wlan_radio: 1 > dev.acpi_hp.0.wlan_on_air: 1 > dev.acpi_hp.0.wlan_enable_if_radio_on: 0 > dev.acpi_hp.0.wlan_disable_if_radio_off: 0 > dev.acpi_hp.0.bt_enabled: 0 > dev.acpi_hp.0.bt_radio: 1 > dev.acpi_hp.0.bt_on_air: 0 > dev.acpi_hp.0.bt_enable_if_radio_on: 0 > dev.acpi_hp.0.bt_disable_if_radio_off: 0 > dev.acpi_hp.0.wwan_enabled: 0 > dev.acpi_hp.0.wwan_radio: 0 > dev.acpi_hp.0.wwan_on_air: 0 > dev.acpi_hp.0.wwan_enable_if_radio_on: 0 > dev.acpi_hp.0.wwan_disable_if_radio_off: 0 > dev.acpi_hp.0.als_enabled: 4 > dev.acpi_hp.0.display: 1 > dev.acpi_hp.0.hdd_temperature: 4 > dev.acpi_hp.0.is_docked: 4 > dev.acpi_hp.0.cmi_detail: 0 > > zeus# sysctl dev.acpi_hp.0.cmi_detail=7 > dev.acpi_hp.0.cmi_detail: 0 -> 7 > Can you send me the output you get when kldloading acpi_hp + the output of cat /dev/wmistat. In addition the output of acpidump -dt would be useful. It's possible that your laptop doesn't support CMI. From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 17:32:29 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B4A8106566C for ; Tue, 30 Jun 2009 17:32:29 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id DA56E8FC17 for ; Tue, 30 Jun 2009 17:32:28 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 6342 invoked by uid 89); 30 Jun 2009 17:32:27 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 17:32:27 -0000 Message-ID: <4A4A4C19.6000407@bindone.de> Date: Tue, 30 Jun 2009 19:32:09 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: chflags@gmail.com References: <4A46018B.90709@bindone.de> <25cb30906300441y4eb862abk9e12313d6b257354@mail.gmail.com> <4A49FD78.90405@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> <4A4A01F3.1080004@bindone.de> <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> <4A4A05FA.8000305@bindone.de> <25cb30906300537y5fae18afo7c34d5fda170fff3@mail.gmail.com> <25cb30906300554u4ef7e638naa0dfe51bac3e83f@mail.gmail.com> <4A4A0EF6.1080800@bindone.de> <25cb30906300943k4871313ao69595498c1758730@mail.gmail.com> In-Reply-To: <25cb30906300943k4871313ao69595498c1758730@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 17:32:29 -0000 Kevin Foo wrote: > On Tue, Jun 30, 2009 at 9:11 PM, Michael Gmelin wrote: > >> Can you send me the output you get when kldloading acpi_hp + the output >> of cat /dev/wmistat. >> >> In addition the output of >> acpidump -dt >> >> would be useful. >> >> It's possible that your laptop doesn't support CMI. >> > > When kldloading acpi_hp, dmesg showed up these line. > > acpi_wmi0: on acpi0 > acpi_hp0: on acpi0 > acpi_hp0: HP event GUID detected, installing event handler > > zeus# cat /dev/wmistat > GUID INST EXPE METH STR EVENT OID > {5FB7F034-2C63-45E9-BE91-3D44E2C707E4} 1 NO WMAD NO NO AD > {95F24279-4D7B-4334-9387-ACCDC67EF61C} 1 NO NO NO 0x80+ - > {05901221-D566-11D1-B2F0-00A0C9062910} 1 NO NO NO NO AE > {D0992BD4-A47C-4EFE-B072-324AEC92296C} 1 NO NO NO NO BC > > Please find the attached acpidump output.If you need further info, please > let me know. Thank you. > Hi Kevin, it seems like your model doesn't support this feature, sorry. Michael From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 18:22:16 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 85C44106567B; Tue, 30 Jun 2009 18:22:16 +0000 (UTC) (envelope-from onemda@gmail.com) Received: from mail-bw0-f216.google.com (mail-bw0-f216.google.com [209.85.218.216]) by mx1.freebsd.org (Postfix) with ESMTP id D34D58FC18; Tue, 30 Jun 2009 18:22:15 +0000 (UTC) (envelope-from onemda@gmail.com) Received: by bwz12 with SMTP id 12so304465bwz.43 for ; Tue, 30 Jun 2009 11:22:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=Z/sBXMM1HQSIRGrBIPpTkD4CfS1DqT4rC25pEjeUVKM=; b=xzlXEDClry31SbsQHfpz8cpxmvOBEjHhucZAodfCjgdenFkG9PNuUsrDKt1c99G8t+ P02Me2fksJ8tAnEl4R9aY+f/thBBHIYdn0j+WaS2NhIHPVSW7swLxou3xueadqQWqGvv Ux1YH4XN9Cm2l7lZrEdY+ljey/THscgGx2pQ4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=J3e8lKRfb8jYhrlm4vYa1Oei99xPVuHfkVQoSboToPnLHL6EzGubvIQpEh55Gq/a/W lbGwJPBJEo8/51C8/RJf94j5VpoQ7KdyamA+F6opmSwSayAjx2UWCfBHckS1IFtb6tpz HYuBH6bm0gNKuvAIL6FLwvNmbaY71VhhxRooE= MIME-Version: 1.0 Received: by 10.204.116.15 with SMTP id k15mr8644140bkq.118.1246386134217; Tue, 30 Jun 2009 11:22:14 -0700 (PDT) In-Reply-To: <4A49E411.1060509@bindone.de> References: <4A48DEB8.1040808@bindone.de> <83012DEA-D524-49CA-A8D2-6B03E69C4ED5@freebsd.org> <4A49E411.1060509@bindone.de> Date: Tue, 30 Jun 2009 20:22:14 +0200 Message-ID: <3a142e750906301122j792fb80qeb07783cbf8ea1c2@mail.gmail.com> From: "Paul B. Mahol" To: Michael Gmelin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: New patchset for acpi_wmi/acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 18:22:17 -0000 On 6/30/09, Michael Gmelin wrote: > Rui Paulo wrote: >> >> On 29 Jun 2009, at 16:33, Michael Gmelin wrote: >> >>> Hello, >>> >>> please find attached more patches against CURRENT of today. These >>> patches include the patches I've sent on the 27th. Everything points they do not. >> >> Committed, thanks. >> >> -- >> Rui Paulo >> > cool thanks, this should be pretty stable and clean enough so I don't > expect any changes besides adding supported hardware to the man page in > the near future (keeping my fingers crossed :) > For some reason patches used for this commit do not have anywhere "verbose" sysctl in code, and cat /dev/hpcmi doesnt work for me using code from CURRENT. Better side of story is that acpica no longer complains about DTD. Sorry, I really should noticed and reported this much before ... -- Paul From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 18:46:08 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 417AE1065670 for ; Tue, 30 Jun 2009 18:46:08 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id 841C78FC14 for ; Tue, 30 Jun 2009 18:46:07 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 11143 invoked by uid 89); 30 Jun 2009 18:46:06 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 18:46:06 -0000 Message-ID: <4A4A5D5C.3000400@bindone.de> Date: Tue, 30 Jun 2009 20:45:48 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: "Paul B. Mahol" References: <4A48DEB8.1040808@bindone.de> <83012DEA-D524-49CA-A8D2-6B03E69C4ED5@freebsd.org> <4A49E411.1060509@bindone.de> <3a142e750906301122j792fb80qeb07783cbf8ea1c2@mail.gmail.com> In-Reply-To: <3a142e750906301122j792fb80qeb07783cbf8ea1c2@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: New patchset for acpi_wmi/acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 18:46:08 -0000 Paul B. Mahol wrote: > On 6/30/09, Michael Gmelin wrote: >> Rui Paulo wrote: >>> On 29 Jun 2009, at 16:33, Michael Gmelin wrote: >>> >>>> Hello, >>>> >>>> please find attached more patches against CURRENT of today. These >>>> patches include the patches I've sent on the 27th. > > Everything points they do not. > >>> Committed, thanks. >>> >>> -- >>> Rui Paulo >>> >> cool thanks, this should be pretty stable and clean enough so I don't >> expect any changes besides adding supported hardware to the man page in >> the near future (keeping my fingers crossed :) >> > > For some reason patches used for this commit do not have anywhere "verbose" > sysctl in code, and cat /dev/hpcmi doesnt work for me using code from CURRENT. > Better side of story is that acpica no longer complains about DTD. > > > Sorry, I really should noticed and reported this much before ... > Damnit, you're right. Don't know what actually happened. Sorry Rui, can you help me out? Thanks Michael From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 18:48:45 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3E9EA106564A for ; Tue, 30 Jun 2009 18:48:45 +0000 (UTC) (envelope-from rpaulo@gmail.com) Received: from mail-ew0-f213.google.com (mail-ew0-f213.google.com [209.85.219.213]) by mx1.freebsd.org (Postfix) with ESMTP id B596B8FC24 for ; Tue, 30 Jun 2009 18:48:44 +0000 (UTC) (envelope-from rpaulo@gmail.com) Received: by ewy9 with SMTP id 9so426000ewy.43 for ; Tue, 30 Jun 2009 11:48:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:cc:message-id:from:to :in-reply-to:content-type:content-transfer-encoding:mime-version :subject:date:references:x-mailer; bh=8TWehKmIf2DjBxokv49jz3p1hVR4K7zu6kGMEYMM9zM=; b=hnmU0naJsJDS6D9LGJNAEp79MJgQzc14vJqJ1VJnMOe9BHNPRMfU+5jLcHVsVIb8XO d8MUvn6ueHLv4tu2feS8W+u6rslipzxOoJTscdYo3Uu1RF3wJfbBP6yEs+v/prIS8sQp Q6b38Id5CcFsC8gJzdZW29Yke1olf6a0kfIkE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:cc:message-id:from:to:in-reply-to:content-type :content-transfer-encoding:mime-version:subject:date:references :x-mailer; b=JVv8rHPkDHOCePWCQpavTraHN8cUBR9lIsGZrYi0fpIjLRGva6ASs8AfvJPXprL32W mH6ChC5eC8O/coS0GuC/SMsYzf1bM9/BGAy7L/xfcU2H/Mir4pl8Wr/NBVyNMTaX0pJI cUDphjXErDKerTUbSOo90bTtql3QRmwcnwPb8= Received: by 10.210.34.2 with SMTP id h2mr3911664ebh.23.1246387723847; Tue, 30 Jun 2009 11:48:43 -0700 (PDT) Received: from omega.lan (bl6-155-38.dsl.telepac.pt [82.155.155.38]) by mx.google.com with ESMTPS id 23sm235467eya.49.2009.06.30.11.48.42 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 30 Jun 2009 11:48:43 -0700 (PDT) Sender: Rui Paulo Message-Id: <569A23CD-0CDE-454D-BF8A-A37BA3BE1020@freebsd.org> From: Rui Paulo To: Michael Gmelin In-Reply-To: <4A4A5D5C.3000400@bindone.de> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v935.3) Date: Tue, 30 Jun 2009 19:48:41 +0100 References: <4A48DEB8.1040808@bindone.de> <83012DEA-D524-49CA-A8D2-6B03E69C4ED5@freebsd.org> <4A49E411.1060509@bindone.de> <3a142e750906301122j792fb80qeb07783cbf8ea1c2@mail.gmail.com> <4A4A5D5C.3000400@bindone.de> X-Mailer: Apple Mail (2.935.3) Cc: freebsd-acpi@freebsd.org, "Paul B. Mahol" Subject: Re: New patchset for acpi_wmi/acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 18:48:45 -0000 On 30 Jun 2009, at 19:45, Michael Gmelin wrote: > Paul B. Mahol wrote: >> On 6/30/09, Michael Gmelin wrote: >>> Rui Paulo wrote: >>>> On 29 Jun 2009, at 16:33, Michael Gmelin wrote: >>>> >>>>> Hello, >>>>> >>>>> please find attached more patches against CURRENT of today. These >>>>> patches include the patches I've sent on the 27th. >> >> Everything points they do not. >> >>>> Committed, thanks. >>>> >>>> -- >>>> Rui Paulo >>>> >>> cool thanks, this should be pretty stable and clean enough so I >>> don't >>> expect any changes besides adding supported hardware to the man >>> page in >>> the near future (keeping my fingers crossed :) >>> >> >> For some reason patches used for this commit do not have anywhere >> "verbose" >> sysctl in code, and cat /dev/hpcmi doesnt work for me using code >> from CURRENT. >> Better side of story is that acpica no longer complains about DTD. >> >> >> Sorry, I really should noticed and reported this much before ... >> > Damnit, you're right. Don't know what actually happened. > > Sorry Rui, can you help me out? Yes. Send me the correct patch. -- Rui Paulo From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 18:52:24 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 082141065674 for ; Tue, 30 Jun 2009 18:52:24 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id 929028FC22 for ; Tue, 30 Jun 2009 18:52:20 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 11843 invoked by uid 89); 30 Jun 2009 18:52:19 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 18:52:19 -0000 Message-ID: <4A4A5ED1.2060600@bindone.de> Date: Tue, 30 Jun 2009 20:52:01 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: "Paul B. Mahol" , Rui Paulo References: <4A48DEB8.1040808@bindone.de> <83012DEA-D524-49CA-A8D2-6B03E69C4ED5@freebsd.org> <4A49E411.1060509@bindone.de> <3a142e750906301122j792fb80qeb07783cbf8ea1c2@mail.gmail.com> <4A4A5D5C.3000400@bindone.de> In-Reply-To: <4A4A5D5C.3000400@bindone.de> Content-Type: multipart/mixed; boundary="------------050804040908060506020603" Cc: freebsd-acpi@freebsd.org Subject: Re: New patchset for acpi_wmi/acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 18:52:24 -0000 This is a multi-part message in MIME format. --------------050804040908060506020603 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit Michael Gmelin wrote: > Paul B. Mahol wrote: >> On 6/30/09, Michael Gmelin wrote: >>> Rui Paulo wrote: >>>> On 29 Jun 2009, at 16:33, Michael Gmelin wrote: >>>> >>>>> Hello, >>>>> >>>>> please find attached more patches against CURRENT of today. These >>>>> patches include the patches I've sent on the 27th. >> Everything points they do not. >> >>>> Committed, thanks. >>>> >>>> -- >>>> Rui Paulo >>>> >>> cool thanks, this should be pretty stable and clean enough so I don't >>> expect any changes besides adding supported hardware to the man page in >>> the near future (keeping my fingers crossed :) >>> >> For some reason patches used for this commit do not have anywhere "verbose" >> sysctl in code, and cat /dev/hpcmi doesnt work for me using code from CURRENT. >> Better side of story is that acpica no longer complains about DTD. >> >> >> Sorry, I really should noticed and reported this much before ... >> > Damnit, you're right. Don't know what actually happened. > > Sorry Rui, can you help me out? > > Thanks > Michael > > _______________________________________________ > freebsd-acpi@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@freebsd.org" Please find attached the sources the way the should look like. Again big sorry, seems like I've been very confused doing that. Tell me if I should try to make a new patchset against these files based on current. /&!$%"§! :( @Paulo: Maybe you can verify if these files compile ok and provide everything promised (background: My machine runs a very old current and I basically have to "port" that stuff into a current sourcetree to create patchsets.. seems like I missed a generation in there). Michael --------------050804040908060506020603 Content-Type: text/plain; name="acpi_hp.4" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="acpi_hp.4" .\" Copyright (c) 2009 Michael Gmelin .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" $FreeBSD$ .\" .Dd June 21, 2009 .Dt ACPI_HP 4 i386 .Os .Sh NAME .Nm acpi_hp .Nd "ACPI extras driver for HP laptops" .Sh SYNOPSIS To compile this driver into the kernel, place the following line in your kernel configuration file: .Bd -ragged -offset indent .Cd "device acpi_hp" .Ed .Pp Alternatively, to load the driver as a module at boot time, place the following line in .Xr loader.conf 5 : .Bd -literal -offset indent acpi_hp_load="YES" .Ed .Sh DESCRIPTION The .Nm driver provides support for ACPI-controlled features found on HP laptops that use a WMI enabled BIOS (e.g. HP Compaq 8510p and 6510p). .Pp The main purpose of this driver is to provide an interface, accessible via .Xr sysctl 8 , .Xr devd 8 and .Xr devfs 8 , through which applications can determine and change the status of various laptop components and BIOS settings. .Pp .Ss Xr devd 8 Ss Events Devd events received by .Xr devd 8 provide the following information: .Pp .Bl -tag -width "subsystem" -offset indent -compact .It system .Qq Li ACPI .It subsystem .Qq Li HP .It type The source of the event in the ACPI namespace. The value depends on the model. .It notify Event code (see below). .El .Pp Event codes: .Pp .Bl -tag -width "0xc0" -offset indent -compact .It Li 0xc0 WLAN on air status changed to 0 (not on air) .It Li 0xc1 WLAN on air status changed to 1 (on air) .It Li 0xd0 Bluetooth on air status changed to 0 (not on air) .It Li 0xd1 Bluetooth on air status changed to 1 (on air) .It Li 0xe0 WWAN on air status changed to 0 (not on air) .It Li 0xe1 WWAN on air status changed to 1 (on air) .El .Ss Xr devfs 8 Ss Device You can read /dev/hpcmi to see your current BIOS settings. The detail level can be adjusted by setting the sysctl .Va cmi_detail as described below. .Sh SYSCTL VARIABLES The following sysctls are currently implemented: .Ss WLAN: .Bl -tag -width indent .It Va dev.acpi_hp.0.wlan_enabled Toggle WLAN chip activity. .It Va dev.acpi_hp.0.wlan_radio (read-only) WLAN radio status (controlled by hardware switch) .It Va dev.acpi_hp.0.wlan_on_air (read-only) WLAN on air (chip enabled, hardware switch enabled + enabled in BIOS) .It Va dev.acpi_hp.0.wlan_enabled_if_radio_on If set to 1, the WLAN chip will be enabled if the radio is turned on .It Va dev.acpi_hp.0.wlan_disable_if_radio_off If set to 1, the WLAN chip will be disabled if the radio is turned off .El .Ss Bluetooth: .Bl -tag -width indent .It Va dev.acpi_hp.0.bt_enabled Toggle Bluetooth chip activity. .It Va dev.acpi_hp.0.bt_radio (read-only) Bluetooth radio status (controlled by hardware switch) .It Va dev.acpi_hp.0.bt_on_air (read-only) Bluetooth on air (chip enabled, hardware switch enabled + enabled in BIOS) .It Va dev.acpi_hp.0.bt_enabled_if_radio_on If set to 1, the Bluetooth chip will be enabled if the radio is turned on .It Va dev.acpi_hp.0.bt_disable_if_radio_off If set to 1, the Bluetooth chip will be disabled if the radio is turned off .El .Ss WWAN: .Bl -tag -width indent .It Va dev.acpi_hp.0.wwan_enabled Toggle WWAN chip activity. .It Va dev.acpi_hp.0.wwan_radio (read-only) WWAN radio status (controlled by hardware switch) .It Va dev.acpi_hp.0.wwan_on_air (read-only) WWAN on air (chip enabled, hardware switch enabled + enabled in BIOS) .It Va dev.acpi_hp.0.wwan_enabled_if_radio_on If set to 1, the WWAN chip will be enabled if the radio is turned on .It Va dev.acpi_hp.0.wwan_disable_if_radio_off If set to 1, the WWAN chip will be disabled if the radio is turned off .El .Ss Misc: .Bl -tag -width indent .It Va dev.acpi_hp.0.als_enabled Toggle ambient light sensor (ALS) .It Va dev.acpi_hp.0.display (read-only) Display status (bitmask) .It Va dev.acpi_hp.0.hdd_temperature (read-only) HDD temperature .It Va dev.acpi_hp.0.is_docked (read-only) Docking station status (1 if docked) .It Va dev.acpi_hp.0.cmi_detail Bitmask to control detail level in /dev/hpcmi output (values can be ORed). .Bl -tag -width "0x01" -offset indent -compact .It Li 0x01 Show path component of BIOS setting .It Li 0x02 Show a list of valid options for the BIOS setting .It Li 0x04 Show additional flags of BIOS setting (ReadOnly etc.) .It Li 0x08 Query highest BIOS entry instance. This is broken on many HP models and therefore disabled by default. .El .It Va dev.acpi_hp.0.verbose (read-only) Set verbosity level .El .Pp Defaults for these sysctls can be set in .Xr sysctl.conf 5 . .Sh HARDWARE The .Nm driver has been reported to support the following hardware: .Pp .Bl -bullet -compact .It HP Compaq 8510p .It HP Compaq nx7300 .El .Pp It should work on most HP laptops that feature a WMI enabled BIOS. .Sh FILES .Bl -tag -width ".Pa /dev/hpcmi" .It Pa /dev/hpcmi Interface to read BIOS settings .El .Sh EXAMPLES The following can be added to .Xr devd.conf 5 in order disable the LAN interface when WLAN on air and reenable if it's not: .Bd -literal -offset indent notify 0 { match "system" "ACPI"; match "subsystem" "HP"; match "notify" "0xc0"; action "ifconfig em0 up"; }; notify 0 { match "system" "ACPI"; match "subsystem" "HP"; match "notify" "0xc1"; action "ifconfig em0 down"; }; .Ed .Pp Enable the ambient light sensor: .Bd -literal -offset indent sysctl dev.acpi_hp.0.als_enabled=1 .Ed .Pp Enable Bluetooth: .Bd -literal -offset indent sysctl dev.acpi_hp.0.bt_enabled=1 .Ed .Pp Get BIOS settings: .Bd -literal -offset indent cat /dev/hpcmi Serial Port Disable Infrared Port Enable Parallel Port Disable Flash Media Reader Disable USB Ports including Express Card slot Enable 1394 Port Enable Cardbus Slot Disable Express Card Slot Disable (...) .Ed .Pp Set maximum detail level for /dev/hpcmi output: .Bd -literal -offset indent sysctl dev.acpi_hp.0.cmi_detail=7 .Ed .Pp .Sh SEE ALSO .Xr acpi 4 , .Xr acpi_wmi 4 , .Xr sysctl.conf 5 , .Xr devd 8 , .Xr devfs 8 , .Xr sysctl 8 .Sh HISTORY The .Nm device driver first appeared in .Fx CURRENT . .Sh AUTHORS .An -nosplit The .Nm driver was written by .An Michael Gmelin Aq freebsd@grem.de .Pp It has been inspired by hp-wmi driver, which implements a subset of these features (hotkeys) on Linux. .Pp .Bl -tag -width indent .It HP CMI whitepaper: http://h20331.www2.hp.com/Hpsub/downloads/cmi_whitepaper.pdf .It wmi-hp for Linux: http://www.kernel.org .It WMI and ACPI: http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx .El .Pp This manual page was written by .An Michael Gmelin Aq freebsd@grem.de .Sh BUGS This driver is experimental and has only been tested on CURRENT i386 on an HP Compaq 8510p which featured all supported wireless devices (WWAN/BT/WLAN). Expect undefined results when operating on different hardware. .Pp Loading the driver is slow. Reading from /dev/hpcmi is even slower. .Pp Additional features like HP specific sensor readings or writing BIOS settings are not supported. --------------050804040908060506020603 Content-Type: text/plain; name="acpi_hp.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="acpi_hp.c" /*- * Copyright (c) 2009 Michael Gmelin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include __FBSDID("$FreeBSD$"); /* * Driver for extra ACPI-controlled features found on HP laptops * that use a WMI enabled BIOS (e.g. HP Compaq 8510p and 6510p). * Allows to control and read status of integrated hardware and read * BIOS settings through CMI. * Inspired by the hp-wmi driver, which implements a subset of these * features (hotkeys) on Linux. * * HP CMI whitepaper: * http://h20331.www2.hp.com/Hpsub/downloads/cmi_whitepaper.pdf * wmi-hp for Linux: * http://www.kernel.org * WMI and ACPI: * http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx */ #include "opt_acpi.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "acpi_wmi_if.h" #define _COMPONENT ACPI_OEM ACPI_MODULE_NAME("HP") #define ACPI_HP_WMI_EVENT_GUID "95F24279-4D7B-4334-9387-ACCDC67EF61C" #define ACPI_HP_WMI_BIOS_GUID "5FB7F034-2C63-45E9-BE91-3D44E2C707E4" #define ACPI_HP_WMI_CMI_GUID "2D114B49-2DFB-4130-B8FE-4A3C09E75133" #define ACPI_HP_WMI_DISPLAY_COMMAND 0x1 #define ACPI_HP_WMI_HDDTEMP_COMMAND 0x2 #define ACPI_HP_WMI_ALS_COMMAND 0x3 #define ACPI_HP_WMI_DOCK_COMMAND 0x4 #define ACPI_HP_WMI_WIRELESS_COMMAND 0x5 #define ACPI_HP_METHOD_WLAN_ENABLED 1 #define ACPI_HP_METHOD_WLAN_RADIO 2 #define ACPI_HP_METHOD_WLAN_ON_AIR 3 #define ACPI_HP_METHOD_WLAN_ENABLE_IF_RADIO_ON 4 #define ACPI_HP_METHOD_WLAN_DISABLE_IF_RADIO_OFF 5 #define ACPI_HP_METHOD_BLUETOOTH_ENABLED 6 #define ACPI_HP_METHOD_BLUETOOTH_RADIO 7 #define ACPI_HP_METHOD_BLUETOOTH_ON_AIR 8 #define ACPI_HP_METHOD_BLUETOOTH_ENABLE_IF_RADIO_ON 9 #define ACPI_HP_METHOD_BLUETOOTH_DISABLE_IF_RADIO_OFF 10 #define ACPI_HP_METHOD_WWAN_ENABLED 11 #define ACPI_HP_METHOD_WWAN_RADIO 12 #define ACPI_HP_METHOD_WWAN_ON_AIR 13 #define ACPI_HP_METHOD_WWAN_ENABLE_IF_RADIO_ON 14 #define ACPI_HP_METHOD_WWAN_DISABLE_IF_RADIO_OFF 15 #define ACPI_HP_METHOD_ALS 16 #define ACPI_HP_METHOD_DISPLAY 17 #define ACPI_HP_METHOD_HDDTEMP 18 #define ACPI_HP_METHOD_DOCK 19 #define ACPI_HP_METHOD_CMI_DETAIL 20 #define ACPI_HP_METHOD_VERBOSE 21 #define HP_MASK_WWAN_ON_AIR 0x1000000 #define HP_MASK_BLUETOOTH_ON_AIR 0x10000 #define HP_MASK_WLAN_ON_AIR 0x100 #define HP_MASK_WWAN_RADIO 0x8000000 #define HP_MASK_BLUETOOTH_RADIO 0x80000 #define HP_MASK_WLAN_RADIO 0x800 #define HP_MASK_WWAN_ENABLED 0x2000000 #define HP_MASK_BLUETOOTH_ENABLED 0x20000 #define HP_MASK_WLAN_ENABLED 0x200 #define ACPI_HP_CMI_DETAIL_PATHS 0x01 #define ACPI_HP_CMI_DETAIL_ENUMS 0x02 #define ACPI_HP_CMI_DETAIL_FLAGS 0x04 #define ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE 0x08 struct acpi_hp_inst_seq_pair { UINT32 sequence; /* sequence number as suggested by cmi bios */ UINT8 instance; /* object instance on guid */ }; struct acpi_hp_softc { device_t dev; ACPI_HANDLE handle; device_t wmi_dev; int has_notify; /* notification GUID found */ int has_cmi; /* CMI GUID found */ int cmi_detail; /* CMI detail level (set by sysctl) */ int verbose; /* add debug output */ int wlan_enable_if_radio_on; /* set by sysctl */ int wlan_disable_if_radio_off; /* set by sysctl */ int bluetooth_enable_if_radio_on; /* set by sysctl */ int bluetooth_disable_if_radio_off; /* set by sysctl */ int wwan_enable_if_radio_on; /* set by sysctl */ int wwan_disable_if_radio_off; /* set by sysctl */ int was_wlan_on_air; /* last known WLAN on air status */ int was_bluetooth_on_air; /* last known BT on air status */ int was_wwan_on_air; /* last known WWAN on air status */ struct sysctl_ctx_list *sysctl_ctx; struct sysctl_oid *sysctl_tree; struct cdev *hpcmi_dev_t; /* hpcmi device handle */ struct sbuf hpcmi_sbuf; /* /dev/hpcmi output sbuf */ pid_t hpcmi_open_pid; /* pid operating on /dev/hpcmi */ int hpcmi_bufptr; /* current pointer position in /dev/hpcmi output buffer */ int cmi_order_size; /* size of cmi_order list */ struct acpi_hp_inst_seq_pair cmi_order[128]; /* list of CMI instances ordered by BIOS suggested sequence */ }; static struct { char *name; int method; char *description; int access; } acpi_hp_sysctls[] = { { .name = "wlan_enabled", .method = ACPI_HP_METHOD_WLAN_ENABLED, .description = "Enable/Disable WLAN (WiFi)", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "wlan_radio", .method = ACPI_HP_METHOD_WLAN_RADIO, .description = "WLAN radio status", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "wlan_on_air", .method = ACPI_HP_METHOD_WLAN_ON_AIR, .description = "WLAN radio ready to use (enabled and radio)", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "wlan_enable_if_radio_on", .method = ACPI_HP_METHOD_WLAN_ENABLE_IF_RADIO_ON, .description = "Enable WLAN if radio is turned on", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "wlan_disable_if_radio_off", .method = ACPI_HP_METHOD_WLAN_DISABLE_IF_RADIO_OFF, .description = "Disable WLAN if radio is turned off", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "bt_enabled", .method = ACPI_HP_METHOD_BLUETOOTH_ENABLED, .description = "Enable/Disable Bluetooth", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "bt_radio", .method = ACPI_HP_METHOD_BLUETOOTH_RADIO, .description = "Bluetooth radio status", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "bt_on_air", .method = ACPI_HP_METHOD_BLUETOOTH_ON_AIR, .description = "Bluetooth radio ready to use" " (enabled and radio)", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "bt_enable_if_radio_on", .method = ACPI_HP_METHOD_BLUETOOTH_ENABLE_IF_RADIO_ON, .description = "Enable bluetooth if radio is turned on", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "bt_disable_if_radio_off", .method = ACPI_HP_METHOD_BLUETOOTH_DISABLE_IF_RADIO_OFF, .description = "Disable bluetooth if radio is turned off", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "wwan_enabled", .method = ACPI_HP_METHOD_WWAN_ENABLED, .description = "Enable/Disable WWAN (UMTS)", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "wwan_radio", .method = ACPI_HP_METHOD_WWAN_RADIO, .description = "WWAN radio status", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "wwan_on_air", .method = ACPI_HP_METHOD_WWAN_ON_AIR, .description = "WWAN radio ready to use (enabled and radio)", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "wwan_enable_if_radio_on", .method = ACPI_HP_METHOD_WWAN_ENABLE_IF_RADIO_ON, .description = "Enable WWAN if radio is turned on", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "wwan_disable_if_radio_off", .method = ACPI_HP_METHOD_WWAN_DISABLE_IF_RADIO_OFF, .description = "Disable WWAN if radio is turned off", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "als_enabled", .method = ACPI_HP_METHOD_ALS, .description = "Enable/Disable ALS (Ambient light sensor)", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "display", .method = ACPI_HP_METHOD_DISPLAY, .description = "Display status", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "hdd_temperature", .method = ACPI_HP_METHOD_HDDTEMP, .description = "HDD temperature", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "is_docked", .method = ACPI_HP_METHOD_DOCK, .description = "Docking station status", .access = CTLTYPE_INT | CTLFLAG_RD }, { .name = "cmi_detail", .method = ACPI_HP_METHOD_CMI_DETAIL, .description = "Details shown in CMI output " "(cat /dev/hpcmi)", .access = CTLTYPE_INT | CTLFLAG_RW }, { .name = "verbose", .method = ACPI_HP_METHOD_VERBOSE, .description = "Verbosity level", .access = CTLTYPE_INT | CTLFLAG_RW }, { NULL, 0, NULL, 0 } }; ACPI_SERIAL_DECL(hp, "HP ACPI-WMI Mapping"); static int acpi_hp_probe(device_t dev); static int acpi_hp_attach(device_t dev); static int acpi_hp_detach(device_t dev); static void acpi_hp_evaluate_auto_on_off(struct acpi_hp_softc* sc); static int acpi_hp_sysctl(SYSCTL_HANDLER_ARGS); static int acpi_hp_sysctl_set(struct acpi_hp_softc *sc, int method, int arg, int oldarg); static int acpi_hp_sysctl_get(struct acpi_hp_softc *sc, int method); static int acpi_hp_exec_wmi_command(device_t wmi_dev, int command, int is_write, int val); static void acpi_hp_notify(ACPI_HANDLE h, UINT32 notify, void *context); static int acpi_hp_get_cmi_block(device_t wmi_dev, const char* guid, UINT8 instance, char* outbuf, size_t outsize, UINT32* sequence, int detail); static void acpi_hp_hex_decode(char* buffer); static d_open_t acpi_hp_hpcmi_open; static d_close_t acpi_hp_hpcmi_close; static d_read_t acpi_hp_hpcmi_read; /* handler /dev/hpcmi device */ static struct cdevsw hpcmi_cdevsw = { .d_version = D_VERSION, .d_open = acpi_hp_hpcmi_open, .d_close = acpi_hp_hpcmi_close, .d_read = acpi_hp_hpcmi_read, .d_name = "hpcmi", }; static device_method_t acpi_hp_methods[] = { DEVMETHOD(device_probe, acpi_hp_probe), DEVMETHOD(device_attach, acpi_hp_attach), DEVMETHOD(device_detach, acpi_hp_detach), {0, 0} }; static driver_t acpi_hp_driver = { "acpi_hp", acpi_hp_methods, sizeof(struct acpi_hp_softc), }; static devclass_t acpi_hp_devclass; DRIVER_MODULE(acpi_hp, acpi, acpi_hp_driver, acpi_hp_devclass, 0, 0); MODULE_DEPEND(acpi_hp, acpi_wmi, 1, 1, 1); MODULE_DEPEND(acpi_hp, acpi, 1, 1, 1); static void acpi_hp_evaluate_auto_on_off(struct acpi_hp_softc *sc) { int wireless; int new_wlan_status; int new_bluetooth_status; int new_wwan_status; wireless = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); new_wlan_status = -1; new_bluetooth_status = -1; new_wwan_status = -1; if (sc->verbose) device_printf(sc->wmi_dev, "Wireless status is %x\n", wireless); if (sc->wlan_disable_if_radio_off && !(wireless & HP_MASK_WLAN_RADIO) && (wireless & HP_MASK_WLAN_ENABLED)) { acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, 0x100); new_wlan_status = 0; } else if (sc->wlan_enable_if_radio_on && (wireless & HP_MASK_WLAN_RADIO) && !(wireless & HP_MASK_WLAN_ENABLED)) { acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, 0x101); new_wlan_status = 1; } if (sc->bluetooth_disable_if_radio_off && !(wireless & HP_MASK_BLUETOOTH_RADIO) && (wireless & HP_MASK_BLUETOOTH_ENABLED)) { acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, 0x200); new_bluetooth_status = 0; } else if (sc->bluetooth_enable_if_radio_on && (wireless & HP_MASK_BLUETOOTH_RADIO) && !(wireless & HP_MASK_BLUETOOTH_ENABLED)) { acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, 0x202); new_bluetooth_status = 1; } if (sc->wwan_disable_if_radio_off && !(wireless & HP_MASK_WWAN_RADIO) && (wireless & HP_MASK_WWAN_ENABLED)) { acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, 0x400); new_wwan_status = 0; } else if (sc->wwan_enable_if_radio_on && (wireless & HP_MASK_WWAN_RADIO) && !(wireless & HP_MASK_WWAN_ENABLED)) { acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, 0x404); new_wwan_status = 1; } if (new_wlan_status == -1) { new_wlan_status = (wireless & HP_MASK_WLAN_ON_AIR); if ((new_wlan_status?1:0) != sc->was_wlan_on_air) { sc->was_wlan_on_air = sc->was_wlan_on_air?0:1; if (sc->verbose) device_printf(sc->wmi_dev, "WLAN on air changed to %i " "(new_wlan_status is %i)\n", sc->was_wlan_on_air, new_wlan_status); acpi_UserNotify("HP", sc->handle, 0xc0+sc->was_wlan_on_air); } } if (new_bluetooth_status == -1) { new_bluetooth_status = (wireless & HP_MASK_BLUETOOTH_ON_AIR); if ((new_bluetooth_status?1:0) != sc->was_bluetooth_on_air) { sc->was_bluetooth_on_air = sc->was_bluetooth_on_air? 0:1; if (sc->verbose) device_printf(sc->wmi_dev, "BLUETOOTH on air changed" " to %i (new_bluetooth_status is %i)\n", sc->was_bluetooth_on_air, new_bluetooth_status); acpi_UserNotify("HP", sc->handle, 0xd0+sc->was_bluetooth_on_air); } } if (new_wwan_status == -1) { new_wwan_status = (wireless & HP_MASK_WWAN_ON_AIR); if ((new_wwan_status?1:0) != sc->was_wwan_on_air) { sc->was_wwan_on_air = sc->was_wwan_on_air?0:1; if (sc->verbose) device_printf(sc->wmi_dev, "WWAN on air changed to %i" " (new_wwan_status is %i)\n", sc->was_wwan_on_air, new_wwan_status); acpi_UserNotify("HP", sc->handle, 0xe0+sc->was_wwan_on_air); } } } static int acpi_hp_probe(device_t dev) { if (acpi_disabled("hp") || device_get_unit(dev) != 0) return (ENXIO); device_set_desc(dev, "HP ACPI-WMI Mapping"); return (0); } static int acpi_hp_attach(device_t dev) { struct acpi_hp_softc *sc; struct acpi_softc *acpi_sc; devclass_t wmi_devclass; int arg; ACPI_FUNCTION_TRACE((char *)(uintptr_t) __func__); sc = device_get_softc(dev); sc->dev = dev; sc->handle = acpi_get_handle(dev); sc->has_notify = 0; sc->has_cmi = 0; sc->bluetooth_enable_if_radio_on = 0; sc->bluetooth_disable_if_radio_off = 0; sc->wlan_enable_if_radio_on = 0; sc->wlan_disable_if_radio_off = 0; sc->wlan_enable_if_radio_on = 0; sc->wlan_disable_if_radio_off = 0; sc->was_wlan_on_air = 0; sc->was_bluetooth_on_air = 0; sc->was_wwan_on_air = 0; sc->cmi_detail = 0; sc->cmi_order_size = -1; sc->verbose = 0; memset(sc->cmi_order, 0, sizeof(sc->cmi_order)); acpi_sc = acpi_device_get_parent_softc(dev); if (!(wmi_devclass = devclass_find ("acpi_wmi"))) { device_printf(dev, "Couldn't find acpi_wmi devclass\n"); return (EINVAL); } if (!(sc->wmi_dev = devclass_get_device(wmi_devclass, 0))) { device_printf(dev, "Couldn't find acpi_wmi device\n"); return (EINVAL); } if (!ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, ACPI_HP_WMI_BIOS_GUID)) { device_printf(dev, "WMI device does not provide the HP BIOS GUID\n"); return (EINVAL); } if (ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, ACPI_HP_WMI_EVENT_GUID)) { device_printf(dev, "HP event GUID detected, installing event handler\n"); if (ACPI_WMI_INSTALL_EVENT_HANDLER(sc->wmi_dev, ACPI_HP_WMI_EVENT_GUID, acpi_hp_notify, dev)) { device_printf(dev, "Could not install notification handler!\n"); } else { sc->has_notify = 1; } } if ((sc->has_cmi = ACPI_WMI_PROVIDES_GUID_STRING(sc->wmi_dev, ACPI_HP_WMI_CMI_GUID) )) { device_printf(dev, "HP CMI GUID detected\n"); } if (sc->has_cmi) { sc->hpcmi_dev_t = make_dev(&hpcmi_cdevsw, 0, UID_ROOT, GID_WHEEL, 0644, "hpcmi"); sc->hpcmi_dev_t->si_drv1 = sc; sc->hpcmi_open_pid = 0; sc->hpcmi_bufptr = -1; } ACPI_SERIAL_BEGIN(hp); sc->sysctl_ctx = device_get_sysctl_ctx(dev); sc->sysctl_tree = device_get_sysctl_tree(dev); for (int i = 0; acpi_hp_sysctls[i].name != NULL; ++i) { arg = 0; if ((!sc->has_notify && (acpi_hp_sysctls[i].method == ACPI_HP_METHOD_WLAN_ENABLE_IF_RADIO_ON || acpi_hp_sysctls[i].method == ACPI_HP_METHOD_WLAN_DISABLE_IF_RADIO_OFF || acpi_hp_sysctls[i].method == ACPI_HP_METHOD_BLUETOOTH_ENABLE_IF_RADIO_ON || acpi_hp_sysctls[i].method == ACPI_HP_METHOD_BLUETOOTH_DISABLE_IF_RADIO_OFF || acpi_hp_sysctls[i].method == ACPI_HP_METHOD_WWAN_ENABLE_IF_RADIO_ON || acpi_hp_sysctls[i].method == ACPI_HP_METHOD_WWAN_DISABLE_IF_RADIO_OFF)) || (arg = acpi_hp_sysctl_get(sc, acpi_hp_sysctls[i].method)) < 0) { continue; } if (acpi_hp_sysctls[i].method == ACPI_HP_METHOD_WLAN_ON_AIR) { sc->was_wlan_on_air = arg; } else if (acpi_hp_sysctls[i].method == ACPI_HP_METHOD_BLUETOOTH_ON_AIR) { sc->was_bluetooth_on_air = arg; } else if (acpi_hp_sysctls[i].method == ACPI_HP_METHOD_WWAN_ON_AIR) { sc->was_wwan_on_air = arg; } SYSCTL_ADD_PROC(sc->sysctl_ctx, SYSCTL_CHILDREN(sc->sysctl_tree), OID_AUTO, acpi_hp_sysctls[i].name, acpi_hp_sysctls[i].access, sc, i, acpi_hp_sysctl, "I", acpi_hp_sysctls[i].description); } ACPI_SERIAL_END(hp); return (0); } static int acpi_hp_detach(device_t dev) { int ret; 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); } 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); } static int acpi_hp_sysctl(SYSCTL_HANDLER_ARGS) { struct acpi_hp_softc *sc; int arg; int oldarg; int error = 0; int function; int method; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = (struct acpi_hp_softc *)oidp->oid_arg1; function = oidp->oid_arg2; method = acpi_hp_sysctls[function].method; ACPI_SERIAL_BEGIN(hp); arg = acpi_hp_sysctl_get(sc, method); oldarg = arg; error = sysctl_handle_int(oidp, &arg, 0, req); if (!error && req->newptr != NULL) { error = acpi_hp_sysctl_set(sc, method, arg, oldarg); } ACPI_SERIAL_END(hp); return (error); } static int acpi_hp_sysctl_get(struct acpi_hp_softc *sc, int method) { int val = 0; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_ASSERT(hp); switch (method) { case ACPI_HP_METHOD_WLAN_ENABLED: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_WLAN_ENABLED) != 0); break; case ACPI_HP_METHOD_WLAN_RADIO: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_WLAN_RADIO) != 0); break; case ACPI_HP_METHOD_WLAN_ON_AIR: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_WLAN_ON_AIR) != 0); break; case ACPI_HP_METHOD_WLAN_ENABLE_IF_RADIO_ON: val = sc->wlan_enable_if_radio_on; break; case ACPI_HP_METHOD_WLAN_DISABLE_IF_RADIO_OFF: val = sc->wlan_disable_if_radio_off; break; case ACPI_HP_METHOD_BLUETOOTH_ENABLED: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_BLUETOOTH_ENABLED) != 0); break; case ACPI_HP_METHOD_BLUETOOTH_RADIO: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_BLUETOOTH_RADIO) != 0); break; case ACPI_HP_METHOD_BLUETOOTH_ON_AIR: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_BLUETOOTH_ON_AIR) != 0); break; case ACPI_HP_METHOD_BLUETOOTH_ENABLE_IF_RADIO_ON: val = sc->bluetooth_enable_if_radio_on; break; case ACPI_HP_METHOD_BLUETOOTH_DISABLE_IF_RADIO_OFF: val = sc->bluetooth_disable_if_radio_off; break; case ACPI_HP_METHOD_WWAN_ENABLED: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_WWAN_ENABLED) != 0); break; case ACPI_HP_METHOD_WWAN_RADIO: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_WWAN_RADIO) != 0); break; case ACPI_HP_METHOD_WWAN_ON_AIR: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); val = ((val & HP_MASK_WWAN_ON_AIR) != 0); break; case ACPI_HP_METHOD_WWAN_ENABLE_IF_RADIO_ON: val = sc->wwan_enable_if_radio_on; break; case ACPI_HP_METHOD_WWAN_DISABLE_IF_RADIO_OFF: val = sc->wwan_disable_if_radio_off; break; case ACPI_HP_METHOD_ALS: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_ALS_COMMAND, 0, 0); break; case ACPI_HP_METHOD_DISPLAY: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_DISPLAY_COMMAND, 0, 0); break; case ACPI_HP_METHOD_HDDTEMP: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_HDDTEMP_COMMAND, 0, 0); break; case ACPI_HP_METHOD_DOCK: val = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_DOCK_COMMAND, 0, 0); break; case ACPI_HP_METHOD_CMI_DETAIL: val = sc->cmi_detail; break; case ACPI_HP_METHOD_VERBOSE: val = sc->verbose; break; } return (val); } static int acpi_hp_sysctl_set(struct acpi_hp_softc *sc, int method, int arg, int oldarg) { ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_ASSERT(hp); if (method != ACPI_HP_METHOD_CMI_DETAIL && method != ACPI_HP_METHOD_VERBOSE) arg = arg?1:0; if (arg != oldarg) { switch (method) { case ACPI_HP_METHOD_WLAN_ENABLED: return (acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, arg?0x101:0x100)); case ACPI_HP_METHOD_WLAN_ENABLE_IF_RADIO_ON: sc->wlan_enable_if_radio_on = arg; acpi_hp_evaluate_auto_on_off(sc); break; case ACPI_HP_METHOD_WLAN_DISABLE_IF_RADIO_OFF: sc->wlan_disable_if_radio_off = arg; acpi_hp_evaluate_auto_on_off(sc); break; case ACPI_HP_METHOD_BLUETOOTH_ENABLED: return (acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, arg?0x202:0x200)); case ACPI_HP_METHOD_BLUETOOTH_ENABLE_IF_RADIO_ON: sc->bluetooth_enable_if_radio_on = arg; acpi_hp_evaluate_auto_on_off(sc); break; case ACPI_HP_METHOD_BLUETOOTH_DISABLE_IF_RADIO_OFF: sc->bluetooth_disable_if_radio_off = arg?1:0; acpi_hp_evaluate_auto_on_off(sc); break; case ACPI_HP_METHOD_WWAN_ENABLED: return (acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 1, arg?0x404:0x400)); case ACPI_HP_METHOD_WWAN_ENABLE_IF_RADIO_ON: sc->wwan_enable_if_radio_on = arg?1:0; acpi_hp_evaluate_auto_on_off(sc); break; case ACPI_HP_METHOD_WWAN_DISABLE_IF_RADIO_OFF: sc->wwan_disable_if_radio_off = arg?1:0; acpi_hp_evaluate_auto_on_off(sc); break; case ACPI_HP_METHOD_ALS: return (acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_ALS_COMMAND, 1, arg?1:0)); case ACPI_HP_METHOD_CMI_DETAIL: sc->cmi_detail = arg; if ((arg & ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE) != (oldarg & ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE)) { sc->cmi_order_size = -1; } break; case ACPI_HP_METHOD_VERBOSE: sc->verbose = arg; break; } } return (0); } static __inline void acpi_hp_free_buffer(ACPI_BUFFER* buf) { if (buf && buf->Pointer) { AcpiOsFree(buf->Pointer); } } static void acpi_hp_notify(ACPI_HANDLE h, UINT32 notify, void *context) { device_t dev = context; ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, notify); struct acpi_hp_softc *sc = device_get_softc(dev); ACPI_BUFFER response = { ACPI_ALLOCATE_BUFFER, NULL }; ACPI_OBJECT *obj; ACPI_WMI_GET_EVENT_DATA(sc->wmi_dev, notify, &response); obj = (ACPI_OBJECT*) response.Pointer; if (obj && obj->Type == ACPI_TYPE_BUFFER && obj->Buffer.Length == 8) { if (*((UINT8 *) obj->Buffer.Pointer) == 0x5) { acpi_hp_evaluate_auto_on_off(sc); } } acpi_hp_free_buffer(&response); } static int acpi_hp_exec_wmi_command(device_t wmi_dev, int command, int is_write, int val) { UINT32 params[5] = { 0x55434553, is_write?2:1, command, is_write?4:0, val}; UINT32* result; ACPI_OBJECT *obj; ACPI_BUFFER in = { sizeof(params), ¶ms }; ACPI_BUFFER out = { ACPI_ALLOCATE_BUFFER, NULL }; int retval; if (ACPI_FAILURE(ACPI_WMI_EVALUATE_CALL(wmi_dev, ACPI_HP_WMI_BIOS_GUID, 0, 0x3, &in, &out))) { acpi_hp_free_buffer(&out); return (-EINVAL); } obj = out.Pointer; if (!obj || obj->Type != ACPI_TYPE_BUFFER) { acpi_hp_free_buffer(&out); return (-EINVAL); } result = (UINT32*) obj->Buffer.Pointer; retval = result[2]; if (result[1] > 0) { retval = result[1]; } acpi_hp_free_buffer(&out); return (retval); } static __inline char* acpi_hp_get_string_from_object(ACPI_OBJECT* obj, char* dst, size_t size) { int length; dst[0] = 0; if (obj->Type == ACPI_TYPE_STRING) { length = obj->String.Length+1; if (length > size) { length = size - 1; } strlcpy(dst, obj->String.Pointer, length); acpi_hp_hex_decode(dst); } return (dst); } /* * Read BIOS Setting block in instance "instance". * The block returned is ACPI_TYPE_PACKAGE which should contain the following * elements: * Index Meaning * 0 Setting Name [string] * 1 Value (comma separated, asterisk marks the current value) [string] * 2 Path within the bios hierarchy [string] * 3 IsReadOnly [int] * 4 DisplayInUI [int] * 5 RequiresPhysicalPresence [int] * 6 Sequence for ordering within the bios settings (absolute) [int] * 7 Length of prerequisites array [int] * 8..8+[7] PrerequisiteN [string] * 9+[7] Current value (in case of enum) [string] / Array length [int] * 10+[7] Enum length [int] / Array values * 11+[7]ff Enum value at index x [string] */ static int acpi_hp_get_cmi_block(device_t wmi_dev, const char* guid, UINT8 instance, char* outbuf, size_t outsize, UINT32* sequence, int detail) { ACPI_OBJECT *obj; ACPI_BUFFER out = { ACPI_ALLOCATE_BUFFER, NULL }; int i; int outlen; int size = 255; int has_enums = 0; int valuebase = 0; char string_buffer[size]; int enumbase; outlen = 0; outbuf[0] = 0; if (ACPI_FAILURE(ACPI_WMI_GET_BLOCK(wmi_dev, guid, instance, &out))) { acpi_hp_free_buffer(&out); return (-EINVAL); } obj = out.Pointer; if (!obj && obj->Type != ACPI_TYPE_PACKAGE) { acpi_hp_free_buffer(&out); return (-EINVAL); } if (obj->Package.Count >= 8 && obj->Package.Elements[7].Type == ACPI_TYPE_INTEGER) { valuebase = 8 + obj->Package.Elements[7].Integer.Value; } /* check if this matches our expectations based on limited knowledge */ if (valuebase > 7 && obj->Package.Count > valuebase + 1 && obj->Package.Elements[0].Type == ACPI_TYPE_STRING && obj->Package.Elements[1].Type == ACPI_TYPE_STRING && obj->Package.Elements[2].Type == ACPI_TYPE_STRING && obj->Package.Elements[3].Type == ACPI_TYPE_INTEGER && obj->Package.Elements[4].Type == ACPI_TYPE_INTEGER && obj->Package.Elements[5].Type == ACPI_TYPE_INTEGER && obj->Package.Elements[6].Type == ACPI_TYPE_INTEGER && obj->Package.Elements[valuebase].Type == ACPI_TYPE_STRING && obj->Package.Elements[valuebase+1].Type == ACPI_TYPE_INTEGER && obj->Package.Count > valuebase + obj->Package.Elements[valuebase+1].Integer.Value ) { enumbase = valuebase + 1; if (detail & ACPI_HP_CMI_DETAIL_PATHS) { strlcat(outbuf, acpi_hp_get_string_from_object( &obj->Package.Elements[2], string_buffer, size), outsize); outlen += 48; while (strlen(outbuf) < outlen) strlcat(outbuf, " ", outsize); } strlcat(outbuf, acpi_hp_get_string_from_object( &obj->Package.Elements[0], string_buffer, size), outsize); outlen += 43; while (strlen(outbuf) < outlen) strlcat(outbuf, " ", outsize); strlcat(outbuf, acpi_hp_get_string_from_object( &obj->Package.Elements[valuebase], string_buffer, size), outsize); outlen += 21; while (strlen(outbuf) < outlen) strlcat(outbuf, " ", outsize); for (i = 0; i < strlen(outbuf); ++i) if (outbuf[i] == '\\') outbuf[i] = '/'; if (detail & ACPI_HP_CMI_DETAIL_ENUMS) { for (i = enumbase + 1; i < enumbase + 1 + obj->Package.Elements[enumbase].Integer.Value; ++i) { acpi_hp_get_string_from_object( &obj->Package.Elements[i], string_buffer, size); if (strlen(string_buffer) > 1 || (strlen(string_buffer) == 1 && string_buffer[0] != ' ')) { if (has_enums) strlcat(outbuf, "/", outsize); else strlcat(outbuf, " (", outsize); strlcat(outbuf, string_buffer, outsize); has_enums = 1; } } } if (has_enums) strlcat(outbuf, ")", outsize); if (detail & ACPI_HP_CMI_DETAIL_FLAGS) { strlcat(outbuf, obj->Package.Elements[3].Integer.Value? " [ReadOnly]":"", outsize); strlcat(outbuf, obj->Package.Elements[4].Integer.Value? "":" [NOUI]", outsize); strlcat(outbuf, obj->Package.Elements[5].Integer.Value? " [RPP]":"", outsize); } *sequence = (UINT32) obj->Package.Elements[6].Integer.Value; } acpi_hp_free_buffer(&out); return (0); } /* * Convert given two digit hex string (hexin) to an UINT8 referenced * by byteout. * Return != 0 if the was a problem (invalid input) */ static __inline int acpi_hp_hex_to_int(const UINT8 *hexin, UINT8 *byteout) { unsigned int hi; unsigned int lo; hi = hexin[0]; lo = hexin[1]; if ('0' <= hi && hi <= '9') hi -= '0'; else if ('A' <= hi && hi <= 'F') hi -= ('A' - 10); else if ('a' <= hi && hi <= 'f') hi -= ('a' - 10); else return (1); if ('0' <= lo && lo <= '9') lo -= '0'; else if ('A' <= lo && lo <= 'F') lo -= ('A' - 10); else if ('a' <= lo && lo <= 'f') lo -= ('a' - 10); else return (1); *byteout = (hi << 4) + lo; return (0); } static void acpi_hp_hex_decode(char* buffer) { int i; int length = strlen(buffer); UINT8 *uin; UINT8 uout; if (((int)length/2)*2 == length || length < 10) return; for (i = 0; i= '0' && buffer[i] <= '9') || (buffer[i] >= 'A' && buffer[i] <= 'F'))) return; } for (i = 0; isi_drv1 == NULL) return (EBADF); sc = dev->si_drv1; ACPI_SERIAL_BEGIN(hp); if (sc->hpcmi_open_pid != 0) { ret = EBUSY; } else { if (sbuf_new(&sc->hpcmi_sbuf, NULL, 4096, SBUF_AUTOEXTEND) == NULL) { ret = ENXIO; } else { sc->hpcmi_open_pid = td->td_proc->p_pid; sc->hpcmi_bufptr = 0; ret = 0; } } ACPI_SERIAL_END(hp); return (ret); } /* * close hpcmi device */ static int acpi_hp_hpcmi_close(struct cdev* dev, int flags, int mode, struct thread *td) { struct acpi_hp_softc *sc; int ret; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); sc = dev->si_drv1; ACPI_SERIAL_BEGIN(hp); if (sc->hpcmi_open_pid == 0) { ret = EBADF; } else { if (sc->hpcmi_bufptr != -1) { sbuf_delete(&sc->hpcmi_sbuf); sc->hpcmi_bufptr = -1; } sc->hpcmi_open_pid = 0; ret = 0; } ACPI_SERIAL_END(hp); return (ret); } /* * Read from hpcmi bios information */ static int acpi_hp_hpcmi_read(struct cdev *dev, struct uio *buf, int flag) { struct acpi_hp_softc *sc; int pos, i, l, ret; UINT8 instance; UINT8 maxInstance; UINT32 sequence; int linesize = 1025; char line[linesize]; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); sc = dev->si_drv1; ACPI_SERIAL_BEGIN(hp); if (sc->hpcmi_open_pid != buf->uio_td->td_proc->p_pid || sc->hpcmi_bufptr == -1) { ret = EBADF; } else { if (!sbuf_done(&sc->hpcmi_sbuf)) { if (sc->cmi_order_size < 0) { maxInstance = sc->has_cmi; if (!(sc->cmi_detail & ACPI_HP_CMI_DETAIL_SHOW_MAX_INSTANCE) && maxInstance > 0) { maxInstance--; } sc->cmi_order_size = 0; for (instance = 0; instance < maxInstance; ++instance) { if (acpi_hp_get_cmi_block(sc->wmi_dev, ACPI_HP_WMI_CMI_GUID, instance, line, linesize, &sequence, sc->cmi_detail)) { instance = maxInstance; } else { pos = sc->cmi_order_size; for (i=0; icmi_order_size && i<127; ++i) { if (sc->cmi_order[i].sequence > sequence) { pos = i; break; } } for (i=sc->cmi_order_size; i>pos; --i) { sc->cmi_order[i].sequence = sc->cmi_order[i-1].sequence; sc->cmi_order[i].instance = sc->cmi_order[i-1].instance; } sc->cmi_order[pos].sequence = sequence; sc->cmi_order[pos].instance = instance; sc->cmi_order_size++; } } } for (i=0; icmi_order_size; ++i) { if (!acpi_hp_get_cmi_block(sc->wmi_dev, ACPI_HP_WMI_CMI_GUID, sc->cmi_order[i].instance, line, linesize, &sequence, sc->cmi_detail)) { sbuf_printf(&sc->hpcmi_sbuf, "%s\n", line); } } sbuf_finish(&sc->hpcmi_sbuf); } if (sbuf_len(&sc->hpcmi_sbuf) <= 0) { sbuf_delete(&sc->hpcmi_sbuf); sc->hpcmi_bufptr = -1; sc->hpcmi_open_pid = 0; ret = ENOMEM; } else { l = min(buf->uio_resid, sbuf_len(&sc->hpcmi_sbuf) - sc->hpcmi_bufptr); ret = (l > 0)?uiomove(sbuf_data(&sc->hpcmi_sbuf) + sc->hpcmi_bufptr, l, buf) : 0; sc->hpcmi_bufptr += l; } } ACPI_SERIAL_END(hp); return (ret); } --------------050804040908060506020603 Content-Type: text/plain; name="acpi_wmi.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="acpi_wmi.c" /*- * Copyright (c) 2009 Michael Gmelin * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #include __FBSDID("$FreeBSD$"); /* * Driver for acpi-wmi mapping, provides an interface for vendor specific * implementations (e.g. HP and Acer laptops). * Inspired by the ACPI-WMI mapping driver (c) 2008-2008 Carlos Corbacho which * implements this functionality for Linux. * * WMI and ACPI: http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx * acpi-wmi for Linux: http://www.kernel.org */ #include "opt_acpi.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "acpi_wmi_if.h" MALLOC_DEFINE(M_ACPIWMI, "acpiwmi", "ACPI-WMI mapping"); #define _COMPONENT ACPI_OEM ACPI_MODULE_NAME("ACPI_WMI"); #define ACPI_WMI_REGFLAG_EXPENSIVE 0x1 /* GUID flag: Expensive operation */ #define ACPI_WMI_REGFLAG_METHOD 0x2 /* GUID flag: Method call */ #define ACPI_WMI_REGFLAG_STRING 0x4 /* GUID flag: String */ #define ACPI_WMI_REGFLAG_EVENT 0x8 /* GUID flag: Event */ /* * acpi_wmi driver private structure */ struct acpi_wmi_softc { device_t wmi_dev; /* wmi device id */ ACPI_HANDLE wmi_handle; /* handle of the PNP0C14 node */ device_t ec_dev; /* acpi_ec0 */ struct cdev *wmistat_dev_t; /* wmistat device handle */ struct sbuf wmistat_sbuf; /* sbuf for /dev/wmistat output */ pid_t wmistat_open_pid; /* pid operating on /dev/wmistat */ int wmistat_bufptr; /* /dev/wmistat ptr to buffer position */ }; /* * Struct that holds information about * about a single GUID entry in _WDG */ struct guid_info { char guid[16]; /* 16 byte non human readable GUID */ char oid[2]; /* object id or event notify id (first byte) */ UINT8 max_instance; /* highest instance known for this GUID */ UINT8 flags; /* ACPI_WMI_REGFLAG_%s */ }; /* WExx event generation state (on/off) */ enum event_generation_state { EVENT_GENERATION_ON = 1, EVENT_GENERATION_OFF = 0 }; /* * Information about one entry in _WDG. * List of those is used to lookup information by GUID. */ struct wmi_info { TAILQ_ENTRY(wmi_info) wmi_list; struct guid_info ginfo; /* information on guid */ ACPI_NOTIFY_HANDLER event_handler;/* client provided event handler */ void *event_handler_user_data; /* ev handler cookie */ }; TAILQ_HEAD(wmi_info_list_head, wmi_info) wmi_info_list = TAILQ_HEAD_INITIALIZER(wmi_info_list); ACPI_SERIAL_DECL(acpi_wmi, "ACPI-WMI Mapping"); /* public interface - declaration */ /* standard device interface*/ static int acpi_wmi_probe(device_t dev); static int acpi_wmi_attach(device_t dev); static int acpi_wmi_detach(device_t dev); /* see acpi_wmi_if.m */ static int acpi_wmi_provides_guid_string_method(device_t dev, const char *guid_string); static ACPI_STATUS acpi_wmi_evaluate_call_method(device_t dev, const char *guid_string, UINT8 instance, UINT32 method_id, const ACPI_BUFFER *in, ACPI_BUFFER *out); static ACPI_STATUS acpi_wmi_install_event_handler_method(device_t dev, const char *guid_string, ACPI_NOTIFY_HANDLER handler, void *data); static ACPI_STATUS acpi_wmi_remove_event_handler_method(device_t dev, const char *guid_string); static ACPI_STATUS acpi_wmi_get_event_data_method(device_t dev, UINT32 event_id, ACPI_BUFFER *out); static ACPI_STATUS acpi_wmi_get_block_method(device_t dev, const char *guid_string, UINT8 instance, ACPI_BUFFER *out); static ACPI_STATUS acpi_wmi_set_block_method(device_t dev, const char *guid_string, UINT8 instance, const ACPI_BUFFER *in); /* private interface - declaration */ /* callbacks */ static void acpi_wmi_notify_handler(ACPI_HANDLE h, UINT32 notify, void *context); static ACPI_STATUS acpi_wmi_ec_handler(UINT32 function, ACPI_PHYSICAL_ADDRESS address, UINT32 width, ACPI_INTEGER *value, void *context, void *region_context); /* helpers */ static ACPI_STATUS acpi_wmi_read_wdg_blocks(ACPI_HANDLE h); static ACPI_STATUS acpi_wmi_toggle_we_event_generation(device_t dev, struct wmi_info *winfo, enum event_generation_state state); static int acpi_wmi_guid_string_to_guid(const UINT8 *guid_string, UINT8 *guid); static struct wmi_info* acpi_wmi_lookup_wmi_info_by_guid_string( const char *guid_string); static d_open_t acpi_wmi_wmistat_open; static d_close_t acpi_wmi_wmistat_close; static d_read_t acpi_wmi_wmistat_read; /* handler /dev/wmistat device */ static struct cdevsw wmistat_cdevsw = { .d_version = D_VERSION, .d_open = acpi_wmi_wmistat_open, .d_close = acpi_wmi_wmistat_close, .d_read = acpi_wmi_wmistat_read, .d_name = "wmistat", }; static device_method_t acpi_wmi_methods[] = { /* Device interface */ DEVMETHOD(device_probe, acpi_wmi_probe), DEVMETHOD(device_attach, acpi_wmi_attach), DEVMETHOD(device_detach, acpi_wmi_detach), /* acpi_wmi interface */ DEVMETHOD(acpi_wmi_provides_guid_string, acpi_wmi_provides_guid_string_method), DEVMETHOD(acpi_wmi_evaluate_call, acpi_wmi_evaluate_call_method), DEVMETHOD(acpi_wmi_install_event_handler, acpi_wmi_install_event_handler_method), DEVMETHOD(acpi_wmi_remove_event_handler, acpi_wmi_remove_event_handler_method), DEVMETHOD(acpi_wmi_get_event_data, acpi_wmi_get_event_data_method), DEVMETHOD(acpi_wmi_get_block, acpi_wmi_get_block_method), DEVMETHOD(acpi_wmi_set_block, acpi_wmi_set_block_method), {0, 0} }; static driver_t acpi_wmi_driver = { "acpi_wmi", acpi_wmi_methods, sizeof(struct acpi_wmi_softc), }; static devclass_t acpi_wmi_devclass; DRIVER_MODULE(acpi_wmi, acpi, acpi_wmi_driver, acpi_wmi_devclass, 0, 0); MODULE_VERSION(acpi_wmi, 1); MODULE_DEPEND(acpi_wmi, acpi, 1, 1, 1); static char *wmi_ids[] = {"PNP0C14", "PNP0c14", NULL}; /* * Probe for the PNP0C14 ACPI node */ static int acpi_wmi_probe(device_t dev) { if (acpi_disabled("wmi") || ACPI_ID_PROBE(device_get_parent(dev), dev, wmi_ids) == NULL) return (ENXIO); device_set_desc(dev, "ACPI-WMI mapping"); return (0); } /* * Attach the device by: * - Looking for the first ACPI EC device * - Install the notify handler * - Install the EC address space handler * - Look for the _WDG node and read GUID information blocks */ static int acpi_wmi_attach(device_t dev) { struct acpi_wmi_softc *sc; int ret; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); ret = ENXIO; ACPI_SERIAL_BEGIN(acpi_wmi); sc->wmi_dev = dev; sc->wmi_handle = acpi_get_handle(dev); TAILQ_INIT(&wmi_info_list); /* XXX Only works with one EC, but nearly all systems only have one. */ if ((sc->ec_dev = devclass_get_device(devclass_find("acpi_ec"), 0)) == NULL) device_printf(dev, "cannot find EC device\n"); else if (ACPI_FAILURE((status = AcpiInstallNotifyHandler(sc->wmi_handle, ACPI_DEVICE_NOTIFY, acpi_wmi_notify_handler, sc)))) device_printf(sc->wmi_dev, "couldn't install notify handler - %s\n", AcpiFormatException(status)); else if (ACPI_FAILURE((status = AcpiInstallAddressSpaceHandler( sc->wmi_handle, ACPI_ADR_SPACE_EC, acpi_wmi_ec_handler, NULL, sc)))) { device_printf(sc->wmi_dev, "couldn't install EC handler - %s\n", AcpiFormatException(status)); AcpiRemoveNotifyHandler(sc->wmi_handle, ACPI_DEVICE_NOTIFY, acpi_wmi_notify_handler); } else if (ACPI_FAILURE((status = acpi_wmi_read_wdg_blocks( sc->wmi_handle)))) { device_printf(sc->wmi_dev, "couldn't parse _WDG - %s\n", AcpiFormatException(status)); AcpiRemoveNotifyHandler(sc->wmi_handle, ACPI_DEVICE_NOTIFY, acpi_wmi_notify_handler); AcpiRemoveAddressSpaceHandler(sc->wmi_handle, ACPI_ADR_SPACE_EC, acpi_wmi_ec_handler); } else { sc->wmistat_dev_t = make_dev(&wmistat_cdevsw, 0, UID_ROOT, GID_WHEEL, 0644, "wmistat"); sc->wmistat_dev_t->si_drv1 = sc; sc->wmistat_open_pid = 0; sc->wmistat_bufptr = -1; ret = 0; } ACPI_SERIAL_END(acpi_wmi); return (ret); } /* * Detach the driver by: * - Removing notification handler * - Removing address space handler * - Turning off event generation for all WExx event activated by * child drivers */ static int acpi_wmi_detach(device_t dev) { struct wmi_info *winfo, *tmp; struct acpi_wmi_softc *sc; int ret; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); ACPI_SERIAL_BEGIN(acpi_wmi); if (sc->wmistat_open_pid != 0) { ret = EBUSY; } else { AcpiRemoveNotifyHandler(sc->wmi_handle, ACPI_DEVICE_NOTIFY, acpi_wmi_notify_handler); AcpiRemoveAddressSpaceHandler(sc->wmi_handle, ACPI_ADR_SPACE_EC, acpi_wmi_ec_handler); TAILQ_FOREACH_SAFE(winfo, &wmi_info_list, wmi_list, tmp) { if (winfo->event_handler) acpi_wmi_toggle_we_event_generation(dev, winfo, EVENT_GENERATION_OFF); TAILQ_REMOVE(&wmi_info_list, winfo, wmi_list); free(winfo, M_ACPIWMI); } if (sc->wmistat_bufptr != -1) { sbuf_delete(&sc->wmistat_sbuf); sc->wmistat_bufptr = -1; } sc->wmistat_open_pid = 0; destroy_dev(sc->wmistat_dev_t); ret = 0; } ACPI_SERIAL_END(acpi_wmi); return (ret); } /* * Check if the given GUID string (human readable format * AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP) * exists within _WDG */ static int acpi_wmi_provides_guid_string_method(device_t dev, const char *guid_string) { struct wmi_info *winfo; int ret; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_BEGIN(acpi_wmi); winfo = acpi_wmi_lookup_wmi_info_by_guid_string(guid_string); ret = (winfo == NULL)?0:winfo->ginfo.max_instance+1; ACPI_SERIAL_END(acpi_wmi); return (ret); } /* * Call a method "method_id" on the given GUID block * write result into user provided output buffer */ static ACPI_STATUS acpi_wmi_evaluate_call_method(device_t dev, const char *guid_string, UINT8 instance, UINT32 method_id, const ACPI_BUFFER *in, ACPI_BUFFER *out) { ACPI_OBJECT params[3]; ACPI_OBJECT_LIST input; char method[5] = "WMxx"; struct wmi_info *winfo; struct acpi_wmi_softc *sc; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); ACPI_SERIAL_BEGIN(acpi_wmi); if ((winfo = acpi_wmi_lookup_wmi_info_by_guid_string(guid_string)) == NULL) status = AE_NOT_FOUND; else if (!(winfo->ginfo.flags & ACPI_WMI_REGFLAG_METHOD)) status = AE_BAD_DATA; else if (instance > winfo->ginfo.max_instance) status = AE_BAD_PARAMETER; else { params[0].Type = ACPI_TYPE_INTEGER; params[0].Integer.Value = instance; params[1].Type = ACPI_TYPE_INTEGER; params[1].Integer.Value = method_id; input.Pointer = params; input.Count = 2; if (in) { params[2].Type = (winfo->ginfo.flags & ACPI_WMI_REGFLAG_STRING) ?ACPI_TYPE_STRING:ACPI_TYPE_BUFFER; params[2].Buffer.Length = in->Length; params[2].Buffer.Pointer = in->Pointer; input.Count = 3; } method[2] = winfo->ginfo.oid[0]; method[3] = winfo->ginfo.oid[1]; status = AcpiEvaluateObject(sc->wmi_handle, method, &input, out); } ACPI_SERIAL_END(acpi_wmi); return (status); } /* * Install a user provided event_handler on the given GUID * provided *data will be passed on callback * If there is already an existing event handler registered it will be silently * discarded */ static ACPI_STATUS acpi_wmi_install_event_handler_method(device_t dev, const char *guid_string, ACPI_NOTIFY_HANDLER event_handler, void *data) { struct wmi_info *winfo; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); status = AE_OK; ACPI_SERIAL_BEGIN(acpi_wmi); if (guid_string == NULL || event_handler == NULL) status = AE_BAD_PARAMETER; else if ((winfo = acpi_wmi_lookup_wmi_info_by_guid_string(guid_string)) == NULL) status = AE_NOT_EXIST; else if (winfo->event_handler != NULL || (status = acpi_wmi_toggle_we_event_generation(dev, winfo, EVENT_GENERATION_ON)) == AE_OK) { winfo->event_handler = event_handler; winfo->event_handler_user_data = data; } ACPI_SERIAL_END(acpi_wmi); return (status); } /* * Remove a previously installed event handler from the given GUID * If there was none installed, this call is silently discarded and * reported as AE_OK */ static ACPI_STATUS acpi_wmi_remove_event_handler_method(device_t dev, const char *guid_string) { struct wmi_info *winfo; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); status = AE_OK; ACPI_SERIAL_BEGIN(acpi_wmi); if (guid_string && (winfo = acpi_wmi_lookup_wmi_info_by_guid_string(guid_string)) != NULL && winfo->event_handler) { status = acpi_wmi_toggle_we_event_generation(dev, winfo, EVENT_GENERATION_OFF); winfo->event_handler = NULL; winfo->event_handler_user_data = NULL; } ACPI_SERIAL_END(acpi_wmi); return (status); } /* * Get details on an event received through a callback registered * through ACPI_WMI_REMOVE_EVENT_HANDLER into a user provided output buffer. * (event_id equals "notify" passed in the callback) */ static ACPI_STATUS acpi_wmi_get_event_data_method(device_t dev, UINT32 event_id, ACPI_BUFFER *out) { ACPI_OBJECT_LIST input; ACPI_OBJECT params[1]; struct acpi_wmi_softc *sc; struct wmi_info *winfo; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); status = AE_NOT_FOUND; ACPI_SERIAL_BEGIN(acpi_wmi); params[0].Type = ACPI_TYPE_INTEGER; params[0].Integer.Value = event_id; input.Pointer = params; input.Count = 1; TAILQ_FOREACH(winfo, &wmi_info_list, wmi_list) { if ((winfo->ginfo.flags & ACPI_WMI_REGFLAG_EVENT) && ((UINT8) winfo->ginfo.oid[0] == event_id)) { status = AcpiEvaluateObject(sc->wmi_handle, "_WED", &input, out); break; } } ACPI_SERIAL_END(acpi_wmi); return (status); } /* * Read a block of data from the given GUID (using WQxx (query)) * Will be returned in a user provided buffer (out). * If the method is marked as expensive (ACPI_WMI_REGFLAG_EXPENSIVE) * we will first call the WCxx control method to lock the node to * lock the node for data collection and release it afterwards. * (Failed WCxx calls are ignored to "support" broken implementations) */ static ACPI_STATUS acpi_wmi_get_block_method(device_t dev, const char *guid_string, UINT8 instance, ACPI_BUFFER *out) { char wc_method[5] = "WCxx"; char wq_method[5] = "WQxx"; ACPI_OBJECT_LIST wc_input; ACPI_OBJECT_LIST wq_input; ACPI_OBJECT wc_params[1]; ACPI_OBJECT wq_params[1]; ACPI_HANDLE wc_handle; struct acpi_wmi_softc *sc; struct wmi_info *winfo; ACPI_STATUS status; ACPI_STATUS wc_status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); wc_status = AE_ERROR; ACPI_SERIAL_BEGIN(acpi_wmi); if (guid_string == NULL || out == NULL) status = AE_BAD_PARAMETER; else if ((winfo = acpi_wmi_lookup_wmi_info_by_guid_string(guid_string)) == NULL) status = AE_ERROR; else if (instance > winfo->ginfo.max_instance) status = AE_BAD_PARAMETER; else if ((winfo->ginfo.flags & ACPI_WMI_REGFLAG_EVENT) || (winfo->ginfo.flags & ACPI_WMI_REGFLAG_METHOD)) status = AE_ERROR; else { wq_params[0].Type = ACPI_TYPE_INTEGER; wq_params[0].Integer.Value = instance; wq_input.Pointer = wq_params; wq_input.Count = 1; if (winfo->ginfo.flags & ACPI_WMI_REGFLAG_EXPENSIVE) { wc_params[0].Type = ACPI_TYPE_INTEGER; wc_params[0].Integer.Value = 1; wc_input.Pointer = wc_params; wc_input.Count = 1; wc_method[2] = winfo->ginfo.oid[0]; wc_method[3] = winfo->ginfo.oid[1]; wc_status = AcpiGetHandle(sc->wmi_handle, wc_method, &wc_handle); if (ACPI_SUCCESS(wc_status)) wc_status = AcpiEvaluateObject(wc_handle, wc_method, &wc_input, NULL); } wq_method[2] = winfo->ginfo.oid[0]; wq_method[3] = winfo->ginfo.oid[1]; status = AcpiEvaluateObject(sc->wmi_handle, wq_method, &wq_input, out); if ((winfo->ginfo.flags & ACPI_WMI_REGFLAG_EXPENSIVE) && ACPI_SUCCESS(wc_status)) { wc_params[0].Integer.Value = 0; status = AcpiEvaluateObject(wc_handle, wc_method, &wc_input, NULL); /* XXX this might be the wrong status to return? */ } } ACPI_SERIAL_END(acpi_wmi); return (status); } /* * Write a block of data to the given GUID (using WSxx) */ static ACPI_STATUS acpi_wmi_set_block_method(device_t dev, const char *guid_string, UINT8 instance, const ACPI_BUFFER *in) { char method[5] = "WSxx"; ACPI_OBJECT_LIST input; ACPI_OBJECT params[2]; struct wmi_info *winfo; struct acpi_wmi_softc *sc; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); ACPI_SERIAL_BEGIN(acpi_wmi); if (guid_string == NULL || in == NULL) status = AE_BAD_DATA; else if ((winfo = acpi_wmi_lookup_wmi_info_by_guid_string(guid_string)) == NULL) status = AE_ERROR; else if (instance > winfo->ginfo.max_instance) status = AE_BAD_PARAMETER; else if ((winfo->ginfo.flags & ACPI_WMI_REGFLAG_EVENT) || (winfo->ginfo.flags & ACPI_WMI_REGFLAG_METHOD)) status = AE_ERROR; else { params[0].Type = ACPI_TYPE_INTEGER; params[0].Integer.Value = instance; input.Pointer = params; input.Count = 2; params[1].Type = (winfo->ginfo.flags & ACPI_WMI_REGFLAG_STRING) ?ACPI_TYPE_STRING:ACPI_TYPE_BUFFER; params[1].Buffer.Length = in->Length; params[1].Buffer.Pointer = in->Pointer; method[2] = winfo->ginfo.oid[0]; method[3] = winfo->ginfo.oid[1]; status = AcpiEvaluateObject(sc->wmi_handle, method, &input, NULL); } ACPI_SERIAL_END(acpi_wmi); return (status); } /* * Handle events received and dispatch them to * stakeholders that registered through ACPI_WMI_INSTALL_EVENT_HANDLER */ static void acpi_wmi_notify_handler(ACPI_HANDLE h, UINT32 notify, void *context) { ACPI_NOTIFY_HANDLER handler; void *handler_data; struct wmi_info *winfo; ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, notify); handler = NULL; handler_data = NULL; ACPI_SERIAL_BEGIN(acpi_wmi); TAILQ_FOREACH(winfo, &wmi_info_list, wmi_list) { if ((winfo->ginfo.flags & ACPI_WMI_REGFLAG_EVENT) && ((UINT8) winfo->ginfo.oid[0] == notify)) { if (winfo->event_handler) { handler = winfo->event_handler; handler_data = winfo->event_handler_user_data; break; } } } ACPI_SERIAL_END(acpi_wmi); if (handler) { handler(h, notify, handler_data); } } /* * Handle EC address space notifications reveived on the WDG node * (this mimics EcAddressSpaceHandler in acpi_ec.c) */ static ACPI_STATUS acpi_wmi_ec_handler(UINT32 function, ACPI_PHYSICAL_ADDRESS address, UINT32 width, ACPI_INTEGER *value, void *context, void *region_context) { struct acpi_wmi_softc *sc; int i; ACPI_INTEGER ec_data; UINT8 ec_addr; ACPI_STATUS status; ACPI_FUNCTION_TRACE_U32((char *)(uintptr_t)__func__, (UINT32)Address); sc = (struct acpi_wmi_softc *)context; if (width % 8 != 0 || value == NULL || context == NULL) return (AE_BAD_PARAMETER); if (address + (width / 8) - 1 > 0xFF) return (AE_BAD_ADDRESS); if (function == ACPI_READ) *value = 0; ec_addr = address; status = AE_ERROR; for (i = 0; i < width; i += 8, ++ec_addr) { switch (function) { case ACPI_READ: status = ACPI_EC_READ(sc->ec_dev, ec_addr, &ec_data, 1); if (ACPI_SUCCESS(status)) *value |= ((ACPI_INTEGER)ec_data) << i; break; case ACPI_WRITE: ec_data = (UINT8)((*value) >> i); status = ACPI_EC_WRITE(sc->ec_dev, ec_addr, ec_data, 1); break; default: device_printf(sc->wmi_dev, "invalid acpi_wmi_ec_handler function %d\n", function); status = AE_BAD_PARAMETER; break; } if (ACPI_FAILURE(status)) break; } return (status); } /* * Read GUID blocks from the _WDG node * into wmi_info_list. */ static ACPI_STATUS acpi_wmi_read_wdg_blocks(ACPI_HANDLE h) { ACPI_BUFFER out = {ACPI_ALLOCATE_BUFFER, NULL}; struct guid_info *ginfo; ACPI_OBJECT *obj; struct wmi_info *winfo; UINT32 i; UINT32 wdg_block_count; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_ASSERT(acpi_wmi); if (ACPI_FAILURE(status = AcpiEvaluateObject(h, "_WDG", NULL, &out))) return (status); obj = (ACPI_OBJECT*) out.Pointer; wdg_block_count = obj->Buffer.Length / sizeof(struct guid_info); if ((ginfo = malloc(obj->Buffer.Length, M_ACPIWMI, M_NOWAIT)) == NULL) { AcpiOsFree(out.Pointer); return (AE_NO_MEMORY); } memcpy(ginfo, obj->Buffer.Pointer, obj->Buffer.Length); for (i = 0; i < wdg_block_count; ++i) { if ((winfo = malloc(sizeof(struct wmi_info), M_ACPIWMI, M_NOWAIT | M_ZERO)) == NULL) { AcpiOsFree(out.Pointer); free(ginfo, M_ACPIWMI); return (AE_NO_MEMORY); } winfo->ginfo = ginfo[i]; TAILQ_INSERT_TAIL(&wmi_info_list, winfo, wmi_list); } AcpiOsFree(out.Pointer); free(ginfo, M_ACPIWMI); return (status); } /* * Toggle event generation in for the given GUID (passed by winfo) * Turn on to get notified (through acpi_wmi_notify_handler) if events happen * on the given GUID. */ static ACPI_STATUS acpi_wmi_toggle_we_event_generation(device_t dev, struct wmi_info *winfo, enum event_generation_state state) { char method[5] = "WExx"; ACPI_OBJECT_LIST input; ACPI_OBJECT params[1]; struct acpi_wmi_softc *sc; ACPI_STATUS status; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); sc = device_get_softc(dev); ACPI_SERIAL_ASSERT(acpi_wmi); params[0].Type = ACPI_TYPE_INTEGER; params[0].Integer.Value = state==EVENT_GENERATION_ON?1:0; input.Pointer = params; input.Count = 1; UINT8 hi = ((UINT8) winfo->ginfo.oid[0]) >> 4; UINT8 lo = ((UINT8) winfo->ginfo.oid[0]) & 0xf; method[2] = (hi > 9 ? hi + 55: hi + 48); method[3] = (lo > 9 ? lo + 55: lo + 48); status = AcpiEvaluateObject(sc->wmi_handle, method, &input, NULL); if (status == AE_NOT_FOUND) status = AE_OK; return (status); } /* * Convert given two digit hex string (hexin) to an UINT8 referenced * by byteout. * Return != 0 if the was a problem (invalid input) */ static __inline int acpi_wmi_hex_to_int(const UINT8 *hexin, UINT8 *byteout) { unsigned int hi; unsigned int lo; hi = hexin[0]; lo = hexin[1]; if ('0' <= hi && hi <= '9') hi -= '0'; else if ('A' <= hi && hi <= 'F') hi -= ('A' - 10); else if ('a' <= hi && hi <= 'f') hi -= ('a' - 10); else return (1); if ('0' <= lo && lo <= '9') lo -= '0'; else if ('A' <= lo && lo <= 'F') lo -= ('A' - 10); else if ('a' <= lo && lo <= 'f') lo -= ('a' - 10); else return (1); *byteout = (hi << 4) + lo; return (0); } /* * Convert a human readable 36 character GUID into a 16byte * machine readable one. * The basic algorithm looks as follows: * Input: AABBCCDD-EEFF-GGHH-IIJJ-KKLLMMNNOOPP * Output: DCBAFEHGIJKLMNOP * (AA BB CC etc. represent two digit hex numbers == bytes) * Return != 0 if passed guid string is invalid */ static int acpi_wmi_guid_string_to_guid(const UINT8 *guid_string, UINT8 *guid) { static const int mapping[20] = {3, 2, 1, 0, -1, 5, 4, -1, 7, 6, -1, 8, 9, -1, 10, 11, 12, 13, 14, 15}; int i; for (i = 0; i < 20; ++i, ++guid_string) { if (mapping[i] >= 0) { if (acpi_wmi_hex_to_int(guid_string, &guid[mapping[i]])) return (-1); ++guid_string; } else if (*guid_string != '-') return (-1); } return (0); } /* * Lookup a wmi_info structure in wmi_list based on a * human readable GUID * Return NULL if the GUID is unknown in the _WDG */ static struct wmi_info* acpi_wmi_lookup_wmi_info_by_guid_string(const char *guid_string) { char guid[16]; struct wmi_info *winfo; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_ASSERT(acpi_wmi); if (!acpi_wmi_guid_string_to_guid(guid_string, guid)) { TAILQ_FOREACH(winfo, &wmi_info_list, wmi_list) { if (!memcmp(winfo->ginfo.guid, guid, 16)) { return (winfo); } } } return (NULL); } /* * open wmistat device */ static int acpi_wmi_wmistat_open(struct cdev* dev, int flags, int mode, struct thread *td) { struct acpi_wmi_softc *sc; int ret; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); sc = dev->si_drv1; ACPI_SERIAL_BEGIN(acpi_wmi); if (sc->wmistat_open_pid != 0) { ret = EBUSY; } else { if (sbuf_new(&sc->wmistat_sbuf, NULL, 4096, SBUF_AUTOEXTEND) == NULL) { ret = ENXIO; } else { sc->wmistat_open_pid = td->td_proc->p_pid; sc->wmistat_bufptr = 0; ret = 0; } } ACPI_SERIAL_END(acpi_wmi); return (ret); } /* * close wmistat device */ static int acpi_wmi_wmistat_close(struct cdev* dev, int flags, int mode, struct thread *td) { struct acpi_wmi_softc *sc; int ret; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); sc = dev->si_drv1; ACPI_SERIAL_BEGIN(acpi_wmi); if (sc->wmistat_open_pid == 0) { ret = EBADF; } else { if (sc->wmistat_bufptr != -1) { sbuf_delete(&sc->wmistat_sbuf); sc->wmistat_bufptr = -1; } sc->wmistat_open_pid = 0; ret = 0; } ACPI_SERIAL_END(acpi_wmi); return (ret); } /* * Read from wmistat guid information */ static int acpi_wmi_wmistat_read(struct cdev *dev, struct uio *buf, int flag) { struct acpi_wmi_softc *sc; struct wmi_info *winfo; int l; int ret; UINT8* guid; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); sc = dev->si_drv1; ACPI_SERIAL_BEGIN(acpi_wmi); if (sc->wmistat_open_pid != buf->uio_td->td_proc->p_pid || sc->wmistat_bufptr == -1) { ret = EBADF; } else { if (!sbuf_done(&sc->wmistat_sbuf)) { sbuf_printf(&sc->wmistat_sbuf, "GUID " " INST EXPE METH STR " "EVENT OID\n"); TAILQ_FOREACH(winfo, &wmi_info_list, wmi_list) { guid = (UINT8*)winfo->ginfo.guid; sbuf_printf(&sc->wmistat_sbuf, "{%02X%02X%02X%02X-%02X%02X-" "%02X%02X-%02X%02X-%02X%02X" "%02X%02X%02X%02X} %3d %-5s", guid[3], guid[2], guid[1], guid[0], guid[5], guid[4], guid[7], guid[6], guid[8], guid[9], guid[10], guid[11], guid[12], guid[13], guid[14], guid[15], winfo->ginfo.max_instance, (winfo->ginfo.flags& ACPI_WMI_REGFLAG_EXPENSIVE)? "YES":"NO" ); if (winfo->ginfo.flags&ACPI_WMI_REGFLAG_METHOD) sbuf_printf(&sc->wmistat_sbuf, "WM%c%c ", winfo->ginfo.oid[0], winfo->ginfo.oid[1]); else sbuf_printf(&sc->wmistat_sbuf, "NO "); sbuf_printf(&sc->wmistat_sbuf, "%-4s", (winfo->ginfo.flags& ACPI_WMI_REGFLAG_STRING)?"YES":"NO" ); if (winfo->ginfo.flags&ACPI_WMI_REGFLAG_EVENT) sbuf_printf(&sc->wmistat_sbuf, "0x%02X%s -\n", (UINT8)winfo->ginfo.oid[0], winfo->event_handler==NULL? " ":"+"); else sbuf_printf(&sc->wmistat_sbuf, "NO %c%c\n", winfo->ginfo.oid[0], winfo->ginfo.oid[1]); } sbuf_finish(&sc->wmistat_sbuf); } if (sbuf_len(&sc->wmistat_sbuf) <= 0) { sbuf_delete(&sc->wmistat_sbuf); sc->wmistat_bufptr = -1; sc->wmistat_open_pid = 0; ret = ENOMEM; } else { l = min(buf->uio_resid, sbuf_len(&sc->wmistat_sbuf) - sc->wmistat_bufptr); ret = (l > 0)?uiomove(sbuf_data(&sc->wmistat_sbuf) + sc->wmistat_bufptr, l, buf) : 0; sc->wmistat_bufptr += l; } } ACPI_SERIAL_END(acpi_wmi); return (ret); } --------------050804040908060506020603 Content-Type: text/plain; name="acpi_wmi_if.m" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="acpi_wmi_if.m" #- # Copyright (c) 2009 Michael Gmelin # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # $FreeBSD: src/sys/dev/acpic_support/acpi_wmi_if.m,v 1.0 2008/11/23 16:33:00 rmg Exp $ # #include #include #include INTERFACE acpi_wmi; # # Default implementation for acpi_wmi_generic_provides_guid_string(). # CODE { static int acpi_wmi_generic_provides_guid_string(device_t dev, const char* guid_string) { return 0; } }; # # Check if given GUID exists in WMI # Returns number of instances (max_instace+1) or 0 if guid doesn't exist # # device_t dev: Device to probe # const char* guid_string: String form of the GUID # METHOD int provides_guid_string { device_t dev; const char* guid_string; } DEFAULT acpi_wmi_generic_provides_guid_string; # # Evaluate a WMI method call # # device_t dev: Device to use # const char* guid_string: String form of the GUID # UINT8 instance: instance id # UINT32 method_id: method to call # const ACPI_BUFFER* in: input data # ACPI_BUFFER* out: output buffer # METHOD ACPI_STATUS evaluate_call { device_t dev; const char *guid_string; UINT8 instance; UINT32 method_id; const ACPI_BUFFER *in; ACPI_BUFFER *out; }; # # Get content of a WMI block # # device_t dev: Device to use # const char* guid_string: String form of the GUID # UINT8 instance: instance id # ACPI_BUFFER* out: output buffer # METHOD ACPI_STATUS get_block { device_t dev; const char *guid_string; UINT8 instance; ACPI_BUFFER *out; }; # # Write to a WMI data block # # device_t dev: Device to use # const char* guid_string: String form of the GUID # UINT8 instance: instance id # const ACPI_BUFFER* in: input data # METHOD ACPI_STATUS set_block { device_t dev; const char *guid_string; UINT8 instance; const ACPI_BUFFER *in; }; # # Install wmi event handler # # device_t dev: Device to use # const char* guid_string: String form of the GUID # ACPI_NOTIFY_HANDLER handler: Handler # void* data: Payload # METHOD ACPI_STATUS install_event_handler { device_t dev; const char *guid_string; ACPI_NOTIFY_HANDLER handler; void *data; }; # # Remove wmi event handler # # device_t dev: Device to use # const char* guid_string: String form of the GUID # METHOD ACPI_STATUS remove_event_handler { device_t dev; const char *guid_string; }; # # Get event data associated to an event # # device_t dev: Device to use # UINT32 event_id: event id # ACPI_BUFFER* out: output buffer # METHOD ACPI_STATUS get_event_data { device_t dev; UINT32 event_id; ACPI_BUFFER *out; }; --------------050804040908060506020603 Content-Type: application/octet-stream; name="damnit.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="damnit.tgz" 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 --------------050804040908060506020603-- From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 20:46:53 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 304BE106566C for ; Tue, 30 Jun 2009 20:46:53 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: from mail.bindone.de (mail.bindone.de [80.190.134.51]) by mx1.freebsd.org (Postfix) with SMTP id 1A49C8FC1D for ; Tue, 30 Jun 2009 20:46:51 +0000 (UTC) (envelope-from freebsdusb@bindone.de) Received: (qmail 20111 invoked by uid 89); 30 Jun 2009 20:46:50 -0000 Received: from unknown (HELO ufo.bindone.de) (mg@bindone.de@87.152.174.104) by mail.bindone.de with ESMTPA; 30 Jun 2009 20:46:50 -0000 Message-ID: <4A4A79A8.2030807@bindone.de> Date: Tue, 30 Jun 2009 22:46:32 +0200 From: Michael Gmelin User-Agent: Thunderbird 2.0.0.17pre (X11/20090202) MIME-Version: 1.0 To: Rui Paulo , freebsd-acpi@freebsd.org Content-Type: multipart/mixed; boundary="------------040508080709060705030600" Cc: "Paul B. Mahol" Subject: Patches to correct my mistake (acpi_hp/acpi_wmi) X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 20:46:53 -0000 This is a multi-part message in MIME format. --------------040508080709060705030600 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi Rui, find attached two patches to bring the source back in synch. Sorry again for causing extra work and confusion (at least I figured out why this happened, it was a bad idea to call the original version .orig, so patch overwrote these... won't happen again). Thanks Michael --------------040508080709060705030600 Content-Type: application/octet-stream; name="acpi_hp_patches.tgz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="acpi_hp_patches.tgz" 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 AFAAAA== --------------040508080709060705030600 Content-Type: text/plain; name="acpi_hp.4.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="acpi_hp.4.patch" --- share/man/man4/acpi_hp.4.current 2009-06-30 22:11:38.322854998 +0200 +++ share/man/man4/acpi_hp.4 2009-06-30 22:37:22.869030000 +0200 @@ -169,10 +169,26 @@ Query highest BIOS entry instance. This is broken on many HP models and therefore disabled by default. .El +.It Va dev.acpi_hp.0.verbose +(read-only) +Set verbosity level .El .Pp Defaults for these sysctls can be set in .Xr sysctl.conf 5 . +.Sh HARDWARE +The +.Nm +driver has been reported to support the following hardware: +.Pp +.Bl -bullet -compact +.It +HP Compaq 8510p +.It +HP Compaq nx7300 +.El +.Pp +It should work on most HP laptops that feature a WMI enabled BIOS. .Sh FILES .Bl -tag -width ".Pa /dev/hpcmi" .It Pa /dev/hpcmi --------------040508080709060705030600 Content-Type: text/plain; name="acpi_hp.c.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="acpi_hp.c.patch" --- sys/dev/acpi_support/acpi_hp.c.current 2009-06-30 21:38:20.828552510 +0200 +++ sys/dev/acpi_support/acpi_hp.c 2009-06-29 17:18:30.928244238 +0200 @@ -92,6 +92,7 @@ #define ACPI_HP_METHOD_HDDTEMP 18 #define ACPI_HP_METHOD_DOCK 19 #define ACPI_HP_METHOD_CMI_DETAIL 20 +#define ACPI_HP_METHOD_VERBOSE 21 #define HP_MASK_WWAN_ON_AIR 0x1000000 #define HP_MASK_BLUETOOTH_ON_AIR 0x10000 @@ -121,6 +122,7 @@ int has_cmi; /* CMI GUID found */ int cmi_detail; /* CMI detail level (set by sysctl) */ + int verbose; /* add debug output */ int wlan_enable_if_radio_on; /* set by sysctl */ int wlan_disable_if_radio_off; /* set by sysctl */ int bluetooth_enable_if_radio_on; /* set by sysctl */ @@ -275,6 +277,12 @@ "(cat /dev/hpcmi)", .access = CTLTYPE_INT | CTLFLAG_RW }, + { + .name = "verbose", + .method = ACPI_HP_METHOD_VERBOSE, + .description = "Verbosity level", + .access = CTLTYPE_INT | CTLFLAG_RW + }, { NULL, 0, NULL, 0 } }; @@ -334,10 +342,10 @@ static void acpi_hp_evaluate_auto_on_off(struct acpi_hp_softc *sc) { - int wireless; - int new_wlan_status; - int new_bluetooth_status; - int new_wwan_status; + int wireless; + int new_wlan_status; + int new_bluetooth_status; + int new_wwan_status; wireless = acpi_hp_exec_wmi_command(sc->wmi_dev, ACPI_HP_WMI_WIRELESS_COMMAND, 0, 0); @@ -345,7 +353,8 @@ new_bluetooth_status = -1; new_wwan_status = -1; - device_printf(sc->wmi_dev, "Wireless status is %x\n", wireless); + if (sc->verbose) + device_printf(sc->wmi_dev, "Wireless status is %x\n", wireless); if (sc->wlan_disable_if_radio_off && !(wireless & HP_MASK_WLAN_RADIO) && (wireless & HP_MASK_WLAN_ENABLED)) { acpi_hp_exec_wmi_command(sc->wmi_dev, @@ -391,10 +400,11 @@ new_wlan_status = (wireless & HP_MASK_WLAN_ON_AIR); if ((new_wlan_status?1:0) != sc->was_wlan_on_air) { sc->was_wlan_on_air = sc->was_wlan_on_air?0:1; - device_printf(sc->wmi_dev, - "WLAN on air changed to %i " - "(new_wlan_status is %i)\n", - sc->was_wlan_on_air, new_wlan_status); + if (sc->verbose) + device_printf(sc->wmi_dev, + "WLAN on air changed to %i " + "(new_wlan_status is %i)\n", + sc->was_wlan_on_air, new_wlan_status); acpi_UserNotify("HP", sc->handle, 0xc0+sc->was_wlan_on_air); } @@ -404,9 +414,12 @@ if ((new_bluetooth_status?1:0) != sc->was_bluetooth_on_air) { sc->was_bluetooth_on_air = sc->was_bluetooth_on_air? 0:1; - device_printf(sc->wmi_dev, "BLUETOOTH on air changed" - " to %i (new_bluetooth_status is %i)\n", - sc->was_bluetooth_on_air, new_bluetooth_status); + if (sc->verbose) + device_printf(sc->wmi_dev, + "BLUETOOTH on air changed" + " to %i (new_bluetooth_status is %i)\n", + sc->was_bluetooth_on_air, + new_bluetooth_status); acpi_UserNotify("HP", sc->handle, 0xd0+sc->was_bluetooth_on_air); } @@ -415,9 +428,11 @@ new_wwan_status = (wireless & HP_MASK_WWAN_ON_AIR); if ((new_wwan_status?1:0) != sc->was_wwan_on_air) { sc->was_wwan_on_air = sc->was_wwan_on_air?0:1; - device_printf(sc->wmi_dev, "WWAN on air changed to %i" - " (new_wwan_status is %i)\n", - sc->was_wwan_on_air, new_wwan_status); + if (sc->verbose) + device_printf(sc->wmi_dev, + "WWAN on air changed to %i" + " (new_wwan_status is %i)\n", + sc->was_wwan_on_air, new_wwan_status); acpi_UserNotify("HP", sc->handle, 0xe0+sc->was_wwan_on_air); } @@ -440,7 +455,7 @@ struct acpi_hp_softc *sc; struct acpi_softc *acpi_sc; devclass_t wmi_devclass; - int arg; + int arg; ACPI_FUNCTION_TRACE((char *)(uintptr_t) __func__); @@ -460,6 +475,7 @@ sc->was_wwan_on_air = 0; sc->cmi_detail = 0; sc->cmi_order_size = -1; + sc->verbose = 0; memset(sc->cmi_order, 0, sizeof(sc->cmi_order)); acpi_sc = acpi_device_get_parent_softc(dev); @@ -553,7 +569,7 @@ static int acpi_hp_detach(device_t dev) { - int ret; + int ret; ACPI_FUNCTION_TRACE((char *)(uintptr_t) __func__); struct acpi_hp_softc *sc = device_get_softc(dev); @@ -580,12 +596,12 @@ static int acpi_hp_sysctl(SYSCTL_HANDLER_ARGS) { - struct acpi_hp_softc *sc; - int arg; - int oldarg; - int error = 0; - int function; - int method; + struct acpi_hp_softc *sc; + int arg; + int oldarg; + int error = 0; + int function; + int method; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); @@ -608,7 +624,7 @@ static int acpi_hp_sysctl_get(struct acpi_hp_softc *sc, int method) { - int val = 0; + int val = 0; ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_ASSERT(hp); @@ -696,6 +712,9 @@ case ACPI_HP_METHOD_CMI_DETAIL: val = sc->cmi_detail; break; + case ACPI_HP_METHOD_VERBOSE: + val = sc->verbose; + break; } return (val); @@ -707,7 +726,8 @@ ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__); ACPI_SERIAL_ASSERT(hp); - if (method != ACPI_HP_METHOD_CMI_DETAIL) + if (method != ACPI_HP_METHOD_CMI_DETAIL && + method != ACPI_HP_METHOD_VERBOSE) arg = arg?1:0; if (arg != oldarg) { @@ -759,6 +779,9 @@ sc->cmi_order_size = -1; } break; + case ACPI_HP_METHOD_VERBOSE: + sc->verbose = arg; + break; } } @@ -794,15 +817,15 @@ static int acpi_hp_exec_wmi_command(device_t wmi_dev, int command, int is_write, int val) { - UINT32 params[5] = { 0x55434553, - is_write?2:1, - command, - is_write?4:0, - val}; - UINT32* result; - ACPI_OBJECT *obj; - ACPI_BUFFER in = { sizeof(params), ¶ms }; - ACPI_BUFFER out = { ACPI_ALLOCATE_BUFFER, NULL }; + UINT32 params[5] = { 0x55434553, + is_write?2:1, + command, + is_write?4:0, + val}; + UINT32* result; + ACPI_OBJECT *obj; + ACPI_BUFFER in = { sizeof(params), ¶ms }; + ACPI_BUFFER out = { ACPI_ALLOCATE_BUFFER, NULL }; int retval; if (ACPI_FAILURE(ACPI_WMI_EVALUATE_CALL(wmi_dev, ACPI_HP_WMI_BIOS_GUID, @@ -827,7 +850,8 @@ static __inline char* acpi_hp_get_string_from_object(ACPI_OBJECT* obj, char* dst, size_t size) { - int length; + int length; + dst[0] = 0; if (obj->Type == ACPI_TYPE_STRING) { length = obj->String.Length+1; @@ -847,33 +871,32 @@ * The block returned is ACPI_TYPE_PACKAGE which should contain the following * elements: * Index Meaning - * 0 Setting Name [string] - * 1 Value (comma separated, asterisk marks the current value) [string] - * 2 Path within the bios hierarchy [string] - * 3 IsReadOnly [int] - * 4 DisplayInUI [int] - * 5 RequiresPhysicalPresence [int] - * 6 Sequence for ordering within the bios settings (absolute) [int] - * 7 Length of prerequisites array [int] - * 8 Prerequisite1 [string] - * 9 Prerequisite2 [string] - * 10 Prerequisite3 [string] - * 11 Current value (in case of enum) [string] / Array length [int] - * 12 Enum length [int] / Array values - * 13ff Enum value at index x [string] + * 0 Setting Name [string] + * 1 Value (comma separated, asterisk marks the current value) [string] + * 2 Path within the bios hierarchy [string] + * 3 IsReadOnly [int] + * 4 DisplayInUI [int] + * 5 RequiresPhysicalPresence [int] + * 6 Sequence for ordering within the bios settings (absolute) [int] + * 7 Length of prerequisites array [int] + * 8..8+[7] PrerequisiteN [string] + * 9+[7] Current value (in case of enum) [string] / Array length [int] + * 10+[7] Enum length [int] / Array values + * 11+[7]ff Enum value at index x [string] */ static int acpi_hp_get_cmi_block(device_t wmi_dev, const char* guid, UINT8 instance, char* outbuf, size_t outsize, UINT32* sequence, int detail) { - ACPI_OBJECT *obj; - ACPI_BUFFER out = { ACPI_ALLOCATE_BUFFER, NULL }; - int i; - int outlen; - int size = 255; - int has_enums = 0; - char string_buffer[size]; - int enumbase; + ACPI_OBJECT *obj; + ACPI_BUFFER out = { ACPI_ALLOCATE_BUFFER, NULL }; + int i; + int outlen; + int size = 255; + int has_enums = 0; + int valuebase = 0; + char string_buffer[size]; + int enumbase; outlen = 0; outbuf[0] = 0; @@ -887,8 +910,13 @@ return (-EINVAL); } + if (obj->Package.Count >= 8 && + obj->Package.Elements[7].Type == ACPI_TYPE_INTEGER) { + valuebase = 8 + obj->Package.Elements[7].Integer.Value; + } + /* check if this matches our expectations based on limited knowledge */ - if (obj->Package.Count >= 13 && + if (valuebase > 7 && obj->Package.Count > valuebase + 1 && obj->Package.Elements[0].Type == ACPI_TYPE_STRING && obj->Package.Elements[1].Type == ACPI_TYPE_STRING && obj->Package.Elements[2].Type == ACPI_TYPE_STRING && @@ -896,20 +924,12 @@ obj->Package.Elements[4].Type == ACPI_TYPE_INTEGER && obj->Package.Elements[5].Type == ACPI_TYPE_INTEGER && obj->Package.Elements[6].Type == ACPI_TYPE_INTEGER && - obj->Package.Elements[7].Type == ACPI_TYPE_INTEGER && - obj->Package.Elements[8].Type == ACPI_TYPE_STRING && - obj->Package.Elements[9].Type == ACPI_TYPE_STRING && - obj->Package.Elements[10].Type == ACPI_TYPE_STRING && - ((obj->Package.Elements[11].Type == ACPI_TYPE_STRING && - obj->Package.Elements[12].Type == ACPI_TYPE_INTEGER && - obj->Package.Count >= - 13+obj->Package.Elements[12].Integer.Value) || - (obj->Package.Elements[11].Type == ACPI_TYPE_INTEGER && - obj->Package.Count >= - 12+obj->Package.Elements[11].Integer.Value)) - ) { - enumbase = obj->Package.Elements[11].Type == ACPI_TYPE_STRING? - 12:11; + obj->Package.Elements[valuebase].Type == ACPI_TYPE_STRING && + obj->Package.Elements[valuebase+1].Type == ACPI_TYPE_INTEGER && + obj->Package.Count > valuebase + + obj->Package.Elements[valuebase+1].Integer.Value + ) { + enumbase = valuebase + 1; if (detail & ACPI_HP_CMI_DETAIL_PATHS) { strlcat(outbuf, acpi_hp_get_string_from_object( &obj->Package.Elements[2], string_buffer, size), @@ -924,11 +944,10 @@ outlen += 43; while (strlen(outbuf) < outlen) strlcat(outbuf, " ", outsize); - if (enumbase == 12) - strlcat(outbuf, acpi_hp_get_string_from_object( - &obj->Package.Elements[11], - string_buffer, size), - outsize); + strlcat(outbuf, acpi_hp_get_string_from_object( + &obj->Package.Elements[valuebase], string_buffer, + size), + outsize); outlen += 21; while (strlen(outbuf) < outlen) strlcat(outbuf, " ", outsize); @@ -936,7 +955,7 @@ if (outbuf[i] == '\\') outbuf[i] = '/'; if (detail & ACPI_HP_CMI_DETAIL_ENUMS) { - for (i = enumbase+1; i < enumbase + 1 + + for (i = enumbase + 1; i < enumbase + 1 + obj->Package.Elements[enumbase].Integer.Value; ++i) { acpi_hp_get_string_from_object( @@ -980,8 +999,8 @@ */ static __inline int acpi_hp_hex_to_int(const UINT8 *hexin, UINT8 *byteout) { - unsigned int hi; - unsigned int lo; + unsigned int hi; + unsigned int lo; hi = hexin[0]; lo = hexin[1]; @@ -1010,10 +1029,10 @@ static void acpi_hp_hex_decode(char* buffer) { - int i; - int length = strlen(buffer); - UINT8 *uin; - UINT8 uout; + int i; + int length = strlen(buffer); + UINT8 *uin; + UINT8 uout; if (((int)length/2)*2 == length || length < 10) return; @@ -1044,8 +1063,8 @@ static int acpi_hp_hpcmi_open(struct cdev* dev, int flags, int mode, struct thread *td) { - struct acpi_hp_softc *sc; - int ret; + struct acpi_hp_softc *sc; + int ret; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); @@ -1076,8 +1095,8 @@ static int acpi_hp_hpcmi_close(struct cdev* dev, int flags, int mode, struct thread *td) { - struct acpi_hp_softc *sc; - int ret; + struct acpi_hp_softc *sc; + int ret; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); @@ -1106,13 +1125,13 @@ static int acpi_hp_hpcmi_read(struct cdev *dev, struct uio *buf, int flag) { - struct acpi_hp_softc *sc; - int pos, i, l, ret; - UINT8 instance; - UINT8 maxInstance; - UINT32 sequence; - int linesize = 1025; - char line[linesize]; + struct acpi_hp_softc *sc; + int pos, i, l, ret; + UINT8 instance; + UINT8 maxInstance; + UINT32 sequence; + int linesize = 1025; + char line[linesize]; if (dev == NULL || dev->si_drv1 == NULL) return (EBADF); --------------040508080709060705030600-- From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 21:21:48 2009 Return-Path: Delivered-To: acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55305106566C for ; Tue, 30 Jun 2009 21:21:48 +0000 (UTC) (envelope-from robert.moore@intel.com) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx1.freebsd.org (Postfix) with ESMTP id 39D9F8FC0A for ; Tue, 30 Jun 2009 21:21:47 +0000 (UTC) (envelope-from robert.moore@intel.com) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP; 30 Jun 2009 14:07:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.42,318,1243839600"; d="scan'208";a="470960264" Received: from orsmsx601.amr.corp.intel.com ([10.22.226.213]) by fmsmga002.fm.intel.com with ESMTP; 30 Jun 2009 14:15:24 -0700 Received: from orsmsx503.amr.corp.intel.com ([10.22.226.47]) by orsmsx601.amr.corp.intel.com ([10.22.226.213]) with mapi; Tue, 30 Jun 2009 14:21:47 -0700 From: "Moore, Robert" To: "Moore, Robert" Date: Tue, 30 Jun 2009 14:21:46 -0700 Thread-Topic: 20090625 regression in AcpiGetDevices Thread-Index: Acn5xgOKxdBhbDqhTLKxSS+o8BD2XQAAfEpA Message-ID: <4911F71203A09E4D9981D27F9D8308582EA036C6@orsmsx503.amr.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailman-Approved-At: Tue, 30 Jun 2009 21:27:24 +0000 Cc: Subject: 20090625 regression in AcpiGetDevices X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 21:21:48 -0000 We've just discovered a regression in 20090625 that seriously affects the A= cpiGetDevices interface. The _HID and _CID strings are no longer matched pr= operly and will confuse any bus-scanning code that uses the interface. The ACPICA bugzilla is below, it contains a patch for the problem. Apologies for any inconvenience. Bob -----Original Message----- From: bugzilla-daemon@moblin.org [mailto:bugzilla-daemon@moblin.org]=20 Sent: Tuesday, June 30, 2009 2:01 PM To: Moore, Robert Subject: [Bug 793] New: Incorrect _HID and _CID matching in AcpiGetDevice http://acpica.org/bugzilla/show_bug.cgi?id=3D793 Summary: Incorrect _HID and _CID matching in AcpiGetDevice Product: ACPICA Version: unspecified Platform: All OS/Version: Linux Status: ASSIGNED Severity: blocker Priority: P1 Component: Core/Interpreter AssignedTo: robert.moore@intel.com ReportedBy: robert.moore@intel.com Estimated Hours: 0.0 Created an attachment (id=3D840) --> http://acpica.org/bugzilla/attachment.cgi?id=3D840 Fix for AcpiGetDevices ID matching This is a regression introduced with the _HID/_CID/_UID string changes for version 20090625. In AcpiGetDevices, the _HID and _CID strings are not matched properly. This= will break any bus scanning code that depends on this function. Patch is attached. --=20 Configure bugmail: http://acpica.org/bugzilla/userprefs.cgi?tab=3Demail ------- You are receiving this mail because: ------- You are the assignee for the bug. You reported the bug. From owner-freebsd-acpi@FreeBSD.ORG Tue Jun 30 22:15:59 2009 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from [127.0.0.1] (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id C4AF81065674; Tue, 30 Jun 2009 22:15:59 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: freebsd-acpi@FreeBSD.org Date: Tue, 30 Jun 2009 18:15:49 -0400 User-Agent: KMail/1.6.2 References: <4911F71203A09E4D9981D27F9D8308582EA036C6@orsmsx503.amr.corp.intel.com> In-Reply-To: <4911F71203A09E4D9981D27F9D8308582EA036C6@orsmsx503.amr.corp.intel.com> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200906301815.51568.jkim@FreeBSD.org> Cc: "Moore, Robert" Subject: Re: 20090625 regression in AcpiGetDevices X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2009 22:16:00 -0000 On Tuesday 30 June 2009 05:21 pm, Moore, Robert wrote: > We've just discovered a regression in 20090625 that seriously > affects the AcpiGetDevices interface. The _HID and _CID strings are > no longer matched properly and will confuse any bus-scanning code > that uses the interface. > > The ACPICA bugzilla is below, it contains a patch for the problem. I don't think we use the function any where but I just updated my patchset with the fix. > Apologies for any inconvenience. Thanks for letting us know! Jung-uk Kim From owner-freebsd-acpi@FreeBSD.ORG Wed Jul 1 02:53:28 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3B1381065675 for ; Wed, 1 Jul 2009 02:53:28 +0000 (UTC) (envelope-from chflags@gmail.com) Received: from mail-yx0-f181.google.com (mail-yx0-f181.google.com [209.85.210.181]) by mx1.freebsd.org (Postfix) with ESMTP id E30BC8FC14 for ; Wed, 1 Jul 2009 02:53:27 +0000 (UTC) (envelope-from chflags@gmail.com) Received: by yxe11 with SMTP id 11so897672yxe.3 for ; Tue, 30 Jun 2009 19:53:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:reply-to:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=kvqkxvkabyUuKMvu+4Oz+WYG43+RjyxgEhZZfVAmrYg=; b=nlRdrwxCcMDKju3fmovVI5+QFPryVJBlOQvrH8v/sTN3nObP9QfxotZ0P5OaM80hN8 B7VHxOhtkcCnra0V6dsMgel3SJEZyItdJJ26LaUZtGkCfLiIhDmSNnyKObeiS678i+Q0 peaOycqZXRyTtuPCO+DGa1xEYipeQnrhOLclc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; b=I1y0xmZk4c3LUAyjFLKBAnfEyqtY4nxql+Gf/dVYR+yYM1SsL9DISk4ihCN6VxBRiv qOBElz8W2DudlMOTrCfAxV3JJFeEIcgOqweQGYT4Zs47Bvd3XZCGEDxFkSWUaMsG5y7r LJAIAf8eE4jzomt5EaJOaWlHo1yWifj3MTHPA= MIME-Version: 1.0 Received: by 10.100.96.4 with SMTP id t4mr12426314anb.170.1246416807307; Tue, 30 Jun 2009 19:53:27 -0700 (PDT) In-Reply-To: <4A4A4C19.6000407@bindone.de> References: <4A46018B.90709@bindone.de> <25cb30906300503g4e11290xd18818238c5a4bb3@mail.gmail.com> <4A4A01F3.1080004@bindone.de> <25cb30906300525j650a601cr77f0740f56168e53@mail.gmail.com> <4A4A05FA.8000305@bindone.de> <25cb30906300537y5fae18afo7c34d5fda170fff3@mail.gmail.com> <25cb30906300554u4ef7e638naa0dfe51bac3e83f@mail.gmail.com> <4A4A0EF6.1080800@bindone.de> <25cb30906300943k4871313ao69595498c1758730@mail.gmail.com> <4A4A4C19.6000407@bindone.de> Date: Wed, 1 Jul 2009 10:53:27 +0800 Message-ID: <25cb30906301953v6ef743e7ge34d8d5209a8c677@mail.gmail.com> From: Kevin Foo To: Michael Gmelin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to acpi_hp X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: chflags@gmail.com List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Jul 2009 02:53:28 -0000 On Wed, Jul 1, 2009 at 1:32 AM, Michael Gmelin wrote: > Hi Kevin, > > it seems like your model doesn't support this feature, sorry. > > Michael > Hi Michael, Thanks for the info. It is good enough to have acpi_hp, allowing control of radio for both wifi and bluetooth. Once again thank for your time and good work. Appreciate it. :) -- Regards Kevin Foo From owner-freebsd-acpi@FreeBSD.ORG Wed Jul 1 04:57:56 2009 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 678E11065670 for ; Wed, 1 Jul 2009 04:57:56 +0000 (UTC) (envelope-from rnoland@FreeBSD.org) Received: from gizmo.2hip.net (gizmo.2hip.net [64.74.207.195]) by mx1.freebsd.org (Postfix) with ESMTP id 225E08FC0C for ; Wed, 1 Jul 2009 04:57:56 +0000 (UTC) (envelope-from rnoland@FreeBSD.org) Received: from [192.168.1.4] (adsl-156-4-82.bna.bellsouth.net [70.156.4.82]) (authenticated bits=0) by gizmo.2hip.net (8.14.3/8.14.3) with ESMTP id n614IoTr004909 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 1 Jul 2009 00:18:50 -0400 (EDT) (envelope-from rnoland@FreeBSD.org) From: Robert Noland To: Jung-uk Kim In-Reply-To: <200906301815.51568.jkim@FreeBSD.org> References: <4911F71203A09E4D9981D27F9D8308582EA036C6@orsmsx503.amr.corp.intel.com> <200906301815.51568.jkim@FreeBSD.org> Content-Type: multipart/signed; micalg="pgp-sha1"; protocol="application/pgp-signature"; boundary="=-NUFNM7Ozn6PYNWEQOqx4" Organization: FreeBSD Date: Tue, 30 Jun 2009 23:18:44 -0500 Message-Id: <1246421924.1855.24.camel@balrog.2hip.net> Mime-Version: 1.0 X-Mailer: Evolution 2.26.2 FreeBSD GNOME Team Port X-Spam-Status: No, score=-2.9 required=5.0 tests=AWL,BAYES_00,RDNS_DYNAMIC, SPF_SOFTFAIL autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on gizmo.2hip.net Cc: freebsd-acpi@FreeBSD.org, "Moore, Robert" Subject: Re: 20090625 regression in AcpiGetDevices X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Jul 2009 04:57:56 -0000 --=-NUFNM7Ozn6PYNWEQOqx4 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Tue, 2009-06-30 at 18:15 -0400, Jung-uk Kim wrote: > On Tuesday 30 June 2009 05:21 pm, Moore, Robert wrote: > > We've just discovered a regression in 20090625 that seriously > > affects the AcpiGetDevices interface. The _HID and _CID strings are > > no longer matched properly and will confuse any bus-scanning code > > that uses the interface. > > > > The ACPICA bugzilla is below, it contains a patch for the problem. >=20 > I don't think we use the function any where but I just updated my=20 > patchset with the fix. acpi_aiboost seems to be broken at the moment. I've only looked at it closely enough to determine that it seems to be mis-parsing the objects and failing to attach. I don't know if it is related to this issue or not though. robert. > > Apologies for any inconvenience. >=20 > Thanks for letting us know! >=20 > Jung-uk Kim > _______________________________________________ > freebsd-acpi@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-acpi > To unsubscribe, send any mail to "freebsd-acpi-unsubscribe@freebsd.org" --=20 Robert Noland FreeBSD --=-NUFNM7Ozn6PYNWEQOqx4 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.11 (FreeBSD) iEYEABECAAYFAkpK46QACgkQM4TrQ4qfRONSwQCeIuodp0H/GWY2UOoPMSdptkY1 91AAn2TQ2C2JAltz56mbK3QqyBQlif5V =/vGn -----END PGP SIGNATURE----- --=-NUFNM7Ozn6PYNWEQOqx4-- From owner-freebsd-acpi@FreeBSD.ORG Fri Jul 3 19:05:20 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 400791065673; Fri, 3 Jul 2009 19:05:20 +0000 (UTC) (envelope-from onemda@gmail.com) Received: from mail-fx0-f218.google.com (mail-fx0-f218.google.com [209.85.220.218]) by mx1.freebsd.org (Postfix) with ESMTP id 9C0BB8FC0A; Fri, 3 Jul 2009 19:05:19 +0000 (UTC) (envelope-from onemda@gmail.com) Received: by fxm18 with SMTP id 18so2099462fxm.43 for ; Fri, 03 Jul 2009 12:05:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=S+MpP04QmvIKUHYVFgS+BF7vV9tVc8aqyNnKIft+K/I=; b=h5KsYYYCSaifG4RBz/h9ywlu+BWOBwLuw5HoNwHitgPc4Icm7HXVcMFcoJkm2ESYGf aSn/aDmMsp3ZDZWRRhhdV3mjiaa4F6uNoVRggCariV5t4OPfr+MB/MRnlpLOEwIAWxRW ul5ihzALDgjqr6Wk0ZUCXvScDMFLExJpGY9QU= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=SmezmGYJdS3cM6CsFA8WeM9/fqnTe1GQQ98ygYqc6GSCPQa8qbwoHIL2P4hb+1o14c cbKlnDw3UWmmPzIlSnyU+P+diXZtcr8cKqMp/wUBZKb5tR1KSq7eDANe4wXWasIVOi9Y UPOvhm0QLoKIo5H3Ikc6mdn0gvJZih5Kdo0GY= MIME-Version: 1.0 Received: by 10.204.66.69 with SMTP id m5mr1548703bki.174.1246647918687; Fri, 03 Jul 2009 12:05:18 -0700 (PDT) In-Reply-To: <4A4A79A8.2030807@bindone.de> References: <4A4A79A8.2030807@bindone.de> Date: Fri, 3 Jul 2009 19:05:18 +0000 Message-ID: <3a142e750907031205i44ae0044u37c883c4e2a9e64b@mail.gmail.com> From: "Paul B. Mahol" To: Michael Gmelin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to correct my mistake (acpi_hp/acpi_wmi) X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Jul 2009 19:05:20 -0000 On 6/30/09, Michael Gmelin wrote: > Hi Rui, > > find attached two patches to bring the source back in synch. > > Sorry again for causing extra work and confusion (at least I figured out > why this happened, it was a bad idea to call the original version .orig, > so patch overwrote these... won't happen again). > > Thanks > Michael > Tested. Works fine. Please commit ASAP. -- Paul From owner-freebsd-acpi@FreeBSD.ORG Fri Jul 3 21:15:15 2009 Return-Path: Delivered-To: freebsd-acpi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 382FB1065674 for ; Fri, 3 Jul 2009 21:15:15 +0000 (UTC) (envelope-from rpaulo@gmail.com) Received: from mail-ew0-f213.google.com (mail-ew0-f213.google.com [209.85.219.213]) by mx1.freebsd.org (Postfix) with ESMTP id AC0098FC0C for ; Fri, 3 Jul 2009 21:15:14 +0000 (UTC) (envelope-from rpaulo@gmail.com) Received: by ewy9 with SMTP id 9so2777211ewy.43 for ; Fri, 03 Jul 2009 14:15:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:cc:message-id:from:to :in-reply-to:content-type:content-transfer-encoding:mime-version :subject:date:references:x-mailer; bh=CICBcBvu/n6x/VTs9ydpNf5J4TFsGo8Z/DDOG9E54CM=; b=wRJ/je1wyHYzY2F/+3249LMWNro8/KjgTrvweGS7c0mzTB1hu951ywhH0g1kjRZGW3 5kMf4y0NbfiwuJobeiaNUOhhnnDCqgpTdypi7jB5MPxstQecP6GCd5tdhtFwoTZu+9As aohnpTPaGKNXto+WOmbrv7K0yYofNfvHoHad0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:cc:message-id:from:to:in-reply-to:content-type :content-transfer-encoding:mime-version:subject:date:references :x-mailer; b=QZYqLQoVHdJqbo+MNzoPIwZnulIMRNC9pMuLPF65DPpiF55YWEPc4glDr33ebA/0U6 IO18ZfK4JCsMitKvlDa6l1EoBRdPJ+EWzQ+PikjcYhPgdqygG5I5bHlVjokNWIa/tvhR 2hY7NbpbL/phtAHsv0rSd6UMapNaCpIERcZzI= Received: by 10.210.61.16 with SMTP id j16mr2236098eba.16.1246655713313; Fri, 03 Jul 2009 14:15:13 -0700 (PDT) Received: from omega.lan (bl5-224-141.dsl.telepac.pt [82.154.224.141]) by mx.google.com with ESMTPS id 7sm3770024eyg.7.2009.07.03.14.15.12 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 03 Jul 2009 14:15:12 -0700 (PDT) Sender: Rui Paulo Message-Id: From: Rui Paulo To: "Paul B. Mahol" In-Reply-To: <3a142e750907031205i44ae0044u37c883c4e2a9e64b@mail.gmail.com> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v935.3) Date: Fri, 3 Jul 2009 22:15:11 +0100 References: <4A4A79A8.2030807@bindone.de> <3a142e750907031205i44ae0044u37c883c4e2a9e64b@mail.gmail.com> X-Mailer: Apple Mail (2.935.3) Cc: freebsd-acpi@freebsd.org Subject: Re: Patches to correct my mistake (acpi_hp/acpi_wmi) X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 03 Jul 2009 21:15:15 -0000 On 3 Jul 2009, at 20:05, Paul B. Mahol wrote: > On 6/30/09, Michael Gmelin wrote: >> Hi Rui, >> >> find attached two patches to bring the source back in synch. >> >> Sorry again for causing extra work and confusion (at least I >> figured out >> why this happened, it was a bad idea to call the original >> version .orig, >> so patch overwrote these... won't happen again). >> >> Thanks >> Michael >> > > Tested. Works fine. Please commit ASAP. Done. Thanks, -- Rui Paulo