* RE: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c
@ 2005-11-18 20:51 Moore, Robert
[not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
0 siblings, 1 reply; 26+ messages in thread
From: Moore, Robert @ 2005-11-18 20:51 UTC (permalink / raw)
To: Moore, Robert, KAMEZAWA Hiroyuki, keith
Cc: Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel,
external hotplug mem list, Tolentino, Matthew E
FYI, here are the strings supported:
/*
* Strings supported by the _OSI predefined (internal) method.
* When adding strings, be sure to update ACPI_NUM_OSI_STRINGS.
*/
const char
*AcpiGbl_ValidOsiStrings[ACPI_NUM_OSI_STRINGS] =
{
/* Operating System Vendor Strings */
"Linux",
"Windows 2000",
"Windows 2001",
"Windows 2001.1",
"Windows 2001 SP0",
"Windows 2001 SP1",
"Windows 2001 SP2",
"Windows 2001 SP3",
"Windows 2001 SP4",
/* Feature Group Strings */
"Extended Address Space Descriptor"
};
> -----Original Message-----
> From: acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:acpi-devel-
> admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of Moore, Robert
> Sent: Friday, November 18, 2005 11:47 AM
> To: KAMEZAWA Hiroyuki; keith
> Cc: Yasunori Goto; Brown, Len; S, Naveen B; acpi-devel; external
hotplug
> mem list; Tolentino, Matthew E
> Subject: RE: [ACPI] Re: [Lhms-devel] [PATCH 1/1] patch to fix
> acpi_memhotplug.c
>
> The ACPICA code supports _OSI and will respond TRUE when shown the
> "Windows 2001" string.
> Bob
>
>
> > -----Original Message-----
> > From: acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:acpi-devel-
> > admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of KAMEZAWA Hiroyuki
> > Sent: Thursday, November 17, 2005 6:57 PM
> > To: keith
> > Cc: Yasunori Goto; Brown, Len; S, Naveen B; acpi-devel; external
> hotplug
> > mem list; Tolentino, Matthew E
> > Subject: Re: [ACPI] Re: [Lhms-devel] [PATCH 1/1] patch to fix
> > acpi_memhotplug.c
> >
> > keith wrote:
> > >> >
> > >>Could you show your AML tree around Memory ?
> > >
> > >
> > > See attached SSDT.
> > >
> > Thanks, at the first look.....
> >
> > > Device (ME00)
> > > {
> > <snip>
> > > Method (_STA, 0, NotSerialized)
> > > {
> > > If (CondRefOf (_OSI, Local0))
> > > {
> > > If (\_OSI ("Windows 2001"))
> > > {
> > > If (LAnd (LEqual (BADH, EADH), LEqual
(BADL,
> > EADL)))
> > > {
> > > Or (MEID, \_SB.MEMI, \_SB.MEMI)
> > > Return (0x00)
> > > }
> > > Else
> > > {
> > > And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
> > > Return (0x0F)
> > > }
> > > }
> > > }
> > >
> > > Return (0x00)
> > > }
> > It seems memory device's _STA never returns 0xF always returns 0x0.
> > (Device is online and enabled) when OS is not Windows2001.
> > All PNP0C80 decvices in this SSDT has same _STA function.
> >
> > So, I think why your hot add failes is _STA has no present bit.
> > ==
> > drivers/acpi/scan.c
> >
> > acpi_add_single_object()
> > <snip>
> > case ACPI_BUS_TYPE_DEVICE:
> > result = acpi_bus_get_status(device); in
> > drivers/acpi/bus.c
> > if (ACPI_FAILURE(result) ||
!device->status.present)
> { <-
> > ---(*)
> > result = -ENOENT;
> > goto end;
> > }
> > break;
> > ==
> >
> > rewriting your DSDT would be sane approach.
> >
> > -- Kame
> >
> >
> >
> >
> >
> > -------------------------------------------------------
> > This SF.Net email is sponsored by the JBoss Inc. Get Certified
Today
> > Register for a JBoss Training Course. Free Certification Exam
> > for All Training Attendees Through End of 2005. For more info visit:
> > http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
> > _______________________________________________
> > Acpi-devel mailing list
> > Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> > https://lists.sourceforge.net/lists/listinfo/acpi-devel
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
> Register for a JBoss Training Course. Free Certification Exam
> for All Training Attendees Through End of 2005. For more info visit:
> http://ads.osdn.com/?ad_idv28&alloc_id\x16845&op=ick
> _______________________________________________
> Acpi-devel mailing list
> Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/acpi-devel
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_idv28&alloc_id\x16845&op=click
^ permalink raw reply [flat|nested] 26+ messages in thread[parent not found: <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>]
* RE: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org> @ 2005-11-19 10:44 ` Erik Slagter 2005-11-19 12:15 ` Kamezawa Hiroyuki 1 sibling, 0 replies; 26+ messages in thread From: Erik Slagter @ 2005-11-19 10:44 UTC (permalink / raw) To: Moore, Robert; +Cc: acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f [-- Attachment #1: Type: text/plain, Size: 635 bytes --] On Fri, 2005-11-18 at 12:51 -0800, Moore, Robert wrote: [ ... ] > { > /* Operating System Vendor Strings */ > > "Linux", > "Windows 2000", > "Windows 2001", > "Windows 2001.1", > "Windows 2001 SP0", > "Windows 2001 SP1", > "Windows 2001 SP2", > "Windows 2001 SP3", > "Windows 2001 SP4", > > /* Feature Group Strings */ > > "Extended Address Space Descriptor" > }; Can you please explain to me what is the relation between ACPI and a certain OS implementation, seen from the BIOS code? I always failed to see that, I thought ACPI was to be OS-independent? [-- Attachment #2: smime.p7s --] [-- Type: application/x-pkcs7-signature, Size: 2115 bytes --] ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org> 2005-11-19 10:44 ` Erik Slagter @ 2005-11-19 12:15 ` Kamezawa Hiroyuki [not found] ` <1150853300.5873.49.camel@keithlap> 1 sibling, 1 reply; 26+ messages in thread From: Kamezawa Hiroyuki @ 2005-11-19 12:15 UTC (permalink / raw) To: Moore, Robert Cc: keith, Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel, external hotplug mem list, Tolentino, Matthew E Moore, Robert wrote: > FYI, here are the strings supported: > > /* > * Strings supported by the _OSI predefined (internal) method. > * When adding strings, be sure to update ACPI_NUM_OSI_STRINGS. > */ > const char > *AcpiGbl_ValidOsiStrings[ACPI_NUM_OSI_STRINGS] = > { > /* Operating System Vendor Strings */ > > "Linux", > "Windows 2000", > "Windows 2001", > "Windows 2001.1", > "Windows 2001 SP0", > "Windows 2001 SP1", > "Windows 2001 SP2", > "Windows 2001 SP3", > "Windows 2001 SP4", > > /* Feature Group Strings */ > > "Extended Address Space Descriptor" > }; Ah..Okay.. This means _OSI("Windows2001") returns true. - kame ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click ^ permalink raw reply [flat|nested] 26+ messages in thread
[parent not found: <1150853300.5873.49.camel@keithlap>]
* Re: [Lhms-devel] [RFC] Patch [1/1] for acpi_memhotplug.c [not found] ` <1150853300.5873.49.camel@keithlap> @ 2006-06-21 2:10 ` keith mannthey [not found] ` <20060621114334.1b954854.kamezawa.hiroyu@jp.fujitsu.com> 1 sibling, 0 replies; 26+ messages in thread From: keith mannthey @ 2006-06-21 2:10 UTC (permalink / raw) To: linux-acpi; +Cc: Prarit Bhargava--redhat, konrad, external hotplug mem list [-- Attachment #1: Type: text/plain, Size: 1620 bytes --] On Tue, 2006-06-20 at 18:28 -0700, keith mannthey wrote: > Hello again, > I am still without a working acpi memory driver for my hardware (with > extra patches). I posted patches a long while ago but have been off > doing other things for a while. > > 1. The current driver is unable to created the mem_device from the hot- > add event and the hot-add fails with out adding any memory to the > system. I have address_resources attached to the acpi handle but in > acpi_memory_get_device calling the path of > > acpi_bus_get_device > acpi_get_parent > acpi_bus_get_device /*for parent*/ > acpi_bus_add /*to created the memory device */ > > just doesn't create the memory_device and I don't know why. Perhaps > something about the event is off but I have had a fair amount of > communication with the bios writers about this issue and everything > looks ok to us. The odd things is acpi_bus_add doesn't complain it > happily returns success but no memory_device was attached to the > device. > > If you know how to debug this event better please advise. > > If I look at the resources associated with the handle there is > appropriate data to do the hot-add event (memory range data). I simply > insert a function that creates the memory device directly from the > handle and it's data(See attached patch) and the event carries on as > expected. > > The patch applies and work just fine against 2.6.17 and it doesn't break > the current call implementation. > > Any ideas? > > Signed-off-by: Keith Mannthey <kmannth@us.ibm.com> Sorry for the repost to some I had the old acpi list on the cc. [-- Attachment #2: acpi_mem_fixv3.patch --] [-- Type: text/x-patch, Size: 1741 bytes --] --- linux-2.6.15-rc1-orig/drivers/acpi/acpi_memhotplug.c 2005-11-14 10:56:13.000000000 -0800 +++ linux-2.6.15-rc1/drivers/acpi/acpi_memhotplug.c 2005-11-16 20:06:47.000000000 -0800 @@ -110,6 +110,32 @@ return_VALUE(0); } +static int +acpi_memory_get_current_resource(acpi_handle handle, struct acpi_memory_device **return_device) { + + int result; + struct acpi_memory_device *mem_device; + + ACPI_FUNCTION_TRACE("acpi_memory_get_current_resource"); + + mem_device = kmalloc(sizeof(struct acpi_memory_device), GFP_KERNEL); + if (!mem_device) + return_VALUE(-ENOMEM); + memset(mem_device,0, sizeof(struct acpi_memory_device)); + + mem_device->handle = handle; + result = acpi_memory_get_device_resources(mem_device); + if (result) { + kfree(mem_device); + return_VALUE(result); + } + mem_device->state = MEMORY_POWER_ON_STATE; + *return_device = mem_device; + + return_VALUE(result); +} + + static int acpi_memory_get_device(acpi_handle handle, struct acpi_memory_device **mem_device) @@ -118,6 +144,7 @@ acpi_handle phandle; struct acpi_device *device = NULL; struct acpi_device *pdevice = NULL; + int result; ACPI_FUNCTION_TRACE("acpi_memory_get_device"); @@ -147,14 +174,17 @@ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n")); return_VALUE(-EINVAL); } - end: *mem_device = acpi_driver_data(device); + if (!(*mem_device)) { - printk(KERN_ERR "\n driver data not found"); - return_VALUE(-ENODEV); + /* Try and get the memory_device from the current handle */ + result = acpi_memory_get_current_resource(handle,mem_device); + if (result) { + printk(KERN_ERR "\nThere is no data for this memory device\n"); + return_VALUE(-EINVAL); + } } - return_VALUE(0); } [-- Attachment #3: SSDT.dsl.gz --] [-- Type: application/x-gzip, Size: 7562 bytes --] ^ permalink raw reply [flat|nested] 26+ messages in thread
[parent not found: <20060621114334.1b954854.kamezawa.hiroyu@jp.fujitsu.com>]
[parent not found: <1150863525.7865.6.camel@keithlap>]
[parent not found: <20060621194832.37124aae.kamezawa.hiroyu@jp.fujitsu.com>]
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c [not found] ` <20060621194832.37124aae.kamezawa.hiroyu@jp.fujitsu.com> @ 2006-06-21 18:43 ` keith mannthey 2006-06-21 23:23 ` keith mannthey 0 siblings, 1 reply; 26+ messages in thread From: keith mannthey @ 2006-06-21 18:43 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, konrad, robert.moore, lhms-devel, linux acpi [-- Attachment #1: Type: text/plain, Size: 1909 bytes --] On Wed, 2006-06-21 at 19:48 +0900, KAMEZAWA Hiroyuki wrote: > On Tue, 20 Jun 2006 21:18:45 -0700 > keith mannthey <kmannth@us.ibm.com> wrote: > > > On Wed, 2006-06-21 at 11:43 +0900, KAMEZAWA Hiroyuki wrote: > > > On Tue, 20 Jun 2006 18:28:19 -0700 > > > keith mannthey <kmannth@us.ibm.com> wrote: > > > > 1. The current driver is unable to created the mem_device from the hot- > > > > add event and the hot-add fails with out adding any memory to the > > > > system. I have address_resources attached to the acpi handle but in > > > > acpi_memory_get_device calling the path of > > > > > > > > acpi_bus_get_device > > > > acpi_get_parent > > > > acpi_bus_get_device /*for parent*/ > > > > acpi_bus_add /*to created the memory device */ > > > > > > > > > > Do you know where it fails ? > > > 1st acpi_bus_get_device() fails or acpi_bus_add() doesn't allocate memory_device ? > > > > if (!acpi_bus_get_device(handle, &device) && device) > > goto end; > > fails right away. Looks like I fail later that I thought. When I apply your patch and do a hot add I see ACPI Exception (acpi_bus-0070): AE_NOT_FOUND, No context for object [ffff81017fc74240] [20060310] ACPI Exception (acpi_bus-0070): AE_NOT_FOUND, No context for object [ffff81017fc74240] [20060310] driver data not foundACPI Error (acpi_memory-0338): Cannot find driver data [20060310] (I have attaced the whole dmesg as well) This implies that I have called acpi_bus_add but didn't create the memory_device. > Could you tell me whether the device you want to add is visible in sysfs's > acpi name space before hot-add event ? > If kobject(sysfs) is registerd, it's considered as Enabled && Present. > (In my understanding) There are no off lined memory objects in sysfs after boot all memory listed is present in the system and online. -- keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM [-- Attachment #2: debug-mess --] [-- Type: text/plain, Size: 30604 bytes --] otdata ok (command line is root=/dev/sda4 vga=791 ip=9.47.66.153:9.47.66.169:9.47.66.1:255.255.255.0 resume=/dev/sda2 splash=silent showopts console=ttyS0,115200 console=tty0 earlyprintk=ttyS0,115200 debug numa=hotadd=100) Linux version 2.6.17-rc6-mm2-smp (root@linux-65o4) (gcc version 4.1.0 (SUSE Linux)) #4 SMP Wed Jun 21 14:08:13 EDT 2006 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 0000000000099c00 (usable) BIOS-e820: 0000000000099c00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000007ff8da40 (usable) BIOS-e820: 000000007ff8da40 - 000000007ff98880 (ACPI data) BIOS-e820: 000000007ff98880 - 0000000080000000 (reserved) BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved) BIOS-e820: 0000000100000000 - 0000000180000000 (usable) DMI 2.3 present. ACPI: RSDP (v000 IBM ) @ 0x00000000000fdcf0 ACPI: RSDT (v001 IBM EXA01ZEU 0x00001000 IBM 0x45444f43) @ 0x000000007ff98800 ACPI: FADT (v001 IBM EXA01ZEU 0x00001000 IBM 0x45444f43) @ 0x000000007ff98780 ACPI: MADT (v001 IBM EXA01ZEU 0x00001000 IBM 0x45444f43) @ 0x000000007ff98600 ACPI: SRAT (v001 IBM EXA01ZEU 0x00001000 IBM 0x45444f43) @ 0x000000007ff98400 ACPI: SSDT (v001 IBM VIGSSDT0 0x00001000 INTL 0x20030122) @ 0x000000007ff90800 ACPI: DSDT (v001 IBM EXA01ZEU 0x00001000 INTL 0x20030122) @ 0x0000000000000000 SRAT: PXM 0 -> APIC 0 -> Node 0 SRAT: PXM 0 -> APIC 1 -> Node 0 SRAT: PXM 0 -> APIC 2 -> Node 0 SRAT: PXM 0 -> APIC 3 -> Node 0 SRAT: PXM 0 -> APIC 38 -> Node 0 SRAT: PXM 0 -> APIC 39 -> Node 0 SRAT: PXM 0 -> APIC 36 -> Node 0 SRAT: PXM 0 -> APIC 37 -> Node 0 SRAT: PXM 0 -> APIC 16 -> Node 0 SRAT: PXM 0 -> APIC 17 -> Node 0 SRAT: PXM 0 -> APIC 18 -> Node 0 SRAT: PXM 0 -> APIC 19 -> Node 0 SRAT: PXM 0 -> APIC 54 -> Node 0 SRAT: PXM 0 -> APIC 55 -> Node 0 SRAT: PXM 0 -> APIC 52 -> Node 0 SRAT: PXM 0 -> APIC 53 -> Node 0 SRAT: Node 0 PXM 0 0-80000000 SRAT: Node 0 PXM 0 0-180000000 NUMA: Using 63 for the hash shift. Bootmem setup node 0 0000000000000000-0000000180000000 On node 0 totalpages: 1025617 DMA zone: 2700 pages, LIFO batch:0 DMA32 zone: 505797 pages, LIFO batch:31 Normal zone: 517120 pages, LIFO batch:31 ACPI: PM-Timer IO Port: 0x9c ACPI: Local APIC address 0xfee00000 ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) Processor #0 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) Processor #1 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) Processor #2 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] enabled) Processor #3 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x04] lapic_id[0x26] enabled) Processor #38 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x05] lapic_id[0x27] enabled) Processor #39 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x06] lapic_id[0x24] enabled) Processor #36 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x07] lapic_id[0x25] enabled) Processor #37 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x08] lapic_id[0x10] enabled) Processor #16 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x09] lapic_id[0x11] enabled) Processor #17 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x12] enabled) Processor #18 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x13] enabled) Processor #19 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x36] enabled) Processor #54 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x37] enabled) Processor #55 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x34] enabled) Processor #52 15:4 APIC version 20 ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x35] enabled) Processor #53 15:4 APIC version 20 ACPI: LAPIC_NMI (acpi_id[0x00] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x03] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x04] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x05] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x06] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x07] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x08] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x09] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x0a] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x0b] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x0c] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x0d] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x0e] dfl dfl lint[0x1]) ACPI: LAPIC_NMI (acpi_id[0x0f] dfl dfl lint[0x1]) ACPI: IOAPIC (id[0x0f] address[0xfec00000] gsi_base[0]) IOAPIC[0]: apic_id 15, version 17, address 0xfec00000, GSI 0-35 ACPI: IOAPIC (id[0x0e] address[0xfec01000] gsi_base[36]) IOAPIC[1]: apic_id 14, version 17, address 0xfec01000, GSI 36-71 ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) ACPI: INT_SRC_OVR (bus 0 bus_irq 8 global_irq 8 low edge) ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 low edge) ACPI: IRQ0 used by override. ACPI: IRQ2 used by override. ACPI: IRQ8 used by override. ACPI: IRQ9 used by override. ACPI: IRQ14 used by override. Setting APIC routing to clustered Using ACPI (MADT) for SMP configuration information Allocating PCI resources starting at 88000000 (gap: 80000000:7ec00000) SMP: Allowing 16 CPUs, 0 hotplug CPUs Built 1 zonelists. Total pages: 1025617 Kernel command line: root=/dev/sda4 vga=791 ip=9.47.66.153:9.47.66.169:9.47.66.1:255.255.255.0 resume=/dev/sda2 splash=silent showopts console=ttyS0,115200 console=tty0 earlyprintk=ttyS0,115200 debug numa=hotadd=100 Initializing CPU#0 PID hash table entries: 4096 (order: 12, 32768 bytes) disabling early console Console: colour dummy device 80x25 Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) Checking aperture... PCI-DMA: Calgary IOMMU detected. TCE table spec is 7. Memory: 4059856k/6291456k available (1986k kernel code, 133576k reserved, 922k data, 200k init) Calibrating delay using timer specific routine.. 6012.23 BogoMIPS (lpj=12024464)Security Framework v1.0.0 initialized Mount-cache hash table entries: 256 CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 0/0 -> Node 0 using mwait in idle threads. CPU: Physical Processor ID: 0 CPU: Processor Core ID: 0 CPU0: Thermal monitoring enabled (TM1) SMP alternatives: switching to UP code tbxface-0107 [01] load_tables : ACPI Tables successfully acquired Parsing all Control Methods: Table [DSDT](id 0006) - 176 Objects with 17 Devices 45 Methods 4 Regions Parsing all Control Methods: Table [SSDT](id 0004) - 990 Objects with 57 Devices 247 Methods 19 Regions ACPI Namespace successfully loaded at root ffffffff80551ec0 evxfevnt-0089 [02] enable : Transition to ACPI mode successful ..MP-BIOS bug: 8254 timer not connected to IO-APIC Using local APIC timer interrupts. result 10425667 Detected 10.425 MHz APIC timer. SMP alternatives: switching to SMP code Booting processor 1/16 APIC 0x1 Initializing CPU#1 Calibrating delay using timer specific routine.. 6005.50 BogoMIPS (lpj=12011002)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 1/1 -> Node 0 CPU: Physical Processor ID: 0 CPU: Processor Core ID: 0 CPU1: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU1: 00(40) CPU 1: Syncing TSC to CPU 0. CPU 1: synchronized TSC with CPU 0 (last diff -108 cycles, maxerr 927 cycles) SMP alternatives: switching to SMP code Booting processor 2/16 APIC 0x2 Initializing CPU#2 Calibrating delay using timer specific routine.. 6005.65 BogoMIPS (lpj=12011309)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 2/2 -> Node 0 CPU: Physical Processor ID: 0 CPU: Processor Core ID: 1 CPU2: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU2: 00(40) CPU 2: Syncing TSC to CPU 0. CPU 2: synchronized TSC with CPU 0 (last diff -45 cycles, maxerr 1602 cycles) SMP alternatives: switching to SMP code Booting processor 3/16 APIC 0x3 Initializing CPU#3 Calibrating delay using timer specific routine.. 6005.61 BogoMIPS (lpj=12011237)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 3/3 -> Node 0 CPU: Physical Processor ID: 0 CPU: Processor Core ID: 1 CPU3: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU3: 00(40) CPU 3: Syncing TSC to CPU 0. CPU 3: synchronized TSC with CPU 0 (last diff 45 cycles, maxerr 1602 cycles) SMP alternatives: switching to SMP code Booting processor 4/16 APIC 0x26 Initializing CPU#4 Calibrating delay using timer specific routine.. 6005.66 BogoMIPS (lpj=12011335)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 4/26 -> Node 0 CPU: Physical Processor ID: 9 CPU: Processor Core ID: 1 CPU4: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU4: 00(40) CPU 4: Syncing TSC to CPU 0. CPU 4: synchronized TSC with CPU 0 (last diff 31 cycles, maxerr 1593 cycles) SMP alternatives: switching to SMP code Booting processor 5/16 APIC 0x27 Initializing CPU#5 Calibrating delay using timer specific routine.. 6005.72 BogoMIPS (lpj=12011441)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 5/27 -> Node 0 CPU: Physical Processor ID: 9 CPU: Processor Core ID: 1 CPU5: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU5: 00(40) CPU 5: Syncing TSC to CPU 0. CPU 5: synchronized TSC with CPU 0 (last diff 14 cycles, maxerr 1602 cycles) SMP alternatives: switching to SMP code Booting processor 6/16 APIC 0x24 Initializing CPU#6 Calibrating delay using timer specific routine.. 6005.78 BogoMIPS (lpj=12011566)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 6/24 -> Node 0 CPU: Physical Processor ID: 9 CPU: Processor Core ID: 0 CPU6: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU6: 00(40) CPU 6: Syncing TSC to CPU 0. CPU 6: synchronized TSC with CPU 0 (last diff 81 cycles, maxerr 1746 cycles) SMP alternatives: switching to SMP code Booting processor 7/16 APIC 0x25 Initializing CPU#7 Calibrating delay using timer specific routine.. 6005.72 BogoMIPS (lpj=12011456)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 7/25 -> Node 0 CPU: Physical Processor ID: 9 CPU: Processor Core ID: 0 CPU7: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU7: 00(40) CPU 7: Syncing TSC to CPU 0. CPU 7: synchronized TSC with CPU 0 (last diff 14 cycles, maxerr 1602 cycles) SMP alternatives: switching to SMP code Booting processor 8/16 APIC 0x10 Initializing CPU#8 Calibrating delay using timer specific routine.. 6005.72 BogoMIPS (lpj=12011458)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 8/10 -> Node 0 CPU: Physical Processor ID: 4 CPU: Processor Core ID: 0 CPU8: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU8: 00(40) CPU 8: Syncing TSC to CPU 0. CPU 8: synchronized TSC with CPU 0 (last diff -9 cycles, maxerr 2340 cycles) SMP alternatives: switching to SMP code Booting processor 9/16 APIC 0x11 Initializing CPU#9 Calibrating delay using timer specific routine.. 6005.71 BogoMIPS (lpj=12011423)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 9/11 -> Node 0 CPU: Physical Processor ID: 4 CPU: Processor Core ID: 0 CPU9: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU9: 00(40) CPU 9: Syncing TSC to CPU 0. CPU 9: synchronized TSC with CPU 0 (last diff 9 cycles, maxerr 2358 cycles) SMP alternatives: switching to SMP code Booting processor 10/16 APIC 0x12 Initializing CPU#10 Calibrating delay using timer specific routine.. 6005.73 BogoMIPS (lpj=12011471)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 10/12 -> Node 0 CPU: Physical Processor ID: 4 CPU: Processor Core ID: 1 CPU10: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU10: 00(40) CPU 10: Syncing TSC to CPU 0. CPU 10: synchronized TSC with CPU 0 (last diff 22 cycles, maxerr 2367 cycles) SMP alternatives: switching to SMP code Booting processor 11/16 APIC 0x13 Initializing CPU#11 Calibrating delay using timer specific routine.. 6005.68 BogoMIPS (lpj=12011361)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 11/13 -> Node 0 CPU: Physical Processor ID: 4 CPU: Processor Core ID: 1 CPU11: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU11: 00(40) CPU 11: Syncing TSC to CPU 0. CPU 11: synchronized TSC with CPU 0 (last diff 18 cycles, maxerr 2340 cycles) SMP alternatives: switching to SMP code Booting processor 12/16 APIC 0x36 Initializing CPU#12 Calibrating delay using timer specific routine.. 6005.62 BogoMIPS (lpj=12011244)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 12/36 -> Node 0 CPU: Physical Processor ID: 13 CPU: Processor Core ID: 1 CPU12: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU12: 00(40) CPU 12: Syncing TSC to CPU 0. CPU 12: synchronized TSC with CPU 0 (last diff 9 cycles, maxerr 2358 cycles) SMP alternatives: switching to SMP code Booting processor 13/16 APIC 0x37 Initializing CPU#13 Calibrating delay using timer specific routine.. 6005.73 BogoMIPS (lpj=12011478)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 13/37 -> Node 0 CPU: Physical Processor ID: 13 CPU: Processor Core ID: 1 CPU13: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU13: 00(40) CPU 13: Syncing TSC to CPU 0. CPU 13: synchronized TSC with CPU 0 (last diff 2 cycles, maxerr 2340 cycles) SMP alternatives: switching to SMP code Booting processor 14/16 APIC 0x34 Initializing CPU#14 Calibrating delay using timer specific routine.. 6005.74 BogoMIPS (lpj=12011491)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 14/34 -> Node 0 CPU: Physical Processor ID: 13 CPU: Processor Core ID: 0 CPU14: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU14: 00(40) CPU 14: Syncing TSC to CPU 0. CPU 14: synchronized TSC with CPU 0 (last diff -18 cycles, maxerr 2304 cycles) SMP alternatives: switching to SMP code Booting processor 15/16 APIC 0x35 Initializing CPU#15 Calibrating delay using timer specific routine.. 6005.70 BogoMIPS (lpj=12011410)CPU: Trace cache: 12K uops, L1 D cache: 16K CPU: L2 cache: 2048K CPU 15/35 -> Node 0 CPU: Physical Processor ID: 13 CPU: Processor Core ID: 0 CPU15: Thermal monitoring enabled (TM1) Genuine Intel(R) CPU 3.00GHz stepping 08 APIC error on CPU15: 00(40) CPU 15: Syncing TSC to CPU 0. CPU 15: synchronized TSC with CPU 0 (last diff 5 cycles, maxerr 2340 cycles) Brought up 16 CPUs testing NMI watchdog ... OK. Disabling vsyscall due to use of PM timer time.c: Using 3.579545 MHz WALL PM GTOD PM timer. time.c: Detected 3002.623 MHz processor. migration_cost=22,1525 checking if image is initramfs... it is Freeing initrd memory: 2855k freed NET: Registered protocol family 16 ACPI: bus type pci registered PCI: Using configuration type 1 ACPI: Subsystem revision 20060310 evgpeblk-0951 [04] ev_create_gpe_block : GPE 00 to 1F [_GPE] 4 regs on int 0x9evgpeblk-0951 [04] ev_create_gpe_block : GPE 20 to 3F [_GPE] 4 regs on int 0x9evgpeblk-1048 [03] ev_initialize_gpe_bloc: Found 0 Wake, Enabled 0 Runtime GPEs in this block evgpeblk-1048 [03] ev_initialize_gpe_bloc: Found 0 Wake, Enabled 2 Runtime GPEs in this block Completing Region/Field/Buffer/Package initialization:........................................................................................................... Initialized 23/23 Regions 16/16 Fields 33/33 Buffers 35/35 Packages (1175 nodes)Executing all Device _STA and_INI methods:............................................................................................ 92 Devices found - executed 1 _STA, 9 _INI methods ACPI: Interpreter enabled ACPI: Using IOAPIC for interrupt routing ACPI: PCI Root Bridge [VP00] (0000:00) PCI: Probing PCI hardware (bus 00) Boot video device is 0000:00:01.0 PCI: Ignoring BAR0-3 of IDE controller 0000:00:0f.1 ACPI: PCI Interrupt Routing Table [\_SB_.VP00._PRT] ACPI: PCI Root Bridge [VP01] (0000:01) PCI: Probing PCI hardware (bus 01) ACPI: PCI Interrupt Routing Table [\_SB_.VP01._PRT] ACPI: PCI Root Bridge [VP02] (0000:02) PCI: Probing PCI hardware (bus 02) ACPI: PCI Interrupt Routing Table [\_SB_.VP02._PRT] ACPI: PCI Root Bridge [VP03] (0000:04) PCI: Probing PCI hardware (bus 04) ACPI: PCI Interrupt Routing Table [\_SB_.VP03._PRT] ACPI: PCI Root Bridge [VP04] (0000:06) PCI: Probing PCI hardware (bus 06) ACPI: PCI Interrupt Routing Table [\_SB_.VP04._PRT] ACPI: PCI Root Bridge [VP05] (0000:08) PCI: Probing PCI hardware (bus 08) ACPI: PCI Interrupt Routing Table [\_SB_.VP05._PRT] ACPI: PCI Root Bridge [VP06] (0000:0a) PCI: Probing PCI hardware (bus 0a) ACPI: PCI Interrupt Routing Table [\_SB_.VP06._PRT] ACPI: PCI Root Bridge [VP07] (0000:0c) PCI: Probing PCI hardware (bus 0c) ACPI: PCI Interrupt Routing Table [\_SB_.VP07._PRT] PCI: Using ACPI for IRQ routing PCI: If a device doesn't work, try "pci=routeirq". If it helps, post a report TC classifier action (bugs to netdev@vger.kernel.org cc hadi@cyberus.ca) PCI-DMA: Using Calgary IOMMU Calgary: enabling translation on PHB 0 Calgary: errant DMAs will now be prevented on this bus. Calgary: enabling translation on PHB 1 Calgary: errant DMAs will now be prevented on this bus. Calgary: enabling translation on PHB 4 Calgary: errant DMAs will now be prevented on this bus. Calgary: enabling translation on PHB 6 Calgary: errant DMAs will now be prevented on this bus. PCI-GART: No AMD northbridge found. PCI: Bridge: 0000:06:01.0 IO window: disabled. MEM window: ec500000-ec5fffff PREFETCH window: 88100000-881fffff ACPI (acpi_bus-0192): Device [S3F0] is not power manageable [20060310] NET: Registered protocol family 2 IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) TCP established hash table entries: 262144 (order: 10, 4194304 bytes) TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) TCP: Hash tables configured (established 262144 bind 65536) TCP reno registered audit: initializing netlink socket (disabled) audit(1150914281.504:1): initialized Total HugeTLB memory allocated, 0 VFS: Disk quotas dquot_6.5.1 Dquot-cache hash table entries: 512 (order 0, 4096 bytes) Initializing Cryptographic API io scheduler noop registered io scheduler anticipatory registered io scheduler deadline registered io scheduler cfq registered (default) vesafb: framebuffer at 0xe0000000, mapped to 0xffffc20000680000, using 3072k, total 16384k vesafb: mode is 1024x768x16, linelength=2048, pages=9 vesafb: scrolling: redraw vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0 Console: switching to colour frame buffer device 128x48 fb0: VESA VGA frame buffer device ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] ACPI Exception (acpi_memory-0492): AE_ERROR, handle is no memory device [20060310] Real Time Clock Driver v1.12ac Non-volatile memory driver v1.2 Linux agpgart interface v0.101 (c) Dave Jones Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A RAMDISK driver initialized: 16 RAM disks of 128000K size 1024 blocksize serio: i8042 AUX port at 0x60,0x64 irq 12 serio: i8042 KBD port at 0x60,0x64 irq 1 mice: PS/2 mouse device common for all mice input: PC Speaker as /class/input/input0 input: AT Translated Set 2 keyboard as /class/input/input1 md: md driver 0.90.3 MAX_MD_DEVS=256, MD_SB_DISKS=27 md: bitmap version 4.39 NET: Registered protocol family 1 ACPI: (supports S0 S5) Freeing unused kernel memory: 200k freed Write protecting the kernel read-only data: 395k logips2pp: Detected unknown logitech mouse model 1 Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 input: PS/2 Logitech Mouse as /class/input/input2 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx SCSI subsystem initialized SvrWks CSB6: IDE controller at PCI slot 0000:00:0f.1 SvrWks CSB6: chipset revision 160 SvrWks CSB6: not 100% native mode: will probe irqs later ide0: BM-DMA at 0x0700-0x0707, BIOS settings: hda:DMA, hdb:DMA SvrWks CSB6: simplex device: DMA disabled ide1: SvrWks CSB6 Bus-Master DMA disabled (BIOS) Probing IDE interface ide0... hda: HL-DT-STDVD-ROM GDR8082N, ATAPI CD/DVD-ROM drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 Probing IDE interface ide1... Adaptec aacraid driver (1.1-5[2409]-mh1) GSI 16 sharing vector 0xA9 and IRQ 16 ACPI: PCI Interrupt 0000:01:02.0[A] -> GSI 25 (level, low) -> IRQ 169 AAC0: kernel 5.0-2[8264] AAC0: monitor 5.0-2[8264] AAC0: bios 5.0-2[8264] AAC0: serial 155fe5 AAC0: 64bit support enabled. AAC0: 64 Bit DAC enabled scsi0 : ServeRAID Vendor: IBM Model: Serve Volume Rev: V1.0 Type: Direct-Access ANSI SCSI revision: 02 SCSI device sda: 70840192 512-byte hdwr sectors (36270 MB) sda: assuming Write Enabled sda: assuming drive cache: write through SCSI device sda: 70840192 512-byte hdwr sectors (36270 MB) sda: assuming Write Enabled sda: assuming drive cache: write through sda: sda1 sda2 sda3 sda4 sd 0:0:1:0: Attached scsi removable disk sda sd 0:0:1:0: Attached scsi generic sg0 type 0 BIOS EDD facility v0.16 2004-Jun-25, 1 devices found ReiserFS: sda4: found reiserfs format "3.6" with standard journal Losing some ticks... checking if CPU frequency changed. ReiserFS: sda4: using ordered data mode ReiserFS: sda4: journal params: device sda4, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30 ReiserFS: sda4: checking transaction log (sda4) ReiserFS: sda4: Using r5 hash to sort names Adding 2104504k swap on /dev/sda2. Priority:-1 extents:1 across:2104504k tg3.c:v3.59 (May 26, 2006) GSI 17 sharing vector 0xB1 and IRQ 17 ACPI: PCI Interrupt 0000:01:01.0[A] -> GSI 24 (level, low) -> IRQ 177 eth0: Tigon3 [partno(BCM95704A6) rev 2100 PHY(5704)] (PCIX:66MHz:64-bit) 10/100/1000BaseT Ethernet 00:0d:60:98:0c:20 eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[1] Split[0] WireSpeed[1] TSOcap[0] eth0: dma_rwctrl[769f0000] dma_mask[64-bit] GSI 18 sharing vector 0xB9 and IRQ 18 ACPI: PCI Interrupt 0000:01:01.1[B] -> GSI 28 (level, low) -> IRQ 185 eth1: Tigon3 [partno(BCM95704A6) rev 2100 PHY(5704)] (PCIX:66MHz:64-bit) 10/100/1000BaseT Ethernet 00:0d:60:98:0c:21 eth1: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] Split[0] WireSpeed[1] TSOcap[1] eth1: dma_rwctrl[769f0000] dma_mask[64-bit] device-mapper: 4.6.0-ioctl (2006-02-17) initialised: dm-devel@redhat.com loop: loaded (max 8 devices) NET: Registered protocol family 10 lo: Disabled Privacy Extensions IPv6 over IPv4 tunneling driver ip6_tables: (C) 2000-2006 Netfilter Core Team ip_tables: (C) 2000-2006 Netfilter Core Team Netfilter messages via NETLINK v0.30. ip_conntrack version 2.4 (8192 buckets, 65536 max) - 288 bytes per conntrack ACPI: Power Button (FF) [PWRF] PM: Writing back config space on device 0000:01:01.0 at offset b (was 164814e4, writing 2e71014) PM: Writing back config space on device 0000:01:01.0 at offset 3 (was 804000, writing 80f010) PM: Writing back config space on device 0000:01:01.0 at offset 2 (was 2000000, writing 2000010) PM: Writing back config space on device 0000:01:01.0 at offset 1 (was 2b00000, writing 2b00146) ADDRCONF(NETDEV_UP): eth0: link is not ready audit(1150914305.764:2): audit_pid=3387 old=0 by auid=4294967295 tg3: eth0: Link is up at 100 Mbps, full duplex. tg3: eth0: Flow control is on for TX and on for RX. ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready IA-32 Microcode Update Driver: v1.14a <tigran@veritas.com> acpi_processor-0731 [00] processor_preregister_: Error while parsing _PSD domain information. Assuming no coordination acpi_processor-0731 [00] processor_preregister_: Error while parsing _PSD domain information. Assuming no coordination eth0: no IPv6 routers present ACPI Exception (acpi_bus-0070): AE_NOT_FOUND, No context for object [ffff81017fc74240] [20060310] ACPI Exception (acpi_bus-0070): AE_NOT_FOUND, No context for object [ffff81017fc74240] [20060310] driver data not foundACPI Error (acpi_memory-0338): Cannot find driver data [20060310] ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-21 18:43 ` [Lhms-devel] [RFC] Patch [1/2] " keith mannthey @ 2006-06-21 23:23 ` keith mannthey 2006-06-22 0:13 ` KAMEZAWA Hiroyuki 0 siblings, 1 reply; 26+ messages in thread From: keith mannthey @ 2006-06-21 23:23 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, lhms-devel, konrad, robert.moore On Wed, 2006-06-21 at 11:43 -0700, keith mannthey wrote: > On Wed, 2006-06-21 at 19:48 +0900, KAMEZAWA Hiroyuki wrote: > > On Tue, 20 Jun 2006 21:18:45 -0700 > > keith mannthey <kmannth@us.ibm.com> wrote: > > > > > On Wed, 2006-06-21 at 11:43 +0900, KAMEZAWA Hiroyuki wrote: > > > > On Tue, 20 Jun 2006 18:28:19 -0700 > > > > keith mannthey <kmannth@us.ibm.com> wrote: > > > > > 1. The current driver is unable to created the mem_device from the hot- > > > > > add event and the hot-add fails with out adding any memory to the > > > > > system. I have address_resources attached to the acpi handle but in > > > > > acpi_memory_get_device calling the path of > > > > > > > > > > acpi_bus_get_device > > > > > acpi_get_parent > > > > > acpi_bus_get_device /*for parent*/ > > > > > acpi_bus_add /*to created the memory device */ > > > > > > > > > > > > > Do you know where it fails ? Update. I have moved to 2.6.17-rc6-mm2 to work with the development acpi_memhotplug driver there. I have added various debug statements and this is what I know. acpi_memory_get_device calls acpi_bus_add acpi_bus_add calls acpi_add_single_object (fails) acpi_add_single_object passes acpi_bus_get_flags finds the device present passes acpi_device_set_context calls acpi_device_register after calling acpi_bus_find_driver ends up if (!result) *child = device; and returns. I do know know much of the call path of what acpi_bus_scan called from acpi_bus_add does but the result from acpi_bus_add is not an ACPI_FAILURE. There is still no memory_device attached to the device and the same condition occurs (no memory_device added). I patched 2.6.17-rc6-mm2 with my patch to check out the rest of the driver and the system Oopsed. Calling acpi_memory_get_resource caused a panic (where as this call structure in the non -mm driver works). Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP: [<ffffffff80345bf8>] acpi_memory_get_resource+0x5b/0xdb PGD 0 Oops: 0000 [2] SMP last sysfs file: /devices/pci0000:00/0000:00:01.0/resource CPU 1 Modules linked in: xt_pkttype ipt_LOG xt_limit acpi_cpufreq freq_table button battery ac ip6t_REJECT xt_tcpudp ipt_REJECT xt_state iptable_mangle iptable_nat ip_nat iptable_filter ip6table_mangle ip_conntrack nfnetlink ip_tables ip6table_filter ip6_tables x_tables ipv6 loop dm_mod tg3 reiserfs edd fan thermal processor sg ips aacraid serverworks sd_mod scsi_mod ide_disk ide_core Pid: 4282, comm: kacpid_notify Not tainted 2.6.17-rc6-mm2-smp #10 RIP: 0010:[<ffffffff80345bf8>] [<ffffffff80345bf8>] acpi_memory_get_resource+0x5b/0xdb RSP: 0018:ffff81017b44dda8 EFLAGS: 00010246 RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000 RDX: ffffffff8040b040 RSI: 0000000200000000 RDI: ffff81017b440001 RBP: ffff81017e0f4580 R08: ffff81017b440000 R09: ffffffff8042983e R10: ffff81017f6044c0 R11: ffffffff8042a921 R12: ffffffff80428e41 R13: ffff81017ff8cc5c R14: ffffffff80345b9d R15: ffff81017e0f4580 FS: 0000000000000000(0000) GS:ffff81017fcb1ac0(0000) knlGS:0000000000000000 CS: 0010 DS: 0018 ES: 0018 CR0: 000000008005003b CR2: 0000000000000000 CR3: 0000000000201000 CR4: 00000000000006e0 Process kacpid_notify (pid: 4282, threadinfo ffff81017b44c000, task ffff81017d1957d0) Stack: 0000010101000000 0000000000000000 0000020000000000 0000027fffffff00 0000000000000000 0000008000000000 0000000000000000 ffffffff00000000 ffff81017fc74240 ffff81017ff8cbc0 Call Trace: [<ffffffff803348c2>] acpi_walk_resources+0xf3/0x152 [<ffffffff8024402d>] keventd_create_kthread+0x0/0x61 [<ffffffff803453b2>] acpi_memory_get_device_resources+0x22/0x50 [<ffffffff80345930>] acpi_memory_device_notify+0x1c5/0x3ef [<ffffffff8032ce3d>] acpi_get_data+0x5d/0x6e [<ffffffff8031379b>] acpi_os_execute_thread+0x0/0x1e [<ffffffff8031379b>] acpi_os_execute_thread+0x0/0x1e [<ffffffff8031d5ce>] acpi_ev_notify_dispatch+0x5c/0x65 [<ffffffff803137aa>] acpi_os_execute_thread+0xf/0x1e [<ffffffff8024417a>] kthread+0xec/0x120 [<ffffffff8020a122>] child_rip+0x8/0x12 [<ffffffff8024402d>] keventd_create_kthread+0x0/0x61 [<ffffffff8024408e>] kthread+0x0/0x120 [<ffffffff8020a11a>] child_rip+0x0/0x12 Code: 48 8b 0b 0f 18 09 48 8d 45 10 48 39 c3 75 d1 48 8b 3d 52 1b RIP [<ffffffff80345bf8>] acpi_memory_get_resource+0x5b/0xdb RSP <ffff81017b44dda8> CR2: 0000000000000000 -- keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-21 23:23 ` keith mannthey @ 2006-06-22 0:13 ` KAMEZAWA Hiroyuki 2006-06-22 1:37 ` keith mannthey 0 siblings, 1 reply; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2006-06-22 0:13 UTC (permalink / raw) To: kmannth; +Cc: prarit, linux-acpi, robert.moore, darnok, lhms-devel On Wed, 21 Jun 2006 16:23:47 -0700 keith mannthey <kmannth@us.ibm.com> wrote: > Update. I have moved to 2.6.17-rc6-mm2 to work with the development > acpi_memhotplug driver there. I have added various debug statements and > this is what I know. > Thanks, looks informative. > acpi_memory_get_device calls acpi_bus_add > acpi_bus_add calls acpi_add_single_object (fails) > acpi_add_single_object passes acpi_bus_get_flags > finds the device present > passes acpi_device_set_context > calls acpi_device_register > after calling acpi_bus_find_driver > ends up > if (!result) *child = device; > and returns. > Then, "acpi_device" itself is added, but no driver data. acpi_add_single_object doesn't check return value of acpi_bus_find_driver(), as you know. So... === static int acpi_bus_find_driver(struct acpi_device *device) { <snip> list_for_each_safe(node, next, &acpi_bus_drivers) { <snip> if (!acpi_bus_match(device, driver)) { (*)----------- result = acpi_bus_driver_init(device, driver); if (!result) goto Done; } .... } === Next check point is: - acpi_bus_driver_init() is called or not - what acpi_bus_driver_init() returns in acpi_bus_driver_init() - driver->ops.add() is called or not - what it retruns int acpi_memory_device_add() - it is called or not - why this fails. If we can find why acpi_bus_driver_init() fails or is not called, we can find the problem , I think. -Kame ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 0:13 ` KAMEZAWA Hiroyuki @ 2006-06-22 1:37 ` keith mannthey 2006-06-22 1:58 ` KAMEZAWA Hiroyuki 0 siblings, 1 reply; 26+ messages in thread From: keith mannthey @ 2006-06-22 1:37 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, robert.moore, konrad, lhms-devel On Thu, 2006-06-22 at 09:13 +0900, KAMEZAWA Hiroyuki wrote: > On Wed, 21 Jun 2006 16:23:47 -0700 > keith mannthey <kmannth@us.ibm.com> wrote: > > Update. I have moved to 2.6.17-rc6-mm2 to work with the development > > acpi_memhotplug driver there. I have added various debug statements and > > this is what I know. > > > Thanks, looks informative. > > > acpi_memory_get_device calls acpi_bus_add > > acpi_bus_add calls acpi_add_single_object (fails) > > acpi_add_single_object passes acpi_bus_get_flags > > finds the device present > > passes acpi_device_set_context > > calls acpi_device_register > > after calling acpi_bus_find_driver > > ends up > > if (!result) *child = device; > > and returns. > > > > Then, "acpi_device" itself is added, but no driver data. > acpi_add_single_object doesn't check return value of acpi_bus_find_driver(), > as you know. So... > === > static int acpi_bus_find_driver(struct acpi_device *device) > { > <snip> > list_for_each_safe(node, next, &acpi_bus_drivers) { > <snip> > if (!acpi_bus_match(device, driver)) { > (*)----------- result = acpi_bus_driver_init(device, driver); > if (!result) > goto Done; > } > .... > } > === > Next check point is: > - acpi_bus_driver_init() is called or not > - what acpi_bus_driver_init() returns result = acpi_bus_driver_init(device, driver); if (!result) goto Done; I goto Done. > in acpi_bus_driver_init() > - driver->ops.add() is called or not > - what it retruns It is called. But that is not the whole story. In acpi_bus_driver_init it calls driver->ops.add(device). This ops.add is not acpi_memory_device_add. I do get not any printks that I would expect from acpi_memory_device_add. If I print out in acpi_bus_driver_init printk(" device_add() about %s\n",acpi_device_name(device)); result = driver->ops.add(device); The device name is null. I don't think the device / driver combo that has been passed in are the right ones. > int acpi_memory_device_add() > - it is called or not > - why this fails. This is not called. After acpi_bus_driver_init calls the unknown .add it returns successfully. it sets device->driver = driver; and return 0; Maybe I am picking the wrong driver from list_for_each_safe(node, next, &acpi_bus_drivers) in acpi_bus_find_driver? Thanks for your help. -- keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 1:37 ` keith mannthey @ 2006-06-22 1:58 ` KAMEZAWA Hiroyuki 2006-06-22 2:19 ` keith mannthey 2006-06-22 2:28 ` keith mannthey 0 siblings, 2 replies; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2006-06-22 1:58 UTC (permalink / raw) To: kmannth; +Cc: prarit, linux-acpi, lhms-devel, robert.moore, darnok On Wed, 21 Jun 2006 18:37:00 -0700 keith mannthey <kmannth@us.ibm.com> wrote: > > in acpi_bus_driver_init() > > - driver->ops.add() is called or not > > - what it retruns > > It is called. But that is not the whole story. > In acpi_bus_driver_init it calls driver->ops.add(device). This ops.add > is not acpi_memory_device_add. I do get not any printks that I would > expect from acpi_memory_device_add. > > If I print out in acpi_bus_driver_init > printk(" device_add() about %s\n",acpi_device_name(device)); > result = driver->ops.add(device); > Good Catch :) Then, could you print driver name ? like this == printk("Call Add driver for name %s/class %s/id %s\n",driver->name,driver->class,driver->id); == > Maybe I am picking the wrong driver from list_for_each_safe(node, next, &acpi_bus_drivers) > in acpi_bus_find_driver? > looks so...BTW, your acpi_memhotplug driver is a module or built-in ? -Kame ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 1:58 ` KAMEZAWA Hiroyuki @ 2006-06-22 2:19 ` keith mannthey 2006-06-22 3:13 ` KAMEZAWA Hiroyuki 2006-06-22 2:28 ` keith mannthey 1 sibling, 1 reply; 26+ messages in thread From: keith mannthey @ 2006-06-22 2:19 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, lhms-devel, robert.moore, konrad On Thu, 2006-06-22 at 10:58 +0900, KAMEZAWA Hiroyuki wrote: > On Wed, 21 Jun 2006 18:37:00 -0700 > keith mannthey <kmannth@us.ibm.com> wrote: > > > > in acpi_bus_driver_init() > > > - driver->ops.add() is called or not > > > - what it retruns > > > > It is called. But that is not the whole story. > > In acpi_bus_driver_init it calls driver->ops.add(device). This ops.add > > is not acpi_memory_device_add. I do get not any printks that I would > > expect from acpi_memory_device_add. > > > > If I print out in acpi_bus_driver_init > > printk(" device_add() about %s\n",acpi_device_name(device)); > > result = driver->ops.add(device); > > > Good Catch :) > > Then, could you print driver name ? like this > == > printk("Call Add driver for name %s/class %s/id %s\n",driver->name,driver->class,driver->id); > == Good idea! During the hot add I see. Call Add driver for name motherboard/class /id PNP0C01 That is the wrong driver for sure. > > > Maybe I am picking the wrong driver from list_for_each_safe(node, next, &acpi_bus_drivers) > > in acpi_bus_find_driver? > > > looks so...BTW, your acpi_memhotplug driver is a module or built-in ? Built-in. Thanks. -- keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 2:19 ` keith mannthey @ 2006-06-22 3:13 ` KAMEZAWA Hiroyuki 2006-06-22 3:55 ` keith mannthey 0 siblings, 1 reply; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2006-06-22 3:13 UTC (permalink / raw) To: kmannth; +Cc: prarit, linux-acpi, lhms-devel, robert.moore, darnok On Wed, 21 Jun 2006 19:19:58 -0700 keith mannthey <kmannth@us.ibm.com> wrote: > > Good Catch :) > > > > Then, could you print driver name ? like this > > == > > printk("Call Add driver for name %s/class %s/id %s\n",driver->name,driver->class,driver->id); > > == > > Good idea! > During the hot add I see. > Call Add driver for name motherboard/class /id PNP0C01 > > That is the wrong driver for sure. Hmm....curious..but no idead.. Then, could try this ? -Kame == Index: linux-2.6.17-rc6-mm2/drivers/acpi/scan.c =================================================================== --- linux-2.6.17-rc6-mm2.orig/drivers/acpi/scan.c +++ linux-2.6.17-rc6-mm2/drivers/acpi/scan.c @@ -227,6 +227,20 @@ static int acpi_bus_get_power_flags(stru return 0; } +int acpi_print_all_ids(struct acpi_device *device) +{ + printk("check BusID%s/ HID%s/ UID%s", + acpi_device_bid(device),acpi_device_hid(device), + acpi_device_uid(device)); + if (device->flags.compatible_ids) { + struct acpi_compatible_id_list *cid_list = device->pnp.cid_list; + int i; + for (i = 0; i < cid_list->count; i++) + printk("CID %s ",cid_list->id[i].value); + } + printk("\n"); +} + int acpi_match_ids(struct acpi_device *device, char *ids) { if (device->flags.hardware_id) @@ -487,6 +501,8 @@ acpi_bus_driver_init(struct acpi_device if (!driver->ops.add) return -ENOSYS; + printk("acpi_bus_driver_init() driver is %s\n", driver->name); + acpi_print_all_ids(device); result = driver->ops.add(device); if (result) { ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 3:13 ` KAMEZAWA Hiroyuki @ 2006-06-22 3:55 ` keith mannthey 2006-06-22 5:20 ` KAMEZAWA Hiroyuki 0 siblings, 1 reply; 26+ messages in thread From: keith mannthey @ 2006-06-22 3:55 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, konrad, robert.moore, lhms-devel [-- Attachment #1: Type: text/plain, Size: 1178 bytes --] On Thu, 2006-06-22 at 12:13 +0900, KAMEZAWA Hiroyuki wrote: > On Wed, 21 Jun 2006 19:19:58 -0700 > keith mannthey <kmannth@us.ibm.com> wrote: > > > Good Catch :) > > > > > > Then, could you print driver name ? like this > > > == > > > printk("Call Add driver for name %s/class %s/id %s\n",driver->name,driver->class,driver->id); > > > == > > > > Good idea! > > During the hot add I see. > > Call Add driver for name motherboard/class /id PNP0C01 > > > > That is the wrong driver for sure. > > Hmm....curious..but no idead.. > Then, could try this ? I am trying to make the motherboard driver fail with it looks for resources and finds node. The motherboard add function alway returns AE_OK which is why the algorithm fails. See attached patch it allows the hot-add event to happen. With the event happening and I see Call Add driver for name Hotplug Mem Driver/class memory/id PNP0C80 acpi-memhotplug: device_add() called acpi-memhotplug: kmalloc mem_device success acpi-memhotplug: read CRS success But then On node -1 totalpages: 0 How do I tell if my event has the right _PXM data or what ever is needed? Signed-off-by: Keith Mannthey <kmannth@us.ibm.com> [-- Attachment #2: patch-acpi-motherboard-v1.patch --] [-- Type: text/x-patch, Size: 685 bytes --] --- linux-2.6.17-rc6-mm2-orig/drivers/acpi/motherboard.c 2006-06-21 23:35:26.000000000 -0400 +++ linux-2.6.17-rc6-mm2/drivers/acpi/motherboard.c 2006-06-21 23:04:44.000000000 -0400 @@ -86,6 +86,7 @@ } } else { /* Memory mapped IO? */ + return -EINVAL; } if (requested_res) @@ -95,12 +96,14 @@ static int acpi_motherboard_add(struct acpi_device *device) { + acpi_status status; if (!device) return -EINVAL; - acpi_walk_resources(device->handle, METHOD_NAME__CRS, + + status = acpi_walk_resources(device->handle, METHOD_NAME__CRS, acpi_reserve_io_ranges, NULL); - return 0; + return status; } static struct acpi_driver acpi_motherboard_driver1 = { ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 3:55 ` keith mannthey @ 2006-06-22 5:20 ` KAMEZAWA Hiroyuki 2006-06-22 6:11 ` KAMEZAWA Hiroyuki ` (2 more replies) 0 siblings, 3 replies; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2006-06-22 5:20 UTC (permalink / raw) To: kmannth; +Cc: prarit, linux-acpi, darnok, robert.moore, lhms-devel [-- Attachment #1: Type: text/plain, Size: 1525 bytes --] On Wed, 21 Jun 2006 20:55:02 -0700 keith mannthey <kmannth@us.ibm.com> wrote: > > Hmm....curious..but no idead.. > > Then, could try this ? > > I am trying to make the motherboard driver fail with it looks for > resources and finds node. The motherboard add function alway returns > AE_OK which is why the algorithm fails. See attached patch it allows the > hot-add event to happen. > > With the event happening and I see > Um...my concern is - When notify comes, memory hotplug driver is called. - but at acpi_bus_add(), PNP0C01 motherboad driver is attached to the device. I think something is wrong....from your SSDT, ME00 and ME01 memory device has valid HID, PNP0C80. == Device (ME01) { Name (_HID, EisaId ("PNP0C80")) Name (_CID, 0x010CD041) == What I imagine now is. - acpi_memory_device_init() -> acpi_memory_register_notify_handler() installs notify handler for memory hotplug against device handle of memory This doesn't check _CID. - acpi_bus_add() attachs motherboard driver because of CID. Above _CID is 32bit compressed EISA-type ID (HID is string but..), it is PNP0C01...motherboad driver is called before PNP0C80 driver. (to covert 32bit ID to string, see acpi_ex_eisa_id_to_string(), I attached program.) Then what we should do here is...call HID:PNP0C80 driver instead if CID:PNP0C01 driver. Because it has driver for HID, calling driver for CID looks not good. (But we have to ask acpi people about this..) I'll try to write a patch. -Kame [-- Attachment #2: foo.c --] [-- Type: text/x-csrc, Size: 1650 bytes --] #include <stdio.h> typedef unsigned long u32; typedef unsigned char u8; static const char acpi_gbl_hex_to_ascii[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char acpi_ut_hex_to_ascii_char(unsigned long integer, unsigned long position) { return (acpi_gbl_hex_to_ascii[(integer >> position) & 0xF]); } u32 acpi_ut_dword_byte_swap(u32 value) { union { u32 value; u8 bytes[4]; } out; union { u32 value; u8 bytes[4]; } in; in.value = value; out.bytes[0] = in.bytes[3]; out.bytes[1] = in.bytes[2]; out.bytes[2] = in.bytes[1]; out.bytes[3] = in.bytes[0]; return (out.value); } void acpi_ex_eisa_id_to_string(unsigned long numeric_id, char *out_string) { unsigned long eisa_id; /* Swap ID to big-endian to get contiguous bits */ eisa_id = acpi_ut_dword_byte_swap(numeric_id); out_string[0] = (char)('@' + (((unsigned long)eisa_id >> 26) & 0x1f)); out_string[1] = (char)('@' + ((eisa_id >> 21) & 0x1f)); out_string[2] = (char)('@' + ((eisa_id >> 16) & 0x1f)); out_string[3] = acpi_ut_hex_to_ascii_char(eisa_id, 12); out_string[4] = acpi_ut_hex_to_ascii_char(eisa_id, 8); out_string[5] = acpi_ut_hex_to_ascii_char(eisa_id, 4); out_string[6] = acpi_ut_hex_to_ascii_char(eisa_id, 0); out_string[7] = 0; } int main(int argc, char *argv[]) { unsigned long id = 0x010CD041; char name[16]; acpi_ex_eisa_id_to_string(id, name); printf("%s",name); } ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 5:20 ` KAMEZAWA Hiroyuki @ 2006-06-22 6:11 ` KAMEZAWA Hiroyuki 2006-06-22 7:01 ` KAMEZAWA Hiroyuki 2006-06-22 17:25 ` keith mannthey 2 siblings, 0 replies; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2006-06-22 6:11 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: kmannth, prarit, linux-acpi, darnok, robert.moore, lhms-devel On Thu, 22 Jun 2006 14:20:38 +0900 KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote: > - acpi_memory_device_init() -> acpi_memory_register_notify_handler() > installs notify handler for memory hotplug against device handle of memory > This doesn't check _CID. > > - acpi_bus_add() attachs motherboard driver because of CID. > Above _CID is 32bit compressed EISA-type ID (HID is string but..), > it is PNP0C01...motherboad driver is called before PNP0C80 driver. > (to covert 32bit ID to string, see acpi_ex_eisa_id_to_string(), > I attached program.) > > Then what we should do here is...call HID:PNP0C80 driver instead if CID:PNP0C01 driver. > Because it has driver for HID, calling driver for CID looks not good. > (But we have to ask acpi people about this..) > Ah... BTW, why PNP0C80(memory) and PNP0C01(motherboard) are described as "compatible device" ? Are they compatible ? -Kame ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 5:20 ` KAMEZAWA Hiroyuki 2006-06-22 6:11 ` KAMEZAWA Hiroyuki @ 2006-06-22 7:01 ` KAMEZAWA Hiroyuki 2006-06-22 17:25 ` keith mannthey 2 siblings, 0 replies; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2006-06-22 7:01 UTC (permalink / raw) To: kmannth; +Cc: prarit, linux-acpi, lhms-devel, darnok, robert.moore On Thu, 22 Jun 2006 14:20:38 +0900 KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> wrote: > I'll try to write a patch. > This is a patch. (against 2.6.17-mm1 but maybe okay to other kernels.) Could you try this ? But I'm not sure this is sane way or not.. Regards, -Kame ===== Index: linux-2.6.17-mm1/drivers/acpi/scan.c =================================================================== --- linux-2.6.17-mm1.orig/drivers/acpi/scan.c +++ linux-2.6.17-mm1/drivers/acpi/scan.c @@ -231,6 +231,14 @@ static int acpi_bus_get_power_flags(stru return_VALUE(0); } +static int acpi_match_hid(struct acpi_device *device, char *id) +{ + if (device->flags.hardware_id) + if (strstr(id, device->pnp.hardware_id)) + return 0; + return -ENOENT; +} + int acpi_match_ids(struct acpi_device *device, char *ids) { if (device->flags.hardware_id) @@ -476,6 +484,14 @@ acpi_bus_match(struct acpi_device *devic return acpi_match_ids(device, driver->ids); } +static int +acpi_bus_hid_match(struct acpi_device *device, struct acpi_driver *driver) +{ + if (driver && driver->ops.match) + return driver->ops.match(device, driver); + return acpi_match_hid(device, driver->ids); +} + /** * acpi_bus_driver_init - add a device to a driver * @device: the device to add and initialize @@ -647,8 +663,24 @@ static int acpi_bus_find_driver(struct a struct list_head *node, *next; ACPI_FUNCTION_TRACE("acpi_bus_find_driver"); - spin_lock(&acpi_device_lock); + + /* At first, find driver for HID */ + list_for_each_safe(node, next, &acpi_bus_drivers) { + struct acpi_driver *driver = + container_of(node, struct acpi_driver, node); + + atomic_inc(&driver->references); + spin_unlock(&acpi_device_lock); + if (!acpi_bus_hid_match(device, driver)) { + result = acpi_bus_driver_init(device, driver); + if (!result) + goto Done; + } + atomic_dec(&driver->references); + spin_lock(&acpi_device_lock); + } + /* find driver for all IDs */ list_for_each_safe(node, next, &acpi_bus_drivers) { struct acpi_driver *driver = container_of(node, struct acpi_driver, node); ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 5:20 ` KAMEZAWA Hiroyuki 2006-06-22 6:11 ` KAMEZAWA Hiroyuki 2006-06-22 7:01 ` KAMEZAWA Hiroyuki @ 2006-06-22 17:25 ` keith mannthey 2006-06-22 17:41 ` KAMEZAWA Hiroyuki 2 siblings, 1 reply; 26+ messages in thread From: keith mannthey @ 2006-06-22 17:25 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, lhms-devel, konrad, robert.moore On Thu, 2006-06-22 at 14:20 +0900, KAMEZAWA Hiroyuki wrote: > On Wed, 21 Jun 2006 20:55:02 -0700 > keith mannthey <kmannth@us.ibm.com> wrote: > > > Hmm....curious..but no idead.. > > > Then, could try this ? > > > > I am trying to make the motherboard driver fail with it looks for > > resources and finds node. The motherboard add function alway returns > > AE_OK which is why the algorithm fails. See attached patch it allows the > > hot-add event to happen. > > > > With the event happening and I see > > > Um...my concern is > - When notify comes, memory hotplug driver is called. > - but at acpi_bus_add(), PNP0C01 motherboad driver is attached to the device. The patch I sent keeps the motherboard driver from attaching and allows the PNP0C80 device to attach. > I think something is wrong....from your SSDT, ME00 and ME01 memory device has > valid HID, PNP0C80. > == > Device (ME01) > { > Name (_HID, EisaId ("PNP0C80")) > Name (_CID, 0x010CD041) > == > What I imagine now is. > > - acpi_memory_device_init() -> acpi_memory_register_notify_handler() > installs notify handler for memory hotplug against device handle of memory > This doesn't check _CID. > > - acpi_bus_add() attachs motherboard driver because of CID. > Above _CID is 32bit compressed EISA-type ID (HID is string but..), > it is PNP0C01...motherboad driver is called before PNP0C80 driver. > (to covert 32bit ID to string, see acpi_ex_eisa_id_to_string(), > I attached program.) This is a bug in the motherboard driver where it attached to any device it is presented to. > Then what we should do here is...call HID:PNP0C80 driver instead if CID:PNP0C01 driver. > Because it has driver for HID, calling driver for CID looks not good. > (But we have to ask acpi people about this..) The patch allows PNP0C80 driver to be used. -- keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 17:25 ` keith mannthey @ 2006-06-22 17:41 ` KAMEZAWA Hiroyuki 2006-06-22 18:29 ` keith mannthey 0 siblings, 1 reply; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2006-06-22 17:41 UTC (permalink / raw) To: kmannth; +Cc: prarit, linux-acpi, robert.moore, darnok, lhms-devel On Thu, 22 Jun 2006 10:25:24 -0700 keith mannthey <kmannth@us.ibm.com> wrote: > > Um...my concern is > > - When notify comes, memory hotplug driver is called. > > - but at acpi_bus_add(), PNP0C01 motherboad driver is attached to the device. > > The patch I sent keeps the motherboard driver from attaching and allows > the PNP0C80 device to attach. > My point is...motherboard is not memory. Then, it shouldn't have _CRS handler. Because your ME00/ME01 device has both HID for memory and CID for motherboard, motherboard handler is called. (acpi_add_single_object() attaches the driver which is found 1st.) > > == > > Device (ME01) > > { > > Name (_HID, EisaId ("PNP0C80")) > > Name (_CID, 0x010CD041) > > == As I wrote in other mail, why memory and motherboard is compatible device in your SSDT ? If this _CID is necessary for some reason, what should we do is acpi handling problem. So, what you should ask to acpi people is == my device has both _HID and _CID. But the driver for _HID is different from _CID. I'm glad if the driver for _HID is called but driver for _CID is found before driver for _HID. Then, driver for _CID is called. How should I do ? (or make patch to fix this..) == Cheers, -Kame ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 17:41 ` KAMEZAWA Hiroyuki @ 2006-06-22 18:29 ` keith mannthey 2006-06-22 19:07 ` keith mannthey 0 siblings, 1 reply; 26+ messages in thread From: keith mannthey @ 2006-06-22 18:29 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, lhms-devel, robert.moore, konrad On Fri, 2006-06-23 at 02:41 +0900, KAMEZAWA Hiroyuki wrote: > On Thu, 22 Jun 2006 10:25:24 -0700 > keith mannthey <kmannth@us.ibm.com> wrote: > > > Um...my concern is > > > - When notify comes, memory hotplug driver is called. > > > - but at acpi_bus_add(), PNP0C01 motherboad driver is attached to the device. > > > > The patch I sent keeps the motherboard driver from attaching and allows > > the PNP0C80 device to attach. > > > My point is...motherboard is not memory. Then, it shouldn't have _CRS handler. > Because your ME00/ME01 device has both HID for memory and CID for motherboard, > motherboard handler is called. > (acpi_add_single_object() attaches the driver which is found 1st.) > > > == > > > Device (ME01) > > > { > > > Name (_HID, EisaId ("PNP0C80")) > > > Name (_CID, 0x010CD041) > > > == > As I wrote in other mail, why memory and motherboard is compatible device in > your SSDT ? If this _CID is necessary for some reason, what should we do is > acpi handling problem. > So, what you should ask to acpi people is > == > my device has both _HID and _CID. But the driver for _HID is different from > _CID. I'm glad if the driver for _HID is called but driver for _CID is found > before driver for _HID. Then, driver for _CID is called. > How should I do ? (or make patch to fix this..) > == I agree this is an acpi_handling problem where the wrong device is attached. I am pursuing ACPI folks today. I have my patch in place to work around the problem and am looking into the the memory driver. In acpi_memory_enable_device in list_for_each_entry(info, &mem_device->res_list, list) { if printk ("node: %d , start %08lx, end %08lx \n",node,info- >start_addr,info->start_addr+info->length); before doing the add memory I see node: -1 , start 1f0000000, end 270000000 On node -1 totalpages: 0 node: -1 , start 170000000, end 1f0000000 Finding the 2 ranges (these are the right ranges and the right chunks) is great but acpi_get_node is not working for my handle. I am continuing to debug. Thanks, Keith ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 18:29 ` keith mannthey @ 2006-06-22 19:07 ` keith mannthey 0 siblings, 0 replies; 26+ messages in thread From: keith mannthey @ 2006-06-22 19:07 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, konrad, robert.moore, lhms-devel On Thu, 2006-06-22 at 11:29 -0700, keith mannthey wrote: > On Fri, 2006-06-23 at 02:41 +0900, KAMEZAWA Hiroyuki wrote: > > On Thu, 22 Jun 2006 10:25:24 -0700 > > keith mannthey <kmannth@us.ibm.com> wrote: > > > > Um...my concern is > > > > - When notify comes, memory hotplug driver is called. > > > > - but at acpi_bus_add(), PNP0C01 motherboad driver is attached to the device. > > > > > > The patch I sent keeps the motherboard driver from attaching and allows > > > the PNP0C80 device to attach. > > > > > My point is...motherboard is not memory. Then, it shouldn't have _CRS handler. > > Because your ME00/ME01 device has both HID for memory and CID for motherboard, > > motherboard handler is called. > > (acpi_add_single_object() attaches the driver which is found 1st.) > > > > == > > > > Device (ME01) > > > > { > > > > Name (_HID, EisaId ("PNP0C80")) > > > > Name (_CID, 0x010CD041) > > > > == > > As I wrote in other mail, why memory and motherboard is compatible device in > > your SSDT ? If this _CID is necessary for some reason, what should we do is > > acpi handling problem. > > So, what you should ask to acpi people is > > == > > my device has both _HID and _CID. But the driver for _HID is different from > > _CID. I'm glad if the driver for _HID is called but driver for _CID is found > > before driver for _HID. Then, driver for _CID is called. > > How should I do ? (or make patch to fix this..) > > == > > I agree this is an acpi_handling problem where the wrong device is > attached. I am pursuing ACPI folks today. > > I have my patch in place to work around the problem and am looking into > the the memory driver. > > In acpi_memory_enable_device > > in list_for_each_entry(info, &mem_device->res_list, list) { > > if > printk ("node: %d , start %08lx, end %08lx \n",node,info- > >start_addr,info->start_addr+info->length); > before doing the add memory I see > > node: -1 , start 1f0000000, end 270000000 > On node -1 totalpages: 0 > node: -1 , start 170000000, end 1f0000000 > > Finding the 2 ranges (these are the right ranges and the right chunks) > is great but acpi_get_node is not working for my handle. > > I am continuing to debug. > if acpi_get_pxm status = acpi_evaluate_integer(handle, "_PXM", NULL, &pxm); This is looking to get the _PXM value from the handle. I don't see a _PXM filed in my SSDT for my memory device. I don't think it is required to have the _PXM field. It would be nice if it had one but I don't think Linux should require one. If the handle doesn't contain the _PXM device it should ask the arch if it knows. If the arch doesn't know (by way of SRAT at boot) then it should set the node to 0. I will send along a patch today. Thanks, keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [RFC] Patch [1/2] for acpi_memhotplug.c 2006-06-22 1:58 ` KAMEZAWA Hiroyuki 2006-06-22 2:19 ` keith mannthey @ 2006-06-22 2:28 ` keith mannthey 1 sibling, 0 replies; 26+ messages in thread From: keith mannthey @ 2006-06-22 2:28 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Prarit Bhargava--redhat, linux acpi, lhms-devel, robert.moore, konrad On Thu, 2006-06-22 at 10:58 +0900, KAMEZAWA Hiroyuki wrote: > On Wed, 21 Jun 2006 18:37:00 -0700 > keith mannthey <kmannth@us.ibm.com> wrote: > > > > in acpi_bus_driver_init() > > > - driver->ops.add() is called or not > > > - what it retruns > > > > It is called. But that is not the whole story. > > In acpi_bus_driver_init it calls driver->ops.add(device). This ops.add > > is not acpi_memory_device_add. I do get not any printks that I would > > expect from acpi_memory_device_add. > > > > If I print out in acpi_bus_driver_init > > printk(" device_add() about %s\n",acpi_device_name(device)); > > result = driver->ops.add(device); Looks like this motherboard driver always returns 0. I am going see about fixing this driver. -- keith mannthey <kmannth@us.ibm.com> Linux Technology Center IBM ^ permalink raw reply [flat|nested] 26+ messages in thread
* RE: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c
@ 2005-11-18 19:47 Moore, Robert
[not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BDDE-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
0 siblings, 1 reply; 26+ messages in thread
From: Moore, Robert @ 2005-11-18 19:47 UTC (permalink / raw)
To: KAMEZAWA Hiroyuki, keith
Cc: Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel,
external hotplug mem list, Tolentino, Matthew E
The ACPICA code supports _OSI and will respond TRUE when shown the
"Windows 2001" string.
Bob
> -----Original Message-----
> From: acpi-devel-admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:acpi-devel-
> admin-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of KAMEZAWA Hiroyuki
> Sent: Thursday, November 17, 2005 6:57 PM
> To: keith
> Cc: Yasunori Goto; Brown, Len; S, Naveen B; acpi-devel; external
hotplug
> mem list; Tolentino, Matthew E
> Subject: Re: [ACPI] Re: [Lhms-devel] [PATCH 1/1] patch to fix
> acpi_memhotplug.c
>
> keith wrote:
> >> >
> >>Could you show your AML tree around Memory ?
> >
> >
> > See attached SSDT.
> >
> Thanks, at the first look.....
>
> > Device (ME00)
> > {
> <snip>
> > Method (_STA, 0, NotSerialized)
> > {
> > If (CondRefOf (_OSI, Local0))
> > {
> > If (\_OSI ("Windows 2001"))
> > {
> > If (LAnd (LEqual (BADH, EADH), LEqual (BADL,
> EADL)))
> > {
> > Or (MEID, \_SB.MEMI, \_SB.MEMI)
> > Return (0x00)
> > }
> > Else
> > {
> > And (Not (MEID), \_SB.MEMI, \_SB.MEMI)
> > Return (0x0F)
> > }
> > }
> > }
> >
> > Return (0x00)
> > }
> It seems memory device's _STA never returns 0xF always returns 0x0.
> (Device is online and enabled) when OS is not Windows2001.
> All PNP0C80 decvices in this SSDT has same _STA function.
>
> So, I think why your hot add failes is _STA has no present bit.
> ==
> drivers/acpi/scan.c
>
> acpi_add_single_object()
> <snip>
> case ACPI_BUS_TYPE_DEVICE:
> result = acpi_bus_get_status(device); in
> drivers/acpi/bus.c
> if (ACPI_FAILURE(result) || !device->status.present)
{ <-
> ---(*)
> result = -ENOENT;
> goto end;
> }
> break;
> ==
>
> rewriting your DSDT would be sane approach.
>
> -- Kame
>
>
>
>
>
> -------------------------------------------------------
> This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
> Register for a JBoss Training Course. Free Certification Exam
> for All Training Attendees Through End of 2005. For more info visit:
> http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click
> _______________________________________________
> Acpi-devel mailing list
> Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/acpi-devel
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today
Register for a JBoss Training Course. Free Certification Exam
for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_idv28&alloc_id\x16845&op=click
^ permalink raw reply [flat|nested] 26+ messages in thread[parent not found: <971FCB6690CD0E4898387DBF7552B90E0378BDDE-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>]
* Re: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c [not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BDDE-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org> @ 2005-11-19 12:03 ` Kamezawa Hiroyuki 0 siblings, 0 replies; 26+ messages in thread From: Kamezawa Hiroyuki @ 2005-11-19 12:03 UTC (permalink / raw) To: Moore, Robert Cc: keith, Yasunori Goto, Brown, Len, S, Naveen B, acpi-devel, external hotplug mem list, Tolentino, Matthew E Moore, Robert wrote: > The ACPICA code supports _OSI and will respond TRUE when shown the > "Windows 2001" string. I'm not familiar with this area.... When I set acpi_osi=Windows 2001 in boot option, (\_OSI ("Windows 2001")) returns true ? -- Kame ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click ^ permalink raw reply [flat|nested] 26+ messages in thread
* [RFC][PATCH] patch to fix acpi_memhotplug.c for my hardware
@ 2005-11-12 5:03 keith
2005-11-15 5:36 ` [PATCH 1/1] patch to fix acpi_memhotplug.c keith
0 siblings, 1 reply; 26+ messages in thread
From: keith @ 2005-11-12 5:03 UTC (permalink / raw)
To: external hotplug mem list; +Cc: naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel
[-- Attachment #1: Type: text/plain, Size: 798 bytes --]
Hello All,
I have troubles with the current acpi hotplug memory handler.
acpi_memory_get_device fails for me (acpi_bus_get_device fails) and the
whole things falls apart. I think this may be related to the
comment /* TBD: Support fixed-feature devices */ in acpi_get_bus but it
is unclear to me.
My event comes a notifiy with a acpi memory range attached. It is a
single event. My hardware does not work with the current driver.
The attached patch is a simple workaround for my hardware from 2.6.14-
git7. This patch works for me. It creates the mem_device for the data
attached from the present event. It is provided to start the
conversation of how it is best to fix this issue.
Signed-off-by: Keith Mannthey
--
keith <kmannth-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
[-- Attachment #2: acpi_memfix_v1.patch --]
[-- Type: text/x-patch, Size: 1165 bytes --]
--- linux-2.6.14-bootsreg/drivers/acpi/acpi_memhotplug.c 2005-11-03 17:58:21.000000000 -0800
+++ linux-2.6.14/drivers/acpi/acpi_memhotplug.c 2005-11-11 20:44:33.000000000 -0800
@@ -110,6 +110,21 @@
return_VALUE(0);
}
+static struct acpi_memory_device*
+get_mem_resource_fixup(acpi_handle handle){
+ struct acpi_memory_device *mem_tmp = NULL;
+
+ printk ("called keiths fixup handler\n");
+
+ mem_tmp= kmalloc(sizeof(struct acpi_memory_device), GFP_KERNEL);
+
+ memset(mem_tmp,0, sizeof(struct acpi_memory_device));
+ mem_tmp->handle = handle;
+ acpi_memory_get_device_resources(mem_tmp);
+ return mem_tmp;
+}
+
+
static int
acpi_memory_get_device(acpi_handle handle,
struct acpi_memory_device **mem_device)
@@ -147,14 +159,15 @@
ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n"));
return_VALUE(-EINVAL);
}
-
end:
*mem_device = acpi_driver_data(device);
+
if (!(*mem_device)) {
- printk(KERN_ERR "\n driver data not found");
- return_VALUE(-ENODEV);
+ /* ok this is where I end up.....
+ * I am making my own memory_device
+ */
+ *mem_device = get_mem_resource_fixup(handle);
}
-
return_VALUE(0);
}
^ permalink raw reply [flat|nested] 26+ messages in thread* [PATCH 1/1] patch to fix acpi_memhotplug.c 2005-11-12 5:03 [RFC][PATCH] patch to fix acpi_memhotplug.c for my hardware keith @ 2005-11-15 5:36 ` keith 2005-11-15 10:20 ` [Lhms-devel] " Yasunori Goto 0 siblings, 1 reply; 26+ messages in thread From: keith @ 2005-11-15 5:36 UTC (permalink / raw) To: len.brown-ral2JQCrhuEAvxtiuMwx3w Cc: naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel, external hotplug mem list [-- Attachment #1: Type: text/plain, Size: 1239 bytes --] Hello, I am submitting this patch for inclusion in the acpi development tree. I have not received any feedback of my beta patch or emails over the past week. I cleaned my previous patch up and made the error handling match the rest of the driver. I need this patch to support my hardware (IBM x460/x366/x445) acpi hot-add memory events. In general acpi_bus_get_device fails for my event. acpi_bus-0072 [04] bus_get_device : No context for object [ffff81007ff397f0] The current driver relies on acpi_bus_get_device to create the acpi memory_device but these call fails for my hardware. My event is a single notify with a memory range passed along as data. The current driver is expecting some other event or series of events (As I have posted before I am a little confused on how the current driver works at all). My code provides a way for the data that is passed along during the event to be converted directly to the memory_device without reliance on acpi_bus_get_device. My code in no way breaks the current implementation and seems a reasonable addition for increased flexibility. This patch is against 2.6.15-rc1. Signed-off-by: Keith Mannthey <kmannth-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> [-- Attachment #2: acpi_mem_fixv2.patch --] [-- Type: text/x-patch, Size: 1680 bytes --] --- linux-2.6.15-rc1-orig/drivers/acpi/acpi_memhotplug.c 2005-11-14 10:56:13.000000000 -0800 +++ linux-2.6.15-rc1/drivers/acpi/acpi_memhotplug.c 2005-11-14 21:01:43.000000000 -0800 @@ -110,6 +110,30 @@ return_VALUE(0); } +static int +acpi_memory_get_current_resource(acpi_handle handle, struct acpi_memory_device **return_device) { + + int result; + struct acpi_memory_device *mem_device; + + mem_device = kmalloc(sizeof(struct acpi_memory_device), GFP_KERNEL); + if (!mem_device) + return_VALUE(-ENOMEM); + memset(mem_device,0, sizeof(struct acpi_memory_device)); + + mem_device->handle = handle; + result = acpi_memory_get_device_resources(mem_device); + if (result) { + kfree(mem_device); + return_VALUE(result); + } + mem_device->state = MEMORY_POWER_ON_STATE; + *return_device = mem_device; + + return_VALUE(result); +} + + static int acpi_memory_get_device(acpi_handle handle, struct acpi_memory_device **mem_device) @@ -118,6 +142,7 @@ acpi_handle phandle; struct acpi_device *device = NULL; struct acpi_device *pdevice = NULL; + int result; ACPI_FUNCTION_TRACE("acpi_memory_get_device"); @@ -147,14 +172,17 @@ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n")); return_VALUE(-EINVAL); } - end: *mem_device = acpi_driver_data(device); + if (!(*mem_device)) { - printk(KERN_ERR "\n driver data not found"); - return_VALUE(-ENODEV); + /* Try and get the memory_device from the current handle */ + result = acpi_memory_get_current_resource(handle,mem_device); + if (result) { + printk(KERN_ERR "\nThere is no data for this memory device\n"); + return_VALUE(-EINVAL); + } } - return_VALUE(0); } ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c 2005-11-15 5:36 ` [PATCH 1/1] patch to fix acpi_memhotplug.c keith @ 2005-11-15 10:20 ` Yasunori Goto 2005-11-17 4:18 ` keith 0 siblings, 1 reply; 26+ messages in thread From: Yasunori Goto @ 2005-11-15 10:20 UTC (permalink / raw) To: keith Cc: len.brown-ral2JQCrhuEAvxtiuMwx3w, naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel, external hotplug mem list, Tolentino, Matthew E Hello, Keith-san. > I am submitting this patch for inclusion in the acpi development tree. > I have not received any feedback of my beta patch or emails over the > past week. I cleaned my previous patch up and made the error handling > match the rest of the driver. I need this patch to support my hardware > (IBM x460/x366/x445) acpi hot-add memory events. > > In general acpi_bus_get_device fails for my event. > acpi_bus-0072 [04] bus_get_device : No context for object [ffff81007ff397f0] > The current driver relies on acpi_bus_get_device to create the acpi > memory_device but these call fails for my hardware. > > My event is a single notify with a memory range passed along as data. > The current driver is expecting some other event or series of events (As > I have posted before I am a little confused on how the current driver > works at all). My code provides a way for the data that is passed along > during the event to be converted directly to the memory_device without > reliance on acpi_bus_get_device. My code in no way breaks the current > implementation and seems a reasonable addition for increased > flexibility. Hmm. I have a bit similar (but contrastive) problem on our making box. In my case, physical hotplug unit is a node. So, notification of event will reach "container driver". And container driver just call struct acpi_driver ops.add via acpi_bus_scan(). And it will also call ops.start if start method is exist. Howerver, there is no ops.start method in acpi_memhotplug.c. So, when bus is scaned by container driver add event, add_memory is not called. Following patch is to add start method for it. BTW, I recommend that you should add ACPI_FUNCTION_TRACE() at acpi_memory_get_current_resource() for debugging like other acpi functions. Thanks. Signed-off-by: Yasunori Goto <y-goto-+CUm20s59erQFUHtdCDX3A@public.gmane.org> -- Index: test_acpi/drivers/acpi/acpi_memhotplug.c =================================================================== --- test_acpi.orig/drivers/acpi/acpi_memhotplug.c 2005-11-15 18:55:27.000000000 +0900 +++ test_acpi/drivers/acpi/acpi_memhotplug.c 2005-11-15 18:55:39.000000000 +0900 @@ -57,6 +57,7 @@ MODULE_LICENSE("GPL"); static int acpi_memory_device_add(struct acpi_device *device); static int acpi_memory_device_remove(struct acpi_device *device, int type); +static int acpi_memory_device_start (struct acpi_device *device); static struct acpi_driver acpi_memory_device_driver = { .name = ACPI_MEMORY_DEVICE_DRIVER_NAME, @@ -65,6 +66,7 @@ static struct acpi_driver acpi_memory_de .ops = { .add = acpi_memory_device_add, .remove = acpi_memory_device_remove, + .start = acpi_memory_device_start, }, }; @@ -422,6 +424,26 @@ static int acpi_memory_device_remove(str return_VALUE(0); } +static int +acpi_memory_device_start (struct acpi_device *device) +{ + struct acpi_memory_device *mem_device = NULL; + int result = 0; + + ACPI_FUNCTION_TRACE("acpi_memory_device_start"); + + mem_device = (struct acpi_memory_device *) acpi_driver_data(device); + + if (!acpi_memory_check_device(mem_device)){ + /* call add_memory func */ + result = acpi_memory_enable_device(mem_device); + if (result) + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, + "Error in acpi_memory_enable_device\n")); + } + return_VALUE(result); +} + /* * Helper function to check for memory device */ -- Yasunori Goto ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c @ 2005-11-17 4:18 ` keith 2005-11-17 6:08 ` KAMEZAWA Hiroyuki 0 siblings, 1 reply; 26+ messages in thread From: keith @ 2005-11-17 4:18 UTC (permalink / raw) To: Yasunori Goto Cc: len.brown-ral2JQCrhuEAvxtiuMwx3w, naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel, external hotplug mem list, Tolentino, Matthew E [-- Attachment #1: Type: text/plain, Size: 2311 bytes --] On Tue, 2005-11-15 at 19:20 +0900, Yasunori Goto wrote: > Hello, Keith-san. > > > I am submitting this patch for inclusion in the acpi development tree. > > I have not received any feedback of my beta patch or emails over the > > past week. I cleaned my previous patch up and made the error handling > > match the rest of the driver. I need this patch to support my hardware > > (IBM x460/x366/x445) acpi hot-add memory events. > > > > In general acpi_bus_get_device fails for my event. > > acpi_bus-0072 [04] bus_get_device : No context for object [ffff81007ff397f0] > > The current driver relies on acpi_bus_get_device to create the acpi > > memory_device but these call fails for my hardware. > > > > My event is a single notify with a memory range passed along as data. > > The current driver is expecting some other event or series of events (As > > I have posted before I am a little confused on how the current driver > > works at all). My code provides a way for the data that is passed along > > during the event to be converted directly to the memory_device without > > reliance on acpi_bus_get_device. My code in no way breaks the current > > implementation and seems a reasonable addition for increased > > flexibility. > > Hmm. > I have a bit similar (but contrastive) problem on our making box. > In my case, physical hotplug unit is a node. So, notification of event > will reach "container driver". And container driver just call > struct acpi_driver ops.add via acpi_bus_scan(). And it will also call > ops.start if start method is exist. > > Howerver, there is no ops.start method in acpi_memhotplug.c. > So, when bus is scaned by container driver add event, > add_memory is not called. > Following patch is to add start method for it. My add event is called with my patch. The notify event is triggering and falling into the right path. I tried your patch but my device is not making and add event. I really looks to just be a notify with the memory range attached. I really think my patch is the right way to go for my hardware. > > BTW, I recommend that you should add at > acpi_memory_get_current_resource() for debugging like other acpi > functions. Thanks. I missed that. See the updated patch. Thanks, Keith Mannthey LTC xSeries [-- Attachment #2: acpi_mem_fixv3.patch --] [-- Type: text/x-patch, Size: 1741 bytes --] --- linux-2.6.15-rc1-orig/drivers/acpi/acpi_memhotplug.c 2005-11-14 10:56:13.000000000 -0800 +++ linux-2.6.15-rc1/drivers/acpi/acpi_memhotplug.c 2005-11-16 20:06:47.000000000 -0800 @@ -110,6 +110,32 @@ return_VALUE(0); } +static int +acpi_memory_get_current_resource(acpi_handle handle, struct acpi_memory_device **return_device) { + + int result; + struct acpi_memory_device *mem_device; + + ACPI_FUNCTION_TRACE("acpi_memory_get_current_resource"); + + mem_device = kmalloc(sizeof(struct acpi_memory_device), GFP_KERNEL); + if (!mem_device) + return_VALUE(-ENOMEM); + memset(mem_device,0, sizeof(struct acpi_memory_device)); + + mem_device->handle = handle; + result = acpi_memory_get_device_resources(mem_device); + if (result) { + kfree(mem_device); + return_VALUE(result); + } + mem_device->state = MEMORY_POWER_ON_STATE; + *return_device = mem_device; + + return_VALUE(result); +} + + static int acpi_memory_get_device(acpi_handle handle, struct acpi_memory_device **mem_device) @@ -118,6 +144,7 @@ acpi_handle phandle; struct acpi_device *device = NULL; struct acpi_device *pdevice = NULL; + int result; ACPI_FUNCTION_TRACE("acpi_memory_get_device"); @@ -147,14 +174,17 @@ ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n")); return_VALUE(-EINVAL); } - end: *mem_device = acpi_driver_data(device); + if (!(*mem_device)) { - printk(KERN_ERR "\n driver data not found"); - return_VALUE(-ENODEV); + /* Try and get the memory_device from the current handle */ + result = acpi_memory_get_current_resource(handle,mem_device); + if (result) { + printk(KERN_ERR "\nThere is no data for this memory device\n"); + return_VALUE(-EINVAL); + } } - return_VALUE(0); } ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c 2005-11-17 4:18 ` keith @ 2005-11-17 6:08 ` KAMEZAWA Hiroyuki [not found] ` <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org> 0 siblings, 1 reply; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2005-11-17 6:08 UTC (permalink / raw) To: keith Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w, naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel, external hotplug mem list, Tolentino, Matthew E keith wrote: > > My add event is called with my patch. The notify event is triggering > and falling into the right path. > > I tried your patch but my device is not making and add event. I really > looks to just be a notify with the memory range attached. I really > think my patch is the right way to go for my hardware. > > Could you show your AML tree around Memory ? I'm interested in. if (!(*mem_device)) { - printk(KERN_ERR "\n driver data not found"); - return_VALUE(-ENODEV); + /* Try and get the memory_device from the current handle */ + result = acpi_memory_get_current_resource(handle,mem_device); + if (result) { + printk(KERN_ERR "\nThere is no data for this memory device\n"); + return_VALUE(-EINVAL); + } } I'm not sure why this is *right* way. This is traditinal way to attach driver data to device. == acpi_bus_add() -> acpi_add_single_object() -> ----------------(*) acpi_device is create here. acpi_bus_find_driver()-> acpi_bus_driver_init()-> driver->ops.add() == Maybe driver->ops.add is not called for some reason. What happens in acpi_add_single_object() in your environment ? acpi_bus_find_driver() is called ? -- Kame ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click ^ permalink raw reply [flat|nested] 26+ messages in thread
[parent not found: <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org>]
* Re: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c [not found] ` <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org> @ 2005-11-18 2:22 ` keith 2005-11-18 2:56 ` KAMEZAWA Hiroyuki 0 siblings, 1 reply; 26+ messages in thread From: keith @ 2005-11-18 2:22 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w, naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel, external hotplug mem list, Tolentino, Matthew E [-- Attachment #1: Type: text/plain, Size: 3724 bytes --] On Thu, 2005-11-17 at 15:08 +0900, KAMEZAWA Hiroyuki wrote: > keith wrote: > > > > My add event is called with my patch. The notify event is triggering > > and falling into the right path. > > > > I tried your patch but my device is not making and add event. I really > > looks to just be a notify with the memory range attached. I really > > think my patch is the right way to go for my hardware. > > > > > Could you show your AML tree around Memory ? See attached SSDT. > I'm interested in. > > if (!(*mem_device)) { > - printk(KERN_ERR "\n driver data not found"); > - return_VALUE(-ENODEV); > + /* Try and get the memory_device from the current handle */ > + result = acpi_memory_get_current_resource(handle,mem_device); > + if (result) { > + printk(KERN_ERR "\nThere is no data for this memory device\n"); > + return_VALUE(-EINVAL); > + } > } > I'm not sure why this is *right* way. I am not sure either but the current code just dosen't work for my event. > This is traditinal way to attach driver data to device. > == > acpi_bus_add() -> > acpi_add_single_object() -> ----------------(*) acpi_device is create here. > acpi_bus_find_driver()-> > acpi_bus_driver_init()-> > driver->ops.add() The above is not working for my event. The current code is >>detect if the mem_device is already attached. This call fails for me and I goto end. if (!acpi_bus_get_device(handle, &device) && device) goto end; >>If I skip the above by commentting out and just run (isn't the logic backwards anyway?) status = acpi_get_parent(handle, &phandle); if (ACPI_FAILURE(status)) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_get_parent\n")); return_VALUE(-EINVAL); } /* Get the parent device */ status = acpi_bus_get_device(phandle, &pdevice); if (ACPI_FAILURE(status)) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_get_device\n")); return_VALUE(-EINVAL); } /* * Now add the notified device. This creates the acpi_device * and invokes .add function */ status = acpi_bus_add(&device, pdevice, handle, ACPI_BUS_TYPE_DEVICE); if (ACPI_FAILURE(status)) { ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error in acpi_bus_add\n")); return_VALUE(-EINVAL); } >> acpi_get_parent acpi_bug_get_device and acpi_bus_add all pass and do >> not report any failures. But when I check for the mem_device it is >> not there. *mem_device = acpi_driver_data(device); if (!(*mem_device)) { printk(KERN_ERR "\n driver data not found"); return_VALUE(-ENODEV); } >>I sill fall into the error and the call fails >>and I see " driver data not foundacpi_memory-0305 [02] >>memory_device_notify : Error in finding driver data"" acpi_bus_add while retuning success is not correctly attaching a formed memory_device to my generic acpi_device as the api would seem to indicate. Perhaps the generic code is broken? > Maybe driver->ops.add is not called for some reason. > What happens in () in your environment ? > acpi_bus_find_driver() is called ? Well I can tell you I never see the printk(KERN_INFO "%s \n", acpi_device_name(device)); from acpi_memory_device_add when I call acpi_bus_add. I am really trying not to dig around in the acpi generic code..... I might have time to have a look at the generic acpi code tomorrow.... Is this driver know to work on any hardware? Thanks for your feedback. -- keith <kmannth-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> [-- Attachment #2: SSDT.dsl --] [-- Type: text/x-dsl, Size: 194986 bytes --] /* * Intel ACPI Component Architecture * AML Disassembler version 20050902 * * Disassembly of SSDT.aml, Thu Nov 17 18:14:58 2005 */ DefinitionBlock ("SSDT.aml", "SSDT", 1, "IBM ", "VIGSSDT0", 4096) { /* * These objects were referenced but not defined in this table */ External (VP00, DeviceObj) Scope (\) { } Scope (\_PR) { Processor (CP00, 0x00, 0x00000000, 0x00) {} } Scope (\_PR) { Processor (CP01, 0x01, 0x00000000, 0x00) {} } Scope (\_PR) { Processor (CP02, 0x02, 0x00000000, 0x00) {} } Scope (\_PR) { Processor (CP03, 0x03, 0x00000000, 0x00) {} } Scope (\_PR) { Processor (CP04, 0x04, 0x00000000, 0x00) {} } Scope (\_PR) { Processor (CP05, 0x05, 0x00000000, 0x00) {} } Scope (\_PR) { Processor (CP06, 0x06, 0x00000000, 0x00) {} } Scope (\_PR) { Processor (CP07, 0x07, 0x00000000, 0x00) {} } Scope (\) { } Scope (\_SB) { Device (ME00) { Name (_HID, EisaId ("PNP0C80")) Name (_CID, 0x010CD041) Name (_UID, 0x00) Name (BADH, 0x00000000) Name (BADL, 0x00100000) Name (EADH, 0x00000004) Name (EADL, 0x80000000) Name (MEID, 0x00000001) Name (VC00, 0xFDE86000) OperationRegion (CY00, SystemMemory, VC00, 0x8000) Field (CY00, DWordAcc, NoLock, Preserve) { Offset (0x150), , 26, PMIO, 6, Offset (0x3600), XTP0, 32, XTP1, 32, XTP2, 32, XTP3, 32, XTP4, 32, XTP5, 32, XTP6, 32, XTP7, 32, XTP8, 32, XTP9, 32, XTPA, 32, XTPB, 32, Offset (0x5040), MSZ0, 9, Offset (0x5050), , 28, BCRD, 1, CSTE, 1, Offset (0x5098), Offset (0x509C), MMP0, 1, MMP1, 1, MMP2, 1, MMP3, 1, Offset (0x5140), MSZ1, 9, Offset (0x5240), MSZ2, 9, Offset (0x5340), MSZ3, 9 } Name (INIC, 0x00) Method (_INI, 0, NotSerialized) { If (LNot (INIC)) { Increment (INIC) If (LNot (LEqual (And (XTP0, 0xFF), 0x81))) { And (XTP0, 0xFFFFFFF0, XTP0) And (XTP1, 0xFFFFFFF0, XTP1) And (XTP2, 0xFFFFFFF0, XTP2) And (XTP3, 0xFFFFFFF0, XTP3) And (XTP4, 0xFFFFFFF0, XTP4) And (XTP5, 0xFFFFFFF0, XTP5) And (XTP6, 0xFFFFFFF0, XTP6) And (XTP7, 0xFFFFFFF0, XTP7) And (XTP8, 0xFFFFFFF0, XTP8) And (XTP9, 0xFFFFFFF0, XTP9) And (XTPA, 0xFFFFFFF0, XTPA) And (XTPB, 0xFFFFFFF0, XTPB) } } } Name (ME1S, 0x00) Method (_CRS, 0, NotSerialized) { Store (\_SB.ECRS, BADH) BADL EADH EADL PMIO Local0 Return (Local0) } Method (_STA, 0, NotSerialized) { If (CondRefOf (_OSI, Local0)) { If (\_OSI ("Windows 2001")) { If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL))) { Or (MEID, \_SB.MEMI, \_SB.MEMI) Return (0x00) } Else { And (Not (MEID), \_SB.MEMI, \_SB.MEMI) Return (0x0F) } } } Return (0x00) } Method (UPDT, 2, NotSerialized) { If (\_SB.N2GC) { EADH EADL Arg0 Arg1 Store (Arg0, EADH) Store (Arg1, EADL) Store (0x0F, ME1S) Return (0x01) } Return (0x00) } Method (MINT, 0, NotSerialized) { Store (EADH, Local0) Store (EADL, Local1) Store (0x00, Local2) If (CSTE) { If (BCRD) { If (LNot (LAnd (MMP0, MMP2))) { Add (MSZ0, MSZ2, Local2) } } Else { If (LNot (LAnd (MMP1, MMP3))) { Add (MSZ1, MSZ3, Local2) } } If (Local2) { Add (Local0, ShiftRight (Local2, 0x03), Local0) Add (Local1, ShiftLeft (Local2, 0x1D, Local2), Local1) If (LGreater (EADL, Local1)) { Increment (Local0) } If (UPDT (Local0, Local1)) { ^^ME01.RSET (Local0, Local1) Notify (ME00, 0x01) } } } } } Device (ME01) { Name (_HID, EisaId ("PNP0C80")) Name (_CID, 0x010CD041) Name (_UID, 0x01) Name (BADH, 0x00000004) Name (BADL, 0x80000000) Name (EADH, 0x00000004) Name (EADL, 0x80000000) Name (MEID, 0x00000002) Name (ME1S, 0x00) Method (_CRS, 0, NotSerialized) { Store (\_SB.ECRS, BADH) BADL EADH EADL ^^ME00.PMIO Local0 Return (Local0) } Method (_STA, 0, NotSerialized) { If (CondRefOf (_OSI, Local0)) { If (\_OSI ("Windows 2001")) { If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL))) { Or (MEID, \_SB.MEMI, \_SB.MEMI) Return (0x00) } Else { And (Not (MEID), \_SB.MEMI, \_SB.MEMI) Return (0x0F) } } } Return (0x00) } Method (RSET, 2, NotSerialized) { Store (Arg0, BADH) Store (Arg1, BADL) Store (Arg0, EADH) Store (Arg1, EADL) } Method (UPDT, 2, NotSerialized) { If (\_SB.N2GC) { EADH EADL Arg0 Arg1 Store (Arg0, EADH) Store (Arg1, EADL) Store (0x0F, ME1S) Return (0x01) } Return (0x00) } Method (MINT, 0, NotSerialized) { Store (EADH, Local0) Store (EADL, Local1) Store (0x00, Local2) If (^^ME00.CSTE) { If (^^ME00.BCRD) { If (LNot (LAnd (^^ME00.MMP0, ^^ME00.MMP2))) { Add (^^ME00.MSZ0, ^^ME00.MSZ2, Local2) } } Else { If (LNot (LAnd (^^ME00.MMP1, ^^ME00.MMP3))) { Add (^^ME00.MSZ1, ^^ME00.MSZ3, Local2) } } If (Local2) { Add (Local0, ShiftRight (Local2, 0x03), Local0) Add (Local1, ShiftLeft (Local2, 0x1D, Local2), Local1) If (LGreater (EADL, Local1)) { Increment (Local0) } If (UPDT (Local0, Local1)) { Notify (ME01, 0x01) } } } } } } Scope (\_SB) { Name (VW00, 0xFDA00000) Name (VW01, 0xFDB00000) Name (VND0, 0x00) Name (PAD0, 0xDCFE) Scope (VP00) { Name (XHID, 0x030AD041) Name (UIDC, 0xFF) Method (XUID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x00, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (XBBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (XADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW00, 0x4000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW00, 0x8000), 0x1000) OperationRegion (CALR, SystemMemory, VW00, 0x1000) Field (CALR, DWordAcc, NoLock, Preserve) { Offset (0x778), CNMR, 32 } Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW00, 0x8000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () If (VND0) { Or (CNMR, 0x80000000, CNMR) } Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } Device (VP01) { Name (_HID, EisaId ("PNP0A03")) Name (UIDC, 0xFF) Method (_UID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x01, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (_BBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (_ADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW00, 0x5000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW00, 0x9000), 0x1000) Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW00, 0x9000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } Device (VP02) { Name (_HID, EisaId ("PNP0A03")) Name (UIDC, 0xFF) Method (_UID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x02, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (_BBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (_ADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW00, 0x6000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW00, 0xA000), 0x1000) Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW00, 0xA000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } Device (VP03) { Name (_HID, EisaId ("PNP0A03")) Name (UIDC, 0xFF) Method (_UID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x03, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (_BBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (_ADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW00, 0x7000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW00, 0xB000), 0x1000) Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW00, 0xB000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } Device (VP04) { Name (_HID, EisaId ("PNP0A03")) Name (UIDC, 0xFF) Method (_UID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x04, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (_BBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (_ADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW01, 0x4000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW01, 0x8000), 0x1000) OperationRegion (CALR, SystemMemory, VW01, 0x1000) Field (CALR, DWordAcc, NoLock, Preserve) { Offset (0x778), CNMR, 32 } Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW01, 0x8000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () If (VND0) { Or (CNMR, 0x80000000, CNMR) } Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } Device (VP05) { Name (_HID, EisaId ("PNP0A03")) Name (UIDC, 0xFF) Method (_UID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x05, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (_BBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (_ADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW01, 0x5000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW01, 0x9000), 0x1000) Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW01, 0x9000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } Device (VP06) { Name (_HID, EisaId ("PNP0A03")) Name (UIDC, 0xFF) Method (_UID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x06, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (_BBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (_ADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW01, 0x6000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW01, 0xA000), 0x1000) Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW01, 0xA000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } Device (VP07) { Name (_HID, EisaId ("PNP0A03")) Name (UIDC, 0xFF) Method (_UID, 0, NotSerialized) { If (LEqual (UIDC, 0xFF)) { ShiftLeft (VND0, 0x04, UIDC) Add (UIDC, 0x07, UIDC) } Return (UIDC) } Name (BBNC, 0xFF) Method (_BBN, 0, NotSerialized) { If (LEqual (BBNC, 0xFF)) { Store (BBN0, BBNC) } Return (BBNC) } Name (_ADR, 0x00) OperationRegion (DBGR, SystemMemory, Add (VW01, 0x7000), 0x1000) OperationRegion (PHBR, SystemMemory, Add (VW01, 0xB000), 0x1000) Field (DBGR, DWordAcc, NoLock, Preserve) { Offset (0x10), P0DS, 32, Offset (0x20), MLT0, 8, BBN0, 8, SBN0, 8, Offset (0xF8), P0SR, 32, Offset (0x160), P0MR, 32, Offset (0x298), C0MR, 32 } Field (PHBR, DWordAcc, NoLock, Preserve) { Offset (0x110), C0SR, 32, Offset (0x160), P0CF, 32, Offset (0x170), I0BA, 32, Offset (0x190), M0L1, 32, Offset (0x1A0), M0H1, 32, Offset (0x1B0), I0SZ, 32, Offset (0x1C0), M0S1, 32, Offset (0x2B0), M0L2, 32, Offset (0x2C0), M0H2, 32, Offset (0x2E0), M0S2, 32, Offset (0x880), M0MD, 32 } Name (CRSR, Buffer (SizeOf (CRST)) {}) Name (PCKG, Package (0x0B) { 0xFF, 0xFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Name (INIC, 0x00) Method (_INI, 0, Serialized) { If (INIC) {} Else { Increment (INIC) Store (0x00, Local0) Store (BBN0, Index (PCKG, 0x00)) Store (SBN0, Index (PCKG, 0x01)) Store (I0BA, Index (PCKG, 0x02)) Store (I0SZ, Index (PCKG, 0x03)) Store (M0L1, Index (PCKG, 0x04)) Store (M0S1, Index (PCKG, 0x05)) Store (P0CF, Index (PCKG, 0x06)) Store (M0L2, Index (PCKG, 0x07)) Store (M0S2, Index (PCKG, 0x08)) Store (Add (VW01, 0xB000), Index (PCKG, 0x09)) Store (Local0, Index (PCKG, 0x0A)) Store (ICRS, PCKG) CRSR INIH () Store (C0MR, ENGC) Store (P0MR, ENGP) } } Method (_CRS, 0, NotSerialized) { Return (CRSR) } Name (_HPP, Package (0x04) { 0x10, 0x64, 0x01, 0x01 }) Name (ENGC, 0x00) Name (ENGP, 0x00) Name (DBGC, 0x00) Name (DBGP, 0x00) Name (DBGD, 0x00) Method (WRK0, 0, NotSerialized) { } Method (WRK1, 0, NotSerialized) { } } } Scope (\_SB.VP00) { Name (API0, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000010 }, Package (0x04) { 0x0003FFFF, 0x00, 0x00, 0x00000014 }, Package (0x04) { 0x0003FFFF, 0x01, 0x00, 0x00000014 }, Package (0x04) { 0x0003FFFF, 0x02, 0x00, 0x00000014 } }) Method (_PRT, 0, NotSerialized) { Store (0x60, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP01) { Name (API1, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000018 }, Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x0000001C }, Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x00000019 }, Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x0000001D } }) Method (_PRT, 0, NotSerialized) { Store (0x61, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP02) { Name (API2, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000012 }, Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x00000016 }, Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x0000001A }, Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x0000001E } }) Method (_PRT, 0, NotSerialized) { Store (0x62, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP03) { Name (API3, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000013 }, Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x00000017 }, Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x0000001B }, Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x0000001F } }) Method (_PRT, 0, NotSerialized) { Store (0x62, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP04) { Name (API4, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000033 }, Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x00000037 }, Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x0000003B }, Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x0000003F } }) Method (_PRT, 0, NotSerialized) { Store (0x62, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP05) { Name (API5, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000034 }, Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x00000038 }, Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x0000003C }, Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x00000040 } }) Method (_PRT, 0, NotSerialized) { Store (0x62, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP06) { Name (API6, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000035 }, Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x00000039 }, Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x0000003D }, Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x00000041 } }) Method (_PRT, 0, NotSerialized) { Store (0x62, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP07) { Name (API7, 0x00) Name (PICM, Package (0x01) { Package (0x04) { 0xFFFF, 0x00, 0x00, 0x00 } }) Name (APIC, Package (0x04) { Package (0x04) { 0x0001FFFF, 0x00, 0x00, 0x00000036 }, Package (0x04) { 0x0001FFFF, 0x01, 0x00, 0x0000003A }, Package (0x04) { 0x0001FFFF, 0x02, 0x00, 0x0000003E }, Package (0x04) { 0x0001FFFF, 0x03, 0x00, 0x00000042 } }) Method (_PRT, 0, NotSerialized) { Store (0x62, IOPT) If (LNot (PICF)) { Return (PICM) } Else { Return (APIC) } } } Scope (\_SB.VP00) { Method (SUNC, 1, NotSerialized) { Multiply (VND0, 0x06, Local0) Add (Local0, Arg0, Local0) Return (Local0) } Method (ROWB, 1, NotSerialized) { Multiply (VND0, 0x08, Local0) Add (Arg0, 0x02, Local0) Return (Local0) } Method (ROWS, 1, NotSerialized) { Add (SUNC (Arg0), 0x40, Local0) Return (Local0) } Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.ROWB (0x01), Local1) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x00)) Store (^_BBN, Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x05)) Store (\_SB.VP00.ROWS (0x01), Local2) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Local2)), 0x00)) Add (VND0, 0x71, Local3) Store (0x86, Index (DerefOf (Index (\_SB.APCI.APCI, Local3)), 0x00)) } } Scope (\_SB.VP01) { Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.ROWB (0x02), Local1) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x00)) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Local1)), 0x05)) Store (\_SB.VP00.ROWS (0x02), Local2) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Local2)), 0x00)) } } Scope (\_SB.VP02) { Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB00), SHBZ, 16, Offset (0xB2F), SHBD, 3, Offset (0xB31), SHBF, 1, SHBG, 3, Offset (0xB32), SHBY, 5, Offset (0xB33), SHBE, 8, Offset (0xB37), SHBH, 8, Offset (0xB3F), SHBS, 8, SHBT, 8, SHBN, 1, SHBO, 1, SHBP, 1, SHBQ, 1, SHBR, 1, Offset (0xB42), SHBJ, 1, SHBK, 1, SHBL, 2, SHBM, 2, Offset (0xB43), SHBI, 2 } Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB2C), SHRD, 3, Offset (0xB30), SHRE, 8, SHRY, 5, Offset (0xB32), SHRF, 1, SHRG, 3, Offset (0xB34), SHRH, 32, Offset (0xB3C), SHRS, 8, Offset (0xB40), SHRI, 2, Offset (0xB41), SHRJ, 1, SHRK, 1, SHRL, 2, SHRM, 2, Offset (0xB42), SHRN, 1, SHRO, 1, SHRP, 1, SHRQ, 1, SHRR, 1, Offset (0xB43), SHRT, 8 } Method (SHPC, 1, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (0x05DC, Local0) While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) Store (Local1, ^SHRY) Store (Arg0, ^SHRE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } If (^SHRG) { BreakPoint } } Else { Store (0x05DC, Local0) While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) If (LEqual (Local1, 0x00)) { Increment (Local1) } Store (Local1, ^SHBY) Store (Arg0, ^SHBE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } If (^SHBG) { BreakPoint } } } Method (SHPF, 0, Serialized) { ^WRK0 () ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C))) \_SB.APCI.ZZZN ^S1F0.SHPX 0xE0 Store (0x03, ^S1F0.SHPP) If (LEqual (^SHBZ, 0x1014)) { Store (^SHRL, ^S1F0.SHPQ) } Else { Store (^SHBL, ^S1F0.SHPQ) } } Method (SHPE, 0, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (^SHRH, Local0) While (Store (^SHRH, Local1)) { If (And (Local1, 0x02)) { If (^SHRN) { Store (One, ^SHRN) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0A)) } If (^SHRO) { Store (One, ^SHRO) BreakPoint } If (^SHRP) { Store (One, ^SHRP) } If (^SHRQ) { Store (One, ^SHRQ) If (LNot (LEqual (^SHRI, 0x03))) { BreakPoint } ^WRK0 () If (LEqual (^S1F0.SHPP, 0x02)) { ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S1F0.SHPX 0xEA } Else { If (LNot (^SHRJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHRL, 0x03)) { If (LNot (LEqual (^S1F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S1F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHRM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHRM, 0x01)) { Store (0x42, Local0) } Else { If (^SHRK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHRO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRO) \_SB.APCI.ZZZN ^S1F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S1F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHRD, IOPT) } } } } Store (^SHRI, ^S1F0.SHPP) Store (^SHRL, ^S1F0.SHPQ) } If (^SHRR) { Store (One, ^SHRR) ^WRK0 () Store (One, ^SHRR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRR) \_SB.APCI.ZZZN ^S1F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } Else { Store (^SHBH, Local0) While (Store (^SHBH, Local1)) { If (And (Local1, 0x02)) { If (^SHBN) { Store (One, ^SHBN) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0A)) } If (^SHBO) { Store (One, ^SHBO) BreakPoint } If (^SHBP) { Store (One, ^SHBP) } If (^SHBQ) { Store (One, ^SHBQ) If (LNot (LEqual (^SHBI, 0x03))) { BreakPoint } If (LEqual (^S1F0.SHPP, 0x02)) { ^WRK0 () ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S1F0.SHPX 0xEA } Else { If (LNot (^SHBJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHBL, 0x03)) { If (LNot (LEqual (^S1F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S1F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHBM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHBM, 0x01)) { Store (0x42, Local0) } Else { If (^SHBK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHBO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBO) \_SB.APCI.ZZZN ^S1F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S1F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHBD, IOPT) } } } } Store (^SHBI, ^S1F0.SHPP) Store (^SHBL, ^S1F0.SHPQ) } If (^SHBR) { ^WRK0 () Store (One, ^SHBR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBR) \_SB.APCI.ZZZN ^S1F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } } Name (SHPB, Buffer (0x08) { 0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF }) Method (SHPI, 4, Serialized) { If (LEqual (^SHBZ, 0x1014)) { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHRS) Store (0x65, ^SHRT) If (LNot (LEqual (^SHRI, 0x02))) { ^WRK0 () } Store (Arg2, ^S1F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S1F0.SHPX) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S1F0.SHPS) Store (Arg1, ^S1F0._SUN) Store (^SHRI, ^S1F0.SHPP) Store (^SHRL, ^S1F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S1F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S1F0.SHPX 0xF3 } } Return (Zero) } Else { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHBS) Store (0x65, ^SHBT) If (LNot (LEqual (^SHBI, 0x02))) { ^WRK0 () } Store (Arg2, ^S1F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S1F0.SHPX) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S1F0.SHPS) Store (Arg1, ^S1F0._SUN) Store (^SHBI, ^S1F0.SHPP) Store (^SHBL, ^S1F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S1F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S1F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S1F0.SHPX 0xF3 } } Return (Zero) } } Device (S1F0) { Name (_ADR, 0x00010000) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Name (_SUN, Ones) Name (SHPP, Ones) Name (SHPQ, Ones) Name (SHPS, Ones) Name (SHPX, Ones) Name (SHPY, Ones) } Device (S1F1) { Name (_ADR, 0x00010001) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S1F0._SUN) } } Device (S1F2) { Name (_ADR, 0x00010002) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S1F0._SUN) } } Device (S1F3) { Name (_ADR, 0x00010003) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S1F0._SUN) } } Device (S1F4) { Name (_ADR, 0x00010004) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S1F0._SUN) } } Device (S1F5) { Name (_ADR, 0x00010005) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S1F0._SUN) } } Device (S1F6) { Name (_ADR, 0x00010006) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S1F0._SUN) } } Device (S1F7) { Name (_ADR, 0x00010007) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S1F0._SUN) } } Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.SUNC (0x01), Local0) Store (\_SB.VP00.ROWB (0x01), Local1) Store (\_SB.VP00.ROWS (0x01), Local2) SHPI (Zero, Local0, Local1, Local2) } } Scope (\_SB.VP03) { Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB00), SHBZ, 16, Offset (0xB2F), SHBD, 3, Offset (0xB31), SHBF, 1, SHBG, 3, Offset (0xB32), SHBY, 5, Offset (0xB33), SHBE, 8, Offset (0xB37), SHBH, 8, Offset (0xB3F), SHBS, 8, SHBT, 8, SHBN, 1, SHBO, 1, SHBP, 1, SHBQ, 1, SHBR, 1, Offset (0xB42), SHBJ, 1, SHBK, 1, SHBL, 2, SHBM, 2, Offset (0xB43), SHBI, 2 } Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB2C), SHRD, 3, Offset (0xB30), SHRE, 8, SHRY, 5, Offset (0xB32), SHRF, 1, SHRG, 3, Offset (0xB34), SHRH, 32, Offset (0xB3C), SHRS, 8, Offset (0xB40), SHRI, 2, Offset (0xB41), SHRJ, 1, SHRK, 1, SHRL, 2, SHRM, 2, Offset (0xB42), SHRN, 1, SHRO, 1, SHRP, 1, SHRQ, 1, SHRR, 1, Offset (0xB43), SHRT, 8 } Method (SHPC, 1, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (0x05DC, Local0) While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) Store (Local1, ^SHRY) Store (Arg0, ^SHRE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } If (^SHRG) { BreakPoint } } Else { Store (0x05DC, Local0) While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) If (LEqual (Local1, 0x00)) { Increment (Local1) } Store (Local1, ^SHBY) Store (Arg0, ^SHBE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } If (^SHBG) { BreakPoint } } } Method (SHPF, 0, Serialized) { ^WRK0 () ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C))) \_SB.APCI.ZZZN ^S2F0.SHPX 0xE0 Store (0x03, ^S2F0.SHPP) If (LEqual (^SHBZ, 0x1014)) { Store (^SHRL, ^S2F0.SHPQ) } Else { Store (^SHBL, ^S2F0.SHPQ) } } Method (SHPE, 0, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (^SHRH, Local0) While (Store (^SHRH, Local1)) { If (And (Local1, 0x02)) { If (^SHRN) { Store (One, ^SHRN) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0A)) } If (^SHRO) { Store (One, ^SHRO) BreakPoint } If (^SHRP) { Store (One, ^SHRP) } If (^SHRQ) { Store (One, ^SHRQ) If (LNot (LEqual (^SHRI, 0x03))) { BreakPoint } ^WRK0 () If (LEqual (^S2F0.SHPP, 0x02)) { ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S2F0.SHPX 0xEA } Else { If (LNot (^SHRJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHRL, 0x03)) { If (LNot (LEqual (^S2F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S2F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHRM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHRM, 0x01)) { Store (0x42, Local0) } Else { If (^SHRK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHRO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRO) \_SB.APCI.ZZZN ^S2F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S2F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHRD, IOPT) } } } } Store (^SHRI, ^S2F0.SHPP) Store (^SHRL, ^S2F0.SHPQ) } If (^SHRR) { Store (One, ^SHRR) ^WRK0 () Store (One, ^SHRR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRR) \_SB.APCI.ZZZN ^S2F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } Else { Store (^SHBH, Local0) While (Store (^SHBH, Local1)) { If (And (Local1, 0x02)) { If (^SHBN) { Store (One, ^SHBN) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0A)) } If (^SHBO) { Store (One, ^SHBO) BreakPoint } If (^SHBP) { Store (One, ^SHBP) } If (^SHBQ) { Store (One, ^SHBQ) If (LNot (LEqual (^SHBI, 0x03))) { BreakPoint } If (LEqual (^S2F0.SHPP, 0x02)) { ^WRK0 () ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S2F0.SHPX 0xEA } Else { If (LNot (^SHBJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHBL, 0x03)) { If (LNot (LEqual (^S2F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S2F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHBM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHBM, 0x01)) { Store (0x42, Local0) } Else { If (^SHBK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHBO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBO) \_SB.APCI.ZZZN ^S2F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S2F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHBD, IOPT) } } } } Store (^SHBI, ^S2F0.SHPP) Store (^SHBL, ^S2F0.SHPQ) } If (^SHBR) { ^WRK0 () Store (One, ^SHBR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBR) \_SB.APCI.ZZZN ^S2F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } } Name (SHPB, Buffer (0x08) { 0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF }) Method (SHPI, 4, Serialized) { If (LEqual (^SHBZ, 0x1014)) { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHRS) Store (0x65, ^SHRT) If (LNot (LEqual (^SHRI, 0x02))) { ^WRK0 () } Store (Arg2, ^S2F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S2F0.SHPX) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S2F0.SHPS) Store (Arg1, ^S2F0._SUN) Store (^SHRI, ^S2F0.SHPP) Store (^SHRL, ^S2F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S2F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S2F0.SHPX 0xF3 } } Return (Zero) } Else { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHBS) Store (0x65, ^SHBT) If (LNot (LEqual (^SHBI, 0x02))) { ^WRK0 () } Store (Arg2, ^S2F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S2F0.SHPX) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S2F0.SHPS) Store (Arg1, ^S2F0._SUN) Store (^SHBI, ^S2F0.SHPP) Store (^SHBL, ^S2F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S2F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S2F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S2F0.SHPX 0xF3 } } Return (Zero) } } Device (S2F0) { Name (_ADR, 0x00010000) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Name (_SUN, Ones) Name (SHPP, Ones) Name (SHPQ, Ones) Name (SHPS, Ones) Name (SHPX, Ones) Name (SHPY, Ones) } Device (S2F1) { Name (_ADR, 0x00010001) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S2F0._SUN) } } Device (S2F2) { Name (_ADR, 0x00010002) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S2F0._SUN) } } Device (S2F3) { Name (_ADR, 0x00010003) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S2F0._SUN) } } Device (S2F4) { Name (_ADR, 0x00010004) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S2F0._SUN) } } Device (S2F5) { Name (_ADR, 0x00010005) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S2F0._SUN) } } Device (S2F6) { Name (_ADR, 0x00010006) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S2F0._SUN) } } Device (S2F7) { Name (_ADR, 0x00010007) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S2F0._SUN) } } Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.SUNC (0x02), Local0) Store (\_SB.VP00.ROWB (0x02), Local1) Store (\_SB.VP00.ROWS (0x02), Local2) SHPI (Zero, Local0, Local1, Local2) } } Scope (\_SB.VP04) { Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB00), SHBZ, 16, Offset (0xB2F), SHBD, 3, Offset (0xB31), SHBF, 1, SHBG, 3, Offset (0xB32), SHBY, 5, Offset (0xB33), SHBE, 8, Offset (0xB37), SHBH, 8, Offset (0xB3F), SHBS, 8, SHBT, 8, SHBN, 1, SHBO, 1, SHBP, 1, SHBQ, 1, SHBR, 1, Offset (0xB42), SHBJ, 1, SHBK, 1, SHBL, 2, SHBM, 2, Offset (0xB43), SHBI, 2 } Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB2C), SHRD, 3, Offset (0xB30), SHRE, 8, SHRY, 5, Offset (0xB32), SHRF, 1, SHRG, 3, Offset (0xB34), SHRH, 32, Offset (0xB3C), SHRS, 8, Offset (0xB40), SHRI, 2, Offset (0xB41), SHRJ, 1, SHRK, 1, SHRL, 2, SHRM, 2, Offset (0xB42), SHRN, 1, SHRO, 1, SHRP, 1, SHRQ, 1, SHRR, 1, Offset (0xB43), SHRT, 8 } Method (SHPC, 1, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (0x05DC, Local0) While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) Store (Local1, ^SHRY) Store (Arg0, ^SHRE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } If (^SHRG) { BreakPoint } } Else { Store (0x05DC, Local0) While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) If (LEqual (Local1, 0x00)) { Increment (Local1) } Store (Local1, ^SHBY) Store (Arg0, ^SHBE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } If (^SHBG) { BreakPoint } } } Method (SHPF, 0, Serialized) { ^WRK0 () ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C))) \_SB.APCI.ZZZN ^S3F0.SHPX 0xE0 Store (0x03, ^S3F0.SHPP) If (LEqual (^SHBZ, 0x1014)) { Store (^SHRL, ^S3F0.SHPQ) } Else { Store (^SHBL, ^S3F0.SHPQ) } } Method (SHPE, 0, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (^SHRH, Local0) While (Store (^SHRH, Local1)) { If (And (Local1, 0x02)) { If (^SHRN) { Store (One, ^SHRN) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0A)) } If (^SHRO) { Store (One, ^SHRO) BreakPoint } If (^SHRP) { Store (One, ^SHRP) } If (^SHRQ) { Store (One, ^SHRQ) If (LNot (LEqual (^SHRI, 0x03))) { BreakPoint } ^WRK0 () If (LEqual (^S3F0.SHPP, 0x02)) { ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S3F0.SHPX 0xEA } Else { If (LNot (^SHRJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHRL, 0x03)) { If (LNot (LEqual (^S3F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S3F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHRM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHRM, 0x01)) { Store (0x42, Local0) } Else { If (^SHRK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHRO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRO) \_SB.APCI.ZZZN ^S3F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S3F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHRD, IOPT) } } } } Store (^SHRI, ^S3F0.SHPP) Store (^SHRL, ^S3F0.SHPQ) } If (^SHRR) { Store (One, ^SHRR) ^WRK0 () Store (One, ^SHRR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRR) \_SB.APCI.ZZZN ^S3F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } Else { Store (^SHBH, Local0) While (Store (^SHBH, Local1)) { If (And (Local1, 0x02)) { If (^SHBN) { Store (One, ^SHBN) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0A)) } If (^SHBO) { Store (One, ^SHBO) BreakPoint } If (^SHBP) { Store (One, ^SHBP) } If (^SHBQ) { Store (One, ^SHBQ) If (LNot (LEqual (^SHBI, 0x03))) { BreakPoint } If (LEqual (^S3F0.SHPP, 0x02)) { ^WRK0 () ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S3F0.SHPX 0xEA } Else { If (LNot (^SHBJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHBL, 0x03)) { If (LNot (LEqual (^S3F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S3F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHBM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHBM, 0x01)) { Store (0x42, Local0) } Else { If (^SHBK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHBO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBO) \_SB.APCI.ZZZN ^S3F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S3F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHBD, IOPT) } } } } Store (^SHBI, ^S3F0.SHPP) Store (^SHBL, ^S3F0.SHPQ) } If (^SHBR) { ^WRK0 () Store (One, ^SHBR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBR) \_SB.APCI.ZZZN ^S3F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } } Name (SHPB, Buffer (0x08) { 0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF }) Method (SHPI, 4, Serialized) { If (LEqual (^SHBZ, 0x1014)) { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHRS) Store (0x65, ^SHRT) If (LNot (LEqual (^SHRI, 0x02))) { ^WRK0 () } Store (Arg2, ^S3F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S3F0.SHPX) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S3F0.SHPS) Store (Arg1, ^S3F0._SUN) Store (^SHRI, ^S3F0.SHPP) Store (^SHRL, ^S3F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S3F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S3F0.SHPX 0xF3 } } Return (Zero) } Else { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHBS) Store (0x65, ^SHBT) If (LNot (LEqual (^SHBI, 0x02))) { ^WRK0 () } Store (Arg2, ^S3F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S3F0.SHPX) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S3F0.SHPS) Store (Arg1, ^S3F0._SUN) Store (^SHBI, ^S3F0.SHPP) Store (^SHBL, ^S3F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S3F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S3F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S3F0.SHPX 0xF3 } } Return (Zero) } } Device (S3F0) { Name (_ADR, 0x00010000) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Name (_SUN, Ones) Name (SHPP, Ones) Name (SHPQ, Ones) Name (SHPS, Ones) Name (SHPX, Ones) Name (SHPY, Ones) } Device (S3F1) { Name (_ADR, 0x00010001) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S3F0._SUN) } } Device (S3F2) { Name (_ADR, 0x00010002) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S3F0._SUN) } } Device (S3F3) { Name (_ADR, 0x00010003) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S3F0._SUN) } } Device (S3F4) { Name (_ADR, 0x00010004) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S3F0._SUN) } } Device (S3F5) { Name (_ADR, 0x00010005) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S3F0._SUN) } } Device (S3F6) { Name (_ADR, 0x00010006) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S3F0._SUN) } } Device (S3F7) { Name (_ADR, 0x00010007) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S3F0._SUN) } } Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.SUNC (0x03), Local0) Store (\_SB.VP00.ROWB (0x03), Local1) Store (\_SB.VP00.ROWS (0x03), Local2) SHPI (Zero, Local0, Local1, Local2) } } Scope (\_SB.VP05) { Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB00), SHBZ, 16, Offset (0xB2F), SHBD, 3, Offset (0xB31), SHBF, 1, SHBG, 3, Offset (0xB32), SHBY, 5, Offset (0xB33), SHBE, 8, Offset (0xB37), SHBH, 8, Offset (0xB3F), SHBS, 8, SHBT, 8, SHBN, 1, SHBO, 1, SHBP, 1, SHBQ, 1, SHBR, 1, Offset (0xB42), SHBJ, 1, SHBK, 1, SHBL, 2, SHBM, 2, Offset (0xB43), SHBI, 2 } Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB2C), SHRD, 3, Offset (0xB30), SHRE, 8, SHRY, 5, Offset (0xB32), SHRF, 1, SHRG, 3, Offset (0xB34), SHRH, 32, Offset (0xB3C), SHRS, 8, Offset (0xB40), SHRI, 2, Offset (0xB41), SHRJ, 1, SHRK, 1, SHRL, 2, SHRM, 2, Offset (0xB42), SHRN, 1, SHRO, 1, SHRP, 1, SHRQ, 1, SHRR, 1, Offset (0xB43), SHRT, 8 } Method (SHPC, 1, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (0x05DC, Local0) While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) Store (Local1, ^SHRY) Store (Arg0, ^SHRE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } If (^SHRG) { BreakPoint } } Else { Store (0x05DC, Local0) While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) If (LEqual (Local1, 0x00)) { Increment (Local1) } Store (Local1, ^SHBY) Store (Arg0, ^SHBE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } If (^SHBG) { BreakPoint } } } Method (SHPF, 0, Serialized) { ^WRK0 () ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C))) \_SB.APCI.ZZZN ^S4F0.SHPX 0xE0 Store (0x03, ^S4F0.SHPP) If (LEqual (^SHBZ, 0x1014)) { Store (^SHRL, ^S4F0.SHPQ) } Else { Store (^SHBL, ^S4F0.SHPQ) } } Method (SHPE, 0, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (^SHRH, Local0) While (Store (^SHRH, Local1)) { If (And (Local1, 0x02)) { If (^SHRN) { Store (One, ^SHRN) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0A)) } If (^SHRO) { Store (One, ^SHRO) BreakPoint } If (^SHRP) { Store (One, ^SHRP) } If (^SHRQ) { Store (One, ^SHRQ) If (LNot (LEqual (^SHRI, 0x03))) { BreakPoint } ^WRK0 () If (LEqual (^S4F0.SHPP, 0x02)) { ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S4F0.SHPX 0xEA } Else { If (LNot (^SHRJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHRL, 0x03)) { If (LNot (LEqual (^S4F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S4F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHRM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHRM, 0x01)) { Store (0x42, Local0) } Else { If (^SHRK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHRO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRO) \_SB.APCI.ZZZN ^S4F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S4F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHRD, IOPT) } } } } Store (^SHRI, ^S4F0.SHPP) Store (^SHRL, ^S4F0.SHPQ) } If (^SHRR) { Store (One, ^SHRR) ^WRK0 () Store (One, ^SHRR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRR) \_SB.APCI.ZZZN ^S4F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } Else { Store (^SHBH, Local0) While (Store (^SHBH, Local1)) { If (And (Local1, 0x02)) { If (^SHBN) { Store (One, ^SHBN) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0A)) } If (^SHBO) { Store (One, ^SHBO) BreakPoint } If (^SHBP) { Store (One, ^SHBP) } If (^SHBQ) { Store (One, ^SHBQ) If (LNot (LEqual (^SHBI, 0x03))) { BreakPoint } If (LEqual (^S4F0.SHPP, 0x02)) { ^WRK0 () ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S4F0.SHPX 0xEA } Else { If (LNot (^SHBJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHBL, 0x03)) { If (LNot (LEqual (^S4F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S4F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHBM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHBM, 0x01)) { Store (0x42, Local0) } Else { If (^SHBK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHBO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBO) \_SB.APCI.ZZZN ^S4F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S4F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHBD, IOPT) } } } } Store (^SHBI, ^S4F0.SHPP) Store (^SHBL, ^S4F0.SHPQ) } If (^SHBR) { ^WRK0 () Store (One, ^SHBR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBR) \_SB.APCI.ZZZN ^S4F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } } Name (SHPB, Buffer (0x08) { 0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF }) Method (SHPI, 4, Serialized) { If (LEqual (^SHBZ, 0x1014)) { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHRS) Store (0x65, ^SHRT) If (LNot (LEqual (^SHRI, 0x02))) { ^WRK0 () } Store (Arg2, ^S4F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S4F0.SHPX) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S4F0.SHPS) Store (Arg1, ^S4F0._SUN) Store (^SHRI, ^S4F0.SHPP) Store (^SHRL, ^S4F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S4F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S4F0.SHPX 0xF3 } } Return (Zero) } Else { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHBS) Store (0x65, ^SHBT) If (LNot (LEqual (^SHBI, 0x02))) { ^WRK0 () } Store (Arg2, ^S4F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S4F0.SHPX) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S4F0.SHPS) Store (Arg1, ^S4F0._SUN) Store (^SHBI, ^S4F0.SHPP) Store (^SHBL, ^S4F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S4F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S4F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S4F0.SHPX 0xF3 } } Return (Zero) } } Device (S4F0) { Name (_ADR, 0x00010000) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Name (_SUN, Ones) Name (SHPP, Ones) Name (SHPQ, Ones) Name (SHPS, Ones) Name (SHPX, Ones) Name (SHPY, Ones) } Device (S4F1) { Name (_ADR, 0x00010001) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S4F0._SUN) } } Device (S4F2) { Name (_ADR, 0x00010002) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S4F0._SUN) } } Device (S4F3) { Name (_ADR, 0x00010003) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S4F0._SUN) } } Device (S4F4) { Name (_ADR, 0x00010004) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S4F0._SUN) } } Device (S4F5) { Name (_ADR, 0x00010005) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S4F0._SUN) } } Device (S4F6) { Name (_ADR, 0x00010006) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S4F0._SUN) } } Device (S4F7) { Name (_ADR, 0x00010007) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S4F0._SUN) } } Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.SUNC (0x04), Local0) Store (\_SB.VP00.ROWB (0x04), Local1) Store (\_SB.VP00.ROWS (0x04), Local2) SHPI (Zero, Local0, Local1, Local2) } } Scope (\_SB.VP06) { Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB00), SHBZ, 16, Offset (0xB2F), SHBD, 3, Offset (0xB31), SHBF, 1, SHBG, 3, Offset (0xB32), SHBY, 5, Offset (0xB33), SHBE, 8, Offset (0xB37), SHBH, 8, Offset (0xB3F), SHBS, 8, SHBT, 8, SHBN, 1, SHBO, 1, SHBP, 1, SHBQ, 1, SHBR, 1, Offset (0xB42), SHBJ, 1, SHBK, 1, SHBL, 2, SHBM, 2, Offset (0xB43), SHBI, 2 } Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB2C), SHRD, 3, Offset (0xB30), SHRE, 8, SHRY, 5, Offset (0xB32), SHRF, 1, SHRG, 3, Offset (0xB34), SHRH, 32, Offset (0xB3C), SHRS, 8, Offset (0xB40), SHRI, 2, Offset (0xB41), SHRJ, 1, SHRK, 1, SHRL, 2, SHRM, 2, Offset (0xB42), SHRN, 1, SHRO, 1, SHRP, 1, SHRQ, 1, SHRR, 1, Offset (0xB43), SHRT, 8 } Method (SHPC, 1, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (0x05DC, Local0) While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) Store (Local1, ^SHRY) Store (Arg0, ^SHRE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } If (^SHRG) { BreakPoint } } Else { Store (0x05DC, Local0) While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) If (LEqual (Local1, 0x00)) { Increment (Local1) } Store (Local1, ^SHBY) Store (Arg0, ^SHBE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } If (^SHBG) { BreakPoint } } } Method (SHPF, 0, Serialized) { ^WRK0 () ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C))) \_SB.APCI.ZZZN ^S5F0.SHPX 0xE0 Store (0x03, ^S5F0.SHPP) If (LEqual (^SHBZ, 0x1014)) { Store (^SHRL, ^S5F0.SHPQ) } Else { Store (^SHBL, ^S5F0.SHPQ) } } Method (SHPE, 0, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (^SHRH, Local0) While (Store (^SHRH, Local1)) { If (And (Local1, 0x02)) { If (^SHRN) { Store (One, ^SHRN) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0A)) } If (^SHRO) { Store (One, ^SHRO) BreakPoint } If (^SHRP) { Store (One, ^SHRP) } If (^SHRQ) { Store (One, ^SHRQ) If (LNot (LEqual (^SHRI, 0x03))) { BreakPoint } ^WRK0 () If (LEqual (^S5F0.SHPP, 0x02)) { ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S5F0.SHPX 0xEA } Else { If (LNot (^SHRJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHRL, 0x03)) { If (LNot (LEqual (^S5F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S5F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHRM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHRM, 0x01)) { Store (0x42, Local0) } Else { If (^SHRK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHRO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRO) \_SB.APCI.ZZZN ^S5F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S5F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHRD, IOPT) } } } } Store (^SHRI, ^S5F0.SHPP) Store (^SHRL, ^S5F0.SHPQ) } If (^SHRR) { Store (One, ^SHRR) ^WRK0 () Store (One, ^SHRR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRR) \_SB.APCI.ZZZN ^S5F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } Else { Store (^SHBH, Local0) While (Store (^SHBH, Local1)) { If (And (Local1, 0x02)) { If (^SHBN) { Store (One, ^SHBN) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0A)) } If (^SHBO) { Store (One, ^SHBO) BreakPoint } If (^SHBP) { Store (One, ^SHBP) } If (^SHBQ) { Store (One, ^SHBQ) If (LNot (LEqual (^SHBI, 0x03))) { BreakPoint } If (LEqual (^S5F0.SHPP, 0x02)) { ^WRK0 () ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S5F0.SHPX 0xEA } Else { If (LNot (^SHBJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHBL, 0x03)) { If (LNot (LEqual (^S5F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S5F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHBM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHBM, 0x01)) { Store (0x42, Local0) } Else { If (^SHBK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHBO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBO) \_SB.APCI.ZZZN ^S5F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S5F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHBD, IOPT) } } } } Store (^SHBI, ^S5F0.SHPP) Store (^SHBL, ^S5F0.SHPQ) } If (^SHBR) { ^WRK0 () Store (One, ^SHBR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBR) \_SB.APCI.ZZZN ^S5F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } } Name (SHPB, Buffer (0x08) { 0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF }) Method (SHPI, 4, Serialized) { If (LEqual (^SHBZ, 0x1014)) { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHRS) Store (0x65, ^SHRT) If (LNot (LEqual (^SHRI, 0x02))) { ^WRK0 () } Store (Arg2, ^S5F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S5F0.SHPX) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S5F0.SHPS) Store (Arg1, ^S5F0._SUN) Store (^SHRI, ^S5F0.SHPP) Store (^SHRL, ^S5F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S5F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S5F0.SHPX 0xF3 } } Return (Zero) } Else { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHBS) Store (0x65, ^SHBT) If (LNot (LEqual (^SHBI, 0x02))) { ^WRK0 () } Store (Arg2, ^S5F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S5F0.SHPX) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S5F0.SHPS) Store (Arg1, ^S5F0._SUN) Store (^SHBI, ^S5F0.SHPP) Store (^SHBL, ^S5F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S5F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S5F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S5F0.SHPX 0xF3 } } Return (Zero) } } Device (S5F0) { Name (_ADR, 0x00010000) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Name (_SUN, Ones) Name (SHPP, Ones) Name (SHPQ, Ones) Name (SHPS, Ones) Name (SHPX, Ones) Name (SHPY, Ones) } Device (S5F1) { Name (_ADR, 0x00010001) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S5F0._SUN) } } Device (S5F2) { Name (_ADR, 0x00010002) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S5F0._SUN) } } Device (S5F3) { Name (_ADR, 0x00010003) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S5F0._SUN) } } Device (S5F4) { Name (_ADR, 0x00010004) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S5F0._SUN) } } Device (S5F5) { Name (_ADR, 0x00010005) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S5F0._SUN) } } Device (S5F6) { Name (_ADR, 0x00010006) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S5F0._SUN) } } Device (S5F7) { Name (_ADR, 0x00010007) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S5F0._SUN) } } Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.SUNC (0x05), Local0) Store (\_SB.VP00.ROWB (0x05), Local1) Store (\_SB.VP00.ROWS (0x05), Local2) SHPI (Zero, Local0, Local1, Local2) } } Scope (\_SB.VP07) { Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB00), SHBZ, 16, Offset (0xB2F), SHBD, 3, Offset (0xB31), SHBF, 1, SHBG, 3, Offset (0xB32), SHBY, 5, Offset (0xB33), SHBE, 8, Offset (0xB37), SHBH, 8, Offset (0xB3F), SHBS, 8, SHBT, 8, SHBN, 1, SHBO, 1, SHBP, 1, SHBQ, 1, SHBR, 1, Offset (0xB42), SHBJ, 1, SHBK, 1, SHBL, 2, SHBM, 2, Offset (0xB43), SHBI, 2 } Field (PHBR, ByteAcc, NoLock, WriteAsZeros) { Offset (0xB2C), SHRD, 3, Offset (0xB30), SHRE, 8, SHRY, 5, Offset (0xB32), SHRF, 1, SHRG, 3, Offset (0xB34), SHRH, 32, Offset (0xB3C), SHRS, 8, Offset (0xB40), SHRI, 2, Offset (0xB41), SHRJ, 1, SHRK, 1, SHRL, 2, SHRM, 2, Offset (0xB42), SHRN, 1, SHRO, 1, SHRP, 1, SHRQ, 1, SHRR, 1, Offset (0xB43), SHRT, 8 } Method (SHPC, 1, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (0x05DC, Local0) While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) Store (Local1, ^SHRY) Store (Arg0, ^SHRE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHRF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHRF) { BreakPoint } If (^SHRG) { BreakPoint } } Else { Store (0x05DC, Local0) While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } ShiftRight (Arg0, 0x08, Local1) If (LEqual (Local1, 0x00)) { Increment (Local1) } Store (Local1, ^SHBY) Store (Arg0, ^SHBE) If (LOr (LEqual (And (Arg0, 0xFF), 0x48), LEqual (And (Arg0, 0xFF), 0x49))) { Store (0x05DC, Local0) } Else { Store (0x64, Local0) } While (LAnd (^SHBF, Local0)) { Sleep (0x0A) Decrement (Local0) } If (^SHBF) { BreakPoint } If (^SHBG) { BreakPoint } } } Method (SHPF, 0, Serialized) { ^WRK0 () ^SHPC (Or (Or (0x0100, 0x03), Or (0x10, 0x0C))) \_SB.APCI.ZZZN ^S6F0.SHPX 0xE0 Store (0x03, ^S6F0.SHPP) If (LEqual (^SHBZ, 0x1014)) { Store (^SHRL, ^S6F0.SHPQ) } Else { Store (^SHBL, ^S6F0.SHPQ) } } Method (SHPE, 0, Serialized) { If (LEqual (^SHBZ, 0x1014)) { Store (^SHRH, Local0) While (Store (^SHRH, Local1)) { If (And (Local1, 0x02)) { If (^SHRN) { Store (One, ^SHRN) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0A)) } If (^SHRO) { Store (One, ^SHRO) BreakPoint } If (^SHRP) { Store (One, ^SHRP) } If (^SHRQ) { Store (One, ^SHRQ) If (LNot (LEqual (^SHRI, 0x03))) { BreakPoint } ^WRK0 () If (LEqual (^S6F0.SHPP, 0x02)) { ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S6F0.SHPX 0xEA } Else { If (LNot (^SHRJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHRL, 0x03)) { If (LNot (LEqual (^S6F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S6F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHRM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHRM, 0x01)) { Store (0x42, Local0) } Else { If (^SHRK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHRO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRO) \_SB.APCI.ZZZN ^S6F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S6F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHRD, IOPT) } } } } Store (^SHRI, ^S6F0.SHPP) Store (^SHRL, ^S6F0.SHPQ) } If (^SHRR) { Store (One, ^SHRR) ^WRK0 () Store (One, ^SHRR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHRR) \_SB.APCI.ZZZN ^S6F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } Else { Store (^SHBH, Local0) While (Store (^SHBH, Local1)) { If (And (Local1, 0x02)) { If (^SHBN) { Store (One, ^SHBN) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0A)) } If (^SHBO) { Store (One, ^SHBO) BreakPoint } If (^SHBP) { Store (One, ^SHBP) } If (^SHBQ) { Store (One, ^SHBQ) If (LNot (LEqual (^SHBI, 0x03))) { BreakPoint } If (LEqual (^S6F0.SHPP, 0x02)) { ^WRK0 () ^SHPC (Or (0x0100, Or (0x0C, 0x10))) Notify (^, 0x00) \_SB.APCI.ZZZN ^S6F0.SHPX 0xEA } Else { If (LNot (^SHBJ)) { ^SHPC (Or (0x0100, 0x30)) If (LEqual (^SHBL, 0x03)) { If (LNot (LEqual (^S6F0.SHPQ, 0x03))) { \_SB.APCI.ZZZN ^S6F0.SHPX 0xF1 } } Else { ^SHPC (Or (0x0100, Or (0x04, 0x01))) If (LEqual (^SHBM, 0x03)) { Store (0x44, Local0) } Else { If (LEqual (^SHBM, 0x01)) { Store (0x42, Local0) } Else { If (^SHBK) { Store (0x41, Local0) } Else { Store (0x40, Local0) } } } ^SHPC (Local0) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPY)), 0x08)) Sleep (0x1388) If (^SHBO) { ^WRK0 () Store (One, SHRO) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBO) \_SB.APCI.ZZZN ^S6F0.SHPX 0xE9 } Else { ^SHPC (Or (0x0100, 0x02)) Sleep (0x0BB8) ^WRK1 () \_SB.APCI.ZZZN ^S6F0.SHPX 0xF0 Notify (^, 0x00) Store (^SHBD, IOPT) } } } } Store (^SHBI, ^S6F0.SHPP) Store (^SHBL, ^S6F0.SHPQ) } If (^SHBR) { ^WRK0 () Store (One, ^SHBR) ^SHPC (Or (Or (0x0C, 0x10), Or (0x0100, 0x03))) Store (One, ^SHBR) \_SB.APCI.ZZZN ^S6F0.SHPX 0xE9 } } Else { BreakPoint } } Return (Local0) } } Name (SHPB, Buffer (0x08) { 0x00, 0x01, 0x05, 0x06, 0x07, 0xFF, 0xFF, 0xFF }) Method (SHPI, 4, Serialized) { If (LEqual (^SHBZ, 0x1014)) { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHRS) Store (0x65, ^SHRT) If (LNot (LEqual (^SHRI, 0x02))) { ^WRK0 () } Store (Arg2, ^S6F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHRD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S6F0.SHPX) Store (ShiftLeft (^SHRL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S6F0.SHPS) Store (Arg1, ^S6F0._SUN) Store (^SHRI, ^S6F0.SHPP) Store (^SHRL, ^S6F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S6F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S6F0.SHPX 0xF3 } } Return (Zero) } Else { If (LEqual (Arg0, Zero)) { Store (0x7E, ^SHBS) Store (0x65, ^SHBT) If (LNot (LEqual (^SHBI, 0x02))) { ^WRK0 () } Store (Arg2, ^S6F0.SHPY) Store (^_BBN (), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x05)) Store (DerefOf (Index (^SHPB, ^SHBD)), Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x08)) Store (0x81, Index (DerefOf (Index (\_SB.APCI.APCI, Arg2)), 0x00)) Store (Arg3, ^S6F0.SHPX) Store (ShiftLeft (^SHBL, 0x03), Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0A)) Store (Arg1, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x0C)) Store (0x82, Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x00)) Store (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, Arg3)), 0x02)), ^S6F0.SHPS) Store (Arg1, ^S6F0._SUN) Store (^SHBI, ^S6F0.SHPP) Store (^SHBL, ^S6F0.SHPQ) Return (Increment (Arg1)) } If (LEqual (Arg0, One)) { If (LEqual (^S6F0.SHPS, Arg1)) { If (Arg2) { Store (0x20, Local0) Store (0x08, Local1) } Else { If (DerefOf (Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x09))) { Store (0x10, Local0) } Else { Store (0x30, Local0) } Store (Zero, Local1) } ^SHPC (Or (0x0100, Local0)) Store (Local1, Index (DerefOf (Index (\_SB.APCI.APCI, ^S6F0.SHPX)), 0x0B)) \_SB.APCI.ZZZN ^S6F0.SHPX 0xF3 } } Return (Zero) } } Device (S6F0) { Name (_ADR, 0x00010000) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Name (_SUN, Ones) Name (SHPP, Ones) Name (SHPQ, Ones) Name (SHPS, Ones) Name (SHPX, Ones) Name (SHPY, Ones) } Device (S6F1) { Name (_ADR, 0x00010001) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S6F0._SUN) } } Device (S6F2) { Name (_ADR, 0x00010002) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S6F0._SUN) } } Device (S6F3) { Name (_ADR, 0x00010003) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S6F0._SUN) } } Device (S6F4) { Name (_ADR, 0x00010004) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S6F0._SUN) } } Device (S6F5) { Name (_ADR, 0x00010005) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S6F0._SUN) } } Device (S6F6) { Name (_ADR, 0x00010006) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S6F0._SUN) } } Device (S6F7) { Name (_ADR, 0x00010007) Method (_EJ0, 1, NotSerialized) { ^^SHPF () } Method (_SUN, 0, NotSerialized) { Return (^^S6F0._SUN) } } Method (INIH, 0, NotSerialized) { Store (\_SB.VP00.SUNC (0x06), Local0) Store (\_SB.VP00.ROWB (0x06), Local1) Store (\_SB.VP00.ROWS (0x06), Local2) SHPI (Zero, Local0, Local1, Local2) } } } ^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c 2005-11-18 2:22 ` keith @ 2005-11-18 2:56 ` KAMEZAWA Hiroyuki [not found] ` <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org> 0 siblings, 1 reply; 26+ messages in thread From: KAMEZAWA Hiroyuki @ 2005-11-18 2:56 UTC (permalink / raw) To: keith Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w, naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel, external hotplug mem list, Tolentino, Matthew E keith wrote: >> > >>Could you show your AML tree around Memory ? > > > See attached SSDT. > Thanks, at the first look..... > Device (ME00) > { <snip> > Method (_STA, 0, NotSerialized) > { > If (CondRefOf (_OSI, Local0)) > { > If (\_OSI ("Windows 2001")) > { > If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL))) > { > Or (MEID, \_SB.MEMI, \_SB.MEMI) > Return (0x00) > } > Else > { > And (Not (MEID), \_SB.MEMI, \_SB.MEMI) > Return (0x0F) > } > } > } > > Return (0x00) > } It seems memory device's _STA never returns 0xF always returns 0x0. (Device is online and enabled) when OS is not Windows2001. All PNP0C80 decvices in this SSDT has same _STA function. So, I think why your hot add failes is _STA has no present bit. == drivers/acpi/scan.c acpi_add_single_object() <snip> case ACPI_BUS_TYPE_DEVICE: result = acpi_bus_get_status(device); in drivers/acpi/bus.c if (ACPI_FAILURE(result) || !device->status.present) { <----(*) result = -ENOENT; goto end; } break; == rewriting your DSDT would be sane approach. -- Kame ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click ^ permalink raw reply [flat|nested] 26+ messages in thread
[parent not found: <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>]
* Re: Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c [not found] ` <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org> @ 2005-11-18 18:54 ` keith 0 siblings, 0 replies; 26+ messages in thread From: keith @ 2005-11-18 18:54 UTC (permalink / raw) To: KAMEZAWA Hiroyuki Cc: Yasunori Goto, len.brown-ral2JQCrhuEAvxtiuMwx3w, naveen.b.s-ral2JQCrhuEAvxtiuMwx3w, acpi-devel, external hotplug mem list, Tolentino, Matthew E On Fri, 2005-11-18 at 11:56 +0900, KAMEZAWA Hiroyuki wrote: > keith wrote: > >> > > >>Could you show your AML tree around Memory ? > > > > > > See attached SSDT. > > > Thanks, at the first look..... > > > Device (ME00) > > { > <snip> > > Method (_STA, 0, NotSerialized) > > { > > If (CondRefOf (_OSI, Local0)) > > { > > If (\_OSI ("Windows 2001")) > > { > > If (LAnd (LEqual (BADH, EADH), LEqual (BADL, EADL))) > > { > > Or (MEID, \_SB.MEMI, \_SB.MEMI) > > Return (0x00) > > } > > Else > > { > > And (Not (MEID), \_SB.MEMI, \_SB.MEMI) > > Return (0x0F) > > } > > } > > } > > > > Return (0x00) > > } > It seems memory device's _STA never returns 0xF always returns 0x0. > (Device is online and enabled) when OS is not Windows2001. > All PNP0C80 decvices in this SSDT has same _STA function. I see. I have no experience reading these ASL files... > So, I think why your hot add failes is _STA has no present bit. > == > drivers/acpi/scan.c > > acpi_add_single_object() > <snip> > case ACPI_BUS_TYPE_DEVICE: > result = acpi_bus_get_status(device); in drivers/acpi/bus.c > if (ACPI_FAILURE(result) || !device->status.present) { <----(*) > result = -ENOENT; > goto end; > } > break; > == > > rewriting your DSDT would be sane approach. I shall go to the bios writers. Thank you very much for you help in determining the root cause of my troubles with the hot-add event. Keith Mannthey LTC xSeries ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click ^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2006-06-22 19:07 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-18 20:51 Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c Moore, Robert
[not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BEE7-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2005-11-19 10:44 ` Erik Slagter
2005-11-19 12:15 ` Kamezawa Hiroyuki
[not found] ` <1150853300.5873.49.camel@keithlap>
2006-06-21 2:10 ` [Lhms-devel] [RFC] Patch [1/1] for acpi_memhotplug.c keith mannthey
[not found] ` <20060621114334.1b954854.kamezawa.hiroyu@jp.fujitsu.com>
[not found] ` <1150863525.7865.6.camel@keithlap>
[not found] ` <20060621194832.37124aae.kamezawa.hiroyu@jp.fujitsu.com>
2006-06-21 18:43 ` [Lhms-devel] [RFC] Patch [1/2] " keith mannthey
2006-06-21 23:23 ` keith mannthey
2006-06-22 0:13 ` KAMEZAWA Hiroyuki
2006-06-22 1:37 ` keith mannthey
2006-06-22 1:58 ` KAMEZAWA Hiroyuki
2006-06-22 2:19 ` keith mannthey
2006-06-22 3:13 ` KAMEZAWA Hiroyuki
2006-06-22 3:55 ` keith mannthey
2006-06-22 5:20 ` KAMEZAWA Hiroyuki
2006-06-22 6:11 ` KAMEZAWA Hiroyuki
2006-06-22 7:01 ` KAMEZAWA Hiroyuki
2006-06-22 17:25 ` keith mannthey
2006-06-22 17:41 ` KAMEZAWA Hiroyuki
2006-06-22 18:29 ` keith mannthey
2006-06-22 19:07 ` keith mannthey
2006-06-22 2:28 ` keith mannthey
-- strict thread matches above, loose matches on Subject: below --
2005-11-18 19:47 Re: [Lhms-devel] [PATCH 1/1] patch to fix acpi_memhotplug.c Moore, Robert
[not found] ` <971FCB6690CD0E4898387DBF7552B90E0378BDDE-sBd4vmA9Se5Qxe9IK+vIArfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2005-11-19 12:03 ` Kamezawa Hiroyuki
2005-11-12 5:03 [RFC][PATCH] patch to fix acpi_memhotplug.c for my hardware keith
2005-11-15 5:36 ` [PATCH 1/1] patch to fix acpi_memhotplug.c keith
2005-11-15 10:20 ` [Lhms-devel] " Yasunori Goto
2005-11-17 4:18 ` keith
2005-11-17 6:08 ` KAMEZAWA Hiroyuki
[not found] ` <437C1E6C.6000404-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-18 2:22 ` keith
2005-11-18 2:56 ` KAMEZAWA Hiroyuki
[not found] ` <437D42F1.6080407-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2005-11-18 18:54 ` keith
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox