All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
@ 2009-09-28  6:31 Xiaotian Feng
  2009-09-28 17:38 ` Alex Chiang
  0 siblings, 1 reply; 23+ messages in thread
From: Xiaotian Feng @ 2009-09-28  6:31 UTC (permalink / raw)
  To: lenb, bjorn.helgaas, achiang, andrew.patterson, jbarnes
  Cc: linux-acpi, linux-kernel, Xiaotian Feng

commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
can be NULL, then a NULL was passed to pci_get_slot, this results
the kernel oops when resume from suspend.

This patch resolves following kernel oops:
BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c

Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
---
 drivers/acpi/pci_root.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index 3112221..3c35144 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
 		if (!pdev || hnd == handle)
 			break;
 
-		pbus = pdev->subordinate;
+		if (pdev->subordinate)
+			pbus = pdev->subordinate;
+		else
+			pbus = pdev->bus;
+
 		pci_dev_put(pdev);
 	}
 out:
-- 
1.6.2.5


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-28  6:31 [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend Xiaotian Feng
@ 2009-09-28 17:38 ` Alex Chiang
  2009-09-28 20:43   ` Rafael J. Wysocki
  2009-09-29  1:44   ` Danny Feng
  0 siblings, 2 replies; 23+ messages in thread
From: Alex Chiang @ 2009-09-28 17:38 UTC (permalink / raw)
  To: Xiaotian Feng
  Cc: lenb, bjorn.helgaas, andrew.patterson, jbarnes, linux-acpi, linux-kernel

Hi Xiaotian,

Thanks for the bug report.

* Xiaotian Feng <dfeng@redhat.com>:
> commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
> can be NULL, then a NULL was passed to pci_get_slot, this results
> the kernel oops when resume from suspend.
> 
> This patch resolves following kernel oops:
> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> 
> Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
> ---
>  drivers/acpi/pci_root.c |    6 +++++-
>  1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> index 3112221..3c35144 100644
> --- a/drivers/acpi/pci_root.c
> +++ b/drivers/acpi/pci_root.c
> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
>  		if (!pdev || hnd == handle)
>  			break;
>  
> -		pbus = pdev->subordinate;
> +		if (pdev->subordinate)
> +			pbus = pdev->subordinate;
> +		else
> +			pbus = pdev->bus;
> +

I'm a little confused by this. If we start from the PCI root
bridge and walk back down the hierarchy, shouldn't everything
between the root and the device be a P2P bridge?

What is special about suspend/resume that causes the subordinate
bus to become NULL?

Can you send the full stacktrace?

Thanks.

/ac


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-28 17:38 ` Alex Chiang
@ 2009-09-28 20:43   ` Rafael J. Wysocki
  2009-09-28 21:05     ` Rafael J. Wysocki
  2009-09-29  1:44   ` Danny Feng
  1 sibling, 1 reply; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-28 20:43 UTC (permalink / raw)
  To: Alex Chiang
  Cc: Xiaotian Feng, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Monday 28 September 2009, Alex Chiang wrote:
> Hi Xiaotian,
> 
> Thanks for the bug report.
> 
> * Xiaotian Feng <dfeng@redhat.com>:
> > commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
> > can be NULL, then a NULL was passed to pci_get_slot, this results
> > the kernel oops when resume from suspend.
> > 
> > This patch resolves following kernel oops:
> > BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> > IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> > 
> > Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
> > ---
> >  drivers/acpi/pci_root.c |    6 +++++-
> >  1 files changed, 5 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> > index 3112221..3c35144 100644
> > --- a/drivers/acpi/pci_root.c
> > +++ b/drivers/acpi/pci_root.c
> > @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> >  		if (!pdev || hnd == handle)
> >  			break;
> >  
> > -		pbus = pdev->subordinate;
> > +		if (pdev->subordinate)
> > +			pbus = pdev->subordinate;
> > +		else
> > +			pbus = pdev->bus;
> > +
> 
> I'm a little confused by this. If we start from the PCI root
> bridge and walk back down the hierarchy, shouldn't everything
> between the root and the device be a P2P bridge?

Well, if my reading of the code is correct, there's no guarantee that
pci_get_slot() will always return either the right device or a bridge.  If it
returns anything that's not a bridge or the device we're looking for, we'll hit
the NULL pointer deref.

In fact it looks like we should also clear pdev if no device was found.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-28 20:43   ` Rafael J. Wysocki
@ 2009-09-28 21:05     ` Rafael J. Wysocki
  2009-09-28 22:20       ` Alex Chiang
  0 siblings, 1 reply; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-28 21:05 UTC (permalink / raw)
  To: Alex Chiang
  Cc: Xiaotian Feng, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Monday 28 September 2009, Rafael J. Wysocki wrote:
> On Monday 28 September 2009, Alex Chiang wrote:
> > Hi Xiaotian,
> > 
> > Thanks for the bug report.
> > 
> > * Xiaotian Feng <dfeng@redhat.com>:
> > > commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
> > > can be NULL, then a NULL was passed to pci_get_slot, this results
> > > the kernel oops when resume from suspend.
> > > 
> > > This patch resolves following kernel oops:
> > > BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> > > IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> > > 
> > > Signed-off-by: Xiaotian Feng <dfeng@redhat.com>
> > > ---
> > >  drivers/acpi/pci_root.c |    6 +++++-
> > >  1 files changed, 5 insertions(+), 1 deletions(-)
> > > 
> > > diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> > > index 3112221..3c35144 100644
> > > --- a/drivers/acpi/pci_root.c
> > > +++ b/drivers/acpi/pci_root.c
> > > @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> > >  		if (!pdev || hnd == handle)
> > >  			break;
> > >  
> > > -		pbus = pdev->subordinate;
> > > +		if (pdev->subordinate)
> > > +			pbus = pdev->subordinate;
> > > +		else
> > > +			pbus = pdev->bus;
> > > +
> > 
> > I'm a little confused by this. If we start from the PCI root
> > bridge and walk back down the hierarchy, shouldn't everything
> > between the root and the device be a P2P bridge?
> 
> Well, if my reading of the code is correct, there's no guarantee that
> pci_get_slot() will always return either the right device or a bridge.

I should have been more precise.

If devfn of node happens to be the same as devfn of a non-bridge device on
pbus, the pci_get_slot() will return a valid pointer to it, but
pdev->subordinate will be NULL.  Is it impossible for some reason?

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-28 21:05     ` Rafael J. Wysocki
@ 2009-09-28 22:20       ` Alex Chiang
  2009-09-28 22:50         ` Rafael J. Wysocki
  0 siblings, 1 reply; 23+ messages in thread
From: Alex Chiang @ 2009-09-28 22:20 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Xiaotian Feng, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

* Rafael J. Wysocki <rjw@sisk.pl>:
> On Monday 28 September 2009, Rafael J. Wysocki wrote:
> > On Monday 28 September 2009, Alex Chiang wrote:
> > > * Xiaotian Feng <dfeng@redhat.com>:
> > > > --- a/drivers/acpi/pci_root.c
> > > > +++ b/drivers/acpi/pci_root.c
> > > > @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> > > >  		if (!pdev || hnd == handle)
> > > >  			break;
> > > >  
> > > > -		pbus = pdev->subordinate;
> > > > +		if (pdev->subordinate)
> > > > +			pbus = pdev->subordinate;
> > > > +		else
> > > > +			pbus = pdev->bus;
> > > > +
> > > 
> > > I'm a little confused by this. If we start from the PCI root
> > > bridge and walk back down the hierarchy, shouldn't everything
> > > between the root and the device be a P2P bridge?
> > 
> > Well, if my reading of the code is correct, there's no guarantee that
> > pci_get_slot() will always return either the right device or a bridge.
> 
> I should have been more precise.
> 
> If devfn of node happens to be the same as devfn of a non-bridge device on
> pbus, the pci_get_slot() will return a valid pointer to it, but
> pdev->subordinate will be NULL.  Is it impossible for some reason?

Hm, that's a good thought, but I'm still confused. Here's the
first part of the full function (acpi_get_pci_dev):

        phandle = handle;
        while (!acpi_is_root_bridge(phandle)) {
                node = kzalloc(sizeof(struct acpi_handle_node), GFP_KERNEL);
                if (!node)
                        goto out;

                INIT_LIST_HEAD(&node->node);
                node->handle = phandle;
                list_add(&node->node, &device_list);

                status = acpi_get_parent(phandle, &phandle);
                if (ACPI_FAILURE(status))
                        goto out;
        }

phandle starts off as the input parameter, and we make successive
calls to acpi_get_parent() to walk up the ACPI device tree until
we get to a root bridge.

My assumption here is that all those ACPI devices must be P2P
bridges.

        root = acpi_pci_find_root(phandle);
        if (!root)
                goto out;

        pbus = root->bus;

Now we've got an acpi_pci_root() which has a struct pci_bus, and
we can start walking back down the PCI tree. Except what we're
really doing is iterating across the device_list which we created
above.

device_list should only contain P2P bridges, based on my
assumption above.

        list_for_each_entry(node, &device_list, node) {
                acpi_handle hnd = node->handle;
                status = acpi_evaluate_integer(hnd, "_ADR", NULL, &adr);
                if (ACPI_FAILURE(status))
                        goto out;
                dev = (adr >> 16) & 0xffff;
                fn  = adr & 0xffff;

                pdev = pci_get_slot(pbus, PCI_DEVFN(dev, fn));
                if (!pdev || hnd == handle)
                        break;

                pbus = pdev->subordinate;
                pci_dev_put(pdev);
        }

The point you raise about collision between the devfn of 'node'
and some non-bridge device returned by pci_get_slot() seems like
it really shouldn't happen, because we evaluate _ADR for each
node on device_list, in the reverse order that we found them, and
based on my assumption, all those nodes should be bridges.

I'm not saying that Xiaotian's patch is wrong. I'm saying I'd
like to be educated as to why my basic assumption was wrong,
because now you're making me think that this code is pretty
fragile. :-/

Thanks.

/ac



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-28 22:20       ` Alex Chiang
@ 2009-09-28 22:50         ` Rafael J. Wysocki
  2009-09-29 10:11           ` Danny Feng
  0 siblings, 1 reply; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-28 22:50 UTC (permalink / raw)
  To: Alex Chiang
  Cc: Xiaotian Feng, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Tuesday 29 September 2009, Alex Chiang wrote:
> * Rafael J. Wysocki <rjw@sisk.pl>:
> > On Monday 28 September 2009, Rafael J. Wysocki wrote:
> > > On Monday 28 September 2009, Alex Chiang wrote:
> > > > * Xiaotian Feng <dfeng@redhat.com>:
> > > > > --- a/drivers/acpi/pci_root.c
> > > > > +++ b/drivers/acpi/pci_root.c
> > > > > @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> > > > >  		if (!pdev || hnd == handle)
> > > > >  			break;
> > > > >  
> > > > > -		pbus = pdev->subordinate;
> > > > > +		if (pdev->subordinate)
> > > > > +			pbus = pdev->subordinate;
> > > > > +		else
> > > > > +			pbus = pdev->bus;
> > > > > +
> > > > 
> > > > I'm a little confused by this. If we start from the PCI root
> > > > bridge and walk back down the hierarchy, shouldn't everything
> > > > between the root and the device be a P2P bridge?
> > > 
> > > Well, if my reading of the code is correct, there's no guarantee that
> > > pci_get_slot() will always return either the right device or a bridge.
> > 
> > I should have been more precise.
> > 
> > If devfn of node happens to be the same as devfn of a non-bridge device on
> > pbus, the pci_get_slot() will return a valid pointer to it, but
> > pdev->subordinate will be NULL.  Is it impossible for some reason?
> 
> Hm, that's a good thought, but I'm still confused. Here's the
> first part of the full function (acpi_get_pci_dev):
> 
>         phandle = handle;
>         while (!acpi_is_root_bridge(phandle)) {
>                 node = kzalloc(sizeof(struct acpi_handle_node), GFP_KERNEL);
>                 if (!node)
>                         goto out;
> 
>                 INIT_LIST_HEAD(&node->node);
>                 node->handle = phandle;
>                 list_add(&node->node, &device_list);
> 
>                 status = acpi_get_parent(phandle, &phandle);
>                 if (ACPI_FAILURE(status))
>                         goto out;
>         }
> 
> phandle starts off as the input parameter, and we make successive
> calls to acpi_get_parent() to walk up the ACPI device tree until
> we get to a root bridge.
> 
> My assumption here is that all those ACPI devices must be P2P
> bridges.
> 
>         root = acpi_pci_find_root(phandle);
>         if (!root)
>                 goto out;
> 
>         pbus = root->bus;
> 
> Now we've got an acpi_pci_root() which has a struct pci_bus, and
> we can start walking back down the PCI tree. Except what we're
> really doing is iterating across the device_list which we created
> above.
> 
> device_list should only contain P2P bridges, based on my
> assumption above.
> 
>         list_for_each_entry(node, &device_list, node) {
>                 acpi_handle hnd = node->handle;
>                 status = acpi_evaluate_integer(hnd, "_ADR", NULL, &adr);
>                 if (ACPI_FAILURE(status))
>                         goto out;
>                 dev = (adr >> 16) & 0xffff;
>                 fn  = adr & 0xffff;
> 
>                 pdev = pci_get_slot(pbus, PCI_DEVFN(dev, fn));
>                 if (!pdev || hnd == handle)
>                         break;
> 
>                 pbus = pdev->subordinate;
>                 pci_dev_put(pdev);
>         }
> 
> The point you raise about collision between the devfn of 'node'
> and some non-bridge device returned by pci_get_slot() seems like
> it really shouldn't happen, because we evaluate _ADR for each
> node on device_list, in the reverse order that we found them, and
> based on my assumption, all those nodes should be bridges.

You seem to be right, but if the Xiaotian's patch actually fixes the NULL
pointer deref, one of the assumptions is clearly wrong.

> I'm not saying that Xiaotian's patch is wrong. I'm saying I'd
> like to be educated as to why my basic assumption was wrong,
> because now you're making me think that this code is pretty
> fragile. :-/

Perhaps Xiaotian can add some printk()s on top of his patch that will show us
exactly in what conditions pbus becomes NULL.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-28 17:38 ` Alex Chiang
  2009-09-28 20:43   ` Rafael J. Wysocki
@ 2009-09-29  1:44   ` Danny Feng
  2009-09-29 20:12       ` Rafael J. Wysocki
  2009-10-01 20:05     ` Alex Chiang
  1 sibling, 2 replies; 23+ messages in thread
From: Danny Feng @ 2009-09-29  1:44 UTC (permalink / raw)
  To: Alex Chiang
  Cc: lenb, bjorn.helgaas, andrew.patterson, jbarnes, linux-acpi, linux-kernel

On 09/29/2009 01:38 AM, Alex Chiang wrote:
> Hi Xiaotian,
>
> Thanks for the bug report.
>
> * Xiaotian Feng<dfeng@redhat.com>:
>    
>> commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
>> can be NULL, then a NULL was passed to pci_get_slot, this results
>> the kernel oops when resume from suspend.
>>
>> This patch resolves following kernel oops:
>> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
>> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>
>> Signed-off-by: Xiaotian Feng<dfeng@redhat.com>
>> ---
>>   drivers/acpi/pci_root.c |    6 +++++-
>>   1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
>> index 3112221..3c35144 100644
>> --- a/drivers/acpi/pci_root.c
>> +++ b/drivers/acpi/pci_root.c
>> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
>>   		if (!pdev || hnd == handle)
>>   			break;
>>
>> -		pbus = pdev->subordinate;
>> +		if (pdev->subordinate)
>> +			pbus = pdev->subordinate;
>> +		else
>> +			pbus = pdev->bus;
>> +
>>      
> I'm a little confused by this. If we start from the PCI root
> bridge and walk back down the hierarchy, shouldn't everything
> between the root and the device be a P2P bridge?
>
> What is special about suspend/resume that causes the subordinate
> bus to become NULL?
>
> Can you send the full stacktrace?
>
> Thanks.
>
> /ac
>
>
>    
the full call trace is here:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
PGD 208b9d067 PUD 208a89067 PMD 0
Oops: 0000 [#1] SMP
last sysfs file: /sys/power/state
CPU 0
Modules linked in: fuse radeon ttm drm_kms_helper drm i2c_algo_bit sco 
bridge stp llc bnep l2cap bluetooth sunrpc ip6t_REJECT nf_conntrack_ipv6 
ip6table_filter ip6_tables ipv6 dm_multipath uinput snd_hda_codec_analog 
snd_hda_intel snd_hda_codec snd_hwdep e1000e snd_pcm snd_timer i2c_i801 
i2c_core snd soundcore snd_page_alloc iTCO_wdt iTCO_vendor_support 
serio_raw ppdev parport_pc parport pcspkr dcdbas ata_generic pata_acpi 
[last unloaded: speedstep_lib]
Pid: 35, comm: kacpi_hotplug Not tainted 2.6.32-rc2 #3 OptiPlex 760
RIP: 0010:[<ffffffff812217e7>]  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
RSP: 0018:ffff88022ee69aa0  EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff88022e9b1090 RCX: 00000000000000a0
RDX: 000000000000002f RSI: ffffffff8168ab38 RDI: ffffffff8168ab38
RBP: ffff88022ee69ac0 R08: ffffffff8168ab30 R09: ffff880100000000
R10: ffffffff8168ab50 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000001 R14: ffff88022f712000 R15: ffff88022f710dd0
FS:  0000000000000000(0000) GS:ffff880028200000(0000) 
knlGS:0000000000000000
CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
CR2: 0000000000000028 CR3: 00000001fc298000 CR4: 00000000000406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process kacpi_hotplug (pid: 35, threadinfo ffff88022ee68000, task 
ffff88022eefc120)
Stack:
  0000000000000018 ffff88022e9b1090 ffff88020880e9c0 0000000000000000
<0> ffff88022ee69b30 ffffffff81254193 0000000000000000 ffff88022ee69ae0
<0> ffff88020880e340 ffff88020880ee38 ffff88022f710208 0000000000000001
Call Trace:
  [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
  [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
  [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
  [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
  [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
  [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
  [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
  [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
  [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
  [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
  [<ffffffff8106a244>] worker_thread+0x251/0x347
  [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
  [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
  [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
  [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
  [<ffffffff8106e0e0>] kthread+0x7f/0x87
  [<ffffffff81012cea>] child_rip+0xa/0x20
  [<ffffffff81012650>] ? restore_args+0x0/0x30
  [<ffffffff8106e061>] ? kthread+0x0/0x87
  [<ffffffff81012ce0>] ? child_rip+0x0/0x20
Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7 
45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00 <49> 8b 
5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
  RSP <ffff88022ee69aa0>
CR2: 0000000000000028
---[ end trace b5a7793bd9db2a4d ]---


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-28 22:50         ` Rafael J. Wysocki
@ 2009-09-29 10:11           ` Danny Feng
  2009-09-29 20:08             ` Rafael J. Wysocki
  0 siblings, 1 reply; 23+ messages in thread
From: Danny Feng @ 2009-09-29 10:11 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On 09/29/2009 06:50 AM, Rafael J. Wysocki wrote:
> On Tuesday 29 September 2009, Alex Chiang wrote:
>> * Rafael J. Wysocki<rjw@sisk.pl>:
>>> On Monday 28 September 2009, Rafael J. Wysocki wrote:
>>>> On Monday 28 September 2009, Alex Chiang wrote:
>>>>> * Xiaotian Feng<dfeng@redhat.com>:
>>>>>> --- a/drivers/acpi/pci_root.c
>>>>>> +++ b/drivers/acpi/pci_root.c
>>>>>> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
>>>>>>   		if (!pdev || hnd == handle)
>>>>>>   			break;
>>>>>>
>>>>>> -		pbus = pdev->subordinate;
>>>>>> +		if (pdev->subordinate)
>>>>>> +			pbus = pdev->subordinate;
>>>>>> +		else
>>>>>> +			pbus = pdev->bus;
>>>>>> +
>>>>>
>>>>> I'm a little confused by this. If we start from the PCI root
>>>>> bridge and walk back down the hierarchy, shouldn't everything
>>>>> between the root and the device be a P2P bridge?
>>>>
>>>> Well, if my reading of the code is correct, there's no guarantee that
>>>> pci_get_slot() will always return either the right device or a bridge.
>>>
>>> I should have been more precise.
>>>
>>> If devfn of node happens to be the same as devfn of a non-bridge device on
>>> pbus, the pci_get_slot() will return a valid pointer to it, but
>>> pdev->subordinate will be NULL.  Is it impossible for some reason?
>>
>> Hm, that's a good thought, but I'm still confused. Here's the
>> first part of the full function (acpi_get_pci_dev):
>>
>>          phandle = handle;
>>          while (!acpi_is_root_bridge(phandle)) {
>>                  node = kzalloc(sizeof(struct acpi_handle_node), GFP_KERNEL);
>>                  if (!node)
>>                          goto out;
>>
>>                  INIT_LIST_HEAD(&node->node);
>>                  node->handle = phandle;
>>                  list_add(&node->node,&device_list);
>>
>>                  status = acpi_get_parent(phandle,&phandle);
>>                  if (ACPI_FAILURE(status))
>>                          goto out;
>>          }
>>
>> phandle starts off as the input parameter, and we make successive
>> calls to acpi_get_parent() to walk up the ACPI device tree until
>> we get to a root bridge.
>>
>> My assumption here is that all those ACPI devices must be P2P
>> bridges.
>>
>>          root = acpi_pci_find_root(phandle);
>>          if (!root)
>>                  goto out;
>>
>>          pbus = root->bus;
>>
>> Now we've got an acpi_pci_root() which has a struct pci_bus, and
>> we can start walking back down the PCI tree. Except what we're
>> really doing is iterating across the device_list which we created
>> above.
>>
>> device_list should only contain P2P bridges, based on my
>> assumption above.
>>
>>          list_for_each_entry(node,&device_list, node) {
>>                  acpi_handle hnd = node->handle;
>>                  status = acpi_evaluate_integer(hnd, "_ADR", NULL,&adr);
>>                  if (ACPI_FAILURE(status))
>>                          goto out;
>>                  dev = (adr>>  16)&  0xffff;
>>                  fn  = adr&  0xffff;
>>
>>                  pdev = pci_get_slot(pbus, PCI_DEVFN(dev, fn));
>>                  if (!pdev || hnd == handle)
>>                          break;
>>
>>                  pbus = pdev->subordinate;
>>                  pci_dev_put(pdev);
>>          }
>>
>> The point you raise about collision between the devfn of 'node'
>> and some non-bridge device returned by pci_get_slot() seems like
>> it really shouldn't happen, because we evaluate _ADR for each
>> node on device_list, in the reverse order that we found them, and
>> based on my assumption, all those nodes should be bridges.
>
> You seem to be right, but if the Xiaotian's patch actually fixes the NULL
> pointer deref, one of the assumptions is clearly wrong.
>
>> I'm not saying that Xiaotian's patch is wrong. I'm saying I'd
>> like to be educated as to why my basic assumption was wrong,
>> because now you're making me think that this code is pretty
>> fragile. :-/
>
> Perhaps Xiaotian can add some printk()s on top of his patch that will show us
> exactly in what conditions pbus becomes NULL.
>
> Thanks,
> Rafael
>
Is there any cases that pdev->subordinate is NULL while pdev is bridge 
device?
 From pci_slot.c::walk_p2p_bridge, there's code like following:

         dev = pci_get_slot(pci_bus, PCI_DEVFN(device, function));
         if (!dev || !dev->subordinate)
                 goto out;

It looks like dev->subordinate can be NULL even if in p2p bridge, right?

Thanks
Xiaotian


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-29 10:11           ` Danny Feng
@ 2009-09-29 20:08             ` Rafael J. Wysocki
  2009-09-29 20:49               ` Alex Chiang
  0 siblings, 1 reply; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-29 20:08 UTC (permalink / raw)
  To: Danny Feng
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Tuesday 29 September 2009, Danny Feng wrote:
> On 09/29/2009 06:50 AM, Rafael J. Wysocki wrote:
> > On Tuesday 29 September 2009, Alex Chiang wrote:
> >> * Rafael J. Wysocki<rjw@sisk.pl>:
> >>> On Monday 28 September 2009, Rafael J. Wysocki wrote:
> >>>> On Monday 28 September 2009, Alex Chiang wrote:
> >>>>> * Xiaotian Feng<dfeng@redhat.com>:
> >>>>>> --- a/drivers/acpi/pci_root.c
> >>>>>> +++ b/drivers/acpi/pci_root.c
> >>>>>> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> >>>>>>   		if (!pdev || hnd == handle)
> >>>>>>   			break;
> >>>>>>
> >>>>>> -		pbus = pdev->subordinate;
> >>>>>> +		if (pdev->subordinate)
> >>>>>> +			pbus = pdev->subordinate;
> >>>>>> +		else
> >>>>>> +			pbus = pdev->bus;
> >>>>>> +
> >>>>>
> >>>>> I'm a little confused by this. If we start from the PCI root
> >>>>> bridge and walk back down the hierarchy, shouldn't everything
> >>>>> between the root and the device be a P2P bridge?
> >>>>
> >>>> Well, if my reading of the code is correct, there's no guarantee that
> >>>> pci_get_slot() will always return either the right device or a bridge.
> >>>
> >>> I should have been more precise.
> >>>
> >>> If devfn of node happens to be the same as devfn of a non-bridge device on
> >>> pbus, the pci_get_slot() will return a valid pointer to it, but
> >>> pdev->subordinate will be NULL.  Is it impossible for some reason?
> >>
> >> Hm, that's a good thought, but I'm still confused. Here's the
> >> first part of the full function (acpi_get_pci_dev):
> >>
> >>          phandle = handle;
> >>          while (!acpi_is_root_bridge(phandle)) {
> >>                  node = kzalloc(sizeof(struct acpi_handle_node), GFP_KERNEL);
> >>                  if (!node)
> >>                          goto out;
> >>
> >>                  INIT_LIST_HEAD(&node->node);
> >>                  node->handle = phandle;
> >>                  list_add(&node->node,&device_list);
> >>
> >>                  status = acpi_get_parent(phandle,&phandle);
> >>                  if (ACPI_FAILURE(status))
> >>                          goto out;
> >>          }
> >>
> >> phandle starts off as the input parameter, and we make successive
> >> calls to acpi_get_parent() to walk up the ACPI device tree until
> >> we get to a root bridge.
> >>
> >> My assumption here is that all those ACPI devices must be P2P
> >> bridges.
> >>
> >>          root = acpi_pci_find_root(phandle);
> >>          if (!root)
> >>                  goto out;
> >>
> >>          pbus = root->bus;
> >>
> >> Now we've got an acpi_pci_root() which has a struct pci_bus, and
> >> we can start walking back down the PCI tree. Except what we're
> >> really doing is iterating across the device_list which we created
> >> above.
> >>
> >> device_list should only contain P2P bridges, based on my
> >> assumption above.
> >>
> >>          list_for_each_entry(node,&device_list, node) {
> >>                  acpi_handle hnd = node->handle;
> >>                  status = acpi_evaluate_integer(hnd, "_ADR", NULL,&adr);
> >>                  if (ACPI_FAILURE(status))
> >>                          goto out;
> >>                  dev = (adr>>  16)&  0xffff;
> >>                  fn  = adr&  0xffff;
> >>
> >>                  pdev = pci_get_slot(pbus, PCI_DEVFN(dev, fn));
> >>                  if (!pdev || hnd == handle)
> >>                          break;
> >>
> >>                  pbus = pdev->subordinate;
> >>                  pci_dev_put(pdev);
> >>          }
> >>
> >> The point you raise about collision between the devfn of 'node'
> >> and some non-bridge device returned by pci_get_slot() seems like
> >> it really shouldn't happen, because we evaluate _ADR for each
> >> node on device_list, in the reverse order that we found them, and
> >> based on my assumption, all those nodes should be bridges.
> >
> > You seem to be right, but if the Xiaotian's patch actually fixes the NULL
> > pointer deref, one of the assumptions is clearly wrong.
> >
> >> I'm not saying that Xiaotian's patch is wrong. I'm saying I'd
> >> like to be educated as to why my basic assumption was wrong,
> >> because now you're making me think that this code is pretty
> >> fragile. :-/
> >
> > Perhaps Xiaotian can add some printk()s on top of his patch that will show us
> > exactly in what conditions pbus becomes NULL.
> >
> > Thanks,
> > Rafael
> >
> Is there any cases that pdev->subordinate is NULL while pdev is bridge 
> device?
>  From pci_slot.c::walk_p2p_bridge, there's code like following:
> 
>          dev = pci_get_slot(pci_bus, PCI_DEVFN(device, function));
>          if (!dev || !dev->subordinate)
>                  goto out;
> 
> It looks like dev->subordinate can be NULL even if in p2p bridge, right?

Right, in general, but in this particular case each device we inspect is
supposed to be a parent of another device, which implies that there's a bus
below it (given that it's a PCI device).

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-29  1:44   ` Danny Feng
@ 2009-09-29 20:12       ` Rafael J. Wysocki
  2009-10-01 20:05     ` Alex Chiang
  1 sibling, 0 replies; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-29 20:12 UTC (permalink / raw)
  To: Danny Feng
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Tuesday 29 September 2009, Danny Feng wrote:
> On 09/29/2009 01:38 AM, Alex Chiang wrote:
> > Hi Xiaotian,
> >
> > Thanks for the bug report.
> >
> > * Xiaotian Feng<dfeng@redhat.com>:
> >    
> >> commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
> >> can be NULL, then a NULL was passed to pci_get_slot, this results
> >> the kernel oops when resume from suspend.
> >>
> >> This patch resolves following kernel oops:
> >> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> >> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> >>
> >> Signed-off-by: Xiaotian Feng<dfeng@redhat.com>
> >> ---
> >>   drivers/acpi/pci_root.c |    6 +++++-
> >>   1 files changed, 5 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> >> index 3112221..3c35144 100644
> >> --- a/drivers/acpi/pci_root.c
> >> +++ b/drivers/acpi/pci_root.c
> >> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> >>   		if (!pdev || hnd == handle)
> >>   			break;
> >>
> >> -		pbus = pdev->subordinate;
> >> +		if (pdev->subordinate)
> >> +			pbus = pdev->subordinate;
> >> +		else
> >> +			pbus = pdev->bus;
> >> +
> >>      
> > I'm a little confused by this. If we start from the PCI root
> > bridge and walk back down the hierarchy, shouldn't everything
> > between the root and the device be a P2P bridge?
> >
> > What is special about suspend/resume that causes the subordinate
> > bus to become NULL?
> >
> > Can you send the full stacktrace?
> >
> > Thanks.
> >
> > /ac
> >
> >
> >    
> the full call trace is here:
> 
> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> PGD 208b9d067 PUD 208a89067 PMD 0
> Oops: 0000 [#1] SMP
> last sysfs file: /sys/power/state
> CPU 0
> Modules linked in: fuse radeon ttm drm_kms_helper drm i2c_algo_bit sco 
> bridge stp llc bnep l2cap bluetooth sunrpc ip6t_REJECT nf_conntrack_ipv6 
> ip6table_filter ip6_tables ipv6 dm_multipath uinput snd_hda_codec_analog 
> snd_hda_intel snd_hda_codec snd_hwdep e1000e snd_pcm snd_timer i2c_i801 
> i2c_core snd soundcore snd_page_alloc iTCO_wdt iTCO_vendor_support 
> serio_raw ppdev parport_pc parport pcspkr dcdbas ata_generic pata_acpi 
> [last unloaded: speedstep_lib]
> Pid: 35, comm: kacpi_hotplug Not tainted 2.6.32-rc2 #3 OptiPlex 760
> RIP: 0010:[<ffffffff812217e7>]  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> RSP: 0018:ffff88022ee69aa0  EFLAGS: 00010286
> RAX: 0000000000000000 RBX: ffff88022e9b1090 RCX: 00000000000000a0
> RDX: 000000000000002f RSI: ffffffff8168ab38 RDI: ffffffff8168ab38
> RBP: ffff88022ee69ac0 R08: ffffffff8168ab30 R09: ffff880100000000
> R10: ffffffff8168ab50 R11: 0000000000000000 R12: 0000000000000000
> R13: 0000000000000001 R14: ffff88022f712000 R15: ffff88022f710dd0
> FS:  0000000000000000(0000) GS:ffff880028200000(0000) 
> knlGS:0000000000000000
> CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
> CR2: 0000000000000028 CR3: 00000001fc298000 CR4: 00000000000406f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process kacpi_hotplug (pid: 35, threadinfo ffff88022ee68000, task 
> ffff88022eefc120)
> Stack:
>   0000000000000018 ffff88022e9b1090 ffff88020880e9c0 0000000000000000
> <0> ffff88022ee69b30 ffffffff81254193 0000000000000000 ffff88022ee69ae0
> <0> ffff88020880e340 ffff88020880ee38 ffff88022f710208 0000000000000001
> Call Trace:
>   [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167

Have you checked (using gdb) which source code line this corresponds to?

>   [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>   [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>   [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>   [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>   [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>   [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e

This looks like a device has just been discovered.

>   [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>   [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192

Have the machine been docked while suspended?

>   [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>   [<ffffffff8106a244>] worker_thread+0x251/0x347
>   [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>   [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>   [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>   [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>   [<ffffffff8106e0e0>] kthread+0x7f/0x87
>   [<ffffffff81012cea>] child_rip+0xa/0x20
>   [<ffffffff81012650>] ? restore_args+0x0/0x30
>   [<ffffffff8106e061>] ? kthread+0x0/0x87
>   [<ffffffff81012ce0>] ? child_rip+0x0/0x20
> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7 
> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00 <49> 8b 
> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>   RSP <ffff88022ee69aa0>
> CR2: 0000000000000028
> ---[ end trace b5a7793bd9db2a4d ]---

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after  resume from suspend
@ 2009-09-29 20:12       ` Rafael J. Wysocki
  0 siblings, 0 replies; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-29 20:12 UTC (permalink / raw)
  To: Danny Feng
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Tuesday 29 September 2009, Danny Feng wrote:
> On 09/29/2009 01:38 AM, Alex Chiang wrote:
> > Hi Xiaotian,
> >
> > Thanks for the bug report.
> >
> > * Xiaotian Feng<dfeng@redhat.com>:
> >    
> >> commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
> >> can be NULL, then a NULL was passed to pci_get_slot, this results
> >> the kernel oops when resume from suspend.
> >>
> >> This patch resolves following kernel oops:
> >> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> >> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> >>
> >> Signed-off-by: Xiaotian Feng<dfeng@redhat.com>
> >> ---
> >>   drivers/acpi/pci_root.c |    6 +++++-
> >>   1 files changed, 5 insertions(+), 1 deletions(-)
> >>
> >> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> >> index 3112221..3c35144 100644
> >> --- a/drivers/acpi/pci_root.c
> >> +++ b/drivers/acpi/pci_root.c
> >> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> >>   		if (!pdev || hnd == handle)
> >>   			break;
> >>
> >> -		pbus = pdev->subordinate;
> >> +		if (pdev->subordinate)
> >> +			pbus = pdev->subordinate;
> >> +		else
> >> +			pbus = pdev->bus;
> >> +
> >>      
> > I'm a little confused by this. If we start from the PCI root
> > bridge and walk back down the hierarchy, shouldn't everything
> > between the root and the device be a P2P bridge?
> >
> > What is special about suspend/resume that causes the subordinate
> > bus to become NULL?
> >
> > Can you send the full stacktrace?
> >
> > Thanks.
> >
> > /ac
> >
> >
> >    
> the full call trace is here:
> 
> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> PGD 208b9d067 PUD 208a89067 PMD 0
> Oops: 0000 [#1] SMP
> last sysfs file: /sys/power/state
> CPU 0
> Modules linked in: fuse radeon ttm drm_kms_helper drm i2c_algo_bit sco 
> bridge stp llc bnep l2cap bluetooth sunrpc ip6t_REJECT nf_conntrack_ipv6 
> ip6table_filter ip6_tables ipv6 dm_multipath uinput snd_hda_codec_analog 
> snd_hda_intel snd_hda_codec snd_hwdep e1000e snd_pcm snd_timer i2c_i801 
> i2c_core snd soundcore snd_page_alloc iTCO_wdt iTCO_vendor_support 
> serio_raw ppdev parport_pc parport pcspkr dcdbas ata_generic pata_acpi 
> [last unloaded: speedstep_lib]
> Pid: 35, comm: kacpi_hotplug Not tainted 2.6.32-rc2 #3 OptiPlex 760
> RIP: 0010:[<ffffffff812217e7>]  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> RSP: 0018:ffff88022ee69aa0  EFLAGS: 00010286
> RAX: 0000000000000000 RBX: ffff88022e9b1090 RCX: 00000000000000a0
> RDX: 000000000000002f RSI: ffffffff8168ab38 RDI: ffffffff8168ab38
> RBP: ffff88022ee69ac0 R08: ffffffff8168ab30 R09: ffff880100000000
> R10: ffffffff8168ab50 R11: 0000000000000000 R12: 0000000000000000
> R13: 0000000000000001 R14: ffff88022f712000 R15: ffff88022f710dd0
> FS:  0000000000000000(0000) GS:ffff880028200000(0000) 
> knlGS:0000000000000000
> CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
> CR2: 0000000000000028 CR3: 00000001fc298000 CR4: 00000000000406f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process kacpi_hotplug (pid: 35, threadinfo ffff88022ee68000, task 
> ffff88022eefc120)
> Stack:
>   0000000000000018 ffff88022e9b1090 ffff88020880e9c0 0000000000000000
> <0> ffff88022ee69b30 ffffffff81254193 0000000000000000 ffff88022ee69ae0
> <0> ffff88020880e340 ffff88020880ee38 ffff88022f710208 0000000000000001
> Call Trace:
>   [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167

Have you checked (using gdb) which source code line this corresponds to?

>   [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>   [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>   [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>   [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>   [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>   [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e

This looks like a device has just been discovered.

>   [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>   [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192

Have the machine been docked while suspended?

>   [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>   [<ffffffff8106a244>] worker_thread+0x251/0x347
>   [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>   [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>   [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>   [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>   [<ffffffff8106e0e0>] kthread+0x7f/0x87
>   [<ffffffff81012cea>] child_rip+0xa/0x20
>   [<ffffffff81012650>] ? restore_args+0x0/0x30
>   [<ffffffff8106e061>] ? kthread+0x0/0x87
>   [<ffffffff81012ce0>] ? child_rip+0x0/0x20
> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7 
> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00 <49> 8b 
> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>   RSP <ffff88022ee69aa0>
> CR2: 0000000000000028
> ---[ end trace b5a7793bd9db2a4d ]---

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-29 20:08             ` Rafael J. Wysocki
@ 2009-09-29 20:49               ` Alex Chiang
  2009-09-29 23:31                 ` Rafael J. Wysocki
  0 siblings, 1 reply; 23+ messages in thread
From: Alex Chiang @ 2009-09-29 20:49 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Danny Feng, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

* Rafael J. Wysocki <rjw@sisk.pl>:
> On Tuesday 29 September 2009, Danny Feng wrote:
> > Is there any cases that pdev->subordinate is NULL while pdev is bridge 
> > device?
> >  From pci_slot.c::walk_p2p_bridge, there's code like following:
> > 
> >          dev = pci_get_slot(pci_bus, PCI_DEVFN(device, function));
> >          if (!dev || !dev->subordinate)
> >                  goto out;
> > 
> > It looks like dev->subordinate can be NULL even if in p2p
> > bridge, right?

In the code you post above, that results from doing an ACPI
namespace walk, which will definitely find non-bridge devices.
 
> Right, in general, but in this particular case each device we
> inspect is supposed to be a parent of another device, which
> implies that there's a bus below it (given that it's a PCI
> device).

Right, that's why I'm surprised that my assumption broke. But now
that I see that a dock device is involved, maybe that's not so
surprising.

/ac


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-29 20:49               ` Alex Chiang
@ 2009-09-29 23:31                 ` Rafael J. Wysocki
  0 siblings, 0 replies; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-29 23:31 UTC (permalink / raw)
  To: Alex Chiang
  Cc: Danny Feng, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Tuesday 29 September 2009, Alex Chiang wrote:
> * Rafael J. Wysocki <rjw@sisk.pl>:
> > On Tuesday 29 September 2009, Danny Feng wrote:
> > > Is there any cases that pdev->subordinate is NULL while pdev is bridge 
> > > device?
> > >  From pci_slot.c::walk_p2p_bridge, there's code like following:
> > > 
> > >          dev = pci_get_slot(pci_bus, PCI_DEVFN(device, function));
> > >          if (!dev || !dev->subordinate)
> > >                  goto out;
> > > 
> > > It looks like dev->subordinate can be NULL even if in p2p
> > > bridge, right?
> 
> In the code you post above, that results from doing an ACPI
> namespace walk, which will definitely find non-bridge devices.
>  
> > Right, in general, but in this particular case each device we
> > inspect is supposed to be a parent of another device, which
> > implies that there's a bus below it (given that it's a PCI
> > device).
> 
> Right, that's why I'm surprised that my assumption broke. But now
> that I see that a dock device is involved, maybe that's not so
> surprising.

Yeah.  Still, I'd like to know the root cause.

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after  resume from suspend
  2009-09-29 20:12       ` Rafael J. Wysocki
  (?)
@ 2009-09-30  2:46       ` Danny Feng
  2009-09-30 21:26         ` Rafael J. Wysocki
  -1 siblings, 1 reply; 23+ messages in thread
From: Danny Feng @ 2009-09-30  2:46 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On 09/30/2009 04:12 AM, Rafael J. Wysocki wrote:
> On Tuesday 29 September 2009, Danny Feng wrote:
>> On 09/29/2009 01:38 AM, Alex Chiang wrote:
>>> Hi Xiaotian,
>>>
>>> Thanks for the bug report.
>>>
>>> * Xiaotian Feng<dfeng@redhat.com>:
>>>
>>>> commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
>>>> can be NULL, then a NULL was passed to pci_get_slot, this results
>>>> the kernel oops when resume from suspend.
>>>>
>>>> This patch resolves following kernel oops:
>>>> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
>>>> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>>>
>>>> Signed-off-by: Xiaotian Feng<dfeng@redhat.com>
>>>> ---
>>>>    drivers/acpi/pci_root.c |    6 +++++-
>>>>    1 files changed, 5 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
>>>> index 3112221..3c35144 100644
>>>> --- a/drivers/acpi/pci_root.c
>>>> +++ b/drivers/acpi/pci_root.c
>>>> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
>>>>    		if (!pdev || hnd == handle)
>>>>    			break;
>>>>
>>>> -		pbus = pdev->subordinate;
>>>> +		if (pdev->subordinate)
>>>> +			pbus = pdev->subordinate;
>>>> +		else
>>>> +			pbus = pdev->bus;
>>>> +
>>>>
>>> I'm a little confused by this. If we start from the PCI root
>>> bridge and walk back down the hierarchy, shouldn't everything
>>> between the root and the device be a P2P bridge?
>>>
>>> What is special about suspend/resume that causes the subordinate
>>> bus to become NULL?
>>>
>>> Can you send the full stacktrace?
>>>
>>> Thanks.
>>>
>>> /ac
>>>
>>>
>>>
>> the full call trace is here:
>>
>> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
>> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>> PGD 208b9d067 PUD 208a89067 PMD 0
>> Oops: 0000 [#1] SMP
>> last sysfs file: /sys/power/state
>> CPU 0
>> Modules linked in: fuse radeon ttm drm_kms_helper drm i2c_algo_bit sco
>> bridge stp llc bnep l2cap bluetooth sunrpc ip6t_REJECT nf_conntrack_ipv6
>> ip6table_filter ip6_tables ipv6 dm_multipath uinput snd_hda_codec_analog
>> snd_hda_intel snd_hda_codec snd_hwdep e1000e snd_pcm snd_timer i2c_i801
>> i2c_core snd soundcore snd_page_alloc iTCO_wdt iTCO_vendor_support
>> serio_raw ppdev parport_pc parport pcspkr dcdbas ata_generic pata_acpi
>> [last unloaded: speedstep_lib]
>> Pid: 35, comm: kacpi_hotplug Not tainted 2.6.32-rc2 #3 OptiPlex 760
>> RIP: 0010:[<ffffffff812217e7>]  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>> RSP: 0018:ffff88022ee69aa0  EFLAGS: 00010286
>> RAX: 0000000000000000 RBX: ffff88022e9b1090 RCX: 00000000000000a0
>> RDX: 000000000000002f RSI: ffffffff8168ab38 RDI: ffffffff8168ab38
>> RBP: ffff88022ee69ac0 R08: ffffffff8168ab30 R09: ffff880100000000
>> R10: ffffffff8168ab50 R11: 0000000000000000 R12: 0000000000000000
>> R13: 0000000000000001 R14: ffff88022f712000 R15: ffff88022f710dd0
>> FS:  0000000000000000(0000) GS:ffff880028200000(0000)
>> knlGS:0000000000000000
>> CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
>> CR2: 0000000000000028 CR3: 00000001fc298000 CR4: 00000000000406f0
>> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
>> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
>> Process kacpi_hotplug (pid: 35, threadinfo ffff88022ee68000, task
>> ffff88022eefc120)
>> Stack:
>>    0000000000000018 ffff88022e9b1090 ffff88020880e9c0 0000000000000000
>> <0>  ffff88022ee69b30 ffffffff81254193 0000000000000000 ffff88022ee69ae0
>> <0>  ffff88020880e340 ffff88020880ee38 ffff88022f710208 0000000000000001
>> Call Trace:
>>    [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
>
> Have you checked (using gdb) which source code line this corresponds to?
>
Yep, the code line corresponds to
pdev = pci_get_slot(pbus, PCI_DEVFN(dev, fn));

Also gdb shows pci_bus->devices has offset of 0x28.

I've put some check in acpi_get_pci_dev, it shows that pbus is NULL when 
the panic happens.

>>    [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>>    [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>>    [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>>    [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>>    [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>>    [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
>
> This looks like a device has just been discovered.
>
>>    [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>>    [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
>
> Have the machine been docked while suspended?
I was confused too..I didn't touch anything just suspend and then power 
up. Are there some devices unplugged or ejected at suspend stage?
>
>>    [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>>    [<ffffffff8106a244>] worker_thread+0x251/0x347
>>    [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>>    [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>>    [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>>    [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>>    [<ffffffff8106e0e0>] kthread+0x7f/0x87
>>    [<ffffffff81012cea>] child_rip+0xa/0x20
>>    [<ffffffff81012650>] ? restore_args+0x0/0x30
>>    [<ffffffff8106e061>] ? kthread+0x0/0x87
>>    [<ffffffff81012ce0>] ? child_rip+0x0/0x20
>> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7
>> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00<49>  8b
>> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
>> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>    RSP<ffff88022ee69aa0>
>> CR2: 0000000000000028
>> ---[ end trace b5a7793bd9db2a4d ]---
>
> Thanks,
> Rafael
>


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after  resume from suspend
  2009-09-30  2:46       ` Danny Feng
@ 2009-09-30 21:26         ` Rafael J. Wysocki
  0 siblings, 0 replies; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-09-30 21:26 UTC (permalink / raw)
  To: Danny Feng
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Wednesday 30 September 2009, Danny Feng wrote:
> On 09/30/2009 04:12 AM, Rafael J. Wysocki wrote:
> > On Tuesday 29 September 2009, Danny Feng wrote:
> >> On 09/29/2009 01:38 AM, Alex Chiang wrote:
> >>> Hi Xiaotian,
> >>>
> >>> Thanks for the bug report.
> >>>
> >>> * Xiaotian Feng<dfeng@redhat.com>:
> >>>
> >>>> commit 275582 introduces acpi_get_pci_dev(), but pdev->subordinate
> >>>> can be NULL, then a NULL was passed to pci_get_slot, this results
> >>>> the kernel oops when resume from suspend.
> >>>>
> >>>> This patch resolves following kernel oops:
> >>>> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> >>>> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> >>>>
> >>>> Signed-off-by: Xiaotian Feng<dfeng@redhat.com>
> >>>> ---
> >>>>    drivers/acpi/pci_root.c |    6 +++++-
> >>>>    1 files changed, 5 insertions(+), 1 deletions(-)
> >>>>
> >>>> diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
> >>>> index 3112221..3c35144 100644
> >>>> --- a/drivers/acpi/pci_root.c
> >>>> +++ b/drivers/acpi/pci_root.c
> >>>> @@ -387,7 +387,11 @@ struct pci_dev *acpi_get_pci_dev(acpi_handle handle)
> >>>>    		if (!pdev || hnd == handle)
> >>>>    			break;
> >>>>
> >>>> -		pbus = pdev->subordinate;
> >>>> +		if (pdev->subordinate)
> >>>> +			pbus = pdev->subordinate;
> >>>> +		else
> >>>> +			pbus = pdev->bus;
> >>>> +
> >>>>
> >>> I'm a little confused by this. If we start from the PCI root
> >>> bridge and walk back down the hierarchy, shouldn't everything
> >>> between the root and the device be a P2P bridge?
> >>>
> >>> What is special about suspend/resume that causes the subordinate
> >>> bus to become NULL?
> >>>
> >>> Can you send the full stacktrace?
> >>>
> >>> Thanks.
> >>>
> >>> /ac
> >>>
> >>>
> >>>
> >> the full call trace is here:
> >>
> >> BUG: unable to handle kernel NULL pointer dereference at 0000000000000028
> >> IP: [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> >> PGD 208b9d067 PUD 208a89067 PMD 0
> >> Oops: 0000 [#1] SMP
> >> last sysfs file: /sys/power/state
> >> CPU 0
> >> Modules linked in: fuse radeon ttm drm_kms_helper drm i2c_algo_bit sco
> >> bridge stp llc bnep l2cap bluetooth sunrpc ip6t_REJECT nf_conntrack_ipv6
> >> ip6table_filter ip6_tables ipv6 dm_multipath uinput snd_hda_codec_analog
> >> snd_hda_intel snd_hda_codec snd_hwdep e1000e snd_pcm snd_timer i2c_i801
> >> i2c_core snd soundcore snd_page_alloc iTCO_wdt iTCO_vendor_support
> >> serio_raw ppdev parport_pc parport pcspkr dcdbas ata_generic pata_acpi
> >> [last unloaded: speedstep_lib]
> >> Pid: 35, comm: kacpi_hotplug Not tainted 2.6.32-rc2 #3 OptiPlex 760
> >> RIP: 0010:[<ffffffff812217e7>]  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> >> RSP: 0018:ffff88022ee69aa0  EFLAGS: 00010286
> >> RAX: 0000000000000000 RBX: ffff88022e9b1090 RCX: 00000000000000a0
> >> RDX: 000000000000002f RSI: ffffffff8168ab38 RDI: ffffffff8168ab38
> >> RBP: ffff88022ee69ac0 R08: ffffffff8168ab30 R09: ffff880100000000
> >> R10: ffffffff8168ab50 R11: 0000000000000000 R12: 0000000000000000
> >> R13: 0000000000000001 R14: ffff88022f712000 R15: ffff88022f710dd0
> >> FS:  0000000000000000(0000) GS:ffff880028200000(0000)
> >> knlGS:0000000000000000
> >> CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
> >> CR2: 0000000000000028 CR3: 00000001fc298000 CR4: 00000000000406f0
> >> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> >> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> >> Process kacpi_hotplug (pid: 35, threadinfo ffff88022ee68000, task
> >> ffff88022eefc120)
> >> Stack:
> >>    0000000000000018 ffff88022e9b1090 ffff88020880e9c0 0000000000000000
> >> <0>  ffff88022ee69b30 ffffffff81254193 0000000000000000 ffff88022ee69ae0
> >> <0>  ffff88020880e340 ffff88020880ee38 ffff88022f710208 0000000000000001
> >> Call Trace:
> >>    [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
> >
> > Have you checked (using gdb) which source code line this corresponds to?
> >
> Yep, the code line corresponds to
> pdev = pci_get_slot(pbus, PCI_DEVFN(dev, fn));
> 
> Also gdb shows pci_bus->devices has offset of 0x28.
> 
> I've put some check in acpi_get_pci_dev, it shows that pbus is NULL when 
> the panic happens.

OK, thanks.

> >>    [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
> >>    [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
> >>    [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
> >>    [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
> >>    [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
> >>    [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
> >
> > This looks like a device has just been discovered.
> >
> >>    [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
> >>    [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
> >
> > Have the machine been docked while suspended?
> I was confused too..I didn't touch anything just suspend and then power 
> up. Are there some devices unplugged or ejected at suspend stage?

Well, that's what I'd like to find out.

Can you please build the kernel with CONFIG_PM_VERBOSE set and with the
$subject patch applied and post a dmesg output from it containing at least one
suspend-resume cycle?

Best,
Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-09-29  1:44   ` Danny Feng
  2009-09-29 20:12       ` Rafael J. Wysocki
@ 2009-10-01 20:05     ` Alex Chiang
  2009-10-03 22:56       ` Rafael J. Wysocki
                         ` (2 more replies)
  1 sibling, 3 replies; 23+ messages in thread
From: Alex Chiang @ 2009-10-01 20:05 UTC (permalink / raw)
  To: Danny Feng
  Cc: lenb, bjorn.helgaas, andrew.patterson, jbarnes, linux-acpi, linux-kernel

Hi Danny,

* Danny Feng <dfeng@redhat.com>:
> Call Trace:
>  [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
>  [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>  [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>  [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>  [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>  [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>  [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
>  [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>  [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
>  [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>  [<ffffffff8106a244>] worker_thread+0x251/0x347
>  [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>  [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>  [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>  [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>  [<ffffffff8106e0e0>] kthread+0x7f/0x87
>  [<ffffffff81012cea>] child_rip+0xa/0x20
>  [<ffffffff81012650>] ? restore_args+0x0/0x30
>  [<ffffffff8106e061>] ? kthread+0x0/0x87
>  [<ffffffff81012ce0>] ? child_rip+0x0/0x20
> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7  
> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00 <49> 8b  
> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>  RSP <ffff88022ee69aa0>
> CR2: 0000000000000028
> ---[ end trace b5a7793bd9db2a4d ]---

Can you please reproduce with this debug patch? I'm guessing that
we're dying because we have a NULL parent device, but I'm curious
as to what causes this situation to occur.

Thanks.
/ac
---
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
index 7338b6a..4c1b128 100644
--- a/drivers/acpi/dock.c
+++ b/drivers/acpi/dock.c
@@ -126,6 +126,7 @@ add_dock_dependent_device(struct dock_station *ds,
 {
 	spin_lock(&ds->dd_lock);
 	list_add_tail(&dd->list, &ds->dependent_devices);
+	printk("%s adding handle %p\n", __func__, dd->handle);
 	spin_unlock(&ds->dd_lock);
 }
 
@@ -142,6 +143,8 @@ dock_add_hotplug_device(struct dock_station *ds,
 {
 	mutex_lock(&ds->hp_lock);
 	list_add_tail(&dd->hotplug_list, &ds->hotplug_devices);
+	dump_stack();
+	printk("%s adding handle %p\n", __func__, dd->handle);
 	mutex_unlock(&ds->hp_lock);
 }
 
@@ -325,14 +328,17 @@ static struct acpi_device * dock_create_acpi_device(acpi_handle handle)
 	acpi_handle parent;
 	int ret;
 
+	printk("%s handle %p\n", __func__, handle);
 	if (acpi_bus_get_device(handle, &device)) {
 		/*
 		 * no device created for this object,
 		 * so we should create one.
 		 */
 		acpi_get_parent(handle, &parent);
-		if (acpi_bus_get_device(parent, &parent_device))
+		if (acpi_bus_get_device(parent, &parent_device)) {
 			parent_device = NULL;
+			printk("%s no parent, setting NULL\n", __func__);
+		}
 
 		ret = acpi_bus_add(&device, parent_device, handle,
 			ACPI_BUS_TYPE_DEVICE);
@@ -385,8 +391,10 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
 	 * First call driver specific hotplug functions
 	 */
 	list_for_each_entry(dd, &ds->hotplug_devices, hotplug_list) {
-		if (dd->ops && dd->ops->handler)
+		if (dd->ops && dd->ops->handler) {
+			printk("%s handle %p\n", __func__, dd->handle);
 			dd->ops->handler(dd->handle, event, dd->context);
+		}
 	}
 
 	/*
@@ -1041,6 +1049,7 @@ static int dock_add(acpi_handle handle)
 		ret = -ENOMEM;
 		goto dock_add_err_unregister;
 	}
+	printk("%s adding self as dependent %p)\n", __func__, dd->handle);
 	add_dock_dependent_device(dock_station, dd);
 
 	dock_station_count++;

^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-10-01 20:05     ` Alex Chiang
@ 2009-10-03 22:56       ` Rafael J. Wysocki
  2009-10-09  1:17         ` Danny Feng
  2009-10-09  2:26         ` Danny Feng
  2009-10-09  1:16       ` Danny Feng
  2009-10-09  2:28       ` Danny Feng
  2 siblings, 2 replies; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-10-03 22:56 UTC (permalink / raw)
  To: Alex Chiang, Danny Feng
  Cc: lenb, bjorn.helgaas, andrew.patterson, jbarnes, linux-acpi, linux-kernel

On Thursday 01 October 2009, Alex Chiang wrote:
> Hi Danny,
> 
> * Danny Feng <dfeng@redhat.com>:
> > Call Trace:
> >  [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
> >  [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
> >  [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
> >  [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
> >  [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
> >  [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
> >  [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
> >  [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
> >  [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
> >  [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
> >  [<ffffffff8106a244>] worker_thread+0x251/0x347
> >  [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
> >  [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
> >  [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
> >  [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
> >  [<ffffffff8106e0e0>] kthread+0x7f/0x87
> >  [<ffffffff81012cea>] child_rip+0xa/0x20
> >  [<ffffffff81012650>] ? restore_args+0x0/0x30
> >  [<ffffffff8106e061>] ? kthread+0x0/0x87
> >  [<ffffffff81012ce0>] ? child_rip+0x0/0x20
> > Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7  
> > 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00 <49> 8b  
> > 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
> > RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> >  RSP <ffff88022ee69aa0>
> > CR2: 0000000000000028
> > ---[ end trace b5a7793bd9db2a4d ]---
> 
> Can you please reproduce with this debug patch? I'm guessing that
> we're dying because we have a NULL parent device, but I'm curious
> as to what causes this situation to occur.

If we had a NULL parent, acpi_get_parent() would return an error.  Also, if we
one of the devices is NULL at the PCI level, pci_get_slot() will return NULL.
The only possibility left is that one of the buses we find in the ACPI tables
doesn't have a secondary PCI bus.

I think what happens is that on resume we get a dock notification
(via dock_acpi_notifier registered in dock_init()) for a dock station device
that is present in the ACPI tables, but not physically accessible at the moment
(I guess that falls into the "BIOS bug" category, but we can fix this easily in
the kernel).

So, IMO, the appended patch is the right fix.

Danny, please test it and report back (in particular, please tell us if you see
the "Secondary bus not present" message in dmesg).

Thanks,
Rafael


---
 drivers/acpi/pci_root.c |   12 ++++++++++++
 1 file changed, 12 insertions(+)

Index: linux-2.6/drivers/acpi/pci_root.c
===================================================================
--- linux-2.6.orig/drivers/acpi/pci_root.c
+++ linux-2.6/drivers/acpi/pci_root.c
@@ -389,6 +389,18 @@ struct pci_dev *acpi_get_pci_dev(acpi_ha
 
 		pbus = pdev->subordinate;
 		pci_dev_put(pdev);
+
+		/*
+		 * During resume from a sleep state we can get a dock
+		 * notification for a device that is present in ACPI tables,
+		 * but not physically accessible at the moment, so tell the
+		 * caller it's not present.
+		 */
+		if (!pbus) {
+			dev_info(&pdev->dev, "Secondary bus not present\n");
+			pdev = NULL;
+			break;
+		}
 	}
 out:
 	list_for_each_entry_safe(node, tmp, &device_list, node)

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-10-01 20:05     ` Alex Chiang
  2009-10-03 22:56       ` Rafael J. Wysocki
@ 2009-10-09  1:16       ` Danny Feng
  2009-10-09  2:28       ` Danny Feng
  2 siblings, 0 replies; 23+ messages in thread
From: Danny Feng @ 2009-10-09  1:16 UTC (permalink / raw)
  To: Alex Chiang
  Cc: lenb, bjorn.helgaas, andrew.patterson, jbarnes, linux-acpi, linux-kernel

On 10/02/2009 04:05 AM, Alex Chiang wrote:
> Hi Danny,
>
> * Danny Feng<dfeng@redhat.com>:
>    
>> Call Trace:
>>   [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
>>   [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>>   [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>>   [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>>   [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>>   [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>>   [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
>>   [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>>   [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
>>   [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>>   [<ffffffff8106a244>] worker_thread+0x251/0x347
>>   [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>>   [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>>   [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>>   [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>>   [<ffffffff8106e0e0>] kthread+0x7f/0x87
>>   [<ffffffff81012cea>] child_rip+0xa/0x20
>>   [<ffffffff81012650>] ? restore_args+0x0/0x30
>>   [<ffffffff8106e061>] ? kthread+0x0/0x87
>>   [<ffffffff81012ce0>] ? child_rip+0x0/0x20
>> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7
>> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00<49>  8b
>> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
>> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>   RSP<ffff88022ee69aa0>
>> CR2: 0000000000000028
>> ---[ end trace b5a7793bd9db2a4d ]---
>>      
> Can you please reproduce with this debug patch? I'm guessing that
> we're dying because we have a NULL parent device, but I'm curious
> as to what causes this situation to occur.
>
> Thanks.
> /ac
> ---
> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
> index 7338b6a..4c1b128 100644
> --- a/drivers/acpi/dock.c
> +++ b/drivers/acpi/dock.c
> @@ -126,6 +126,7 @@ add_dock_dependent_device(struct dock_station *ds,
>   {
>   	spin_lock(&ds->dd_lock);
>   	list_add_tail(&dd->list,&ds->dependent_devices);
> +	printk("%s adding handle %p\n", __func__, dd->handle);
>   	spin_unlock(&ds->dd_lock);
>   }
>
> @@ -142,6 +143,8 @@ dock_add_hotplug_device(struct dock_station *ds,
>   {
>   	mutex_lock(&ds->hp_lock);
>   	list_add_tail(&dd->hotplug_list,&ds->hotplug_devices);
> +	dump_stack();
> +	printk("%s adding handle %p\n", __func__, dd->handle);
>   	mutex_unlock(&ds->hp_lock);
>   }
>
> @@ -325,14 +328,17 @@ static struct acpi_device * dock_create_acpi_device(acpi_handle handle)
>   	acpi_handle parent;
>   	int ret;
>
> +	printk("%s handle %p\n", __func__, handle);
>   	if (acpi_bus_get_device(handle,&device)) {
>   		/*
>   		 * no device created for this object,
>   		 * so we should create one.
>   		 */
>   		acpi_get_parent(handle,&parent);
> -		if (acpi_bus_get_device(parent,&parent_device))
> +		if (acpi_bus_get_device(parent,&parent_device)) {
>   			parent_device = NULL;
> +			printk("%s no parent, setting NULL\n", __func__);
> +		}
>
>   		ret = acpi_bus_add(&device, parent_device, handle,
>   			ACPI_BUS_TYPE_DEVICE);
> @@ -385,8 +391,10 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
>   	 * First call driver specific hotplug functions
>   	 */
>   	list_for_each_entry(dd,&ds->hotplug_devices, hotplug_list) {
> -		if (dd->ops&&  dd->ops->handler)
> +		if (dd->ops&&  dd->ops->handler) {
> +			printk("%s handle %p\n", __func__, dd->handle);
>   			dd->ops->handler(dd->handle, event, dd->context);
> +		}
>   	}
>
>   	/*
> @@ -1041,6 +1049,7 @@ static int dock_add(acpi_handle handle)
>   		ret = -ENOMEM;
>   		goto dock_add_err_unregister;
>   	}
> +	printk("%s adding self as dependent %p)\n", __func__, dd->handle);
>   	add_dock_dependent_device(dock_station, dd);
>
>   	dock_station_count++;
>
>    
Sorry for the late response, just back from holidays. Will do it soon, 
thanks.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-10-03 22:56       ` Rafael J. Wysocki
@ 2009-10-09  1:17         ` Danny Feng
  2009-10-09  2:26         ` Danny Feng
  1 sibling, 0 replies; 23+ messages in thread
From: Danny Feng @ 2009-10-09  1:17 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On 10/04/2009 06:56 AM, Rafael J. Wysocki wrote:
> On Thursday 01 October 2009, Alex Chiang wrote:
>    
>> Hi Danny,
>>
>> * Danny Feng<dfeng@redhat.com>:
>>      
>>> Call Trace:
>>>   [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
>>>   [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>>>   [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>>>   [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>>>   [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>>>   [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>>>   [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
>>>   [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>>>   [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
>>>   [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>>>   [<ffffffff8106a244>] worker_thread+0x251/0x347
>>>   [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>>>   [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>>>   [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>>>   [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>>>   [<ffffffff8106e0e0>] kthread+0x7f/0x87
>>>   [<ffffffff81012cea>] child_rip+0xa/0x20
>>>   [<ffffffff81012650>] ? restore_args+0x0/0x30
>>>   [<ffffffff8106e061>] ? kthread+0x0/0x87
>>>   [<ffffffff81012ce0>] ? child_rip+0x0/0x20
>>> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7
>>> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00<49>  8b
>>> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
>>> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>>   RSP<ffff88022ee69aa0>
>>> CR2: 0000000000000028
>>> ---[ end trace b5a7793bd9db2a4d ]---
>>>        
>> Can you please reproduce with this debug patch? I'm guessing that
>> we're dying because we have a NULL parent device, but I'm curious
>> as to what causes this situation to occur.
>>      
> If we had a NULL parent, acpi_get_parent() would return an error.  Also, if we
> one of the devices is NULL at the PCI level, pci_get_slot() will return NULL.
> The only possibility left is that one of the buses we find in the ACPI tables
> doesn't have a secondary PCI bus.
>
> I think what happens is that on resume we get a dock notification
> (via dock_acpi_notifier registered in dock_init()) for a dock station device
> that is present in the ACPI tables, but not physically accessible at the moment
> (I guess that falls into the "BIOS bug" category, but we can fix this easily in
> the kernel).
>
> So, IMO, the appended patch is the right fix.
>
> Danny, please test it and report back (in particular, please tell us if you see
> the "Secondary bus not present" message in dmesg).
>
> Thanks,
> Rafael
>
>
> ---
>   drivers/acpi/pci_root.c |   12 ++++++++++++
>   1 file changed, 12 insertions(+)
>
> Index: linux-2.6/drivers/acpi/pci_root.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/pci_root.c
> +++ linux-2.6/drivers/acpi/pci_root.c
> @@ -389,6 +389,18 @@ struct pci_dev *acpi_get_pci_dev(acpi_ha
>
>   		pbus = pdev->subordinate;
>   		pci_dev_put(pdev);
> +
> +		/*
> +		 * During resume from a sleep state we can get a dock
> +		 * notification for a device that is present in ACPI tables,
> +		 * but not physically accessible at the moment, so tell the
> +		 * caller it's not present.
> +		 */
> +		if (!pbus) {
> +			dev_info(&pdev->dev, "Secondary bus not present\n");
> +			pdev = NULL;
> +			break;
> +		}
>   	}
>   out:
>   	list_for_each_entry_safe(node, tmp,&device_list, node)
>
>    
Sorry for the late response, just back from holidays. Will test it soon, 
thanks.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-10-03 22:56       ` Rafael J. Wysocki
  2009-10-09  1:17         ` Danny Feng
@ 2009-10-09  2:26         ` Danny Feng
  2009-10-09 21:46           ` Rafael J. Wysocki
  1 sibling, 1 reply; 23+ messages in thread
From: Danny Feng @ 2009-10-09  2:26 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On 10/04/2009 06:56 AM, Rafael J. Wysocki wrote:
> On Thursday 01 October 2009, Alex Chiang wrote:
>> Hi Danny,
>>
>> * Danny Feng<dfeng@redhat.com>:
>>> Call Trace:
>>>   [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
>>>   [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>>>   [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>>>   [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>>>   [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>>>   [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>>>   [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
>>>   [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>>>   [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
>>>   [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>>>   [<ffffffff8106a244>] worker_thread+0x251/0x347
>>>   [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>>>   [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>>>   [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>>>   [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>>>   [<ffffffff8106e0e0>] kthread+0x7f/0x87
>>>   [<ffffffff81012cea>] child_rip+0xa/0x20
>>>   [<ffffffff81012650>] ? restore_args+0x0/0x30
>>>   [<ffffffff8106e061>] ? kthread+0x0/0x87
>>>   [<ffffffff81012ce0>] ? child_rip+0x0/0x20
>>> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7
>>> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00<49>  8b
>>> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
>>> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>>   RSP<ffff88022ee69aa0>
>>> CR2: 0000000000000028
>>> ---[ end trace b5a7793bd9db2a4d ]---
>>
>> Can you please reproduce with this debug patch? I'm guessing that
>> we're dying because we have a NULL parent device, but I'm curious
>> as to what causes this situation to occur.
>
> If we had a NULL parent, acpi_get_parent() would return an error.  Also, if we
> one of the devices is NULL at the PCI level, pci_get_slot() will return NULL.
> The only possibility left is that one of the buses we find in the ACPI tables
> doesn't have a secondary PCI bus.
>
> I think what happens is that on resume we get a dock notification
> (via dock_acpi_notifier registered in dock_init()) for a dock station device
> that is present in the ACPI tables, but not physically accessible at the moment
> (I guess that falls into the "BIOS bug" category, but we can fix this easily in
> the kernel).
>
> So, IMO, the appended patch is the right fix.
>
> Danny, please test it and report back (in particular, please tell us if you see
> the "Secondary bus not present" message in dmesg).
Yes, this patch works. I got "ata_piix 0000:00:1f.2: Secondary bus not 
present". Thanks.
>
> Thanks,
> Rafael
>
>
> ---
>   drivers/acpi/pci_root.c |   12 ++++++++++++
>   1 file changed, 12 insertions(+)
>
> Index: linux-2.6/drivers/acpi/pci_root.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/pci_root.c
> +++ linux-2.6/drivers/acpi/pci_root.c
> @@ -389,6 +389,18 @@ struct pci_dev *acpi_get_pci_dev(acpi_ha
>
>   		pbus = pdev->subordinate;
>   		pci_dev_put(pdev);
> +
> +		/*
> +		 * During resume from a sleep state we can get a dock
> +		 * notification for a device that is present in ACPI tables,
> +		 * but not physically accessible at the moment, so tell the
> +		 * caller it's not present.
> +		 */
> +		if (!pbus) {
> +			dev_info(&pdev->dev, "Secondary bus not present\n");
> +			pdev = NULL;
> +			break;
> +		}
>   	}
>   out:
>   	list_for_each_entry_safe(node, tmp,&device_list, node)
>


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-10-01 20:05     ` Alex Chiang
  2009-10-03 22:56       ` Rafael J. Wysocki
  2009-10-09  1:16       ` Danny Feng
@ 2009-10-09  2:28       ` Danny Feng
  2 siblings, 0 replies; 23+ messages in thread
From: Danny Feng @ 2009-10-09  2:28 UTC (permalink / raw)
  To: Alex Chiang
  Cc: lenb, bjorn.helgaas, andrew.patterson, jbarnes, linux-acpi, linux-kernel

On 10/02/2009 04:05 AM, Alex Chiang wrote:
> Hi Danny,
>
> * Danny Feng<dfeng@redhat.com>:
>> Call Trace:
>>   [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
>>   [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>>   [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>>   [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>>   [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>>   [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>>   [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
>>   [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>>   [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
>>   [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>>   [<ffffffff8106a244>] worker_thread+0x251/0x347
>>   [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>>   [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>>   [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>>   [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>>   [<ffffffff8106e0e0>] kthread+0x7f/0x87
>>   [<ffffffff81012cea>] child_rip+0xa/0x20
>>   [<ffffffff81012650>] ? restore_args+0x0/0x30
>>   [<ffffffff8106e061>] ? kthread+0x0/0x87
>>   [<ffffffff81012ce0>] ? child_rip+0x0/0x20
>> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7
>> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00<49>  8b
>> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
>> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>   RSP<ffff88022ee69aa0>
>> CR2: 0000000000000028
>> ---[ end trace b5a7793bd9db2a4d ]---
>
> Can you please reproduce with this debug patch? I'm guessing that
> we're dying because we have a NULL parent device, but I'm curious
> as to what causes this situation to occur.
I got following call trace at the first boot stage.

Pid: 1, comm: swapper Not tainted 2.6.32-rc2 #16
Call Trace:
  [<ffffffff81253538>] register_hotplug_dock_device+0x92/0xf7
  [<ffffffff812f1622>] ata_acpi_associate+0x144/0x196
  [<ffffffff812dfb29>] ata_host_register+0xc5/0x1fb
  [<ffffffff812ee9b1>] ? ata_sff_interrupt+0x0/0x96
  [<ffffffff812eca12>] ata_pci_sff_activate_host+0x19b/0x1d1
  [<ffffffff8137216e>] ? pcibios_set_master+0x9b/0xa9
  [<ffffffff8141d878>] piix_init_one+0x760/0x780
  [<ffffffff81220325>] local_pci_probe+0x17/0x1b
  [<ffffffff812210fd>] pci_device_probe+0xca/0xfa
  [<ffffffff812b93aa>] ? driver_sysfs_add+0x4c/0x71
  [<ffffffff812b94f2>] driver_probe_device+0xa2/0x127
  [<ffffffff812b95d4>] __driver_attach+0x5d/0x81
  [<ffffffff812b9577>] ? __driver_attach+0x0/0x81
  [<ffffffff812b8ae9>] bus_for_each_dev+0x59/0x8e
  [<ffffffff812b935c>] driver_attach+0x1e/0x20
  [<ffffffff812b8fa7>] bus_add_driver+0xb9/0x202
  [<ffffffff812b98c7>] driver_register+0x9d/0x10e
  [<ffffffff81221343>] __pci_register_driver+0x68/0xd8
  [<ffffffff81728e98>] ? piix_init+0x0/0x29
  [<ffffffff81728eb1>] piix_init+0x19/0x29
  [<ffffffff8100a069>] do_one_initcall+0x5e/0x15e
  [<ffffffff816f86c7>] kernel_init+0x170/0x1ca
  [<ffffffff81012cea>] child_rip+0xa/0x20
  [<ffffffff81012650>] ? restore_args+0x0/0x30
  [<ffffffff816f8557>] ? kernel_init+0x0/0x1ca
  [<ffffffff81012ce0>] ? child_rip+0x0/0x20
dock_add_hotplug_device adding handle ffff88022f712000

Thanks,
Danny
>
> Thanks.
> /ac
> ---
> diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c
> index 7338b6a..4c1b128 100644
> --- a/drivers/acpi/dock.c
> +++ b/drivers/acpi/dock.c
> @@ -126,6 +126,7 @@ add_dock_dependent_device(struct dock_station *ds,
>   {
>   	spin_lock(&ds->dd_lock);
>   	list_add_tail(&dd->list,&ds->dependent_devices);
> +	printk("%s adding handle %p\n", __func__, dd->handle);
>   	spin_unlock(&ds->dd_lock);
>   }
>
> @@ -142,6 +143,8 @@ dock_add_hotplug_device(struct dock_station *ds,
>   {
>   	mutex_lock(&ds->hp_lock);
>   	list_add_tail(&dd->hotplug_list,&ds->hotplug_devices);
> +	dump_stack();
> +	printk("%s adding handle %p\n", __func__, dd->handle);
>   	mutex_unlock(&ds->hp_lock);
>   }
>
> @@ -325,14 +328,17 @@ static struct acpi_device * dock_create_acpi_device(acpi_handle handle)
>   	acpi_handle parent;
>   	int ret;
>
> +	printk("%s handle %p\n", __func__, handle);
>   	if (acpi_bus_get_device(handle,&device)) {
>   		/*
>   		 * no device created for this object,
>   		 * so we should create one.
>   		 */
>   		acpi_get_parent(handle,&parent);
> -		if (acpi_bus_get_device(parent,&parent_device))
> +		if (acpi_bus_get_device(parent,&parent_device)) {
>   			parent_device = NULL;
> +			printk("%s no parent, setting NULL\n", __func__);
> +		}
>
>   		ret = acpi_bus_add(&device, parent_device, handle,
>   			ACPI_BUS_TYPE_DEVICE);
> @@ -385,8 +391,10 @@ static void hotplug_dock_devices(struct dock_station *ds, u32 event)
>   	 * First call driver specific hotplug functions
>   	 */
>   	list_for_each_entry(dd,&ds->hotplug_devices, hotplug_list) {
> -		if (dd->ops&&  dd->ops->handler)
> +		if (dd->ops&&  dd->ops->handler) {
> +			printk("%s handle %p\n", __func__, dd->handle);
>   			dd->ops->handler(dd->handle, event, dd->context);
> +		}
>   	}
>
>   	/*
> @@ -1041,6 +1049,7 @@ static int dock_add(acpi_handle handle)
>   		ret = -ENOMEM;
>   		goto dock_add_err_unregister;
>   	}
> +	printk("%s adding self as dependent %p)\n", __func__, dd->handle);
>   	add_dock_dependent_device(dock_station, dd);
>
>   	dock_station_count++;
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-10-09  2:26         ` Danny Feng
@ 2009-10-09 21:46           ` Rafael J. Wysocki
  2009-10-12  3:05             ` Danny Feng
  0 siblings, 1 reply; 23+ messages in thread
From: Rafael J. Wysocki @ 2009-10-09 21:46 UTC (permalink / raw)
  To: Danny Feng
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

On Friday 09 October 2009, Danny Feng wrote:
> On 10/04/2009 06:56 AM, Rafael J. Wysocki wrote:
> > On Thursday 01 October 2009, Alex Chiang wrote:
> >> Hi Danny,
> >>
> >> * Danny Feng<dfeng@redhat.com>:
> >>> Call Trace:
> >>>   [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
> >>>   [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
> >>>   [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
> >>>   [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
> >>>   [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
> >>>   [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
> >>>   [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
> >>>   [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
> >>>   [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
> >>>   [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
> >>>   [<ffffffff8106a244>] worker_thread+0x251/0x347
> >>>   [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
> >>>   [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
> >>>   [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
> >>>   [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
> >>>   [<ffffffff8106e0e0>] kthread+0x7f/0x87
> >>>   [<ffffffff81012cea>] child_rip+0xa/0x20
> >>>   [<ffffffff81012650>] ? restore_args+0x0/0x30
> >>>   [<ffffffff8106e061>] ? kthread+0x0/0x87
> >>>   [<ffffffff81012ce0>] ? child_rip+0x0/0x20
> >>> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7
> >>> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00<49>  8b
> >>> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
> >>> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
> >>>   RSP<ffff88022ee69aa0>
> >>> CR2: 0000000000000028
> >>> ---[ end trace b5a7793bd9db2a4d ]---
> >>
> >> Can you please reproduce with this debug patch? I'm guessing that
> >> we're dying because we have a NULL parent device, but I'm curious
> >> as to what causes this situation to occur.
> >
> > If we had a NULL parent, acpi_get_parent() would return an error.  Also, if we
> > one of the devices is NULL at the PCI level, pci_get_slot() will return NULL.
> > The only possibility left is that one of the buses we find in the ACPI tables
> > doesn't have a secondary PCI bus.
> >
> > I think what happens is that on resume we get a dock notification
> > (via dock_acpi_notifier registered in dock_init()) for a dock station device
> > that is present in the ACPI tables, but not physically accessible at the moment
> > (I guess that falls into the "BIOS bug" category, but we can fix this easily in
> > the kernel).
> >
> > So, IMO, the appended patch is the right fix.
> >
> > Danny, please test it and report back (in particular, please tell us if you see
> > the "Secondary bus not present" message in dmesg).
> Yes, this patch works. I got "ata_piix 0000:00:1f.2: Secondary bus not 
> present".

Now that's a puzzle!

Can you please attach the output of acpidump from this machine?

Rafael

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend
  2009-10-09 21:46           ` Rafael J. Wysocki
@ 2009-10-12  3:05             ` Danny Feng
  0 siblings, 0 replies; 23+ messages in thread
From: Danny Feng @ 2009-10-12  3:05 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Alex Chiang, lenb, bjorn.helgaas, andrew.patterson, jbarnes,
	linux-acpi, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 3065 bytes --]

On 10/10/2009 05:46 AM, Rafael J. Wysocki wrote:
> On Friday 09 October 2009, Danny Feng wrote:
>> On 10/04/2009 06:56 AM, Rafael J. Wysocki wrote:
>>> On Thursday 01 October 2009, Alex Chiang wrote:
>>>> Hi Danny,
>>>>
>>>> * Danny Feng<dfeng@redhat.com>:
>>>>> Call Trace:
>>>>>    [<ffffffff81254193>] acpi_get_pci_dev+0x106/0x167
>>>>>    [<ffffffff8125545a>] acpi_pci_bind+0x1c/0x86
>>>>>    [<ffffffff8116230a>] ? sysfs_create_file+0x2a/0x2c
>>>>>    [<ffffffff8125141f>] acpi_add_single_object+0x964/0xa0c
>>>>>    [<ffffffff812515a7>] acpi_bus_check_add+0xe0/0x138
>>>>>    [<ffffffff81251667>] acpi_bus_scan+0x68/0xa0
>>>>>    [<ffffffff812516f4>] acpi_bus_add+0x2a/0x2e
>>>>>    [<ffffffff81252c59>] hotplug_dock_devices+0x114/0x13e
>>>>>    [<ffffffff8125301a>] acpi_dock_deferred_cb+0xbf/0x192
>>>>>    [<ffffffff8124d6ca>] acpi_os_execute_deferred+0x29/0x36
>>>>>    [<ffffffff8106a244>] worker_thread+0x251/0x347
>>>>>    [<ffffffff8106a1ef>] ? worker_thread+0x1fc/0x347
>>>>>    [<ffffffff8124d6a1>] ? acpi_os_execute_deferred+0x0/0x36
>>>>>    [<ffffffff8106e426>] ? autoremove_wake_function+0x0/0x39
>>>>>    [<ffffffff81069ff3>] ? worker_thread+0x0/0x347
>>>>>    [<ffffffff8106e0e0>] kthread+0x7f/0x87
>>>>>    [<ffffffff81012cea>] child_rip+0xa/0x20
>>>>>    [<ffffffff81012650>] ? restore_args+0x0/0x30
>>>>>    [<ffffffff8106e061>] ? kthread+0x0/0x87
>>>>>    [<ffffffff81012ce0>] ? child_rip+0x0/0x20
>>>>> Code: ff 49 89 fc 41 89 f5 a9 00 ff ff 07 74 11 be 87 00 00 00 48 c7 c7
>>>>> 45 6d 5a 81 e8 f6 2b e3 ff 48 c7 c7 30 ab 68 81 e8 29 77 20 00<49>   8b
>>>>> 5c 24 28 49 83 c4 28 eb 09 44 39 6b 38 74 10 48 89 c3 48
>>>>> RIP  [<ffffffff812217e7>] pci_get_slot+0x4c/0x8c
>>>>>    RSP<ffff88022ee69aa0>
>>>>> CR2: 0000000000000028
>>>>> ---[ end trace b5a7793bd9db2a4d ]---
>>>>
>>>> Can you please reproduce with this debug patch? I'm guessing that
>>>> we're dying because we have a NULL parent device, but I'm curious
>>>> as to what causes this situation to occur.
>>>
>>> If we had a NULL parent, acpi_get_parent() would return an error.  Also, if we
>>> one of the devices is NULL at the PCI level, pci_get_slot() will return NULL.
>>> The only possibility left is that one of the buses we find in the ACPI tables
>>> doesn't have a secondary PCI bus.
>>>
>>> I think what happens is that on resume we get a dock notification
>>> (via dock_acpi_notifier registered in dock_init()) for a dock station device
>>> that is present in the ACPI tables, but not physically accessible at the moment
>>> (I guess that falls into the "BIOS bug" category, but we can fix this easily in
>>> the kernel).
>>>
>>> So, IMO, the appended patch is the right fix.
>>>
>>> Danny, please test it and report back (in particular, please tell us if you see
>>> the "Secondary bus not present" message in dmesg).
>> Yes, this patch works. I got "ata_piix 0000:00:1f.2: Secondary bus not
>> present".
>
> Now that's a puzzle!
>
> Can you please attach the output of acpidump from this machine?

Hi Rafael, please check the attachment, thanks.

>
> Rafael
>


[-- Attachment #2: acpi_dump --]
[-- Type: text/plain, Size: 105788 bytes --]

DSDT @ 0xfff1be4b
  0000: 44 53 44 54 6f 53 00 00 01 8c 44 45 4c 4c 00 00  DSDToS....DELL..
  0010: 64 74 5f 65 78 00 00 00 00 10 00 00 49 4e 54 4c  dt_ex.......INTL
  0020: 24 06 05 20 14 07 44 42 49 4e 00 a3 10 47 05 5c  $.. ..DBIN...G.\
  0030: 00 5b 82 1f 2e 5f 53 42 5f 56 42 54 4e 08 5f 48  .[..._SB_VBTN._H
  0040: 49 44 0c 41 d0 0c 0c 08 5f 50 52 57 12 05 02 01  ID.A...._PRW....
  0050: 0a 04 5b 80 53 53 54 53 01 0b 28 08 01 5b 81 0b  ..[.SSTS..(..[..
  0060: 53 53 54 53 41 54 53 54 53 01 5b 80 53 41 43 54  SSTSATSTS.[.SACT
  0070: 01 0b 2a 08 01 5b 81 0d 53 41 43 54 41 00 02 54  ..*..[..SACTA..T
  0080: 50 4f 4c 01 10 25 5f 47 50 45 14 1f 5f 4c 30 30  POL..%_GPE.._L00
  0090: 00 70 00 54 50 4f 4c 70 01 54 53 54 53 86 5c 2e  .p.TPOLp.TSTS.\.
  00a0: 5f 53 42 5f 56 42 54 4e 0a 02 10 30 5f 53 42 5f  _SB_VBTN...0_SB_
  00b0: 14 2a 5f 49 4e 49 00 a0 23 5b 12 5f 4f 53 49 60  .*_INI..#[._OSI`
  00c0: a0 1a 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32  .._OSI.Windows 2
  00d0: 30 30 31 00 70 0a 04 4d 53 4f 53 10 4a 26 5c 00  001.p..MSOS.J&\.
  00e0: 08 4d 53 4f 53 00 5b 01 4d 54 58 5f 01 14 38 43  .MSOS.[.MTX_..8C
  00f0: 4d 52 44 01 5b 23 53 4d 49 4d ff ff 70 68 60 7b  MRD.[#SMIM..ph`{
  0100: 60 0a 7f 60 70 60 53 4d 49 44 70 0a 84 53 4d 49  `..`p`SMIDp..SMI
  0110: 43 70 0a 85 53 4d 49 43 70 53 4d 49 44 60 5b 27  Cp..SMICpSMID`['
  0120: 53 4d 49 4d a4 60 14 36 43 4d 57 52 02 5b 23 53  SMIM.`.6CMWR.[#S
  0130: 4d 49 4d ff ff 70 68 60 7d 60 0a 80 60 70 60 53  MIM..ph`}`..`p`S
  0140: 4d 49 44 70 0a 84 53 4d 49 43 70 69 53 4d 49 44  MIDp..SMICpiSMID
  0150: 70 0a 85 53 4d 49 43 5b 27 53 4d 49 4d 14 11 47  p..SMIC['SMIM..G
  0160: 43 4b 42 00 a4 7b 0a 20 43 4d 52 44 0a 26 00 14  CKB..{. CMRD.&..
  0170: 11 47 43 4d 53 00 a4 7b 0a 40 43 4d 52 44 0a 6f  .GCMS..{.@CMRD.o
  0180: 00 14 11 47 43 4f 4e 00 a4 7b 0a 04 43 4d 52 44  ...GCON..{..CMRD
  0190: 0a 55 00 14 14 47 43 55 43 00 7b 01 43 4d 52 44  .U...GCUC.{.CMRD
  01a0: 0a 22 60 a4 7f 01 60 00 14 11 47 43 53 31 00 a4  ."`...`...GCS1..
  01b0: 7b 0a 03 43 4d 52 44 0a 25 00 14 11 47 43 53 32  {..CMRD.%...GCS2
  01c0: 00 a4 7b 0a 0c 43 4d 52 44 0a 25 00 14 11 47 43  ..{..CMRD.%...GC
  01d0: 46 44 00 a4 7b 0a 18 43 4d 52 44 0a 55 00 14 11  FD..{..CMRD.U...
  01e0: 47 43 50 50 00 a4 7b 0a 70 43 4d 52 44 0a 23 00  GCPP..{.pCMRD.#.
  01f0: 14 11 47 43 54 50 00 a4 7b 0a 40 43 4d 52 44 0a  ..GCTP..{.@CMRD.
  0200: 22 00 14 11 47 43 4e 43 00 a4 7b 0a 03 43 4d 52  "...GCNC..{..CMR
  0210: 44 0a 59 00 14 4a 10 48 41 43 4b 00 a0 1e 93 4d  D.Y..J.HACK....M
  0220: 53 4f 53 0a 04 70 43 4d 52 44 0a 6f 60 7d 60 0a  SOS..pCMRD.o`}`.
  0230: 04 60 43 4d 57 52 0a 6f 60 a4 01 a1 15 70 43 4d  .`CMWR.o`....pCM
  0240: 52 44 0a 6f 60 7b 60 0a fb 60 43 4d 57 52 0a 6f  RD.o`{`..`CMWR.o
  0250: 60 72 87 5f 4f 53 5f 01 60 70 60 61 08 42 55 46  `r._OS_.`p`a.BUF
  0260: 30 11 02 60 08 42 55 46 31 11 02 60 08 4f 53 4e  0..`.BUF1..`.OSN
  0270: 54 01 08 4f 53 39 38 01 70 5f 4f 53 5f 42 55 46  T..OS98.p_OS_BUF
  0280: 30 70 0d 4d 69 63 72 6f 73 6f 66 74 20 57 69 6e  0p.Microsoft Win
  0290: 64 6f 77 73 20 4e 54 00 42 55 46 31 a2 1f 60 76  dows NT.BUF1..`v
  02a0: 60 a0 12 93 83 88 42 55 46 30 60 00 83 88 42 55  `.....BUF0`...BU
  02b0: 46 31 60 00 a1 07 70 00 4f 53 4e 54 a0 0e 4f 53  F1`...p.OSNT..OS
  02c0: 4e 54 70 0a 03 4d 53 4f 53 a4 01 a1 43 05 70 0d  NTp..MSOS...C.p.
  02d0: 4d 69 63 72 6f 73 6f 66 74 20 57 69 6e 64 6f 77  Microsoft Window
  02e0: 73 00 42 55 46 31 a2 1f 61 76 61 a0 12 93 83 88  s.BUF1..ava.....
  02f0: 42 55 46 30 61 00 83 88 42 55 46 31 61 00 a1 07  BUF0a...BUF1a...
  0300: 70 00 4f 53 39 38 a0 0d 4f 53 39 38 70 01 4d 53  p.OS98..OS98p.MS
  0310: 4f 53 a4 00 a1 0a 70 0a 02 4d 53 4f 53 a4 00 14  OS....p..MSOS...
  0320: 26 49 53 4c 49 00 a0 1b 5b 12 5f 4f 53 49 60 a0  &ISLI...[._OSI`.
  0330: 0e 5f 4f 53 49 0d 4c 69 6e 75 78 00 a4 01 a1 03  ._OSI.Linux.....
  0340: a4 00 a1 03 a4 00 10 05 5f 53 42 5f 5b 80 43 4d  ........_SB_[.CM
  0350: 53 5f 01 0a 70 0a 02 5b 81 10 43 4d 53 5f 01 43  S_..p..[..CMS_.C
  0360: 4d 53 49 08 43 4d 53 44 08 5b 80 53 4d 49 52 01  MSI.CMSD.[.SMIR.
  0370: 0a b2 0a 02 5b 81 10 53 4d 49 52 01 53 4d 49 43  ....[..SMIR.SMIC
  0380: 08 53 4d 49 44 08 5b 80 53 54 4f 4e 01 0a 84 01  .SMID.[.STON....
  0390: 5b 81 0b 53 54 4f 4e 01 4d 47 49 43 08 5b 80 53  [..STON.MGIC.[.S
  03a0: 49 4f 5f 01 0a 2e 0a 02 5b 81 10 53 49 4f 5f 01  IO_.....[..SIO_.
  03b0: 53 49 4f 49 08 53 49 4f 44 08 5b 80 50 4d 31 52  SIOI.SIOD.[.PM1R
  03c0: 01 0b 00 08 0a 04 5b 81 1a 50 4d 31 52 01 50 4d  ......[..PM1R.PM
  03d0: 53 31 08 50 4d 53 32 08 50 4d 45 31 08 50 4d 45  S1.PMS2.PME1.PME
  03e0: 32 08 5b 80 47 50 53 54 01 0b 20 08 01 5b 81 0b  2.[.GPST.. ..[..
  03f0: 47 50 53 54 01 47 53 54 30 08 5b 80 47 4c 42 43  GPST.GST0.[.GLBC
  0400: 01 0b 28 08 0a 06 5b 81 24 47 4c 42 43 01 54 48  ..(...[.$GLBC.TH
  0410: 52 50 08 47 4c 42 54 08 45 4f 53 5f 08 4c 49 44  RP.GLBT.EOS_.LID
  0420: 50 08 54 48 4d 45 08 52 49 45 4e 08 5b 80 47 50  P.THME.RIEN.[.GP
  0430: 45 43 01 0b 42 08 01 5b 81 12 47 50 45 43 01 54  EC..B..[..GPEC.T
  0440: 48 50 4c 01 53 57 47 50 01 00 06 5b 80 50 4d 45  HPL.SWGP...[.PME
  0450: 53 01 0b 00 0c 01 5b 81 0b 50 4d 45 53 01 47 53  S.....[..PMES.GS
  0460: 54 53 08 5b 01 53 4d 49 4d 01 5b 01 53 4d 49 58  TS.[.SMIM.[.SMIX
  0470: 01 08 53 58 58 30 11 04 0b 00 01 08 53 58 58 31  ..SXX0......SXX1
  0480: 11 03 0a 08 8b 53 58 58 31 00 53 58 58 32 8b 53  .....SXX1.SXX2.S
  0490: 58 58 31 0a 04 53 58 58 33 14 2e 53 4d 49 5f 02  XX1..SXX3..SMI_.
  04a0: 5b 23 53 4d 49 4d ff ff 70 69 53 4d 49 44 70 68  [#SMIM..piSMIDph
  04b0: 53 4d 49 43 70 4d 47 49 43 60 70 53 4d 49 44 61  SMICpMGIC`pSMIDa
  04c0: 5b 27 53 4d 49 4d a4 61 14 28 53 4d 49 31 01 5b  ['SMIM.a.(SMI1.[
  04d0: 23 53 4d 49 4d ff ff 70 68 53 4d 49 43 70 4d 47  #SMIM..phSMICpMG
  04e0: 49 43 60 70 53 4d 49 44 60 5b 27 53 4d 49 4d a4  IC`pSMID`['SMIM.
  04f0: 60 14 37 53 4d 49 32 01 5b 23 53 4d 49 4d ff ff  `.7SMI2.[#SMIM..
  0500: 70 68 53 4d 49 43 70 4d 47 49 43 60 70 53 4d 49  phSMICpMGIC`pSMI
  0510: 43 61 70 53 4d 49 44 60 79 60 0a 08 60 72 61 60  CapSMID`y`..`ra`
  0520: 60 5b 27 53 4d 49 4d a4 60 14 23 53 4d 49 34 01  `['SMIM.`.#SMI4.
  0530: 72 68 01 60 70 53 4d 49 32 68 62 70 53 4d 49 32  rh.`pSMI2hbpSMI2
  0540: 60 61 79 61 0a 10 61 72 61 62 60 a4 60 14 0d 47  `aya..arab`.`..G
  0550: 54 4d 52 00 a4 53 4d 49 34 0a 78 14 0d 47 54 4d  TMR..SMI4.x..GTM
  0560: 4c 00 a4 53 4d 49 34 0a 74 14 0d 47 54 4d 48 00  L..SMI4.t..GTMH.
  0570: a4 53 4d 49 34 0a 76 14 0d 47 54 4f 4d 00 a4 53  .SMI4.v..GTOM..S
  0580: 4d 49 34 0a 81 14 17 47 55 53 42 00 a0 07 49 53  MI4....GUSB...IS
  0590: 4c 49 a4 00 a1 08 a4 53 4d 49 32 0a ba 14 0e 47  LI.....SMI2....G
  05a0: 54 50 4d 00 a4 53 4d 49 5f 0a 9b 00 14 14 53 58  TPM..SMI_.....SX
  05b0: 31 30 00 5b 23 53 4d 49 58 ff ff 70 00 53 58 58  10.[#SMIX..p.SXX
  05c0: 32 14 31 53 58 33 30 01 70 53 58 58 32 60 75 60  2.1SX30.pSXX2`u`
  05d0: a0 22 92 94 60 87 53 58 58 30 8c 53 58 58 30 53  ."..`.SXX0.SXX0S
  05e0: 58 58 32 53 58 32 30 70 68 53 58 32 30 70 60 53  XX2SX20phSX20p`S
  05f0: 58 58 32 14 1b 53 58 33 33 02 a0 14 95 69 87 68  XX2..SX33....i.h
  0600: 8c 68 69 53 58 32 30 53 58 33 30 53 58 32 30 14  .hiSX20SX30SX20.
  0610: 16 53 58 33 34 02 70 00 60 a2 0c 95 60 69 53 58  .SX34.p.`...`iSX
  0620: 33 33 68 60 75 60 14 29 53 58 58 36 02 70 69 53  33h`u`.)SXX6.piS
  0630: 4d 49 44 70 68 53 4d 49 43 70 53 4d 49 43 60 a2  MIDphSMICpSMIC`.
  0640: 0b 92 93 60 00 70 53 4d 49 43 60 a4 53 4d 49 44  ...`.pSMIC`.SMID
  0650: 14 1d 53 58 58 35 02 a0 16 95 69 87 68 8c 68 69  ..SXX5....i.h.hi
  0660: 53 58 32 30 53 58 58 36 0a 98 53 58 32 30 14 23  SX20SXX6..SX20.#
  0670: 53 58 58 34 00 53 58 58 36 0a 96 00 70 00 60 a2  SXX4.SXX6...p.`.
  0680: 12 95 60 53 58 58 32 53 58 58 35 53 58 58 30 60  ..`SXX2SXX5SXX0`
  0690: 75 60 14 1f 53 58 58 38 02 a0 18 95 69 87 68 8c  u`..SXX8....i.h.
  06a0: 68 69 53 58 32 30 70 53 58 58 36 0a 97 00 53 58  hiSX20pSXX6...SX
  06b0: 32 30 14 23 53 58 58 37 00 70 00 60 a2 19 95 60  20.#SXX7.p.`...`
  06c0: 53 58 58 33 72 53 58 58 32 60 61 53 58 58 38 53  SXX3rSXX2`aSXX8S
  06d0: 58 58 30 61 75 60 14 42 04 53 58 31 31 00 53 58  XX0au`.B.SX11.SX
  06e0: 58 34 70 53 58 58 36 0a 99 00 53 58 58 33 72 53  X4pSXX6...SXX3rS
  06f0: 58 58 32 53 58 58 33 60 a0 1c 95 87 53 58 58 30  XX2SXX3`....SXX0
  0700: 60 70 87 53 58 58 30 60 74 60 53 58 58 32 60 70  `p.SXX0`t`SXX2`p
  0710: 60 53 58 58 33 53 58 58 37 14 32 53 58 34 30 00  `SXX3SXX7.2SX40.
  0720: 70 53 58 58 32 60 75 60 a0 21 92 94 60 87 53 58  pSXX2`u`.!..`.SX
  0730: 58 30 8c 53 58 58 30 53 58 58 32 53 58 32 30 70  X0.SXX0SXX2SX20p
  0740: 60 53 58 58 32 a4 53 58 32 30 a4 00 14 35 53 58  `SXX2.SX20...5SX
  0750: 34 32 00 70 53 58 58 32 60 72 60 0a 04 60 a0 21  42.pSXX2`r`..`.!
  0760: 92 94 60 87 53 58 58 30 8a 53 58 58 30 53 58 58  ..`.SXX0.SXX0SXX
  0770: 32 53 58 32 32 70 60 53 58 58 32 a4 53 58 32 32  2SX22p`SXX2.SX22
  0780: a4 00 14 1c 53 58 34 33 02 a0 15 95 69 87 68 8c  ....SX43....i.h.
  0790: 68 69 53 58 32 30 70 53 58 34 30 53 58 32 30 14  hiSX20pSX40SX20.
  07a0: 16 53 58 34 34 02 70 00 60 a2 0c 95 60 69 53 58  .SX44.p.`...`iSX
  07b0: 34 33 68 60 75 60 14 0c 53 58 31 32 00 5b 27 53  43h`u`..SX12.['S
  07c0: 4d 49 58 14 15 47 4d 4d 49 00 70 53 4d 49 32 0a  MIX..GMMI.pSMI2.
  07d0: d0 60 79 60 0a 10 60 a4 60 14 21 47 4d 4d 58 00  .`y`..`.`.!GMMX.
  07e0: 70 53 4d 49 32 0a d1 60 79 60 0a 10 60 a0 0b 92  pSMI2..`y`..`...
  07f0: 93 60 00 7d 60 0b ff ff 60 a4 60 14 16 47 49 4f  .`.}`...`.`..GIO
  0800: 42 00 70 53 4d 49 32 0a d2 60 7b 60 0b ff ff 60  B.pSMI2..`{`...`
  0810: a4 60 14 16 47 49 4f 58 00 70 53 4d 49 32 0a d3  .`..GIOX.pSMI2..
  0820: 60 7b 60 0b ff ff 60 a4 60 10 39 5f 50 52 5f 5b  `{`...`.`.9_PR_[
  0830: 83 0b 43 50 55 30 01 10 08 00 00 06 5b 83 0b 43  ..CPU0......[..C
  0840: 50 55 31 02 00 00 00 00 00 5b 83 0b 43 50 55 32  PU1......[..CPU2
  0850: 03 00 00 00 00 00 5b 83 0b 43 50 55 33 04 00 00  ......[..CPU3...
  0860: 00 00 00 10 15 5c 00 08 53 53 54 58 00 14 0b 5f  .....\..SSTX..._
  0870: 50 54 53 01 50 53 4b 4d 68 10 42 0f 2e 5f 50 52  PTS.PSKMh.B.._PR
  0880: 5f 43 50 55 30 14 46 0e 5f 43 53 54 00 7b 43 4d  _CPU0.F._CST.{CM
  0890: 52 44 0a 7d 0a 03 60 a0 46 06 93 60 0a 02 a4 12  RD.}..`.F..`....
  08a0: 4e 05 04 0a 03 12 1c 04 11 14 0a 11 82 0c 00 7f  N...............
  08b0: 01 02 01 00 00 00 00 00 00 00 00 79 00 01 01 0b  ...........y....
  08c0: e8 03 12 1d 04 11 14 0a 11 82 0c 00 01 08 00 00  ................
  08d0: 14 08 00 00 00 00 00 00 79 00 0a 02 01 0b f4 01  ........y.......
  08e0: 12 1d 04 11 14 0a 11 82 0c 00 01 08 00 00 16 08  ................
  08f0: 00 00 00 00 00 00 79 00 0a 03 0a 39 0a 64 a1 4d  ......y....9.d.M
  0900: 06 a0 46 04 93 60 01 a4 12 3f 03 0a 02 12 1c 04  ..F..`...?......
  0910: 11 14 0a 11 82 0c 00 7f 01 02 01 00 00 00 00 00  ................
  0920: 00 00 00 79 00 01 01 0b e8 03 12 1d 04 11 14 0a  ...y............
  0930: 11 82 0c 00 01 08 00 00 14 08 00 00 00 00 00 00  ................
  0940: 79 00 0a 02 01 0b f4 01 a1 23 a4 12 20 02 01 12  y........#.. ...
  0950: 1c 04 11 14 0a 11 82 0c 00 7f 01 02 01 00 00 00  ................
  0960: 00 00 00 00 00 79 00 01 01 0b e8 03 10 42 0f 2e  .....y.......B..
  0970: 5f 50 52 5f 43 50 55 31 14 46 0e 5f 43 53 54 00  _PR_CPU1.F._CST.
  0980: 7b 43 4d 52 44 0a 7d 0a 03 60 a0 46 06 93 60 0a  {CMRD.}..`.F..`.
  0990: 02 a4 12 4e 05 04 0a 03 12 1c 04 11 14 0a 11 82  ...N............
  09a0: 0c 00 7f 01 02 01 00 00 00 00 00 00 00 00 79 00  ..............y.
  09b0: 01 01 0b e8 03 12 1d 04 11 14 0a 11 82 0c 00 01  ................
  09c0: 08 00 00 14 08 00 00 00 00 00 00 79 00 0a 02 01  ...........y....
  09d0: 0b f4 01 12 1d 04 11 14 0a 11 82 0c 00 01 08 00  ................
  09e0: 00 16 08 00 00 00 00 00 00 79 00 0a 03 0a 39 0a  .........y....9.
  09f0: 64 a1 4d 06 a0 46 04 93 60 01 a4 12 3f 03 0a 02  d.M..F..`...?...
  0a00: 12 1c 04 11 14 0a 11 82 0c 00 7f 01 02 01 00 00  ................
  0a10: 00 00 00 00 00 00 79 00 01 01 0b e8 03 12 1d 04  ......y.........
  0a20: 11 14 0a 11 82 0c 00 01 08 00 00 14 08 00 00 00  ................
  0a30: 00 00 00 79 00 0a 02 01 0b f4 01 a1 23 a4 12 20  ...y........#.. 
  0a40: 02 01 12 1c 04 11 14 0a 11 82 0c 00 7f 01 02 01  ................
  0a50: 00 00 00 00 00 00 00 00 79 00 01 01 0b e8 03 10  ........y.......
  0a60: 42 0f 2e 5f 50 52 5f 43 50 55 32 14 46 0e 5f 43  B.._PR_CPU2.F._C
  0a70: 53 54 00 7b 43 4d 52 44 0a 7d 0a 03 60 a0 46 06  ST.{CMRD.}..`.F.
  0a80: 93 60 0a 02 a4 12 4e 05 04 0a 03 12 1c 04 11 14  .`....N.........
  0a90: 0a 11 82 0c 00 7f 01 02 01 00 00 00 00 00 00 00  ................
  0aa0: 00 79 00 01 01 0b e8 03 12 1d 04 11 14 0a 11 82  .y..............
  0ab0: 0c 00 01 08 00 00 14 08 00 00 00 00 00 00 79 00  ..............y.
  0ac0: 0a 02 01 0b f4 01 12 1d 04 11 14 0a 11 82 0c 00  ................
  0ad0: 01 08 00 00 16 08 00 00 00 00 00 00 79 00 0a 03  ............y...
  0ae0: 0a 39 0a 64 a1 4d 06 a0 46 04 93 60 01 a4 12 3f  .9.d.M..F..`...?
  0af0: 03 0a 02 12 1c 04 11 14 0a 11 82 0c 00 7f 01 02  ................
  0b00: 01 00 00 00 00 00 00 00 00 79 00 01 01 0b e8 03  .........y......
  0b10: 12 1d 04 11 14 0a 11 82 0c 00 01 08 00 00 14 08  ................
  0b20: 00 00 00 00 00 00 79 00 0a 02 01 0b f4 01 a1 23  ......y........#
  0b30: a4 12 20 02 01 12 1c 04 11 14 0a 11 82 0c 00 7f  .. .............
  0b40: 01 02 01 00 00 00 00 00 00 00 00 79 00 01 01 0b  ...........y....
  0b50: e8 03 10 42 0f 2e 5f 50 52 5f 43 50 55 33 14 46  ...B.._PR_CPU3.F
  0b60: 0e 5f 43 53 54 00 7b 43 4d 52 44 0a 7d 0a 03 60  ._CST.{CMRD.}..`
  0b70: a0 46 06 93 60 0a 02 a4 12 4e 05 04 0a 03 12 1c  .F..`....N......
  0b80: 04 11 14 0a 11 82 0c 00 7f 01 02 01 00 00 00 00  ................
  0b90: 00 00 00 00 79 00 01 01 0b e8 03 12 1d 04 11 14  ....y...........
  0ba0: 0a 11 82 0c 00 01 08 00 00 14 08 00 00 00 00 00  ................
  0bb0: 00 79 00 0a 02 01 0b f4 01 12 1d 04 11 14 0a 11  .y..............
  0bc0: 82 0c 00 01 08 00 00 16 08 00 00 00 00 00 00 79  ...............y
  0bd0: 00 0a 03 0a 39 0a 64 a1 4d 06 a0 46 04 93 60 01  ....9.d.M..F..`.
  0be0: a4 12 3f 03 0a 02 12 1c 04 11 14 0a 11 82 0c 00  ..?.............
  0bf0: 7f 01 02 01 00 00 00 00 00 00 00 00 79 00 01 01  ............y...
  0c00: 0b e8 03 12 1d 04 11 14 0a 11 82 0c 00 01 08 00  ................
  0c10: 00 14 08 00 00 00 00 00 00 79 00 0a 02 01 0b f4  .........y......
  0c20: 01 a1 23 a4 12 20 02 01 12 1c 04 11 14 0a 11 82  ..#.. ..........
  0c30: 0c 00 7f 01 02 01 00 00 00 00 00 00 00 00 79 00  ..............y.
  0c40: 01 01 0b e8 03 5b 82 41 78 41 4d 57 30 5b 01 57  .....[.AxAMW0[.W
  0c50: 4d 49 58 01 08 5f 48 49 44 0d 2a 70 6e 70 30 63  MIX.._HID.*pnp0c
  0c60: 31 34 00 08 5f 55 49 44 00 14 13 53 54 42 59 03  14.._UID...STBY.
  0c70: 8c 68 69 54 4d 50 5f 70 6a 54 4d 50 5f 14 13 53  .hiTMP_pjTMP_..S
  0c80: 54 57 44 03 8b 68 69 54 4d 50 5f 70 6a 54 4d 50  TWD..hiTMP_pjTMP
  0c90: 5f 14 13 53 54 44 57 03 8a 68 69 54 4d 50 5f 70  _..STDW..hiTMP_p
  0ca0: 6a 54 4d 50 5f 14 18 43 4c 42 59 01 70 00 60 a2  jTMP_..CLBY.p.`.
  0cb0: 0e 95 60 87 68 53 54 42 59 68 60 00 75 60 08 5f  ..`.hSTBYh`.u`._
  0cc0: 57 44 47 11 48 06 0a 64 bc dc 9d 8d 97 a9 da 11  WDG.H..d........
  0cd0: b0 12 b6 22 a1 ef 54 92 41 41 01 00 ce 93 05 a8  ..."..T.AA......
  0ce0: 97 a9 da 11 b0 12 b6 22 a1 ef 54 92 42 41 01 02  ......."..T.BA..
  0cf0: 94 59 bb 9d 97 a9 da 11 b0 12 b6 22 a1 ef 54 92  .Y........."..T.
  0d00: d0 00 01 08 e0 6c 77 a3 88 1e db 11 a9 8b 08 00  .....lw.........
  0d10: 20 0c 9a 66 42 43 01 00 21 12 90 05 66 d5 d1 11   ..fBC..!...f...
  0d20: b2 f0 00 a0 c9 06 29 10 4d 4f 01 00 08 49 4e 46  ......).MO...INF
  0d30: 4f 11 03 0a 80 08 45 43 44 30 00 14 0e 57 45 44  O.....ECD0...WED
  0d40: 30 01 70 68 45 43 44 30 a4 00 14 08 57 43 41 41  0.phECD0....WCAA
  0d50: 01 a4 00 14 48 06 57 51 41 41 01 5b 23 57 4d 49  ....H.WQAA.[#WMI
  0d60: 58 ff ff 43 4c 42 59 49 4e 46 4f a0 0b 92 93 68  X..CLBYINFO....h
  0d70: 00 70 49 4e 46 4f 61 a1 3c 53 54 44 57 49 4e 46  .pINFOa.<STDWINF
  0d80: 4f 00 0c 44 45 4c 4c 53 54 44 57 49 4e 46 4f 0a  O..DELLSTDWINFO.
  0d90: 04 0c 20 57 4d 49 53 54 44 57 49 4e 46 4f 0a 08  .. WMISTDWINFO..
  0da0: 01 53 54 44 57 49 4e 46 4f 0a 0c 0b 00 10 70 49  .STDWINFO.....pI
  0db0: 4e 46 4f 61 5b 27 57 4d 49 58 a4 61 14 08 57 53  NFOa['WMIX.a..WS
  0dc0: 41 41 02 a4 69 14 28 57 4d 42 41 03 8a 6a 0a 28  AA..i.(WMBA..j.(
  0dd0: 57 42 55 46 72 57 42 55 46 0a 2c 61 a0 0f 92 94  WBUFrWBUF.,a....
  0de0: 61 0b 00 10 70 57 4d 49 5f 6a 61 60 a4 60 14 4c  a...pWMI_ja`.`.L
  0df0: 05 5f 57 45 44 01 5b 23 57 4d 49 58 ff ff 43 4c  ._WED.[#WMIX..CL
  0e00: 42 59 49 4e 46 4f a0 13 91 92 93 68 0a d0 93 45  BYINFO.....h...E
  0e10: 43 44 30 00 70 49 4e 46 4f 61 a1 28 53 58 31 30  CD0.pINFOa.(SX10
  0e20: 53 58 33 30 01 53 58 31 31 70 53 58 34 32 60 53  SX30.SX11pSX42`S
  0e30: 58 31 32 53 54 44 57 49 4e 46 4f 00 60 70 49 4e  X12STDWINFO.`pIN
  0e40: 46 4f 61 5b 27 57 4d 49 58 a4 61 08 57 51 4d 4f  FOa['WMIX.a.WQMO
  0e50: 11 47 57 0b 72 05 46 4f 4d 42 01 00 00 00 62 05  .GW.r.FOMB....b.
  0e60: 00 00 88 1c 00 00 44 53 00 01 1a 7d da 54 18 d5  ......DS...}.T..
  0e70: 8d 00 01 06 18 42 10 0f 10 22 21 04 12 01 a1 c8  .....B..."!.....
  0e80: 2c 0c 86 10 38 2e 84 1c 40 48 1c 14 4a 08 84 fa  ,...8...@H..J...
  0e90: 13 c8 af 00 84 0e 05 c8 14 60 50 80 53 04 11 f4  .........`P.S...
  0ea0: 2a c0 a6 00 93 02 2c 0a d0 2e c0 b2 00 dd 02 a4  *.....,.........
  0eb0: c3 12 91 e0 28 31 e0 28 9d d8 c2 0d 1b bc 50 14  ....(1.(......P.
  0ec0: cd 20 4a 82 ca 05 f8 46 10 78 b9 02 24 4f 40 9a  . J....F.x..$O@.
  0ed0: 05 18 16 60 5d 80 ec 21 50 a9 43 40 c9 19 02 6a  ...`]..!P.C@...j
  0ee0: 00 ad 4e 40 f8 95 4e 09 49 10 ce 58 c5 e3 6b 16  ..N@..N.I..X..k.
  0ef0: 4d cf 49 ce 31 e4 78 5c e8 41 f0 40 0a 40 58 78  M.I.1.x\.A.@.@Xx
  0f00: 08 45 80 41 49 18 0b 75 31 6a d4 48 d9 80 0c 51  .E.AI..u1j.H...Q
  0f10: da a8 d1 03 3a bf 23 39 bb a3 3b 92 04 46 3d a6  ....:.#9..;..F=.
  0f20: 63 2c 6c 46 42 8d d1 1c 14 81 c6 0d da 12 61 35  c,lFB.........a5
  0f30: ae d8 67 66 e1 c3 12 c6 11 1c 58 82 46 d1 34 c7  ..gf......X.F.4.
  0f40: b3 0d 91 e0 20 42 63 64 40 c8 f3 b0 05 7a e4 09  .... Bcd@....z..
  0f50: ec 1e 51 0a 11 34 df 13 a9 51 80 36 0c d9 3a 1b  ..Q..4...Q.6..:.
  0f60: 68 a8 b1 1a 43 11 44 84 a0 51 0c 16 21 54 88 ff  h...C.D..Q..!T..
  0f70: 7f 94 a8 a7 14 24 6a 65 20 42 0b 66 04 66 7f 10  .....$je B.f.f..
  0f80: 24 c6 99 41 87 05 cb 00 91 11 41 a3 61 67 01 0f  $..A......A.ag..
  0f90: c7 33 69 7e 62 1a 9c 09 c6 86 90 06 08 89 3a 38  .3i~b.........:8
  0fa0: 50 02 4b 19 38 b1 3d 2e 8d ef 8c a3 86 38 f5 33  P.K.8.=......8.3
  0fb0: f3 3f c2 5b f0 11 80 8f c1 83 3d 84 80 47 c8 ce  .?.[......=..G..
  0fc0: 00 06 c4 7b 9f 34 99 8b cf 02 30 86 0f d7 f8 28  ...{.4....0....(
  0fd0: 34 1e 76 3e 60 e3 e2 f0 3e 14 9c 70 b1 20 0a 00  4.v>`...>..p. ..
  0fe0: 21 59 e7 03 f4 ac 8f 2d e0 c3 40 b3 77 08 42 f0  !Y.....-..@.w.B.
  0ff0: 22 e0 a3 83 8f 1b 1e f7 f3 06 18 0e 07 1e 8e 4f  "..............O
  1000: 1b c0 65 04 5c da 93 c2 04 92 fc 04 90 18 18 d4  ..e.\...........
  1010: 81 c0 07 0b b8 92 e0 50 c3 f3 c4 1e 10 fe ff 47  .......P.......G
  1020: 79 22 2f 06 9e fe 63 00 8c 03 82 a7 75 52 be 79  y"/...c.....uR.y
  1030: 3c 48 78 50 61 12 f8 94 c0 d0 f8 71 03 ac a3 c6  <HxPa......q....
  1040: 1f 10 e0 9d 24 ce af cf 01 e8 d0 70 8a 0c e4 35  ....$......p...5
  1050: e0 a4 4f c9 e3 4b e0 33 07 ec bb c1 61 1c 4c 88  ..O..K.3....a.L.
  1060: 08 ef 01 4f 1d be 6b 3c 0a 04 8a d0 db 99 83 9e  ...O..k<........
  1070: 42 8c 12 ed ac c2 3c 70 44 f1 91 c3 08 ef 1e be  B.....<pD.......
  1080: 13 3c 80 b4 36 39 e1 06 7a e6 60 d1 ce 2c b2 00  .<..69..z.`..,..
  1090: a2 48 a3 41 9d 11 7c 1a f0 b4 9e 62 7c 94 30 c8  .H.A..|....b|.0.
  10a0: 19 1e d8 73 c2 63 80 07 cc ee 07 3e 4e f8 5c 80  ...s.c.....>N.\.
  10b0: 77 0d a8 19 fa b0 01 e7 d0 81 3f 4d e0 0f 16 f8  w.........?M....
  10c0: f1 f8 9a c3 26 9c c0 f2 07 81 1a 99 a1 3d cb d3  ....&........=..
  10d0: 7a 0d f0 69 c7 04 3e 6f f8 ff ff cf f1 78 c0 af  z..i..>o.....x..
  10e0: f8 74 41 ee 0a 9e af cf 2e cc c6 78 50 a3 f0 01  .tA........xP...
  10f0: 07 77 76 f1 11 c0 67 17 e0 39 89 67 09 f0 1e 02  .wv...g..9.g....
  1100: 7c 22 89 f7 b0 05 63 c4 78 c8 33 ae 7a 18 ba 08  |"....c.x.3.z...
  1110: 58 dd 7d 05 75 f4 02 13 d4 6b 06 ee f4 02 7c 4e  X.}.u....k....|N
  1120: 59 f0 fe ff a7 2c e0 7e 55 e0 47 14 30 40 76 76  Y....,.~U.G.0@vv
  1130: 3a 11 c2 7b c9 73 88 6f 57 3e 98 04 79 0e 88 f0  :..{.s.oW>..y...
  1140: 94 c5 ef 03 51 62 1e 50 a4 28 46 0c f2 84 e5 eb  ....Qb.P.(F.....
  1150: 49 0c 43 07 0b 17 3e c2 53 16 60 f1 92 85 39 65  I.C...>.S.`...9e
  1160: c1 7c 1b f8 94 05 8e ff ff 29 0b 5c e3 7e ca 02  .|.......).\.~..
  1170: 66 d2 9f 02 3e d5 f8 09 a0 e8 07 0b 0a e3 53 16  f...>.........S.
  1180: e0 4a de 01 01 34 67 27 df 16 0c 76 cc be 64 f8  .J...4g'...v..d.
  1190: 94 08 86 43 86 ef 54 87 f2 c8 f1 14 e0 23 16 d8  ...C..T......#..
  11a0: e3 1c 03 74 5c f1 11 cb ff ff 23 16 c0 8d 03 08  ...t\.....#.....
  11b0: fe d4 01 eb 1e 10 d6 87 0e e0 21 fb 21 a0 33 8c  ..........!.!.3.
  11c0: 25 83 c8 c6 b9 86 8e d1 e2 17 aa 9b 42 ec 83 e1  %...........B...
  11d0: b2 81 04 ea e1 5a 30 85 44 d1 68 34 06 26 30 82  .....Z0.D.h4.&0.
  11e0: 33 88 01 9d 11 42 87 32 9c 8a f3 10 ea ff 4f 30  3....B.2......O0
  11f0: d4 8d 89 ce ce f3 e7 b7 11 9f 08 0c ec 2b c4 5b  .............+.[
  1200: 06 58 86 e5 c5 3d 01 1c e3 49 26 a8 e6 58 83 9a  .X...=...I&..X..
  1210: 83 af 02 6f 64 26 f0 15 0c 6c a7 19 8c be 3b 01  ...od&...l....;.
  1220: 28 80 7c 14 f0 7d f9 6d 80 cd e2 95 d9 68 3e 7f  (.|..}.m.....h>.
  1230: 22 86 8e 12 33 74 0a e2 a1 3b e8 d0 d1 c7 01 9f  "...3t...;......
  1240: ac 70 c1 0e 5f d0 26 77 b4 27 e6 59 78 9e b8 b9  .p.._.&w.'.Yx...
  1250: 83 e9 88 04 63 f0 98 c9 83 59 e0 e4 41 f1 ff 9f  ....c....Y..A...
  1260: 3c 4c 78 4c d8 c3 21 3d 74 78 64 7c 9c 3e fd 30  <LxL..!=txd|.>.0
  1270: ec d3 39 97 a2 67 a4 3b c6 33 17 06 d6 23 e7 b0  ..9..g.;.3...#..
  1280: 46 0b 7b c0 cf 21 be c3 f8 c0 c3 60 7d 7a 01 c7  F.{..!.....`}z..
  1290: f1 0b fe 69 00 3c 07 10 8f e1 05 84 1f 5f 74 fe  ...i.<......._t.
  12a0: a5 42 17 27 79 30 a8 d3 14 e0 ea f4 06 9e ab 3e  .B.'y0.........>
  12b0: ee 2c 85 fb ff 9f a5 60 1c 7e 7d 81 f7 5d ca 08  .,.....`.~}..]..
  12c0: 07 f2 2c 05 f6 d8 cf 10 1d 02 7c 96 02 f8 f1 fa  ..,.......|.....
  12d0: f0 79 06 6e e0 d3 2f d0 fa ff 9f 42 c0 7f 8c f0  .y.n../....B....
  12e0: 11 07 77 b6 01 ef d1 17 1c 07 63 7e c6 c0 1d c7  ..w.......c~....
  12f0: 80 c7 c9 19 77 9a f0 10 f8 00 5a 9d 1e 39 f5 9c  ....w.....Z..9..
  1300: 12 ee 38 c0 a7 84 1b 00 26 c0 19 13 50 f5 ff 3f  ..8.....&...P..?
  1310: 63 02 63 90 08 ef 0a 51 df 91 0d f1 8c cc 70 de  c.c....Q......p.
  1320: 1a 1e 5f 9e 91 c1 79 c6 04 f8 f3 ff 3f d2 63 6f  .._...y.....?.co
  1330: 0a c1 9f 42 80 89 f8 33 26 15 7e c6 84 36 17 4f  ...B...3&.~..6.O
  1340: db 67 4c 80 7b ff ff 33 26 e0 3b f2 19 13 d0 73  .gL.{..3&.;....s
  1350: a4 c2 9d 31 c1 30 ce f7 27 83 3c 8f f8 40 e0 a3  ...1.0..'.<..@..
  1360: 0c 53 68 d3 a7 46 a3 56 0d ca d4 28 d3 a0 56 9f  .Sh..F.V...(..V.
  1370: 4a 8d 19 3b 3a 59 c4 5a 35 58 87 5a af 40 2c e9  J..;:Y.Z5X.Z.@,.
  1380: 89 21 10 ff ff 45 79 00 61 71 4d 80 30 e1 ab 12  .!...Ey.aqM.0...
  1390: 88 63 83 50 b1 3a 20 1a 19 a2 41 04 e4 10 3e 80  .c.P.: ...A...>.
  13a0: 58 24 10 81 13 25 a0 d4 09 08 13 ba 16 81 58 9e  X$...%........X.
  13b0: 17 10 16 0e 84 4a 32 03 ce f4 81 08 c8 52 5f 21  .....J2......R_!
  13c0: 02 b2 70 10 01 f9 ff 0f 5b 01 57 4d 49 53 01 08  ..p.....[.WMIS..
  13d0: 57 4d 30 30 00 14 20 57 4d 30 32 00 53 58 31 30  WM00.. WM02.SX10
  13e0: 53 58 33 30 00 53 58 31 31 70 53 58 34 32 57 4d  SX30.SX11pSX42WM
  13f0: 30 30 53 58 31 32 14 2c 57 4d 30 33 03 5b 80 57  00SX12.,WM03.[.W
  1400: 57 50 52 00 68 01 5b 81 0b 57 57 50 52 11 4d 45  WPR.h.[..WWPR.ME
  1410: 4d 57 08 8c 69 6a 57 56 41 4c 70 57 56 41 4c 4d  MW..ijWVALpWVALM
  1420: 45 4d 57 14 2d 57 4d 30 35 03 5b 80 57 57 50 52  EMW.-WM05.[.WWPR
  1430: 00 68 0a 04 5b 81 0b 57 57 50 52 11 4d 57 33 32  .h..[..WWPR.MW32
  1440: 20 8a 69 6a 57 56 41 4c 70 57 56 41 4c 4d 57 33   .ijWVALpWVALMW3
  1450: 32 14 32 57 4d 30 34 03 5b 80 57 52 50 52 00 68  2.2WM04.[.WRPR.h
  1460: 01 5b 81 0b 57 52 50 52 11 4d 45 4d 52 08 8c 69  .[..WRPR.MEMR..i
  1470: 6a 57 56 41 4c 70 4d 45 4d 52 57 56 41 4c 70 00  jWVALpMEMRWVALp.
  1480: 4d 45 4d 52 14 33 57 4d 30 36 03 5b 80 57 52 50  MEMR.3WM06.[.WRP
  1490: 52 00 68 0a 04 5b 81 0b 57 52 50 52 11 4d 52 33  R.h..[..WRPR.MR3
  14a0: 32 20 8a 69 6a 57 56 41 4c 70 4d 52 33 32 57 56  2 .ijWVALpMR32WV
  14b0: 41 4c 70 00 4d 52 33 32 14 47 05 57 4d 30 37 02  ALp.MR32.G.WM07.
  14c0: a0 4d 04 92 94 69 0b 00 01 70 57 4d 30 30 60 70  .M...i...pWM00`p
  14d0: 00 61 a2 15 95 61 69 57 4d 30 35 60 68 61 72 60  .a...aiWM05`har`
  14e0: 0a 04 60 72 61 0a 04 61 53 58 58 36 0a 9a 00 70  ..`ra..aSXX6...p
  14f0: 57 4d 30 30 60 70 00 61 a2 15 95 61 69 57 4d 30  WM00`p.a...aiWM0
  1500: 36 60 68 61 72 60 0a 04 60 72 61 0a 04 61 a4 68  6`har`..`ra..a.h
  1510: 14 28 57 4d 49 5f 02 5b 23 57 4d 49 53 ff ff a0  .(WMI_.[#WMIS...
  1520: 0b 93 57 4d 30 30 00 57 4d 30 32 57 4d 30 37 68  ..WM00.WM02WM07h
  1530: 69 5b 27 57 4d 49 53 a4 68 5b 80 47 49 43 31 01  i['WMIS.h[.GIC1.
  1540: 0b 8c 08 0a 04 5b 81 1a 47 49 43 31 01 47 49 30  .....[..GIC1.GI0
  1550: 30 08 47 49 30 38 08 47 49 31 36 08 47 49 32 34  0.GI08.GI16.GI24
  1560: 08 5b 80 47 49 43 32 01 0b b8 08 0a 04 5b 81 1a  .[.GIC2......[..
  1570: 47 49 43 32 01 47 49 33 32 08 47 49 34 30 08 47  GIC2.GI32.GI40.G
  1580: 49 34 38 08 47 49 35 36 08 5b 01 42 41 59 4d 01  I48.GI56.[.BAYM.
  1590: 5b 01 53 54 53 4d 01 5b 01 45 56 54 4d 01 5b 01  [.STSM.[.EVTM.[.
  15a0: 46 4f 4f 4d 01 08 47 54 4d 54 11 17 0a 14 ff ff  FOOM..GTMT......
  15b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff 11 00  ................
  15c0: 00 00 8a 47 54 4d 54 00 50 49 4f 30 8a 47 54 4d  ...GTMT.PIO0.GTM
  15d0: 54 0a 04 44 4d 41 30 8a 47 54 4d 54 0a 08 50 49  T..DMA0.GTMT..PI
  15e0: 4f 31 8a 47 54 4d 54 0a 0c 44 4d 41 31 8a 47 54  O1.GTMT..DMA1.GT
  15f0: 4d 54 0a 10 49 46 4c 47 14 1e 2e 5f 47 50 45 5f  MT..IFLG..._GPE_
  1600: 4c 30 36 08 5c 2f 04 5f 53 42 5f 50 43 49 30 47  L06.\/._SB_PCI0G
  1610: 52 46 58 47 53 43 49 14 32 2e 5f 47 50 45 5f 4c  RFXGSCI.2._GPE_L
  1620: 31 41 00 7f 4c 49 44 50 0a 04 4c 49 44 50 7d 50  1A..LIDP..LIDP}P
  1630: 4d 45 32 01 50 4d 45 32 86 5c 2f 03 5f 53 42 5f  ME2.PME2.\/._SB_
  1640: 50 43 49 30 50 43 49 35 0a 02 14 32 2e 5f 47 50  PCI0PCI5...2._GP
  1650: 45 5f 4c 31 42 00 7f 4c 49 44 50 0a 08 4c 49 44  E_L1B..LIDP..LID
  1660: 50 7d 50 4d 45 32 01 50 4d 45 32 86 5c 2f 03 5f  P}PME2.PME2.\/._
  1670: 53 42 5f 50 43 49 30 50 43 49 31 0a 02 14 32 2e  SB_PCI0PCI1...2.
  1680: 5f 47 50 45 5f 4c 31 44 00 7f 4c 49 44 50 0a 20  _GPE_L1D..LIDP. 
  1690: 4c 49 44 50 7d 50 4d 45 32 01 50 4d 45 32 86 5c  LIDP}PME2.PME2.\
  16a0: 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 33 0a 02  /._SB_PCI0PCI3..
  16b0: 14 48 0d 2e 5f 47 50 45 5f 4c 30 38 00 47 50 4b  .H.._GPE_L08.GPK
  16c0: 4d 06 57 45 4e 33 4d 42 45 4e 06 57 53 54 33 4d  M.WEN3MBEN.WST3M
  16d0: 42 53 54 06 57 53 54 30 4d 50 4d 45 5b 23 45 56  BST.WST0MPME[#EV
  16e0: 54 4d ff ff 70 4d 42 53 54 60 7b 60 0a 02 60 a0  TM..pMBST`{`..`.
  16f0: 45 04 60 70 43 4d 52 44 0a 21 61 7b 61 0a 60 61  E.`pCMRD.!a{a.`a
  1700: a0 34 61 70 0a 64 61 70 00 63 a2 2a 91 60 63 42  .4ap.dap.c.*.`cB
  1710: 41 59 45 70 4d 42 53 54 60 7b 60 0a 02 60 70 47  AYEpMBST`{`..`pG
  1720: 49 34 30 63 7b 63 01 63 76 61 a0 0a 93 61 00 70  I40c{c.cva...a.p
  1730: 00 60 70 00 63 5b 27 45 56 54 4d 70 4d 42 53 54  .`p.c['EVTMpMBST
  1740: 60 7b 60 0a 02 60 70 60 4d 42 53 54 70 4d 50 4d  `{`..`p`MBSTpMPM
  1750: 45 60 7b 60 01 60 70 60 4d 50 4d 45 a0 16 80 93  E`{`.`p`MPME....
  1760: 53 53 54 58 01 00 86 5c 2e 5f 53 42 5f 56 42 54  SSTX...\._SB_VBT
  1770: 4e 0a 02 86 5c 2f 04 5f 53 42 5f 50 43 49 30 49  N...\/._SB_PCI0I
  1780: 53 41 5f 4b 42 44 5f 0a 02 14 42 0f 5f 57 41 4b  SA_KBD_...B._WAK
  1790: 01 a0 09 93 68 0a 04 47 55 53 42 a1 17 a0 15 93  ....h..GUSB.....
  17a0: 68 0a 03 a0 0f 7b 0a 20 43 4d 52 44 0a 49 00 47  h....{. CMRD.I.G
  17b0: 55 53 42 43 4d 57 52 0a 49 7b 0a df 43 4d 52 44  USBCMWR.I{..CMRD
  17c0: 0a 49 00 06 57 45 4e 33 4d 42 45 4e 06 57 53 54  .I..WEN3MBEN.WST
  17d0: 33 4d 42 53 54 a0 4e 05 7d 93 68 0a 03 93 68 0a  3MBST.N.}.h...h.
  17e0: 04 00 a0 36 93 4d 53 4f 53 0a 04 86 5c 2f 04 5f  ...6.MSOS...\/._
  17f0: 53 42 5f 50 43 49 30 49 44 45 31 50 52 49 31 00  SB_PCI0IDE1PRI1.
  1800: 86 5c 2f 05 5f 53 42 5f 50 43 49 30 49 44 45 31  .\/._SB_PCI0IDE1
  1810: 50 52 49 31 4d 41 53 31 01 a1 1a 86 5c 2f 05 5f  PRI1MAS1....\/._
  1820: 53 42 5f 50 43 49 30 49 44 45 31 50 52 49 31 4d  SB_PCI0IDE1PRI1M
  1830: 41 53 31 01 70 4d 42 45 4e 60 7d 60 0a 02 4d 42  AS1.pMBEN`}`..MB
  1840: 45 4e a0 37 7d 7b 50 4d 53 32 01 00 7d 7b 92 48  EN.7}{PMS2..}{.H
  1850: 41 43 4b 7b 47 4c 42 54 0a 11 00 00 7b 92 48 41  ACK{GLBT....{.HA
  1860: 43 4b 7b 54 48 52 50 0a 18 00 00 00 00 86 5c 2e  CK{THRP.......\.
  1870: 5f 53 42 5f 56 42 54 4e 0a 02 a4 00 14 4e 10 42  _SB_VBTN.....N.B
  1880: 41 59 45 00 06 57 45 4e 33 4d 42 45 4e 06 57 53  AYE..WEN3MBEN.WS
  1890: 54 33 4d 42 53 54 5b 23 4d 54 58 5f ff ff 70 4d  T3MBST[#MTX_..pM
  18a0: 42 53 54 61 7b 61 0a 02 61 70 0b 10 27 60 a2 21  BSTa{a..ap..'`.!
  18b0: 61 70 61 4d 42 53 54 5b 22 0a 64 70 4d 42 53 54  apaMBST[".dpMBST
  18c0: 61 7b 61 0a 02 61 76 60 a0 07 93 60 00 70 00 61  a{a..av`...`.p.a
  18d0: a0 44 0b 60 70 53 47 50 32 60 7b 60 0a 02 60 a0  .D.`pSGP2`{`..`.
  18e0: 47 04 60 5b 23 53 54 53 4d ff ff 70 43 4d 52 44  G.`[#STSM..pCMRD
  18f0: 0a 2c 61 7b 61 0a 04 61 5b 27 53 54 53 4d a0 1a  .,a{a..a['STSM..
  1900: 61 49 44 45 52 70 43 4d 52 44 0a 3b 61 7d 61 0a  aIDERpCMRD.;a}a.
  1910: 20 61 43 4d 57 52 0a 3b 61 70 47 49 34 38 60 7b   aCMWR.;apGI48`{
  1920: 60 0a f7 47 49 34 38 a1 4d 05 70 47 49 34 30 60  `..GI48.M.pGI40`
  1930: 7b 60 01 60 a0 26 60 70 43 4d 52 44 0a 21 61 7b  {`.`.&`pCMRD.!a{
  1940: 61 0a 20 61 a0 12 93 61 00 70 47 49 34 38 60 7b  a. a...a.pGI48`{
  1950: 60 0a f7 47 49 34 38 49 44 45 52 a1 29 70 43 4d  `..GI48IDER.)pCM
  1960: 52 44 0a 21 60 7b 60 0a 40 60 a0 1a 60 49 44 45  RD.!`{`.@`..`IDE
  1970: 41 70 43 4d 52 44 0a 3b 61 7d 61 0a 20 61 43 4d  ApCMRD.;a}a. aCM
  1980: 57 52 0a 3b 61 5b 27 4d 54 58 5f 14 4f 0a 49 44  WR.;a['MTX_.O.ID
  1990: 45 41 00 5b 23 42 41 59 4d ff ff 5b 23 53 4d 49  EA.[#BAYM..[#SMI
  19a0: 4d ff ff 70 00 53 4d 49 44 5b 27 53 4d 49 4d 4d  M..p.SMID['SMIMM
  19b0: 42 41 59 5b 23 53 54 53 4d ff ff 5b 23 53 4d 49  BAY[#STSM..[#SMI
  19c0: 4d ff ff 70 53 4d 49 44 60 5b 27 53 4d 49 4d 5b  M..pSMID`['SMIM[
  19d0: 27 53 54 53 4d 5b 23 53 54 53 4d ff ff a0 41 05  'STSM[#STSM...A.
  19e0: 60 a0 32 93 4d 53 4f 53 0a 04 86 5c 2f 03 5f 53  `.2.MSOS...\/._S
  19f0: 42 5f 50 43 49 30 49 44 45 31 00 86 5c 2f 05 5f  B_PCI0IDE1..\/._
  1a00: 53 42 5f 50 43 49 30 49 44 45 31 50 52 49 31 4d  SB_PCI0IDE1PRI1M
  1a10: 41 53 31 01 a1 1a 86 5c 2f 05 5f 53 42 5f 50 43  AS1....\/._SB_PC
  1a20: 49 30 49 44 45 31 50 52 49 31 4d 41 53 31 01 5b  I0IDE1PRI1MAS1.[
  1a30: 27 53 54 53 4d 5b 27 42 41 59 4d 14 4e 08 49 44  'STSM['BAYM.N.ID
  1a40: 45 52 00 5b 23 42 41 59 4d ff ff 5b 23 53 54 53  ER.[#BAYM..[#STS
  1a50: 4d ff ff 70 ff 50 49 4f 30 70 ff 44 4d 41 30 5b  M..p.PIO0p.DMA0[
  1a60: 23 53 4d 49 4d ff ff 70 00 53 4d 49 44 5b 27 53  #SMIM..p.SMID['S
  1a70: 4d 49 4d 4d 42 41 59 5b 27 53 54 53 4d 5b 23 53  MIMMBAY['STSM[#S
  1a80: 54 53 4d ff ff a0 1d 93 4d 53 4f 53 0a 04 86 5c  TSM.....MSOS...\
  1a90: 2f 04 5f 53 42 5f 50 43 49 30 49 44 45 31 50 52  /._SB_PCI0IDE1PR
  1aa0: 49 31 01 a1 1a 86 5c 2f 05 5f 53 42 5f 50 43 49  I1....\/._SB_PCI
  1ab0: 30 49 44 45 31 50 52 49 31 4d 41 53 31 01 5b 27  0IDE1PRI1MAS1.['
  1ac0: 53 54 53 4d 5b 27 42 41 59 4d 14 21 4d 42 41 59  STSM['BAYM.!MBAY
  1ad0: 00 5b 23 53 4d 49 4d ff ff 70 0a 86 53 4d 49 43  .[#SMIM..p..SMIC
  1ae0: 70 53 4d 49 43 60 5b 27 53 4d 49 4d 10 33 5f 53  pSMIC`['SMIM.3_S
  1af0: 49 5f 14 2d 5f 53 53 54 01 70 68 53 53 54 58 a0  I_.-_SST.phSSTX.
  1b00: 10 93 68 0a 03 7b 4c 45 44 32 0a fd 4c 45 44 32  ..h..{LED2..LED2
  1b10: a0 0f 93 68 01 7d 4c 45 44 32 0a 02 4c 45 44 32  ...h.}LED2..LED2
  1b20: 10 42 b3 5f 53 42 5f 5b 82 4a b2 50 43 49 30 08  .B._SB_[.J.PCI0.
  1b30: 5f 48 49 44 0c 41 d0 0a 03 08 5f 55 49 44 0a 04  _HID.A...._UID..
  1b40: 08 5f 41 44 52 00 08 5f 50 52 57 12 06 02 0a 0d  ._ADR.._PRW.....
  1b50: 0a 05 14 08 5f 53 31 44 00 a4 01 14 14 5f 53 33  ...._S1D....._S3
  1b60: 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4 0a 02  D...HACK........
  1b70: 5b 82 44 38 47 52 46 58 08 5f 41 44 52 0c 00 00  [.D8GRFX._ADR...
  1b80: 02 00 14 09 5f 53 31 44 00 a4 0a 03 10 24 5e 5e  ...._S1D.....$^^
  1b90: 50 43 49 30 5b 80 4d 43 48 50 02 0a 40 0a c0 5b  PCI0[.MCHP..@..[
  1ba0: 81 10 4d 43 48 50 00 00 40 30 54 41 53 4d 0a 00  ..MCHP..@0TASM..
  1bb0: 06 5b 80 49 47 44 50 02 0a 40 0a c0 5b 81 46 04  .[.IGDP..@..[.F.
  1bc0: 49 47 44 50 00 00 40 09 00 01 47 49 56 44 01 00  IGDP..@...GIVD..
  1bd0: 02 47 55 4d 41 03 00 09 00 04 47 4d 46 4e 01 00  .GUMA.....GMFN..
  1be0: 1b 00 40 48 47 53 53 45 01 47 53 53 42 0e 47 53  ..@HGSSE.GSSB.GS
  1bf0: 45 53 01 00 30 00 04 47 43 44 43 03 00 49 05 41  ES..0..GCDC..I.A
  1c00: 53 4c 53 20 14 42 2d 47 53 43 49 00 5b 80 49 47  SLS .B-GSCI.[.IG
  1c10: 44 4d 00 41 53 4c 53 0b 00 20 5b 81 4c 04 49 47  DM.ASLS.. [.L.IG
  1c20: 44 4d 00 53 49 47 4e 40 08 53 49 5a 45 20 4f 56  DM.SIGN@.SIZE OV
  1c30: 45 52 20 53 56 45 52 40 10 56 56 45 52 40 08 47  ER SVER@.VVER@.G
  1c40: 56 45 52 40 08 4d 42 4f 58 20 00 40 d2 53 43 49  VER@.MBOX .@.SCI
  1c50: 45 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46  E.GEFC.GXFC.GESF
  1c60: 08 00 10 50 41 52 4d 20 14 48 11 47 42 44 41 00  ...PARM .H.GBDA.
  1c70: a0 16 93 47 45 53 46 00 70 0a 41 50 41 52 4d 70  ...GESF.p.APARMp
  1c80: 01 47 58 46 43 a4 00 a0 15 93 47 45 53 46 01 70  .GXFC.....GESF.p
  1c90: 00 50 41 52 4d 70 01 47 58 46 43 a4 00 a0 11 93  .PARMp.GXFC.....
  1ca0: 47 45 53 46 0a 04 70 0a 04 47 58 46 43 a4 00 a0  GESF..p..GXFC...
  1cb0: 11 93 47 45 53 46 0a 05 70 0a 04 47 58 46 43 a4  ..GESF..p..GXFC.
  1cc0: 00 a0 11 93 47 45 53 46 0a 06 70 0a 04 47 58 46  ....GESF..p..GXF
  1cd0: 43 a4 00 a0 42 09 93 47 45 53 46 0a 07 7d 50 41  C...B..GESF..}PA
  1ce0: 52 4d 47 49 56 44 50 41 52 4d 7f 50 41 52 4d 01  RMGIVDPARM.PARM.
  1cf0: 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 4e 01 00  PARM}PARMyGMFN..
  1d00: 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 41 52 4d  PARM}PARM...PARM
  1d10: a0 16 95 54 41 53 4d 0a 08 7d 50 41 52 4d 0c 00  ...TASM..}PARM..
  1d20: 00 02 00 50 41 52 4d a1 28 a0 16 95 54 41 53 4d  ...PARM.(...TASM
  1d30: 0a 10 7d 50 41 52 4d 0c 00 00 04 00 50 41 52 4d  ..}PARM.....PARM
  1d40: a1 0f 7d 50 41 52 4d 0c 00 00 06 00 50 41 52 4d  ..}PARM.....PARM
  1d50: 7d 50 41 52 4d 0c 00 00 80 3e 50 41 52 4d 70 01  }PARM....>PARMp.
  1d60: 47 58 46 43 a4 00 a0 11 93 47 45 53 46 0a 0a 70  GXFC.....GESF..p
  1d70: 0a 04 47 58 46 43 a4 00 70 0a 04 47 58 46 43 a4  ..GXFC..p..GXFC.
  1d80: 00 14 41 12 53 42 43 42 00 a0 15 93 47 45 53 46  ..A.SBCB....GESF
  1d90: 00 70 00 50 41 52 4d 70 01 47 58 46 43 a4 00 a0  .p.PARMp.GXFC...
  1da0: 10 93 47 45 53 46 01 70 0a 04 47 58 46 43 a4 00  ..GESF.p..GXFC..
  1db0: a0 11 93 47 45 53 46 0a 03 70 0a 04 47 58 46 43  ...GESF..p..GXFC
  1dc0: a4 00 a0 11 93 47 45 53 46 0a 04 70 0a 04 47 58  .....GESF..p..GX
  1dd0: 46 43 a4 00 a0 11 93 47 45 53 46 0a 05 70 0a 04  FC.....GESF..p..
  1de0: 47 58 46 43 a4 00 a0 11 93 47 45 53 46 0a 06 70  GXFC.....GESF..p
  1df0: 0a 04 47 58 46 43 a4 00 a0 11 93 47 45 53 46 0a  ..GXFC.....GESF.
  1e00: 07 70 0a 04 47 58 46 43 a4 00 a0 11 93 47 45 53  .p..GXFC.....GES
  1e10: 46 0a 08 70 0a 04 47 58 46 43 a4 00 a0 11 93 47  F..p..GXFC.....G
  1e20: 45 53 46 0a 09 70 0a 04 47 58 46 43 a4 00 a0 11  ESF..p..GXFC....
  1e30: 93 47 45 53 46 0a 0a 70 0a 04 47 58 46 43 a4 00  .GESF..p..GXFC..
  1e40: a0 11 93 47 45 53 46 0a 0b 70 0a 04 47 58 46 43  ...GESF..p..GXFC
  1e50: a4 00 a0 11 93 47 45 53 46 0a 10 70 0a 04 47 58  .....GESF..p..GX
  1e60: 46 43 a4 00 a0 11 93 47 45 53 46 0a 11 70 0a 04  FC.....GESF..p..
  1e70: 47 58 46 43 a4 00 a0 11 93 47 45 53 46 0a 12 70  GXFC.....GESF..p
  1e80: 0a 04 47 58 46 43 a4 00 a0 11 93 47 45 53 46 0a  ..GXFC.....GESF.
  1e90: 13 70 0a 04 47 58 46 43 a4 00 70 0a 04 47 58 46  .p..GXFC..p..GXF
  1ea0: 43 a4 00 a0 0c 93 47 45 46 43 0a 04 47 42 44 41  C.....GEFC..GBDA
  1eb0: a0 0c 93 47 45 46 43 0a 06 53 42 43 42 70 01 53  ...GEFC..SBCBp.S
  1ec0: 43 49 53 70 00 47 45 53 46 70 00 47 53 53 45 70  CISp.GESFp.GSSEp
  1ed0: 00 53 43 49 45 a4 00 5b 80 54 43 4f 49 01 0b 60  .SCIE..[.TCOI..`
  1ee0: 08 0a 08 5b 81 11 54 43 4f 49 02 00 20 00 09 53  ...[..TCOI.. ..S
  1ef0: 43 49 53 01 00 06 5b 82 4a 34 49 44 45 31 08 5f  CIS...[.J4IDE1._
  1f00: 41 44 52 0c 02 00 1f 00 5b 80 52 49 44 45 01 0b  ADR.....[.RIDE..
  1f10: 32 fe 01 5b 81 0b 52 49 44 45 01 49 52 53 54 08  2..[..RIDE.IRST.
  1f20: 14 37 5f 53 54 41 00 06 57 45 4e 33 4d 42 45 4e  .7_STA..WEN3MBEN
  1f30: 06 57 53 54 33 4d 42 53 54 70 47 49 33 32 60 7b  .WST3MBSTpGI32`{
  1f40: 47 49 33 32 0a 70 60 a0 09 93 60 0a 30 70 0a 0f  GI32.p`...`.0p..
  1f50: 61 a1 04 70 00 61 a4 61 5b 82 4b 2d 50 52 49 31  a..p.a.a[.K-PRI1
  1f60: 08 5f 41 44 52 01 14 49 17 5f 53 54 4d 03 5b 23  ._ADR..I._STM.[#
  1f70: 42 41 59 4d ff ff 8a 68 00 58 49 4f 30 8a 68 0a  BAYM...h.XIO0.h.
  1f80: 04 58 4d 41 30 8a 68 0a 08 58 49 4f 31 8a 68 0a  .XMA0.h..XIO1.h.
  1f90: 0c 58 4d 41 31 8a 68 0a 10 58 46 4c 47 a0 4c 13  .XMA1.h..XFLG.L.
  1fa0: 7d 92 93 58 49 4f 30 50 49 4f 30 92 93 58 4d 41  }..XIO0PIO0..XMA
  1fb0: 30 44 4d 41 30 00 a0 0c 93 58 49 4f 30 0b 58 02  0DMA0....XIO0.X.
  1fc0: 70 00 60 a1 41 04 a0 0c 93 58 49 4f 30 0b 7f 01  p.`.A....XIO0...
  1fd0: 70 01 60 a1 31 a0 0c 93 58 49 4f 30 0a f0 70 0a  p.`.1...XIO0..p.
  1fe0: 02 60 a1 22 a0 0c 93 58 49 4f 30 0a b4 70 0a 03  .`."...XIO0..p..
  1ff0: 60 a1 13 a0 0c 93 58 49 4f 30 0a 78 70 0a 04 60  `.....XIO0.xp..`
  2000: a1 04 70 00 60 70 58 46 4c 47 61 7b 61 01 61 a0  ..p.`pXFLGa{a.a.
  2010: 4c 07 93 61 01 70 60 61 7a 61 0a 04 61 7b 61 0a  L..a.p`aza..a{a.
  2020: 07 61 a0 0c 93 58 4d 41 30 0a 78 7d 00 60 00 a1  .a...XMA0.x}.`..
  2030: 47 05 a0 0d 93 58 4d 41 30 0a 50 7d 0a 08 60 60  G....XMA0.P}..``
  2040: a1 46 04 a0 0d 93 58 4d 41 30 0a 3c 7d 0a 10 60  .F....XMA0.<}..`
  2050: 60 a1 35 a0 0d 93 58 4d 41 30 0a 2d 7d 0a 18 60  `.5...XMA0.-}..`
  2060: 60 a1 25 a0 0d 93 58 4d 41 30 0a 1e 7d 0a 20 60  `.%...XMA0..}. `
  2070: 60 a1 15 a0 0d 93 58 4d 41 30 0a 14 7d 0a 28 60  `.....XMA0..}.(`
  2080: 60 a1 05 7d 00 60 60 7d 60 0a 80 60 a1 35 a0 0d  `..}.``}`..`.5..
  2090: 93 58 4d 41 30 0b e0 01 7d 00 60 60 a1 25 a0 0d  .XMA0...}.``.%..
  20a0: 93 58 4d 41 30 0a 96 7d 0a 08 60 60 a1 15 a0 0d  .XMA0..}..``....
  20b0: 93 58 4d 41 30 0a 78 7d 0a 10 60 60 a1 05 7d 00  .XMA0.x}..``..}.
  20c0: 60 60 5b 23 53 4d 49 4d ff ff 70 60 53 4d 49 44  ``[#SMIM..p`SMID
  20d0: 5b 27 53 4d 49 4d 4d 42 41 59 5b 27 42 41 59 4d  ['SMIMMBAY['BAYM
  20e0: 14 19 5f 47 54 4d 00 5b 23 42 41 59 4d ff ff 5b  .._GTM.[#BAYM..[
  20f0: 27 42 41 59 4d a4 47 54 4d 54 14 1a 5f 53 54 41  'BAYM.GTMT.._STA
  2100: 00 5b 23 53 54 53 4d ff ff 70 0a 0f 61 5b 27 53  .[#STSM..p..a['S
  2110: 54 53 4d a4 61 5b 82 4e 11 4d 41 53 31 08 5f 41  TSM.a[.N.MAS1._A
  2120: 44 52 00 14 44 0c 5f 45 4a 30 01 70 0b 60 ea 61  DR..D._EJ0.p.`.a
  2130: 70 49 52 53 54 60 7b 60 0a 80 60 a2 1b 60 5b 22  pIRST`{`..`..`["
  2140: 0a 0a 70 49 52 53 54 60 7b 60 0a 80 60 76 61 a0  ..pIRST`{`..`va.
  2150: 07 93 61 00 70 00 60 a0 4e 08 61 70 0a 04 49 52  ..a.p.`.N.ap..IR
  2160: 53 54 5b 21 0a 1e 70 49 52 53 54 60 7b 60 0a 80  ST[!..pIRST`{`..
  2170: 60 70 0b 60 ea 61 a2 20 92 93 60 0a 80 5b 22 0a  `p.`.a. ..`..[".
  2180: 0a 70 49 52 53 54 60 7b 60 0a 80 60 76 61 a0 08  .pIRST`{`..`va..
  2190: 93 61 00 70 0a 80 60 a0 4e 04 61 70 00 49 52 53  .a.p..`.N.ap.IRS
  21a0: 54 5b 21 0a 1e 70 49 52 53 54 60 7b 60 0a 80 60  T[!..pIRST`{`..`
  21b0: 70 0b 60 ea 61 a2 1b 60 5b 22 0a 0a 70 49 52 53  p.`.a..`["..pIRS
  21c0: 54 60 7b 60 0a 80 60 76 61 a0 07 93 61 00 70 00  T`{`..`va...a.p.
  21d0: 60 a0 14 61 49 44 45 52 70 47 49 34 38 60 7b 60  `..aIDERpGI48`{`
  21e0: 0a f7 47 49 34 38 a4 00 14 4c 04 5f 53 54 41 00  ..GI48...L._STA.
  21f0: 5b 23 53 54 53 4d ff ff 5b 23 46 4f 4f 4d ff ff  [#STSM..[#FOOM..
  2200: 70 43 4d 52 44 0a 2c 60 7b 60 0a 04 60 5b 27 46  pCMRD.,`{`..`['F
  2210: 4f 4f 4d 5b 23 46 4f 4f 4d ff ff a0 06 60 70 0a  OOM[#FOOM....`p.
  2220: 0f 61 a1 04 70 00 61 5b 27 46 4f 4f 4d 5b 27 53  .a..p.a['FOOM['S
  2230: 54 53 4d a4 61 5b 82 0b 50 52 49 30 08 5f 41 44  TSM.a[..PRI0._AD
  2240: 52 00 5b 82 4d 08 50 43 49 34 14 08 5f 53 31 44  R.[.M.PCI4.._S1D
  2250: 00 a4 01 14 14 5f 53 33 44 00 a0 08 48 41 43 4b  ....._S3D...HACK
  2260: a4 0a 03 a1 04 a4 0a 02 14 14 5f 53 34 44 00 a0  .........._S4D..
  2270: 08 48 41 43 4b a4 0a 03 a1 04 a4 0a 02 14 14 5f  .HACK.........._
  2280: 53 35 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4  S5D...HACK......
  2290: 0a 02 14 0f 5f 41 44 52 00 70 0c 00 00 1e 00 60  ...._ADR.p.....`
  22a0: a4 60 08 5f 55 49 44 0a 07 08 5f 50 52 57 12 06  .`._UID..._PRW..
  22b0: 02 0a 0b 0a 05 14 1b 5f 50 52 54 00 70 41 50 49  ......._PRT.pAPI
  22c0: 34 60 a0 0c 92 50 49 43 46 70 50 49 43 34 60 a4  4`...PICFpPIC4`.
  22d0: 60 5b 82 48 0a 50 43 49 32 14 08 5f 53 31 44 00  `[.H.PCI2.._S1D.
  22e0: a4 01 14 14 5f 53 33 44 00 a0 08 48 41 43 4b a4  ...._S3D...HACK.
  22f0: 0a 03 a1 04 a4 0a 02 14 14 5f 53 34 44 00 a0 08  ........._S4D...
  2300: 48 41 43 4b a4 0a 03 a1 04 a4 0a 02 14 14 5f 53  HACK.........._S
  2310: 35 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4 0a  5D...HACK.......
  2320: 02 14 0f 5f 41 44 52 00 70 0c 00 00 1c 00 60 a4  ..._ADR.p.....`.
  2330: 60 08 5f 55 49 44 0a 16 5b 80 52 53 54 53 02 0a  `._UID..[.RSTS..
  2340: 60 0a 04 5b 81 1a 52 53 54 53 01 50 49 44 30 08  `..[..RSTS.PID0.
  2350: 50 49 44 31 08 50 4d 58 53 08 50 4e 55 53 08 14  PID1.PMXS.PNUS..
  2360: 1b 5f 50 52 54 00 70 41 50 49 32 60 a0 0c 92 50  ._PRT.pAPI2`...P
  2370: 49 43 46 70 50 49 43 32 60 a4 60 5b 82 44 0b 50  ICFpPIC2`.`[.D.P
  2380: 43 49 33 14 08 5f 53 31 44 00 a4 01 14 14 5f 53  CI3.._S1D....._S
  2390: 33 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4 0a  3D...HACK.......
  23a0: 02 14 14 5f 53 34 44 00 a0 08 48 41 43 4b a4 0a  ..._S4D...HACK..
  23b0: 03 a1 04 a4 0a 02 14 14 5f 53 35 44 00 a0 08 48  ........_S5D...H
  23c0: 41 43 4b a4 0a 03 a1 04 a4 0a 02 14 0f 5f 41 44  ACK.........._AD
  23d0: 52 00 70 0c 01 00 1c 00 60 a4 60 08 5f 55 49 44  R.p.....`.`._UID
  23e0: 0a 18 08 5f 50 52 57 12 06 02 0a 1d 0a 05 5b 80  ..._PRW.......[.
  23f0: 52 53 54 53 02 0a 60 0a 04 5b 81 1a 52 53 54 53  RSTS..`..[..RSTS
  2400: 01 50 49 44 30 08 50 49 44 31 08 50 4d 58 53 08  .PID0.PID1.PMXS.
  2410: 50 4e 55 53 08 14 1b 5f 50 52 54 00 70 41 50 49  PNUS..._PRT.pAPI
  2420: 33 60 a0 0c 92 50 49 43 46 70 50 49 43 33 60 a4  3`...PICFpPIC3`.
  2430: 60 5b 82 44 0b 50 43 49 31 14 08 5f 53 31 44 00  `[.D.PCI1.._S1D.
  2440: a4 01 14 14 5f 53 33 44 00 a0 08 48 41 43 4b a4  ...._S3D...HACK.
  2450: 0a 03 a1 04 a4 0a 02 14 14 5f 53 34 44 00 a0 08  ........._S4D...
  2460: 48 41 43 4b a4 0a 03 a1 04 a4 0a 02 14 14 5f 53  HACK.........._S
  2470: 35 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4 0a  5D...HACK.......
  2480: 02 14 0f 5f 41 44 52 00 70 0c 00 00 01 00 60 a4  ..._ADR.p.....`.
  2490: 60 08 5f 55 49 44 0a 19 08 5f 50 52 57 12 06 02  `._UID..._PRW...
  24a0: 0a 1b 0a 05 5b 80 52 53 54 53 02 0a c0 0a 04 5b  ....[.RSTS.....[
  24b0: 81 1a 52 53 54 53 01 50 49 44 30 08 50 49 44 31  ..RSTS.PID0.PID1
  24c0: 08 50 4d 58 53 08 50 4e 55 53 08 14 1b 5f 50 52  .PMXS.PNUS..._PR
  24d0: 54 00 70 41 50 49 31 60 a0 0c 92 50 49 43 46 70  T.pAPI1`...PICFp
  24e0: 50 49 43 31 60 a4 60 5b 82 44 0b 50 43 49 35 14  PIC1`.`[.D.PCI5.
  24f0: 08 5f 53 31 44 00 a4 01 14 14 5f 53 33 44 00 a0  ._S1D....._S3D..
  2500: 08 48 41 43 4b a4 0a 03 a1 04 a4 0a 02 14 14 5f  .HACK.........._
  2510: 53 34 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4  S4D...HACK......
  2520: 0a 02 14 14 5f 53 35 44 00 a0 08 48 41 43 4b a4  ...._S5D...HACK.
  2530: 0a 03 a1 04 a4 0a 02 14 0f 5f 41 44 52 00 70 0c  ........._ADR.p.
  2540: 04 00 1c 00 60 a4 60 08 5f 55 49 44 0a 20 08 5f  ....`.`._UID. ._
  2550: 50 52 57 12 06 02 0a 1a 0a 05 5b 80 52 53 54 53  PRW.......[.RSTS
  2560: 02 0a 60 0a 04 5b 81 1a 52 53 54 53 01 50 49 44  ..`..[..RSTS.PID
  2570: 30 08 50 49 44 31 08 50 4d 58 53 08 50 4e 55 53  0.PID1.PMXS.PNUS
  2580: 08 14 1b 5f 50 52 54 00 70 41 50 49 35 60 a0 0c  ..._PRT.pAPI5`..
  2590: 92 50 49 43 46 70 50 49 43 35 60 a4 60 5b 82 44  .PICFpPIC5`.`[.D
  25a0: 0b 50 43 49 36 14 08 5f 53 31 44 00 a4 01 14 14  .PCI6.._S1D.....
  25b0: 5f 53 33 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04  _S3D...HACK.....
  25c0: a4 0a 02 14 14 5f 53 34 44 00 a0 08 48 41 43 4b  ....._S4D...HACK
  25d0: a4 0a 03 a1 04 a4 0a 02 14 14 5f 53 35 44 00 a0  .........._S5D..
  25e0: 08 48 41 43 4b a4 0a 03 a1 04 a4 0a 02 14 0f 5f  .HACK.........._
  25f0: 41 44 52 00 70 0c 05 00 1c 00 60 a4 60 08 5f 55  ADR.p.....`.`._U
  2600: 49 44 0a 21 08 5f 50 52 57 12 06 02 0a 1a 0a 05  ID.!._PRW.......
  2610: 5b 80 52 53 54 53 02 0a 60 0a 04 5b 81 1a 52 53  [.RSTS..`..[..RS
  2620: 54 53 01 50 49 44 30 08 50 49 44 31 08 50 4d 58  TS.PID0.PID1.PMX
  2630: 53 08 50 4e 55 53 08 14 1b 5f 50 52 54 00 70 41  S.PNUS..._PRT.pA
  2640: 50 49 36 60 a0 0c 92 50 49 43 46 70 50 49 43 36  PI6`...PICFpPIC6
  2650: 60 a4 60 10 49 32 2e 5f 53 42 5f 50 43 49 30 08  `.`.I2._SB_PCI0.
  2660: 50 49 43 30 12 46 1a 1d 12 0d 04 0c ff ff 01 00  PIC0.F..........
  2670: 00 4c 4e 4b 41 00 12 0d 04 0c ff ff 01 00 01 4c  .LNKA..........L
  2680: 4e 4b 42 00 12 0e 04 0c ff ff 01 00 0a 02 4c 4e  NKB...........LN
  2690: 4b 43 00 12 0e 04 0c ff ff 01 00 0a 03 4c 4e 4b  KC...........LNK
  26a0: 44 00 12 0d 04 0c ff ff 02 00 00 4c 4e 4b 41 00  D..........LNKA.
  26b0: 12 0d 04 0c ff ff 02 00 01 4c 4e 4b 42 00 12 0e  .........LNKB...
  26c0: 04 0c ff ff 02 00 0a 02 4c 4e 4b 43 00 12 0e 04  ........LNKC....
  26d0: 0c ff ff 02 00 0a 03 4c 4e 4b 44 00 12 0d 04 0c  .......LNKD.....
  26e0: ff ff 03 00 00 4c 4e 4b 41 00 12 0d 04 0c ff ff  .....LNKA.......
  26f0: 03 00 01 4c 4e 4b 42 00 12 0e 04 0c ff ff 03 00  ...LNKB.........
  2700: 0a 02 4c 4e 4b 43 00 12 0e 04 0c ff ff 03 00 0a  ..LNKC..........
  2710: 03 4c 4e 4b 44 00 12 0d 04 0c ff ff 1a 00 00 4c  .LNKD..........L
  2720: 4e 4b 41 00 12 0d 04 0c ff ff 1a 00 01 4c 4e 4b  NKA..........LNK
  2730: 42 00 12 0e 04 0c ff ff 1a 00 0a 02 4c 4e 4b 47  B...........LNKG
  2740: 00 12 0e 04 0c ff ff 1a 00 0a 03 4c 4e 4b 44 00  ...........LNKD.
  2750: 12 0d 04 0c ff ff 1b 00 00 4c 4e 4b 41 00 12 0d  .........LNKA...
  2760: 04 0c ff ff 1c 00 00 4c 4e 4b 41 00 12 0d 04 0c  .......LNKA.....
  2770: ff ff 1c 00 01 4c 4e 4b 42 00 12 0e 04 0c ff ff  .....LNKB.......
  2780: 1c 00 0a 02 4c 4e 4b 43 00 12 0e 04 0c ff ff 1c  ....LNKC........
  2790: 00 0a 03 4c 4e 4b 44 00 12 0d 04 0c ff ff 1d 00  ...LNKD.........
  27a0: 00 4c 4e 4b 48 00 12 0d 04 0c ff ff 1d 00 01 4c  .LNKH..........L
  27b0: 4e 4b 42 00 12 0e 04 0c ff ff 1d 00 0a 02 4c 4e  NKB...........LN
  27c0: 4b 43 00 12 0e 04 0c ff ff 1d 00 0a 03 4c 4e 4b  KC...........LNK
  27d0: 44 00 12 0d 04 0c ff ff 1f 00 00 4c 4e 4b 41 00  D..........LNKA.
  27e0: 12 0d 04 0c ff ff 1f 00 01 4c 4e 4b 42 00 12 0e  .........LNKB...
  27f0: 04 0c ff ff 1f 00 0a 02 4c 4e 4b 43 00 12 0d 04  ........LNKC....
  2800: 0c ff ff 19 00 00 4c 4e 4b 46 00 08 41 50 49 30  ......LNKF..API0
  2810: 12 4c 16 1d 12 0b 04 0c ff ff 01 00 00 00 0a 10  .L..............
  2820: 12 0b 04 0c ff ff 01 00 01 00 0a 11 12 0c 04 0c  ................
  2830: ff ff 01 00 0a 02 00 0a 12 12 0c 04 0c ff ff 01  ................
  2840: 00 0a 03 00 0a 13 12 0b 04 0c ff ff 02 00 00 00  ................
  2850: 0a 10 12 0b 04 0c ff ff 02 00 01 00 0a 11 12 0c  ................
  2860: 04 0c ff ff 02 00 0a 02 00 0a 12 12 0c 04 0c ff  ................
  2870: ff 02 00 0a 03 00 0a 13 12 0b 04 0c ff ff 03 00  ................
  2880: 00 00 0a 10 12 0b 04 0c ff ff 03 00 01 00 0a 11  ................
  2890: 12 0c 04 0c ff ff 03 00 0a 02 00 0a 12 12 0c 04  ................
  28a0: 0c ff ff 03 00 0a 03 00 0a 13 12 0b 04 0c ff ff  ................
  28b0: 1a 00 00 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00  ................
  28c0: 0a 11 12 0c 04 0c ff ff 1a 00 0a 02 00 0a 16 12  ................
  28d0: 0c 04 0c ff ff 1a 00 0a 03 00 0a 13 12 0b 04 0c  ................
  28e0: ff ff 1b 00 00 00 0a 10 12 0b 04 0c ff ff 1c 00  ................
  28f0: 00 00 0a 10 12 0b 04 0c ff ff 1c 00 01 00 0a 11  ................
  2900: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04  ................
  2910: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff  ................
  2920: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00  ................
  2930: 0a 11 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12  ................
  2940: 0c 04 0c ff ff 1d 00 0a 03 00 0a 13 12 0b 04 0c  ................
  2950: ff ff 1f 00 00 00 0a 10 12 0b 04 0c ff ff 1f 00  ................
  2960: 01 00 0a 11 12 0c 04 0c ff ff 1f 00 0a 02 00 0a  ................
  2970: 12 12 0b 04 0c ff ff 19 00 00 00 0a 15 10 4c 07  ..............L.
  2980: 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 31 08 50  /._SB_PCI0PCI1.P
  2990: 49 43 31 12 34 04 12 0b 04 0b ff ff 00 4c 4e 4b  IC1.4........LNK
  29a0: 41 00 12 0b 04 0b ff ff 01 4c 4e 4b 42 00 12 0c  A........LNKB...
  29b0: 04 0b ff ff 0a 02 4c 4e 4b 43 00 12 0c 04 0b ff  ......LNKC......
  29c0: ff 0a 03 4c 4e 4b 44 00 08 41 50 49 31 12 2c 04  ...LNKD..API1.,.
  29d0: 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ff  ................
  29e0: 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 12  ................
  29f0: 0a 04 0b ff ff 0a 03 00 0a 13 10 1f 2f 03 5f 53  ............/._S
  2a00: 42 5f 50 43 49 30 50 43 49 32 08 50 49 43 32 12  B_PCI0PCI2.PIC2.
  2a10: 02 00 08 41 50 49 32 12 02 00 10 4c 07 2f 03 5f  ...API2....L./._
  2a20: 53 42 5f 50 43 49 30 50 43 49 33 08 50 49 43 33  SB_PCI0PCI3.PIC3
  2a30: 12 34 04 12 0b 04 0b ff ff 00 4c 4e 4b 42 00 12  .4........LNKB..
  2a40: 0b 04 0b ff ff 01 4c 4e 4b 43 00 12 0c 04 0b ff  ......LNKC......
  2a50: ff 0a 02 4c 4e 4b 44 00 12 0c 04 0b ff ff 0a 03  ...LNKD.........
  2a60: 4c 4e 4b 41 00 08 41 50 49 33 12 2c 04 12 09 04  LNKA..API3.,....
  2a70: 0b ff ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a  ................
  2a80: 12 12 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b  ................
  2a90: ff ff 0a 03 00 0a 10 10 46 15 2f 03 5f 53 42 5f  ........F./._SB_
  2aa0: 50 43 49 30 50 43 49 34 08 50 49 43 34 12 49 0a  PCI0PCI4.PIC4.I.
  2ab0: 0c 12 0d 04 0c ff ff 01 00 00 4c 4e 4b 42 00 12  ..........LNKB..
  2ac0: 0d 04 0c ff ff 01 00 01 4c 4e 4b 43 00 12 0e 04  ........LNKC....
  2ad0: 0c ff ff 01 00 0a 02 4c 4e 4b 44 00 12 0e 04 0c  .......LNKD.....
  2ae0: ff ff 01 00 0a 03 4c 4e 4b 41 00 12 0b 04 0b ff  ......LNKA......
  2af0: ff 00 4c 4e 4b 41 00 12 0b 04 0b ff ff 01 4c 4e  ..LNKA........LN
  2b00: 4b 42 00 12 0c 04 0b ff ff 0a 02 4c 4e 4b 43 00  KB.........LNKC.
  2b10: 12 0c 04 0b ff ff 0a 03 4c 4e 4b 44 00 12 0d 04  ........LNKD....
  2b20: 0c ff ff 02 00 00 4c 4e 4b 43 00 12 0d 04 0c ff  ......LNKC......
  2b30: ff 02 00 01 4c 4e 4b 44 00 12 0e 04 0c ff ff 02  ....LNKD........
  2b40: 00 0a 02 4c 4e 4b 41 00 12 0e 04 0c ff ff 02 00  ...LNKA.........
  2b50: 0a 03 4c 4e 4b 42 00 08 41 50 49 34 12 41 09 0c  ..LNKB..API4.A..
  2b60: 12 0b 04 0c ff ff 01 00 00 00 0a 11 12 0b 04 0c  ................
  2b70: ff ff 01 00 01 00 0a 12 12 0c 04 0c ff ff 01 00  ................
  2b80: 0a 02 00 0a 13 12 0c 04 0c ff ff 01 00 0a 03 00  ................
  2b90: 0a 10 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b  ................
  2ba0: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a  ................
  2bb0: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 12 0b 04 0c  ................
  2bc0: ff ff 02 00 00 00 0a 12 12 0b 04 0c ff ff 02 00  ................
  2bd0: 01 00 0a 13 12 0c 04 0c ff ff 02 00 0a 02 00 0a  ................
  2be0: 10 12 0c 04 0c ff ff 02 00 0a 03 00 0a 11 10 1f  ................
  2bf0: 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 35 08 50  /._SB_PCI0PCI5.P
  2c00: 49 43 35 12 02 00 08 41 50 49 35 12 02 00 10 1f  IC5....API5.....
  2c10: 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 36 08 50  /._SB_PCI0PCI6.P
  2c20: 49 43 36 12 02 00 08 41 50 49 36 12 02 00 10 43  IC6....API6....C
  2c30: 24 5c 00 14 4e 04 2e 5f 47 50 45 5f 4c 30 33 00  $\..N.._GPE_L03.
  2c40: a0 16 80 93 53 53 54 58 01 00 86 5c 2e 5f 53 42  ....SSTX...\._SB
  2c50: 5f 56 42 54 4e 0a 02 5b 22 0a 14 7f 54 48 52 50  _VBTN..["...THRP
  2c60: 0a 08 54 48 52 50 7d 50 4d 45 32 01 50 4d 45 32  ..THRP}PME2.PME2
  2c70: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 30  .\/._SB_PCI0USB0
  2c80: 0a 02 14 4e 04 2e 5f 47 50 45 5f 4c 30 34 00 a0  ...N.._GPE_L04..
  2c90: 16 80 93 53 53 54 58 01 00 86 5c 2e 5f 53 42 5f  ...SSTX...\._SB_
  2ca0: 56 42 54 4e 0a 02 5b 22 0a 14 7f 54 48 52 50 0a  VBTN..["...THRP.
  2cb0: 10 54 48 52 50 7d 50 4d 45 32 01 50 4d 45 32 86  .THRP}PME2.PME2.
  2cc0: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 31 0a  \/._SB_PCI0USB1.
  2cd0: 02 14 4e 04 2e 5f 47 50 45 5f 4c 30 43 00 a0 16  ..N.._GPE_L0C...
  2ce0: 80 93 53 53 54 58 01 00 86 5c 2e 5f 53 42 5f 56  ..SSTX...\._SB_V
  2cf0: 42 54 4e 0a 02 5b 22 0a 14 7f 47 4c 42 54 0a 10  BTN..["...GLBT..
  2d00: 47 4c 42 54 7d 50 4d 45 32 01 50 4d 45 32 86 5c  GLBT}PME2.PME2.\
  2d10: 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 32 0a 02  /._SB_PCI0USB2..
  2d20: 14 4e 04 2e 5f 47 50 45 5f 4c 30 45 00 a0 16 80  .N.._GPE_L0E....
  2d30: 93 53 53 54 58 01 00 86 5c 2e 5f 53 42 5f 56 42  .SSTX...\._SB_VB
  2d40: 54 4e 0a 02 5b 22 0a 14 7f 47 4c 42 54 0a 40 47  TN..["...GLBT.@G
  2d50: 4c 42 54 7d 50 4d 45 32 01 50 4d 45 32 86 5c 2f  LBT}PME2.PME2.\/
  2d60: 03 5f 53 42 5f 50 43 49 30 55 53 42 33 0a 02 14  ._SB_PCI0USB3...
  2d70: 4e 04 2e 5f 47 50 45 5f 4c 30 35 00 a0 16 80 93  N.._GPE_L05.....
  2d80: 53 53 54 58 01 00 86 5c 2e 5f 53 42 5f 56 42 54  SSTX...\._SB_VBT
  2d90: 4e 0a 02 5b 22 0a 14 7f 54 48 52 50 0a 20 54 48  N..["...THRP. TH
  2da0: 52 50 7d 50 4d 45 32 01 50 4d 45 32 86 5c 2f 03  RP}PME2.PME2.\/.
  2db0: 5f 53 42 5f 50 43 49 30 55 53 42 34 0a 02 14 4e  _SB_PCI0USB4...N
  2dc0: 04 2e 5f 47 50 45 5f 4c 32 30 00 a0 16 80 93 53  .._GPE_L20.....S
  2dd0: 53 54 58 01 00 86 5c 2e 5f 53 42 5f 56 42 54 4e  STX...\._SB_VBTN
  2de0: 0a 02 5b 22 0a 14 7f 54 48 52 50 0a 20 54 48 52  ..["...THRP. THR
  2df0: 50 7d 50 4d 45 32 01 50 4d 45 32 86 5c 2f 03 5f  P}PME2.PME2.\/._
  2e00: 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 31 2e  SB_PCI0USB5...1.
  2e10: 5f 47 50 45 5f 4c 30 44 00 5b 22 0a 14 7f 47 4c  _GPE_L0D.["...GL
  2e20: 42 54 0a 20 47 4c 42 54 7d 50 4d 45 32 01 50 4d  BT. GLBT}PME2.PM
  2e30: 45 32 86 5c 2e 5f 53 42 5f 50 43 49 30 0a 02 14  E2.\._SB_PCI0...
  2e40: 32 2e 5f 47 50 45 5f 4c 30 42 00 7f 47 4c 42 54  2._GPE_L0B..GLBT
  2e50: 0a 08 47 4c 42 54 7d 50 4d 45 32 01 50 4d 45 32  ..GLBT}PME2.PME2
  2e60: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 34  .\/._SB_PCI0PCI4
  2e70: 0a 02 10 4a 0f 2e 5f 53 42 5f 50 43 49 30 5b 82  ...J.._SB_PCI0[.
  2e80: 4d 0e 49 53 41 5f 08 5f 41 44 52 0c 00 00 1f 00  M.ISA_._ADR.....
  2e90: 08 5f 55 49 44 0a 0a 5b 80 50 34 30 43 02 0a 60  ._UID..[.P40C..`
  2ea0: 0a 04 5b 80 50 34 31 43 02 0a 68 0a 04 5b 82 4e  ..[.P41C..h..[.N
  2eb0: 0b 4d 42 49 4f 08 5f 48 49 44 0c 41 d0 0c 01 08  .MBIO._HID.A....
  2ec0: 5f 55 49 44 0a 0b 14 46 0a 5f 43 52 53 00 08 4d  _UID...F._CRS..M
  2ed0: 49 4f 31 11 35 0a 32 47 01 62 00 62 00 01 02 47  IO1.5.2G.b.b...G
  2ee0: 01 65 00 65 00 01 0b 47 01 e0 00 e0 00 01 10 47  .e.e...G.......G
  2ef0: 01 00 08 00 08 01 60 47 01 00 0c 00 0c 01 80 47  ......`G.......G
  2f00: 01 60 08 60 08 01 a0 79 00 08 4d 49 4f 32 11 46  .`.`...y..MIO2.F
  2f10: 04 0a 42 47 01 60 00 60 00 01 01 47 01 64 00 64  ..BG.`.`...G.d.d
  2f20: 00 01 01 47 01 62 00 62 00 01 02 47 01 65 00 65  ...G.b.b...G.e.e
  2f30: 00 01 0b 47 01 e0 00 e0 00 01 10 47 01 00 08 00  ...G.......G....
  2f40: 08 01 60 47 01 00 0c 00 0c 01 80 47 01 60 08 60  ..`G.......G.`.`
  2f50: 08 01 a0 79 00 a0 10 7d 47 43 4b 42 47 43 4d 53  ...y...}GCKBGCMS
  2f60: 00 a4 4d 49 4f 31 a1 06 a4 4d 49 4f 32 10 41 38  ..MIO1...MIO2.A8
  2f70: 2e 5f 53 42 5f 50 43 49 30 5b 82 45 09 55 53 42  ._SB_PCI0[.E.USB
  2f80: 30 08 5f 41 44 52 0c 00 00 1d 00 08 5f 55 49 44  0._ADR......_UID
  2f90: 0a 05 08 5f 50 52 57 12 06 02 0a 03 0a 03 5b 80  ..._PRW.......[.
  2fa0: 55 50 43 31 02 0a c1 01 5b 81 0b 55 50 43 31 01  UPC1....[..UPC1.
  2fb0: 4c 45 47 4b 08 14 28 5f 49 4e 49 00 a0 05 48 41  LEGK..(_INI...HA
  2fc0: 43 4b a1 17 70 4c 45 47 4b 60 7b 60 0a 60 60 7d  CK..pLEGK`{`.``}
  2fd0: 60 0a 20 60 70 60 4c 45 47 4b 47 55 53 42 14 13  `. `p`LEGKGUSB..
  2fe0: 5f 53 54 41 00 a0 08 47 43 55 43 a4 0a 0f a1 03  _STA...GCUC.....
  2ff0: a4 00 14 08 5f 53 31 44 00 a4 01 14 14 5f 53 33  ...._S1D....._S3
  3000: 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4 0a 02  D...HACK........
  3010: 5b 82 41 09 55 53 42 31 08 5f 41 44 52 0c 01 00  [.A.USB1._ADR...
  3020: 1d 00 08 5f 55 49 44 0a 06 08 5f 50 52 57 12 06  ..._UID..._PRW..
  3030: 02 0a 04 0a 03 5b 80 55 50 43 31 02 0a c1 01 5b  .....[.UPC1....[
  3040: 81 0b 55 50 43 31 01 4c 45 47 4b 08 14 24 5f 49  ..UPC1.LEGK..$_I
  3050: 4e 49 00 a0 05 48 41 43 4b a1 17 70 4c 45 47 4b  NI...HACK..pLEGK
  3060: 60 7b 60 0a 60 60 7d 60 0a 20 60 70 60 4c 45 47  `{`.``}`. `p`LEG
  3070: 4b 14 13 5f 53 54 41 00 a0 08 47 43 55 43 a4 0a  K.._STA...GCUC..
  3080: 0f a1 03 a4 00 14 08 5f 53 31 44 00 a4 01 14 14  ......._S1D.....
  3090: 5f 53 33 44 00 a0 08 48 41 43 4b a4 0a 03 a1 04  _S3D...HACK.....
  30a0: a4 0a 02 5b 82 41 09 55 53 42 32 08 5f 41 44 52  ...[.A.USB2._ADR
  30b0: 0c 02 00 1d 00 08 5f 55 49 44 0a 14 08 5f 50 52  ......_UID..._PR
  30c0: 57 12 06 02 0a 0c 0a 03 5b 80 55 50 43 31 02 0a  W.......[.UPC1..
  30d0: c1 01 5b 81 0b 55 50 43 31 01 4c 45 47 4b 08 14  ..[..UPC1.LEGK..
  30e0: 24 5f 49 4e 49 00 a0 05 48 41 43 4b a1 17 70 4c  $_INI...HACK..pL
  30f0: 45 47 4b 60 7b 60 0a 60 60 7d 60 0a 20 60 70 60  EGK`{`.``}`. `p`
  3100: 4c 45 47 4b 14 13 5f 53 54 41 00 a0 08 47 43 55  LEGK.._STA...GCU
  3110: 43 a4 0a 0f a1 03 a4 00 14 08 5f 53 31 44 00 a4  C........._S1D..
  3120: 01 14 14 5f 53 33 44 00 a0 08 48 41 43 4b a4 0a  ..._S3D...HACK..
  3130: 03 a1 04 a4 0a 02 5b 82 41 09 55 53 42 33 08 5f  ......[.A.USB3._
  3140: 41 44 52 0c 00 00 1a 00 08 5f 55 49 44 0a 15 08  ADR......_UID...
  3150: 5f 50 52 57 12 06 02 0a 0e 0a 03 5b 80 55 50 43  _PRW.......[.UPC
  3160: 31 02 0a c1 01 5b 81 0b 55 50 43 31 01 4c 45 47  1....[..UPC1.LEG
  3170: 4b 08 14 24 5f 49 4e 49 00 a0 05 48 41 43 4b a1  K..$_INI...HACK.
  3180: 17 70 4c 45 47 4b 60 7b 60 0a 60 60 7d 60 0a 20  .pLEGK`{`.``}`. 
  3190: 60 70 60 4c 45 47 4b 14 13 5f 53 54 41 00 a0 08  `p`LEGK.._STA...
  31a0: 47 43 55 43 a4 0a 0f a1 03 a4 00 14 08 5f 53 31  GCUC........._S1
  31b0: 44 00 a4 01 14 14 5f 53 33 44 00 a0 08 48 41 43  D....._S3D...HAC
  31c0: 4b a4 0a 03 a1 04 a4 0a 02 5b 82 41 09 55 53 42  K........[.A.USB
  31d0: 34 08 5f 41 44 52 0c 01 00 1a 00 08 5f 55 49 44  4._ADR......_UID
  31e0: 0a 16 08 5f 50 52 57 12 06 02 0a 05 0a 03 5b 80  ..._PRW.......[.
  31f0: 55 50 43 31 02 0a c1 01 5b 81 0b 55 50 43 31 01  UPC1....[..UPC1.
  3200: 4c 45 47 4b 08 14 24 5f 49 4e 49 00 a0 05 48 41  LEGK..$_INI...HA
  3210: 43 4b a1 17 70 4c 45 47 4b 60 7b 60 0a 60 60 7d  CK..pLEGK`{`.``}
  3220: 60 0a 20 60 70 60 4c 45 47 4b 14 13 5f 53 54 41  `. `p`LEGK.._STA
  3230: 00 a0 08 47 43 55 43 a4 0a 0f a1 03 a4 00 14 08  ...GCUC.........
  3240: 5f 53 31 44 00 a4 01 14 14 5f 53 33 44 00 a0 08  _S1D....._S3D...
  3250: 48 41 43 4b a4 0a 03 a1 04 a4 0a 02 5b 82 41 09  HACK........[.A.
  3260: 55 53 42 35 08 5f 41 44 52 0c 02 00 1a 00 08 5f  USB5._ADR......_
  3270: 55 49 44 0a 1a 08 5f 50 52 57 12 06 02 0a 20 0a  UID..._PRW.... .
  3280: 03 5b 80 55 50 43 31 02 0a c1 01 5b 81 0b 55 50  .[.UPC1....[..UP
  3290: 43 31 01 4c 45 47 4b 08 14 24 5f 49 4e 49 00 a0  C1.LEGK..$_INI..
  32a0: 05 48 41 43 4b a1 17 70 4c 45 47 4b 60 7b 60 0a  .HACK..pLEGK`{`.
  32b0: 60 60 7d 60 0a 20 60 70 60 4c 45 47 4b 14 13 5f  ``}`. `p`LEGK.._
  32c0: 53 54 41 00 a0 08 47 43 55 43 a4 0a 0f a1 03 a4  STA...GCUC......
  32d0: 00 14 08 5f 53 31 44 00 a4 01 14 14 5f 53 33 44  ..._S1D....._S3D
  32e0: 00 a0 08 48 41 43 4b a4 0a 03 a1 04 a4 0a 02 10  ...HACK.........
  32f0: 16 5c 00 08 50 49 43 46 00 14 0c 5f 50 49 43 01  .\..PICF..._PIC.
  3300: 70 68 50 49 43 46 10 45 28 2e 5f 53 42 5f 50 43  phPICF.E(._SB_PC
  3310: 49 30 14 1b 5f 50 52 54 00 70 41 50 49 30 60 a0  I0.._PRT.pAPI0`.
  3320: 0c 92 50 49 43 46 70 50 49 43 30 60 a4 60 14 4d  ..PICFpPIC0`.`.M
  3330: 25 5f 43 52 53 00 5b 80 4f 52 4d 46 00 0c 6c ff  %_CRS.[.ORMF..l.
  3340: 0f 00 0a 04 5b 81 10 4f 52 4d 46 02 4f 52 47 50  ....[..ORMF.ORGP
  3350: 10 4f 52 4e 44 10 08 4d 45 4d 50 11 43 14 0b 3e  .ORND..MEMP.C..>
  3360: 01 88 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00  ................
  3370: 01 47 01 f8 0c f8 0c 01 08 88 0d 00 01 0c 03 00  .G..............
  3380: 00 00 00 f7 0c 00 00 f8 0c 88 0d 00 01 00 03 00  ................
  3390: 00 00 0d ff ff 00 00 00 f3 87 17 00 00 0c 03 00  ................
  33a0: 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 00 00  ................
  33b0: 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 80 0c  ................
  33c0: 00 ff ff 0d 00 00 00 00 00 00 80 01 00 87 17 00  ................
  33d0: 00 0c 03 00 00 00 00 00 00 0e 00 ff ff 0f 00 00  ................
  33e0: 00 00 00 00 00 02 00 87 17 00 00 0c 01 00 00 00  ................
  33f0: 00 00 00 00 f0 00 00 c0 fe 00 00 00 00 00 00 c0  ................
  3400: 0e 87 17 00 00 00 01 00 00 00 00 00 00 00 00 ff  ................
  3410: ff ff df 00 00 00 00 00 00 00 00 87 17 00 00 08  ................
  3420: 01 00 00 00 00 00 00 00 f0 ff ff ff ef 00 00 00  ................
  3430: 00 00 00 00 00 87 17 00 00 00 01 00 00 00 00 00  ................
  3440: 00 98 ff ff 0f 98 ff 00 00 00 00 00 10 00 00 87  ................
  3450: 17 00 00 08 01 00 00 00 00 00 c0 97 ff ff ff 97  ................
  3460: ff 00 00 00 00 00 40 00 00 87 17 00 00 0c 01 00  ......@.........
  3470: 00 00 00 00 00 d2 fe ff ff d9 fe 00 00 00 00 00  ................
  3480: 00 08 00 87 17 00 00 0c 01 00 00 00 00 00 70 da  ..............p.
  3490: fe ff 7f da fe 00 00 00 00 00 10 00 00 79 00 8a  .............y..
  34a0: 4d 45 4d 50 0a 5c 50 4d 49 4e 8a 4d 45 4d 50 0a  MEMP.\PMIN.MEMP.
  34b0: 60 50 4d 41 58 8a 4d 45 4d 50 0a 68 50 4c 45 4e  `PMAX.MEMP.hPLEN
  34c0: 8a 4d 45 4d 50 0a 76 42 4d 49 4e 8a 4d 45 4d 50  .MEMP.vBMIN.MEMP
  34d0: 0a 82 42 4c 45 4e 79 4f 52 47 50 0a 04 42 4d 49  ..BLENyORGP..BMI
  34e0: 4e 74 0c 00 00 10 00 42 4d 49 4e 42 4c 45 4e 70  Nt.....BMINBLENp
  34f0: 0c 00 00 0c 00 50 4d 49 4e 74 42 4d 49 4e 01 50  .....PMINtBMIN.P
  3500: 4d 41 58 74 42 4d 49 4e 50 4d 49 4e 50 4c 45 4e  MAXtBMINPMINPLEN
  3510: 8a 4d 45 4d 50 0a aa 4d 45 4d 4d 8a 4d 45 4d 50  .MEMP..MEMM.MEMP
  3520: 0a ae 4d 45 4d 41 8a 4d 45 4d 50 0a b6 4d 45 4d  ..MEMA.MEMP..MEM
  3530: 4c 70 47 54 4f 4d 4d 45 4d 4d 74 4d 45 4d 41 4d  LpGTOMMEMMtMEMAM
  3540: 45 4d 4d 4d 45 4d 4c 75 4d 45 4d 4c 8a 4d 45 4d  EMMMEMLuMEML.MEM
  3550: 50 0a de 55 4d 49 4e 8a 4d 45 4d 50 0a e2 55 4d  P..UMIN.MEMP..UM
  3560: 41 58 8a 4d 45 4d 50 0a ea 55 4c 45 4e a0 05 47  AX.MEMP..ULEN..G
  3570: 43 55 43 a1 13 70 00 55 4d 49 4e 70 00 55 4d 41  CUC..p.UMINp.UMA
  3580: 58 70 00 55 4c 45 4e a4 4d 45 4d 50 10 44 05 2f  Xp.ULEN.MEMP.D./
  3590: 03 5f 53 42 5f 50 43 49 30 49 53 41 5f 5b 82 42  ._SB_PCI0ISA_[.B
  35a0: 04 44 4d 41 5f 08 5f 48 49 44 0c 41 d0 02 00 14  .DMA_._HID.A....
  35b0: 31 5f 43 52 53 00 08 44 4d 41 42 11 20 0a 1d 47  1_CRS..DMAB. ..G
  35c0: 01 80 00 80 00 01 20 47 01 00 00 00 00 01 20 47  ...... G...... G
  35d0: 01 c0 00 c0 00 01 20 2a 10 12 79 00 a4 44 4d 41  ...... *..y..DMA
  35e0: 42 10 43 04 2f 03 5f 53 42 5f 50 43 49 30 49 53  B.C./._SB_PCI0IS
  35f0: 41 5f 5b 82 31 46 50 55 5f 08 5f 48 49 44 0c 41  A_[.1FPU_._HID.A
  3600: d0 0c 04 14 21 5f 43 52 53 00 08 46 50 55 42 11  ....!_CRS..FPUB.
  3610: 10 0a 0d 47 01 f0 00 f0 00 01 10 22 00 20 79 00  ...G.......". y.
  3620: a4 46 50 55 42 10 41 05 2f 03 5f 53 42 5f 50 43  .FPUB.A./._SB_PC
  3630: 49 30 49 53 41 5f 5b 82 3f 50 49 43 5f 08 5f 48  I0ISA_[.?PIC_._H
  3640: 49 44 0b 41 d0 14 31 5f 43 52 53 00 08 50 49 43  ID.A..1_CRS..PIC
  3650: 42 11 20 0a 1d 47 01 20 00 20 00 01 20 47 01 a0  B. ..G. . .. G..
  3660: 00 a0 00 01 20 47 01 d0 04 d0 04 01 02 22 04 00  .... G......."..
  3670: 79 00 a4 50 49 43 42 10 3f 2f 03 5f 53 42 5f 50  y..PICB.?/._SB_P
  3680: 43 49 30 49 53 41 5f 5b 82 2e 53 50 4b 5f 08 5f  CI0ISA_[..SPK_._
  3690: 48 49 44 0c 41 d0 08 00 14 1e 5f 43 52 53 00 08  HID.A....._CRS..
  36a0: 53 50 4b 42 11 0d 0a 0a 47 01 61 00 61 00 01 01  SPKB....G.a.a...
  36b0: 79 00 a4 53 50 4b 42 10 43 04 2f 03 5f 53 42 5f  y..SPKB.C./._SB_
  36c0: 50 43 49 30 49 53 41 5f 5b 82 31 52 54 43 5f 08  PCI0ISA_[.1RTC_.
  36d0: 5f 48 49 44 0c 41 d0 0b 00 14 21 5f 43 52 53 00  _HID.A....!_CRS.
  36e0: 08 52 54 43 42 11 10 0a 0d 47 01 70 00 70 00 01  .RTCB....G.p.p..
  36f0: 10 22 00 01 79 00 a4 52 54 43 42 10 43 04 2f 03  ."..y..RTCB.C./.
  3700: 5f 53 42 5f 50 43 49 30 49 53 41 5f 5b 82 31 54  _SB_PCI0ISA_[.1T
  3710: 4d 52 5f 08 5f 48 49 44 0c 41 d0 01 00 14 21 5f  MR_._HID.A....!_
  3720: 43 52 53 00 08 54 4d 52 42 11 10 0a 0d 47 01 40  CRS..TMRB....G.@
  3730: 00 40 00 01 20 22 01 00 79 00 a4 54 4d 52 42 10  .@.. "..y..TMRB.
  3740: 4a 5e 5f 53 42 5f 5b 81 24 2f 03 50 43 49 30 49  J^_SB_[.$/.PCI0I
  3750: 53 41 5f 50 34 30 43 01 50 52 51 30 08 50 52 51  SA_P40C.PRQ0.PRQ
  3760: 31 08 50 52 51 32 08 50 52 51 33 08 5b 81 24 2f  1.PRQ2.PRQ3.[.$/
  3770: 03 50 43 49 30 49 53 41 5f 50 34 31 43 01 50 52  .PCI0ISA_P41C.PR
  3780: 51 34 08 50 52 51 35 08 50 52 51 36 08 50 52 51  Q4.PRQ5.PRQ6.PRQ
  3790: 37 08 5b 82 41 0b 4c 4e 4b 41 08 5f 48 49 44 0c  7.[.A.LNKA._HID.
  37a0: 41 d0 0c 0f 08 5f 55 49 44 0a 0c 08 5f 50 52 53  A...._UID..._PRS
  37b0: 11 09 0a 06 23 f8 9e 18 79 00 14 1a 5f 53 54 41  ....#...y..._STA
  37c0: 00 70 0a 0b 60 a0 0d 7b 0a 80 50 52 51 30 61 70  .p..`..{..PRQ0ap
  37d0: 0a 09 60 a4 60 14 11 5f 44 49 53 00 7d 50 52 51  ..`.`.._DIS.}PRQ
  37e0: 30 0a 80 50 52 51 30 14 41 04 5f 43 52 53 00 08  0..PRQ0.A._CRS..
  37f0: 50 52 52 30 11 09 0a 06 23 10 00 18 79 00 8b 50  PRR0....#...y..P
  3800: 52 52 30 01 49 51 52 5f 70 50 52 51 30 60 a0 0c  RR0.IQR_pPRQ0`..
  3810: 92 95 60 0a 80 70 00 49 51 52 5f a1 08 79 01 60  ..`..p.IQR_..y.`
  3820: 49 51 52 5f a4 50 52 52 30 14 1b 5f 53 52 53 01  IQR_.PRR0.._SRS.
  3830: 8b 68 01 49 51 52 5f 82 49 51 52 5f 60 76 60 70  .h.IQR_.IQR_`v`p
  3840: 60 50 52 51 30 5b 82 41 0b 4c 4e 4b 42 08 5f 48  `PRQ0[.A.LNKB._H
  3850: 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 0d 08 5f  ID.A...._UID..._
  3860: 50 52 53 11 09 0a 06 23 f8 9e 18 79 00 14 1a 5f  PRS....#...y..._
  3870: 53 54 41 00 70 0a 0b 60 a0 0d 7b 0a 80 50 52 51  STA.p..`..{..PRQ
  3880: 31 61 70 0a 09 60 a4 60 14 11 5f 44 49 53 00 7d  1ap..`.`.._DIS.}
  3890: 50 52 51 31 0a 80 50 52 51 31 14 41 04 5f 43 52  PRQ1..PRQ1.A._CR
  38a0: 53 00 08 50 52 52 31 11 09 0a 06 23 10 00 18 79  S..PRR1....#...y
  38b0: 00 8b 50 52 52 31 01 49 51 52 5f 70 50 52 51 31  ..PRR1.IQR_pPRQ1
  38c0: 60 a0 0c 92 95 60 0a 80 70 00 49 51 52 5f a1 08  `....`..p.IQR_..
  38d0: 79 01 60 49 51 52 5f a4 50 52 52 31 14 1b 5f 53  y.`IQR_.PRR1.._S
  38e0: 52 53 01 8b 68 01 49 51 52 5f 82 49 51 52 5f 60  RS..h.IQR_.IQR_`
  38f0: 76 60 70 60 50 52 51 31 5b 82 41 0b 4c 4e 4b 43  v`p`PRQ1[.A.LNKC
  3900: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a  ._HID.A...._UID.
  3910: 0e 08 5f 50 52 53 11 09 0a 06 23 f8 9e 18 79 00  .._PRS....#...y.
  3920: 14 1a 5f 53 54 41 00 70 0a 0b 60 a0 0d 7b 0a 80  .._STA.p..`..{..
  3930: 50 52 51 32 61 70 0a 09 60 a4 60 14 11 5f 44 49  PRQ2ap..`.`.._DI
  3940: 53 00 7d 50 52 51 32 0a 80 50 52 51 32 14 41 04  S.}PRQ2..PRQ2.A.
  3950: 5f 43 52 53 00 08 50 52 52 32 11 09 0a 06 23 10  _CRS..PRR2....#.
  3960: 00 18 79 00 8b 50 52 52 32 01 49 51 52 5f 70 50  ..y..PRR2.IQR_pP
  3970: 52 51 32 60 a0 0c 92 95 60 0a 80 70 00 49 51 52  RQ2`....`..p.IQR
  3980: 5f a1 08 79 01 60 49 51 52 5f a4 50 52 52 32 14  _..y.`IQR_.PRR2.
  3990: 1b 5f 53 52 53 01 8b 68 01 49 51 52 5f 82 49 51  ._SRS..h.IQR_.IQ
  39a0: 52 5f 60 76 60 70 60 50 52 51 32 5b 82 41 0b 4c  R_`v`p`PRQ2[.A.L
  39b0: 4e 4b 44 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55  NKD._HID.A...._U
  39c0: 49 44 0a 0f 08 5f 50 52 53 11 09 0a 06 23 f8 9e  ID..._PRS....#..
  39d0: 18 79 00 14 1a 5f 53 54 41 00 70 0a 0b 60 a0 0d  .y..._STA.p..`..
  39e0: 7b 0a 80 50 52 51 33 61 70 0a 09 60 a4 60 14 11  {..PRQ3ap..`.`..
  39f0: 5f 44 49 53 00 7d 50 52 51 33 0a 80 50 52 51 33  _DIS.}PRQ3..PRQ3
  3a00: 14 41 04 5f 43 52 53 00 08 50 52 52 33 11 09 0a  .A._CRS..PRR3...
  3a10: 06 23 10 00 18 79 00 8b 50 52 52 33 01 49 51 52  .#...y..PRR3.IQR
  3a20: 5f 70 50 52 51 33 60 a0 0c 92 95 60 0a 80 70 00  _pPRQ3`....`..p.
  3a30: 49 51 52 5f a1 08 79 01 60 49 51 52 5f a4 50 52  IQR_..y.`IQR_.PR
  3a40: 52 33 14 1b 5f 53 52 53 01 8b 68 01 49 51 52 5f  R3.._SRS..h.IQR_
  3a50: 82 49 51 52 5f 60 76 60 70 60 50 52 51 33 5b 82  .IQR_`v`p`PRQ3[.
  3a60: 41 0b 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f  A.LNKE._HID.A...
  3a70: 08 5f 55 49 44 0a 10 08 5f 50 52 53 11 09 0a 06  ._UID..._PRS....
  3a80: 23 f8 9e 18 79 00 14 1a 5f 53 54 41 00 70 0a 0b  #...y..._STA.p..
  3a90: 60 a0 0d 7b 0a 80 50 52 51 34 61 70 0a 09 60 a4  `..{..PRQ4ap..`.
  3aa0: 60 14 11 5f 44 49 53 00 7d 50 52 51 34 0a 80 50  `.._DIS.}PRQ4..P
  3ab0: 52 51 34 14 41 04 5f 43 52 53 00 08 50 52 52 34  RQ4.A._CRS..PRR4
  3ac0: 11 09 0a 06 23 10 00 18 79 00 8b 50 52 52 34 01  ....#...y..PRR4.
  3ad0: 49 51 52 5f 70 50 52 51 34 60 a0 0c 92 95 60 0a  IQR_pPRQ4`....`.
  3ae0: 80 70 00 49 51 52 5f a1 08 79 01 60 49 51 52 5f  .p.IQR_..y.`IQR_
  3af0: a4 50 52 52 34 14 1b 5f 53 52 53 01 8b 68 01 49  .PRR4.._SRS..h.I
  3b00: 51 52 5f 82 49 51 52 5f 60 76 60 70 60 50 52 51  QR_.IQR_`v`p`PRQ
  3b10: 34 5b 82 41 0b 4c 4e 4b 46 08 5f 48 49 44 0c 41  4[.A.LNKF._HID.A
  3b20: d0 0c 0f 08 5f 55 49 44 0a 11 08 5f 50 52 53 11  ...._UID..._PRS.
  3b30: 09 0a 06 23 f8 9e 18 79 00 14 1a 5f 53 54 41 00  ...#...y..._STA.
  3b40: 70 0a 0b 60 a0 0d 7b 0a 80 50 52 51 35 61 70 0a  p..`..{..PRQ5ap.
  3b50: 09 60 a4 60 14 11 5f 44 49 53 00 7d 50 52 51 35  .`.`.._DIS.}PRQ5
  3b60: 0a 80 50 52 51 35 14 41 04 5f 43 52 53 00 08 50  ..PRQ5.A._CRS..P
  3b70: 52 52 35 11 09 0a 06 23 10 00 18 79 00 8b 50 52  RR5....#...y..PR
  3b80: 52 35 01 49 51 52 5f 70 50 52 51 35 60 a0 0c 92  R5.IQR_pPRQ5`...
  3b90: 95 60 0a 80 70 00 49 51 52 5f a1 08 79 01 60 49  .`..p.IQR_..y.`I
  3ba0: 51 52 5f a4 50 52 52 35 14 1b 5f 53 52 53 01 8b  QR_.PRR5.._SRS..
  3bb0: 68 01 49 51 52 5f 82 49 51 52 5f 60 76 60 70 60  h.IQR_.IQR_`v`p`
  3bc0: 50 52 51 35 5b 82 41 0b 4c 4e 4b 47 08 5f 48 49  PRQ5[.A.LNKG._HI
  3bd0: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 12 08 5f 50  D.A...._UID..._P
  3be0: 52 53 11 09 0a 06 23 f8 9e 18 79 00 14 1a 5f 53  RS....#...y..._S
  3bf0: 54 41 00 70 0a 0b 60 a0 0d 7b 0a 80 50 52 51 36  TA.p..`..{..PRQ6
  3c00: 61 70 0a 09 60 a4 60 14 11 5f 44 49 53 00 7d 50  ap..`.`.._DIS.}P
  3c10: 52 51 36 0a 80 50 52 51 36 14 41 04 5f 43 52 53  RQ6..PRQ6.A._CRS
  3c20: 00 08 50 52 52 36 11 09 0a 06 23 10 00 18 79 00  ..PRR6....#...y.
  3c30: 8b 50 52 52 36 01 49 51 52 5f 70 50 52 51 36 60  .PRR6.IQR_pPRQ6`
  3c40: a0 0c 92 95 60 0a 80 70 00 49 51 52 5f a1 08 79  ....`..p.IQR_..y
  3c50: 01 60 49 51 52 5f a4 50 52 52 36 14 1b 5f 53 52  .`IQR_.PRR6.._SR
  3c60: 53 01 8b 68 01 49 51 52 5f 82 49 51 52 5f 60 76  S..h.IQR_.IQR_`v
  3c70: 60 70 60 50 52 51 36 5b 82 41 0b 4c 4e 4b 48 08  `p`PRQ6[.A.LNKH.
  3c80: 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 13  _HID.A...._UID..
  3c90: 08 5f 50 52 53 11 09 0a 06 23 f8 9e 18 79 00 14  ._PRS....#...y..
  3ca0: 1a 5f 53 54 41 00 70 0a 0b 60 a0 0d 7b 0a 80 50  ._STA.p..`..{..P
  3cb0: 52 51 37 61 70 0a 09 60 a4 60 14 11 5f 44 49 53  RQ7ap..`.`.._DIS
  3cc0: 00 7d 50 52 51 37 0a 80 50 52 51 37 14 41 04 5f  .}PRQ7..PRQ7.A._
  3cd0: 43 52 53 00 08 50 52 52 37 11 09 0a 06 23 10 00  CRS..PRR7....#..
  3ce0: 18 79 00 8b 50 52 52 37 01 49 51 52 5f 70 50 52  .y..PRR7.IQR_pPR
  3cf0: 51 37 60 a0 0c 92 95 60 0a 80 70 00 49 51 52 5f  Q7`....`..p.IQR_
  3d00: a1 08 79 01 60 49 51 52 5f a4 50 52 52 37 14 1b  ..y.`IQR_.PRR7..
  3d10: 5f 53 52 53 01 8b 68 01 49 51 52 5f 82 49 51 52  _SRS..h.IQR_.IQR
  3d20: 5f 60 76 60 70 60 50 52 51 37 10 39 5f 53 42 5f  _`v`p`PRQ7.9_SB_
  3d30: 5b 82 32 48 50 45 54 08 5f 48 49 44 0c 41 d0 01  [.2HPET._HID.A..
  3d40: 03 14 22 5f 43 52 53 00 08 48 42 41 42 11 11 0a  .."_CRS..HBAB...
  3d50: 0e 86 09 00 00 00 00 d0 fe 00 04 00 00 79 00 a4  .............y..
  3d60: 48 42 41 42 10 4c 15 5c 00 5b 80 57 45 4e 58 01  HBAB.L.\.[.WENX.
  3d70: 0b 0a 0c 0a 06 5b 81 24 57 45 4e 58 01 57 45 4e  .....[.$WENX.WEN
  3d80: 31 08 57 45 4e 32 08 57 45 4e 33 08 57 45 4e 34  1.WEN2.WEN3.WEN4
  3d90: 08 57 45 4e 35 08 57 45 4e 36 08 5b 80 57 53 54  .WEN5.WEN6.[.WST
  3da0: 58 01 0b 00 0c 0a 0a 5b 81 38 57 53 54 58 01 57  X......[.8WSTX.W
  3db0: 53 54 30 08 50 4d 45 4a 08 50 45 4e 41 08 50 45  ST0.PMEJ.PENA.PE
  3dc0: 4e 4a 08 57 53 54 31 08 57 53 54 32 08 57 53 54  NJ.WST1.WST2.WST
  3dd0: 33 08 57 53 54 34 08 57 53 54 35 08 57 53 54 36  3.WST4.WST5.WST6
  3de0: 08 5b 80 53 47 50 58 01 0b 4b 0c 0a 06 5b 81 24  .[.SGPX..K...[.$
  3df0: 53 47 50 58 01 53 47 50 31 08 53 47 50 32 08 53  SGPX.SGP1.SGP2.S
  3e00: 47 50 33 08 53 47 50 34 08 53 47 50 35 08 53 47  GP3.SGP4.SGP5.SG
  3e10: 50 36 08 5b 80 4c 45 44 58 01 0b 5d 0c 0a 02 5b  P6.[.LEDX..]...[
  3e20: 81 10 4c 45 44 58 01 4c 45 44 31 08 4c 45 44 32  ..LEDX.LED1.LED2
  3e30: 08 14 4f 05 50 53 4b 4d 01 a0 47 05 7d 93 68 0a  ..O.PSKM..G.}.h.
  3e40: 03 93 68 01 00 70 0a 55 53 49 4f 49 70 0a 07 53  ..h..p.USIOIp..S
  3e50: 49 4f 49 70 0a 07 53 49 4f 44 70 0a f0 53 49 4f  IOIp..SIODp..SIO
  3e60: 49 70 53 49 4f 44 60 7d 60 0a 60 53 49 4f 44 70  IpSIOD`}`.`SIODp
  3e70: 0a aa 53 49 4f 49 70 57 53 54 31 60 7b 60 0a 18  ..SIOIpWST1`{`..
  3e80: 57 53 54 31 70 47 53 54 53 60 7b 60 01 47 53 54  WST1pGSTS`{`.GST
  3e90: 53 14 2f 47 50 4b 4d 00 70 57 45 4e 31 60 7b 60  S./GPKM.pWEN1`{`
  3ea0: 0a e7 57 45 4e 31 70 57 53 54 31 60 7b 60 0a 18  ..WEN1pWST1`{`..
  3eb0: 57 53 54 31 70 47 53 54 53 60 7b 60 01 47 53 54  WST1pGSTS`{`.GST
  3ec0: 53 10 49 ee 2f 03 5f 53 42 5f 50 43 49 30 49 53  S.I./._SB_PCI0IS
  3ed0: 41 5f 5b 80 4e 53 49 4f 01 0a 2e 0a 02 5b 81 10  A_[.NSIO.....[..
  3ee0: 4e 53 49 4f 01 49 4e 44 58 08 44 41 54 41 08 5b  NSIO.INDX.DATA.[
  3ef0: 86 47 05 49 4e 44 58 44 41 54 41 01 00 10 43 46  .G.INDXDATA...CF
  3f00: 47 5f 08 00 20 4c 44 4e 5f 08 00 40 0c 53 49 49  G_.. LDN_..@.SII
  3f10: 44 08 00 48 07 41 43 54 52 08 00 48 17 49 4f 41  D..H.ACTR..H.IOA
  3f20: 48 08 49 4f 41 4c 08 00 40 07 49 4e 54 52 08 00  H.IOAL..@.INTR..
  3f30: 18 44 4d 43 48 08 00 48 3d 4f 50 54 31 08 4f 50  .DMCH..H=OPT1.OP
  3f40: 54 32 08 4f 50 54 33 08 5b 80 43 4f 4d 5f 02 0a  T2.OPT3.[.COM_..
  3f50: 80 01 5b 81 14 43 4f 4d 5f 01 4e 53 43 41 03 00  ..[..COM_.NSCA..
  3f60: 01 4e 53 43 42 03 00 01 5b 80 46 44 50 41 02 0a  .NSCB...[.FDPA..
  3f70: 81 01 5b 81 14 46 44 50 41 01 4c 50 54 4f 02 00  ..[..FDPA.LPTO..
  3f80: 02 46 44 44 43 01 00 03 5b 01 4d 54 58 5f 01 14  .FDDC...[.MTX_..
  3f90: 18 53 49 4f 44 01 43 53 49 4f 0a 55 70 68 4c 44  .SIOD.CSIO.UphLD
  3fa0: 4e 5f 43 53 49 4f 0a aa 14 0c 43 53 49 4f 01 70  N_CSIO....CSIO.p
  3fb0: 68 49 4e 44 58 5b 82 49 43 46 44 43 5f 08 5f 48  hINDX[.ICFDC_._H
  3fc0: 49 44 0c 41 d0 07 00 14 4e 08 5f 53 54 41 00 08  ID.A....N._STA..
  3fd0: 52 45 54 5f 00 5b 23 4d 54 58 5f ff ff 53 49 4f  RET_.[#MTX_..SIO
  3fe0: 44 00 a0 4a 05 47 43 46 44 43 53 49 4f 0a 55 a0  D..J.GCFDCSIO.U.
  3ff0: 3e 41 43 54 52 70 43 4d 52 44 0a 10 60 7b 60 0a  >ACTRpCMRD..`{`.
  4000: 40 60 a0 1e 60 7b 60 0a 02 60 a0 16 60 70 43 4d  @`..`{`..`..`pCM
  4010: 52 44 0a 10 60 7b 60 0a 0f 60 43 4d 57 52 0a 10  RD..`{`..`CMWR..
  4020: 60 43 53 49 4f 0a aa 70 0a 0f 52 45 54 5f a1 0e  `CSIO..p..RET_..
  4030: 43 53 49 4f 0a aa 70 0a 0d 52 45 54 5f a1 0d 43  CSIO..p..RET_..C
  4040: 53 49 4f 0a aa 70 00 52 45 54 5f 5b 27 4d 54 58  SIO..p.RET_['MTX
  4050: 5f a4 52 45 54 5f 14 31 5f 44 49 53 00 5b 23 4d  _.RET_.1_DIS.[#M
  4060: 54 58 5f ff ff 53 49 4f 44 00 43 53 49 4f 0a 55  TX_..SIOD.CSIO.U
  4070: 70 00 49 4e 54 52 70 00 41 43 54 52 43 53 49 4f  p.INTRp.ACTRCSIO
  4080: 0a aa 5b 27 4d 54 58 5f 14 4a 11 5f 43 52 53 00  ..['MTX_.J._CRS.
  4090: 08 46 44 42 30 11 1b 0a 18 47 01 f0 03 f0 03 08  .FDB0....G......
  40a0: 06 47 01 f7 03 f7 03 01 01 22 40 00 2a 04 08 79  .G......."@.*..y
  40b0: 00 8c 46 44 42 30 0a 02 49 4f 4c 30 8c 46 44 42  ..FDB0..IOL0.FDB
  40c0: 30 0a 03 49 4f 48 30 8c 46 44 42 30 0a 04 49 4f  0..IOH0.FDB0..IO
  40d0: 4c 31 8c 46 44 42 30 0a 05 49 4f 48 31 8c 46 44  L1.FDB0..IOH1.FD
  40e0: 42 30 0a 0a 49 32 4c 30 8c 46 44 42 30 0a 0b 49  B0..I2L0.FDB0..I
  40f0: 32 48 30 8c 46 44 42 30 0a 0c 49 32 4c 31 8c 46  2H0.FDB0..I2L1.F
  4100: 44 42 30 0a 0d 49 32 48 31 8b 46 44 42 30 0a 11  DB0..I2H1.FDB0..
  4110: 49 51 52 5f 8c 46 44 42 30 0a 14 44 41 4d 5f 5b  IQR_.FDB0..DAM_[
  4120: 23 4d 54 58 5f ff ff 53 49 4f 44 00 43 53 49 4f  #MTX_..SIOD.CSIO
  4130: 0a 55 70 49 4f 41 48 49 4f 48 30 70 49 4f 41 48  .UpIOAHIOH0pIOAH
  4140: 49 4f 48 31 70 49 4f 41 4c 49 4f 4c 30 70 49 4f  IOH1pIOALIOL0pIO
  4150: 41 4c 49 4f 4c 31 70 49 4f 41 48 49 32 48 30 70  ALIOL1pIOAHI2H0p
  4160: 49 4f 41 48 49 32 48 31 72 49 4f 41 4c 0a 07 49  IOAHI2H1rIOAL..I
  4170: 32 4c 30 72 49 4f 41 4c 0a 07 49 32 4c 31 79 01  2L0rIOAL..I2L1y.
  4180: 49 4e 54 52 49 51 52 5f 79 01 44 4d 43 48 44 41  INTRIQR_y.DMCHDA
  4190: 4d 5f 43 53 49 4f 0a aa 5b 27 4d 54 58 5f a4 46  M_CSIO..['MTX_.F
  41a0: 44 42 30 14 4e 05 5f 50 52 53 00 08 46 44 42 31  DB0.N._PRS..FDB1
  41b0: 11 4c 04 0a 48 30 47 01 f0 03 f0 03 08 06 47 01  .L..H0G.......G.
  41c0: f7 03 f7 03 01 01 22 40 00 2a 04 08 30 47 01 f0  ......"@.*..0G..
  41d0: 03 f0 03 08 06 47 01 f7 03 f7 03 01 01 22 f8 10  .....G......."..
  41e0: 2a 0e 08 30 47 01 70 03 70 03 08 06 47 01 77 03  *..0G.p.p...G.w.
  41f0: 77 03 01 01 22 f8 10 2a 0e 08 38 79 00 a4 46 44  w..."..*..8y..FD
  4200: 42 31 14 42 0a 5f 53 52 53 01 8c 68 0a 02 49 4f  B1.B._SRS..h..IO
  4210: 4c 4f 8c 68 0a 03 49 4f 48 49 8b 68 0a 11 49 51  LO.h..IOHI.h..IQ
  4220: 52 5f 8c 68 0a 14 44 41 4d 5f 5b 23 4d 54 58 5f  R_.h..DAM_[#MTX_
  4230: ff ff 53 49 4f 44 00 43 53 49 4f 0a 55 70 49 4f  ..SIOD.CSIO.UpIO
  4240: 4c 4f 49 4f 41 4c 70 49 4f 48 49 49 4f 41 48 43  LOIOALpIOHIIOAHC
  4250: 53 49 4f 0a aa a0 0e 93 49 4f 4c 4f 0a 70 70 01  SIO.....IOLO.pp.
  4260: 46 44 44 43 a0 0e 93 49 4f 4c 4f 0a f0 70 00 46  FDDC...IOLO..p.F
  4270: 44 44 43 43 53 49 4f 0a 55 82 49 51 52 5f 60 74  DDCCSIO.U.IQR_`t
  4280: 60 01 49 4e 54 52 82 44 41 4d 5f 60 74 60 01 44  `.INTR.DAM_`t`.D
  4290: 4d 43 48 70 01 41 43 54 52 43 53 49 4f 0a aa 5b  MCHp.ACTRCSIO..[
  42a0: 27 4d 54 58 5f 14 40 08 5f 46 44 45 00 08 46 44  'MTX_.@._FDE..FD
  42b0: 45 42 11 03 0a 14 8a 46 44 45 42 00 46 44 45 30  EB.....FDEB.FDE0
  42c0: 8a 46 44 45 42 0a 04 46 44 45 31 8a 46 44 45 42  .FDEB..FDE1.FDEB
  42d0: 0a 08 46 44 45 32 8a 46 44 45 42 0a 0c 46 44 45  ..FDE2.FDEB..FDE
  42e0: 33 8a 46 44 45 42 0a 10 46 44 45 34 70 00 46 44  3.FDEB..FDE4p.FD
  42f0: 45 30 70 00 46 44 45 31 70 00 46 44 45 32 70 00  E0p.FDE1p.FDE2p.
  4300: 46 44 45 33 70 0a 02 46 44 45 34 70 43 4d 52 44  FDE3p..FDE4pCMRD
  4310: 0a 10 60 7b 60 0a 40 60 a0 08 60 70 01 46 44 45  ..`{`.@`..`p.FDE
  4320: 30 a4 46 44 45 42 08 46 49 4e 46 12 20 10 00 0a  0.FDEB.FINF. ...
  4330: 04 0a 4f 0a 12 01 0a af 0a 02 0a 25 0a 02 0a 12  ..O........%....
  4340: 0a 1b 0a ff 0a 6c 0a f6 0a 0f 0a 08 14 14 5f 46  .....l........_F
  4350: 44 49 00 70 00 88 46 49 4e 46 00 00 a4 46 49 4e  DI.p..FINF...FIN
  4360: 46 5b 82 4d 08 46 44 43 41 08 5f 41 44 52 00 14  F[.M.FDCA._ADR..
  4370: 16 5f 45 4a 30 01 70 47 49 34 38 60 7b 60 0a f7  ._EJ0.pGI48`{`..
  4380: 47 49 34 38 a4 00 14 49 06 5f 53 54 41 00 70 47  GI48...I._STA.pG
  4390: 49 33 32 60 7b 47 49 33 32 0a 70 60 a0 0b 92 93  I32`{GI32.p`....
  43a0: 60 0a 30 70 00 61 a4 61 a1 47 04 5b 23 53 54 53  `.0p.a.a.G.[#STS
  43b0: 4d ff ff 5b 23 46 4f 4f 4d ff ff 70 43 4d 52 44  M..[#FOOM..pCMRD
  43c0: 0a 10 60 7b 60 0a 40 60 5b 27 46 4f 4f 4d 5b 23  ..`{`.@`['FOOM[#
  43d0: 46 4f 4f 4d ff ff a0 06 60 70 0a 0f 61 a1 04 70  FOOM....`p..a..p
  43e0: 00 61 5b 27 46 4f 4f 4d 5b 27 53 54 53 4d a4 61  .a['FOOM['STSM.a
  43f0: 5b 82 4f 05 4b 42 44 5f 08 5f 48 49 44 0c 41 d0  [.O.KBD_._HID.A.
  4400: 03 03 14 24 5f 53 54 41 00 08 52 45 54 5f 00 70  ...$_STA..RET_.p
  4410: 00 52 45 54 5f a0 0c 47 43 4b 42 70 0a 0f 52 45  .RET_..GCKBp..RE
  4420: 54 5f a4 52 45 54 5f 14 29 5f 43 52 53 00 08 4b  T_.RET_.)_CRS..K
  4430: 42 44 42 11 18 0a 15 47 01 60 00 60 00 01 01 47  BDB....G.`.`...G
  4440: 01 64 00 64 00 01 01 22 02 00 79 00 a4 4b 42 44  .d.d..."..y..KBD
  4450: 42 5b 82 41 08 4d 4f 55 5f 08 5f 48 49 44 0c 41  B[.A.MOU_._HID.A
  4460: d0 0f 13 14 2a 5f 53 54 41 00 08 52 45 54 5f 00  ....*_STA..RET_.
  4470: 70 00 52 45 54 5f a0 12 47 43 4f 4e a0 0c 47 43  p.RET_..GCON..GC
  4480: 4d 53 70 0a 0f 52 45 54 5f a4 52 45 54 5f 14 45  MSp..RET_.RET_.E
  4490: 04 5f 43 52 53 00 08 4d 4f 55 42 11 08 0a 05 22  ._CRS..MOUB...."
  44a0: 00 10 79 00 08 4d 4f 4b 42 11 18 0a 15 47 01 60  ..y..MOKB....G.`
  44b0: 00 60 00 01 01 47 01 64 00 64 00 01 01 22 00 10  .`...G.d.d..."..
  44c0: 79 00 a0 0a 47 43 4b 42 a4 4d 4f 55 42 a1 06 a4  y...GCKB.MOUB...
  44d0: 4d 4f 4b 42 5b 82 49 40 50 52 54 5f 08 5f 48 49  MOKB[.I@PRT_._HI
  44e0: 44 0c 41 d0 04 01 14 42 06 5f 53 54 41 00 08 52  D.A....B._STA..R
  44f0: 45 54 5f 00 5b 23 4d 54 58 5f ff ff 53 49 4f 44  ET_.[#MTX_..SIOD
  4500: 0a 03 a0 2d 47 43 50 50 43 53 49 4f 0a 55 a0 12  ...-GCPPCSIO.U..
  4510: 41 43 54 52 43 53 49 4f 0a aa 70 0a 0f 52 45 54  ACTRCSIO..p..RET
  4520: 5f a1 0e 43 53 49 4f 0a aa 70 0a 0d 52 45 54 5f  _..CSIO..p..RET_
  4530: a1 0d 43 53 49 4f 0a aa 70 00 52 45 54 5f 5b 27  ..CSIO..p.RET_['
  4540: 4d 54 58 5f a4 52 45 54 5f 14 39 5f 44 49 53 00  MTX_.RET_.9_DIS.
  4550: 5b 23 4d 54 58 5f ff ff 53 49 4f 44 0a 03 43 53  [#MTX_..SIOD..CS
  4560: 49 4f 0a 55 70 00 49 4e 54 52 70 0a 04 44 4d 43  IO.Up.INTRp..DMC
  4570: 48 70 00 41 43 54 52 43 53 49 4f 0a aa 5b 27 4d  Hp.ACTRCSIO..['M
  4580: 54 58 5f 14 49 18 5f 43 52 53 00 08 50 54 42 30  TX_.I._CRS..PTB0
  4590: 11 1b 0a 18 47 01 78 03 78 03 08 08 47 01 78 07  ....G.x.x...G.x.
  45a0: 78 07 08 08 22 80 00 2a 00 08 79 00 8c 50 54 42  x..."..*..y..PTB
  45b0: 30 0a 02 49 4f 4c 30 8c 50 54 42 30 0a 03 49 4f  0..IOL0.PTB0..IO
  45c0: 48 30 8c 50 54 42 30 0a 04 49 4f 4c 31 8c 50 54  H0.PTB0..IOL1.PT
  45d0: 42 30 0a 05 49 4f 48 31 8c 50 54 42 30 0a 06 4c  B0..IOH1.PTB0..L
  45e0: 41 4c 4e 8c 50 54 42 30 0a 07 4c 4c 45 4e 8c 50  ALN.PTB0..LLEN.P
  45f0: 54 42 30 0a 0a 49 32 4c 30 8c 50 54 42 30 0a 0b  TB0..I2L0.PTB0..
  4600: 49 32 48 30 8c 50 54 42 30 0a 0c 49 32 4c 31 8c  I2H0.PTB0..I2L1.
  4610: 50 54 42 30 0a 0d 49 32 48 31 8c 50 54 42 30 0a  PTB0..I2H1.PTB0.
  4620: 0e 48 41 4c 4e 8c 50 54 42 30 0a 0f 48 4c 45 4e  .HALN.PTB0..HLEN
  4630: 8b 50 54 42 30 0a 11 49 51 52 5f 8c 50 54 42 30  .PTB0..IQR_.PTB0
  4640: 0a 14 44 41 4d 5f 5b 23 4d 54 58 5f ff ff 53 49  ..DAM_[#MTX_..SI
  4650: 4f 44 0a 03 43 53 49 4f 0a 55 70 49 4f 41 48 49  OD..CSIO.UpIOAHI
  4660: 4f 48 30 70 49 4f 41 48 49 4f 48 31 70 49 4f 41  OH0pIOAHIOH1pIOA
  4670: 4c 49 4f 4c 30 70 49 4f 41 4c 49 4f 4c 31 72 49  LIOL0pIOALIOL1rI
  4680: 4f 41 48 0a 04 49 32 48 30 72 49 4f 41 48 0a 04  OAH..I2H0rIOAH..
  4690: 49 32 48 31 70 49 4f 41 4c 49 32 4c 30 70 49 4f  I2H1pIOALI2L0pIO
  46a0: 41 4c 49 32 4c 31 79 01 49 4e 54 52 49 51 52 5f  ALI2L1y.INTRIQR_
  46b0: 79 01 44 4d 43 48 44 41 4d 5f a0 24 93 49 4f 4c  y.DMCHDAM_.$.IOL
  46c0: 30 0a bc 70 0a 04 4c 41 4c 4e 70 0a 04 4c 4c 45  0..p..LALNp..LLE
  46d0: 4e 70 0a 04 48 41 4c 4e 70 0a 04 48 4c 45 4e a0  Np..HALNp..HLEN.
  46e0: 0e 93 44 4d 43 48 0a 04 70 00 44 41 4d 5f a0 0d  ..DMCH..p.DAM_..
  46f0: 93 49 4e 54 52 00 70 00 49 51 52 5f 43 53 49 4f  .INTR.p.IQR_CSIO
  4700: 0a aa 5b 27 4d 54 58 5f a4 50 54 42 30 14 4f 0f  ..['MTX_.PTB0.O.
  4710: 5f 50 52 53 00 08 50 54 42 31 11 4d 0e 0a e9 30  _PRS..PTB1.M...0
  4720: 47 01 78 03 78 03 08 08 47 01 78 07 78 07 08 08  G.x.x...G.x.x...
  4730: 22 80 00 2a 00 08 30 47 01 78 02 78 02 08 08 47  "..*..0G.x.x...G
  4740: 01 78 06 78 06 08 08 22 20 00 2a 00 08 30 47 01  .x.x..." .*..0G.
  4750: 78 03 78 03 08 08 47 01 78 07 78 07 08 08 22 f8  x.x...G.x.x...".
  4760: 10 2a 00 08 30 47 01 78 03 78 03 08 08 47 01 78  .*..0G.x.x...G.x
  4770: 07 78 07 08 08 22 f8 10 2a 0e 08 30 47 01 78 02  .x..."..*..0G.x.
  4780: 78 02 08 08 47 01 78 06 78 06 08 08 22 f8 10 2a  x...G.x.x..."..*
  4790: 00 08 30 47 01 78 02 78 02 08 08 47 01 78 06 78  ..0G.x.x...G.x.x
  47a0: 06 08 08 22 f8 10 2a 0e 08 30 47 01 78 03 78 03  ..."..*..0G.x.x.
  47b0: 08 08 47 01 78 07 78 07 08 08 22 00 00 2a 00 08  ..G.x.x..."..*..
  47c0: 30 47 01 78 02 78 02 08 08 47 01 78 06 78 06 08  0G.x.x...G.x.x..
  47d0: 08 22 00 00 2a 00 08 30 47 01 bc 03 bc 03 04 04  ."..*..0G.......
  47e0: 47 01 bc 07 bc 07 04 04 22 00 00 2a 00 08 30 47  G......."..*..0G
  47f0: 01 bc 03 bc 03 04 04 47 01 bc 07 bc 07 04 04 22  .......G......."
  4800: 80 00 2a 00 08 38 79 00 a4 50 54 42 31 14 41 0d  ..*..8y..PTB1.A.
  4810: 5f 53 52 53 01 8c 68 0a 02 49 4f 4c 4f 8c 68 0a  _SRS..h..IOLO.h.
  4820: 03 49 4f 48 49 8b 68 0a 11 49 51 52 5f 8c 68 0a  .IOHI.h..IQR_.h.
  4830: 14 44 41 4d 5f 5b 23 4d 54 58 5f ff ff 53 49 4f  .DAM_[#MTX_..SIO
  4840: 44 0a 03 43 53 49 4f 0a 55 70 49 4f 4c 4f 49 4f  D..CSIO.UpIOLOIO
  4850: 41 4c 70 49 4f 48 49 49 4f 41 48 a0 0f 93 49 4f  ALpIOHIIOAH...IO
  4860: 4c 4f 0a bc 70 0a 02 4c 50 54 4f a0 26 93 49 4f  LO..p..LPTO.&.IO
  4870: 4c 4f 0a 78 a0 0e 93 49 4f 48 49 0a 02 70 01 4c  LO.x...IOHI..p.L
  4880: 50 54 4f a0 0e 93 49 4f 48 49 0a 03 70 00 4c 50  PTO...IOHI..p.LP
  4890: 54 4f a0 0d 93 49 51 52 5f 00 70 00 49 4e 54 52  TO...IQR_.p.INTR
  48a0: a1 0e 82 49 51 52 5f 60 74 60 01 49 4e 54 52 a0  ...IQR_`t`.INTR.
  48b0: 0e 93 44 41 4d 5f 00 70 0a 04 44 4d 43 48 a1 0e  ..DAM_.p..DMCH..
  48c0: 82 44 41 4d 5f 60 74 60 01 44 4d 43 48 70 01 41  .DAM_`t`.DMCHp.A
  48d0: 43 54 52 43 53 49 4f 0a aa 5b 27 4d 54 58 5f 5b  CTRCSIO..['MTX_[
  48e0: 82 42 25 43 4f 4d 41 08 5f 48 49 44 0c 41 d0 05  .B%COMA._HID.A..
  48f0: 01 08 5f 55 49 44 01 14 42 06 5f 53 54 41 00 08  .._UID..B._STA..
  4900: 52 45 54 5f 00 5b 23 4d 54 58 5f ff ff 53 49 4f  RET_.[#MTX_..SIO
  4910: 44 0a 04 a0 2d 47 43 53 31 43 53 49 4f 0a 55 a0  D...-GCS1CSIO.U.
  4920: 12 41 43 54 52 43 53 49 4f 0a aa 70 0a 0f 52 45  .ACTRCSIO..p..RE
  4930: 54 5f a1 0e 43 53 49 4f 0a aa 70 0a 0d 52 45 54  T_..CSIO..p..RET
  4940: 5f a1 0d 43 53 49 4f 0a aa 70 00 52 45 54 5f 5b  _..CSIO..p.RET_[
  4950: 27 4d 54 58 5f a4 52 45 54 5f 14 32 5f 44 49 53  'MTX_.RET_.2_DIS
  4960: 00 5b 23 4d 54 58 5f ff ff 53 49 4f 44 0a 04 43  .[#MTX_..SIOD..C
  4970: 53 49 4f 0a 55 70 00 49 4e 54 52 70 00 41 43 54  SIO.Up.INTRp.ACT
  4980: 52 43 53 49 4f 0a aa 5b 27 4d 54 58 5f 14 47 0a  RCSIO..['MTX_.G.
  4990: 5f 43 52 53 00 08 43 4d 41 30 11 10 0a 0d 47 01  _CRS..CMA0....G.
  49a0: f8 03 f8 03 08 08 22 10 00 79 00 8c 43 4d 41 30  ......"..y..CMA0
  49b0: 0a 02 49 4f 4c 30 8c 43 4d 41 30 0a 03 49 4f 48  ..IOL0.CMA0..IOH
  49c0: 30 8c 43 4d 41 30 0a 04 49 4f 4c 31 8c 43 4d 41  0.CMA0..IOL1.CMA
  49d0: 30 0a 05 49 4f 48 31 8b 43 4d 41 30 0a 09 49 51  0..IOH1.CMA0..IQ
  49e0: 52 5f 5b 23 4d 54 58 5f ff ff 53 49 4f 44 0a 04  R_[#MTX_..SIOD..
  49f0: 43 53 49 4f 0a 55 70 49 4f 41 4c 49 4f 4c 30 70  CSIO.UpIOALIOL0p
  4a00: 49 4f 41 4c 49 4f 4c 31 70 49 4f 41 48 49 4f 48  IOALIOL1pIOAHIOH
  4a10: 30 70 49 4f 41 48 49 4f 48 31 79 01 49 4e 54 52  0pIOAHIOH1y.INTR
  4a20: 49 51 52 5f 43 53 49 4f 0a aa 5b 27 4d 54 58 5f  IQR_CSIO..['MTX_
  4a30: a4 43 4d 41 30 14 48 04 5f 50 52 53 00 08 43 4d  .CMA0.H._PRS..CM
  4a40: 41 31 11 36 0a 33 30 47 01 f8 03 f8 03 08 08 22  A1.6.30G......."
  4a50: 10 00 30 47 01 e8 03 e8 03 08 08 22 10 00 30 47  ..0G......."..0G
  4a60: 01 f8 02 f8 02 08 08 22 08 00 30 47 01 e8 02 e8  ......."..0G....
  4a70: 02 08 08 22 08 00 38 79 00 a4 43 4d 41 31 14 44  ..."..8y..CMA1.D
  4a80: 0b 5f 53 52 53 01 8c 68 0a 02 49 4f 4c 4f 8c 68  ._SRS..h..IOLO.h
  4a90: 0a 03 49 4f 48 49 8b 68 0a 09 49 51 52 5f 5b 23  ..IOHI.h..IQR_[#
  4aa0: 4d 54 58 5f ff ff 53 49 4f 44 0a 04 43 53 49 4f  MTX_..SIOD..CSIO
  4ab0: 0a 55 70 49 4f 4c 4f 49 4f 41 4c 70 49 4f 48 49  .UpIOLOIOALpIOHI
  4ac0: 49 4f 41 48 82 49 51 52 5f 60 74 60 01 49 4e 54  IOAH.IQR_`t`.INT
  4ad0: 52 a0 27 93 49 4f 48 49 0a 03 a0 0e 93 49 4f 4c  R.'.IOHI.....IOL
  4ae0: 4f 0a f8 70 00 4e 53 43 41 a0 0f 93 49 4f 4c 4f  O..p.NSCA...IOLO
  4af0: 0a e8 70 0a 07 4e 53 43 41 a0 27 93 49 4f 48 49  ..p..NSCA.'.IOHI
  4b00: 0a 02 a0 0e 93 49 4f 4c 4f 0a f8 70 01 4e 53 43  .....IOLO..p.NSC
  4b10: 41 a0 0f 93 49 4f 4c 4f 0a e8 70 0a 05 4e 53 43  A...IOLO..p..NSC
  4b20: 41 70 01 41 43 54 52 43 53 49 4f 0a aa 5b 27 4d  Ap.ACTRCSIO..['M
  4b30: 54 58 5f 5b 82 46 27 43 4f 4d 42 08 5f 48 49 44  TX_[.F'COMB._HID
  4b40: 0c 41 d0 05 01 08 5f 55 49 44 0a 02 14 42 06 5f  .A...._UID...B._
  4b50: 53 54 41 00 08 52 45 54 5f 00 5b 23 4d 54 58 5f  STA..RET_.[#MTX_
  4b60: ff ff 53 49 4f 44 0a 05 a0 2d 47 43 53 32 43 53  ..SIOD...-GCS2CS
  4b70: 49 4f 0a 55 a0 12 41 43 54 52 43 53 49 4f 0a aa  IO.U..ACTRCSIO..
  4b80: 70 0a 0f 52 45 54 5f a1 0e 43 53 49 4f 0a aa 70  p..RET_..CSIO..p
  4b90: 0a 0d 52 45 54 5f a1 0d 43 53 49 4f 0a aa 70 00  ..RET_..CSIO..p.
  4ba0: 52 45 54 5f 5b 27 4d 54 58 5f a4 52 45 54 5f 14  RET_['MTX_.RET_.
  4bb0: 44 04 5f 44 49 53 00 5b 23 4d 54 58 5f ff ff 53  D._DIS.[#MTX_..S
  4bc0: 49 4f 44 0a 05 43 53 49 4f 0a 55 70 00 49 4e 54  IOD..CSIO.Up.INT
  4bd0: 52 70 4f 50 54 31 60 7d 60 0a 20 60 70 60 4f 50  RpOPT1`}`. `p`OP
  4be0: 54 31 70 00 41 43 54 52 43 53 49 4f 0a aa 5b 27  T1p.ACTRCSIO..['
  4bf0: 4d 54 58 5f 14 47 0a 5f 43 52 53 00 08 43 4d 42  MTX_.G._CRS..CMB
  4c00: 30 11 10 0a 0d 47 01 f8 03 f8 03 08 08 22 10 00  0....G......."..
  4c10: 79 00 8c 43 4d 42 30 0a 02 49 4f 4c 30 8c 43 4d  y..CMB0..IOL0.CM
  4c20: 42 30 0a 03 49 4f 48 30 8c 43 4d 42 30 0a 04 49  B0..IOH0.CMB0..I
  4c30: 4f 4c 31 8c 43 4d 42 30 0a 05 49 4f 48 31 8b 43  OL1.CMB0..IOH1.C
  4c40: 4d 42 30 0a 09 49 51 52 5f 5b 23 4d 54 58 5f ff  MB0..IQR_[#MTX_.
  4c50: ff 53 49 4f 44 0a 05 43 53 49 4f 0a 55 70 49 4f  .SIOD..CSIO.UpIO
  4c60: 41 4c 49 4f 4c 30 70 49 4f 41 4c 49 4f 4c 31 70  ALIOL0pIOALIOL1p
  4c70: 49 4f 41 48 49 4f 48 30 70 49 4f 41 48 49 4f 48  IOAHIOH0pIOAHIOH
  4c80: 31 79 01 49 4e 54 52 49 51 52 5f 43 53 49 4f 0a  1y.INTRIQR_CSIO.
  4c90: aa 5b 27 4d 54 58 5f a4 43 4d 42 30 14 48 04 5f  .['MTX_.CMB0.H._
  4ca0: 50 52 53 00 08 43 4d 42 31 11 36 0a 33 30 47 01  PRS..CMB1.6.30G.
  4cb0: f8 02 f8 02 08 08 22 08 00 30 47 01 e8 02 e8 02  ......"..0G.....
  4cc0: 08 08 22 08 00 30 47 01 f8 03 f8 03 08 08 22 10  .."..0G.......".
  4cd0: 00 30 47 01 e8 03 e8 03 08 08 22 10 00 38 79 00  .0G......."..8y.
  4ce0: a4 43 4d 42 31 14 45 0c 5f 53 52 53 01 8c 68 0a  .CMB1.E._SRS..h.
  4cf0: 02 49 4f 4c 4f 8c 68 0a 03 49 4f 48 49 8b 68 0a  .IOLO.h..IOHI.h.
  4d00: 09 49 51 52 5f 5b 23 4d 54 58 5f ff ff 53 49 4f  .IQR_[#MTX_..SIO
  4d10: 44 0a 05 43 53 49 4f 0a 55 70 49 4f 4c 4f 49 4f  D..CSIO.UpIOLOIO
  4d20: 41 4c 70 49 4f 48 49 49 4f 41 48 82 49 51 52 5f  ALpIOHIIOAH.IQR_
  4d30: 60 74 60 01 49 4e 54 52 a0 27 93 49 4f 48 49 0a  `t`.INTR.'.IOHI.
  4d40: 03 a0 0e 93 49 4f 4c 4f 0a f8 70 00 4e 53 43 42  ....IOLO..p.NSCB
  4d50: a0 0f 93 49 4f 4c 4f 0a e8 70 0a 07 4e 53 43 42  ...IOLO..p..NSCB
  4d60: a0 27 93 49 4f 48 49 0a 02 a0 0e 93 49 4f 4c 4f  .'.IOHI.....IOLO
  4d70: 0a f8 70 01 4e 53 43 42 a0 0f 93 49 4f 4c 4f 0a  ..p.NSCB...IOLO.
  4d80: e8 70 0a 05 4e 53 43 42 70 01 41 43 54 52 70 4f  .p..NSCBp.ACTRpO
  4d90: 50 54 31 60 7b 60 0a df 60 70 60 4f 50 54 31 43  PT1`{`..`p`OPT1C
  4da0: 53 49 4f 0a aa 5b 27 4d 54 58 5f 10 43 5c 2f 03  SIO..['MTX_.C\/.
  4db0: 5f 53 42 5f 50 43 49 30 49 53 41 5f 5b 82 41 5b  _SB_PCI0ISA_[.A[
  4dc0: 54 50 4d 5f 14 1a 5f 48 49 44 00 a0 0b 47 54 50  TPM_.._HID...GTP
  4dd0: 4d a4 0c 41 d0 0c 31 a1 07 a4 0c 4d af 12 00 08  M..A..1....M....
  4de0: 5f 43 49 44 0c 41 d0 0c 31 14 1b 5f 53 54 41 00  _CID.A..1.._STA.
  4df0: a0 07 47 54 50 4d a4 00 a0 08 47 43 54 50 a4 0a  ..GTPM....GCTP..
  4e00: 0f a1 03 a4 00 14 2b 5f 43 52 53 00 a0 20 47 43  ......+_CRS.. GC
  4e10: 54 50 a4 11 19 0a 16 86 09 00 01 00 00 d4 fe 00  TP..............
  4e20: 50 00 00 47 01 b0 0c b0 0c 08 10 79 00 a1 03 a4  P..G.......y....
  4e30: 00 14 42 15 5f 44 53 4d 04 a0 43 0f 93 96 68 00  ..B._DSM..C...h.
  4e40: 11 13 0a 10 a6 fa dd 3d 1b 36 b4 4e a4 24 8d 10  .......=.6.N.$..
  4e50: 08 9d 16 53 08 5f 54 5f 30 00 70 99 6a 00 5f 54  ...S._T_0.p.j._T
  4e60: 5f 30 a0 0c 93 5f 54 5f 30 00 a4 11 03 01 3f a1  _0..._T_0.....?.
  4e70: 4d 0b a0 0d 93 5f 54 5f 30 01 a4 0d 31 2e 30 00  M...._T_0...1.0.
  4e80: a1 4c 0a a0 1b 93 5f 54 5f 30 0a 02 70 99 6b 00  .L...._T_0..p.k.
  4e90: 60 7b 60 0a 0f 60 43 4d 57 52 0a 7e 60 a4 00 a1  `{`..`CMWR.~`...
  4ea0: 4d 08 a0 1b 93 5f 54 5f 30 0a 03 70 43 4d 52 44  M...._T_0..pCMRD
  4eb0: 0a 7e 60 7b 60 0a 0f 60 a4 50 50 52 32 60 a1 4e  .~`{`..`.PPR2`.N
  4ec0: 06 a0 0b 93 5f 54 5f 30 0a 04 a4 0a 02 a1 4f 05  ...._T_0......O.
  4ed0: a0 29 93 5f 54 5f 30 0a 05 70 43 4d 52 44 0a 7e  .)._T_0..pCMRD.~
  4ee0: 60 7a 60 0a 04 60 70 43 4d 52 44 0a 7f 61 7b 61  `z`..`pCMRD..a{a
  4ef0: 0a 7f 61 a4 50 50 52 33 60 61 a1 32 a0 29 93 5f  ..a.PPR3`a.2.)._
  4f00: 54 5f 30 0a 06 08 5f 54 5f 31 0d 00 70 9c 6b ff  T_0..._T_1..p.k.
  4f10: 00 5f 54 5f 31 a0 0c 93 5f 54 5f 31 0d 65 6e 00  ._T_1..._T_1.en.
  4f20: a4 00 a1 03 a4 01 a1 06 a4 11 03 01 00 a0 41 05  ..............A.
  4f30: 93 96 68 00 11 13 0a 10 ed 54 60 37 13 cc 75 46  ..h......T`7..uF
  4f40: 90 1c 47 56 d7 f2 d4 5d 08 5f 54 5f 32 00 70 99  ..GV...]._T_2.p.
  4f50: 6a 00 5f 54 5f 32 a0 0c 93 5f 54 5f 32 00 a4 11  j._T_2..._T_2...
  4f60: 03 01 01 a1 1b a0 19 93 5f 54 5f 32 01 70 53 4d  ........_T_2.pSM
  4f70: 49 5f 0a bc 7b 99 6b 00 01 00 61 a4 99 61 00 a4  I_..{.k...a..a..
  4f80: 11 03 01 00 14 4e 12 50 50 52 32 01 08 5f 54 5f  .....N.PPR2.._T_
  4f90: 30 00 70 99 68 00 5f 54 5f 30 a0 0d 93 5f 54 5f  0.p.h._T_0..._T_
  4fa0: 30 00 a4 12 04 02 00 00 a1 44 10 a0 0d 93 5f 54  0........D...._T
  4fb0: 5f 30 01 a4 12 04 02 00 01 a1 43 0f a0 0f 93 5f  _0........C...._
  4fc0: 54 5f 30 0a 02 a4 12 05 02 00 0a 02 a1 40 0e a0  T_0..........@..
  4fd0: 0f 93 5f 54 5f 30 0a 03 a4 12 05 02 00 0a 03 a1  .._T_0..........
  4fe0: 4d 0c a0 0f 93 5f 54 5f 30 0a 04 a4 12 05 02 00  M...._T_0.......
  4ff0: 0a 04 a1 4a 0b a0 0f 93 5f 54 5f 30 0a 05 a4 12  ...J...._T_0....
  5000: 05 02 00 0a 05 a1 47 0a a0 0f 93 5f 54 5f 30 0a  ......G...._T_0.
  5010: 06 a4 12 05 02 00 0a 06 a1 44 09 a0 0f 93 5f 54  .........D...._T
  5020: 5f 30 0a 07 a4 12 05 02 00 0a 07 a1 41 08 a0 0f  _0..........A...
  5030: 93 5f 54 5f 30 0a 08 a4 12 05 02 00 0a 08 a1 4e  ._T_0..........N
  5040: 06 a0 0f 93 5f 54 5f 30 0a 09 a4 12 05 02 00 0a  ...._T_0........
  5050: 09 a1 4b 05 a0 0f 93 5f 54 5f 30 0a 0a a4 12 05  ..K...._T_0.....
  5060: 02 00 0a 0a a1 48 04 a0 0f 93 5f 54 5f 30 0a 0b  .....H...._T_0..
  5070: a4 12 05 02 00 0a 0b a1 35 a0 0f 93 5f 54 5f 30  ........5..._T_0
  5080: 0a 0c a4 12 05 02 00 0a 0c a1 23 a0 0f 93 5f 54  ..........#..._T
  5090: 5f 30 0a 0d a4 12 05 02 00 0a 0d a1 11 a0 0f 93  _0..............
  50a0: 5f 54 5f 30 0a 0e a4 12 05 02 00 0a 0e a4 12 04  _T_0............
  50b0: 02 01 00 14 4b 2b 50 50 52 33 02 a0 4c 13 93 69  ....K+PPR3..L..i
  50c0: 00 08 5f 54 5f 30 00 70 99 68 00 5f 54 5f 30 a0  .._T_0.p.h._T_0.
  50d0: 0e 93 5f 54 5f 30 00 a4 12 05 03 00 00 00 a1 42  .._T_0.........B
  50e0: 11 a0 0e 93 5f 54 5f 30 01 a4 12 05 03 00 01 00  ...._T_0........
  50f0: a1 40 10 a0 10 93 5f 54 5f 30 0a 02 a4 12 06 03  .@...._T_0......
  5100: 00 0a 02 00 a1 4c 0e a0 10 93 5f 54 5f 30 0a 03  .....L...._T_0..
  5110: a4 12 06 03 00 0a 03 00 a1 48 0d a0 10 93 5f 54  .........H...._T
  5120: 5f 30 0a 04 a4 12 06 03 00 0a 04 00 a1 44 0c a0  _0...........D..
  5130: 10 93 5f 54 5f 30 0a 05 a4 12 06 03 00 0a 05 00  .._T_0..........
  5140: a1 40 0b a0 10 93 5f 54 5f 30 0a 06 a4 12 06 03  .@...._T_0......
  5150: 00 0a 06 00 a1 4c 09 a0 10 93 5f 54 5f 30 0a 07  .....L...._T_0..
  5160: a4 12 06 03 00 0a 07 00 a1 48 08 a0 10 93 5f 54  .........H...._T
  5170: 5f 30 0a 08 a4 12 06 03 00 0a 08 00 a1 44 07 a0  _0...........D..
  5180: 10 93 5f 54 5f 30 0a 09 a4 12 06 03 00 0a 09 00  .._T_0..........
  5190: a1 40 06 a0 10 93 5f 54 5f 30 0a 0a a4 12 06 03  .@...._T_0......
  51a0: 00 0a 0a 00 a1 4c 04 a0 10 93 5f 54 5f 30 0a 0b  .....L...._T_0..
  51b0: a4 12 06 03 00 0a 0b 00 a1 38 a0 10 93 5f 54 5f  .........8..._T_
  51c0: 30 0a 0c a4 12 06 03 00 0a 0c 00 a1 25 a0 10 93  0...........%...
  51d0: 5f 54 5f 30 0a 0d a4 12 06 03 00 0a 0d 00 a1 12  _T_0............
  51e0: a0 10 93 5f 54 5f 30 0a 0e a4 12 06 03 00 0a 0e  ..._T_0.........
  51f0: 00 a4 12 05 03 01 00 00 a1 46 17 08 5f 54 5f 31  .........F.._T_1
  5200: 00 70 99 68 00 5f 54 5f 31 a0 12 93 5f 54 5f 31  .p.h._T_1..._T_1
  5210: 00 a4 12 09 03 00 00 0c f0 ff ff ff a1 4b 14 a0  .............K..
  5220: 12 93 5f 54 5f 31 01 a4 12 09 03 00 01 0c f0 ff  .._T_1..........
  5230: ff ff a1 45 13 a0 14 93 5f 54 5f 31 0a 02 a4 12  ...E...._T_1....
  5240: 0a 03 00 0a 02 0c f0 ff ff ff a1 4d 11 a0 14 93  ...........M....
  5250: 5f 54 5f 31 0a 03 a4 12 0a 03 00 0a 03 0c f0 ff  _T_1............
  5260: ff ff a1 45 10 a0 14 93 5f 54 5f 31 0a 04 a4 12  ...E...._T_1....
  5270: 0a 03 00 0a 04 0c f0 ff ff ff a1 4d 0e a0 14 93  ...........M....
  5280: 5f 54 5f 31 0a 05 a4 12 0a 03 00 0a 05 0c f0 ff  _T_1............
  5290: ff ff a1 45 0d a0 14 93 5f 54 5f 31 0a 06 a4 12  ...E...._T_1....
  52a0: 0a 03 00 0a 06 0c f0 ff ff ff a1 4d 0b a0 14 93  ...........M....
  52b0: 5f 54 5f 31 0a 07 a4 12 0a 03 00 0a 07 0c f0 ff  _T_1............
  52c0: ff ff a1 45 0a a0 14 93 5f 54 5f 31 0a 08 a4 12  ...E...._T_1....
  52d0: 0a 03 00 0a 08 0c f0 ff ff ff a1 4d 08 a0 14 93  ...........M....
  52e0: 5f 54 5f 31 0a 09 a4 12 0a 03 00 0a 09 0c f0 ff  _T_1............
  52f0: ff ff a1 45 07 a0 14 93 5f 54 5f 31 0a 0a a4 12  ...E...._T_1....
  5300: 0a 03 00 0a 0a 0c f0 ff ff ff a1 4d 05 a0 14 93  ...........M....
  5310: 5f 54 5f 31 0a 0b a4 12 0a 03 00 0a 0b 0c f0 ff  _T_1............
  5320: ff ff a1 45 04 a0 14 93 5f 54 5f 31 0a 0c a4 12  ...E...._T_1....
  5330: 0a 03 00 0a 0c 0c f0 ff ff ff a1 2d a0 14 93 5f  ...........-..._
  5340: 54 5f 31 0a 0d a4 12 0a 03 00 0a 0d 0c f0 ff ff  T_1.............
  5350: ff a1 16 a0 14 93 5f 54 5f 31 0a 0e a4 12 0a 03  ......_T_1......
  5360: 00 0a 0e 0c f0 ff ff ff a4 12 05 03 01 00 00     ...............

FACS @ 0xbfdffc00
  0000: 46 41 43 53 40 00 00 00 00 00 00 00 00 00 00 00  FACS@...........
  0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

FACP @ 0xfc91f
  0000: 46 41 43 50 f4 00 00 00 03 0b 44 45 4c 4c 20 20  FACP......DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 00 fc df bf 4b be f1 ff 01 05 09 00  a.......K.......
  0030: b2 00 00 00 70 71 00 00 00 08 00 00 00 00 00 00  ....pq..........
  0040: 04 08 00 00 00 00 00 00 50 08 00 00 08 08 00 00  ........P.......
  0050: 20 08 00 00 00 00 00 00 04 02 01 04 10 00 00 00   ...............
  0060: 01 00 39 00 00 00 00 00 00 00 00 00 00 13 00 00  ..9.............
  0070: a5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  0080: 00 00 00 00 00 fc df bf 00 00 00 00 4b be f1 ff  ............K...
  0090: 00 00 00 00 01 20 00 01 00 08 00 00 00 00 00 00  ..... ..........
  00a0: 00 00 00 00 00 00 00 00 00 00 00 00 01 10 00 01  ................
  00b0: 04 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  00c0: 00 00 00 00 01 08 00 01 50 08 00 00 00 00 00 00  ........P.......
  00d0: 01 20 00 01 08 08 00 00 00 00 00 00 01 40 00 01  . ...........@..
  00e0: 20 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ...............
  00f0: 00 00 00 00                                      ....

SSDT @ 0xfff212d9
  0000: 53 53 44 54 aa 00 00 00 01 19 44 45 4c 4c 00 00  SSDT......DELL..
  0010: 73 74 5f 65 78 00 00 00 00 10 00 00 49 4e 54 4c  st_ex.......INTL
  0020: 24 06 05 20 14 07 55 53 45 53 00 a3 10 4b 04 5c  $.. ..USES...K.\
  0030: 00 08 5c 5f 53 30 5f 12 06 04 00 00 00 00 08 5c  ..\_S0_........\
  0040: 5f 53 31 5f 12 08 04 0a 04 0a 04 00 00 08 5c 5f  _S1_..........\_
  0050: 53 33 5f 12 08 04 0a 03 0a 03 00 00 08 5c 5f 53  S3_..........\_S
  0060: 34 5f 12 06 04 00 00 00 00 08 5c 5f 53 35 5f 12  4_........\_S5_.
  0070: 08 04 0a 02 0a 02 00 00 10 31 5c 2f 04 5f 53 42  .........1\/._SB
  0080: 5f 50 43 49 30 49 53 41 5f 4d 4f 55 5f 14 1c 5f  _PCI0ISA_MOU_.._
  0090: 50 52 57 00 a0 0c 48 41 43 4b a4 12 05 02 00 0a  PRW...HACK......
  00a0: 03 a1 08 a4 12 05 02 00 0a 05                    ..........

APIC @ 0xfca13
  0000: 41 50 49 43 92 00 00 00 01 b5 44 45 4c 4c 20 20  APIC......DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 00 00 e0 fe 01 00 00 00 00 08 01 00  a...............
  0030: 01 00 00 00 00 08 02 01 01 00 00 00 00 08 03 02  ................
  0040: 01 00 00 00 00 08 04 03 01 00 00 00 00 08 05 00  ................
  0050: 00 00 00 00 00 08 06 01 00 00 00 00 00 08 07 02  ................
  0060: 00 00 00 00 00 08 08 03 00 00 00 00 01 0c 08 00  ................
  0070: 00 00 c0 fe 00 00 00 00 02 0a 00 00 02 00 00 00  ................
  0080: 00 00 02 0a 00 09 09 00 00 00 0d 00 04 06 ff 0d  ................
  0090: 00 01                                            ..

BOOT @ 0xfcaa5
  0000: 42 4f 4f 54 28 00 00 00 01 04 44 45 4c 4c 20 20  BOOT(.....DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 7a 00 00 00                          a...z...

ASF! @ 0xfcacd
  0000: 41 53 46 21 96 00 00 00 20 73 44 45 4c 4c 20 20  ASF!.... sDELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 04 00 07 00 00 01 88 01 00 2c 00 00  a............,..
  0030: 00 03 0c 89 04 01 01 05 6f 00 68 08 88 17 00 89  ........o.h.....
  0040: 04 04 04 07 6f 00 68 20 88 03 00 89 05 01 01 19  ....o.h ........
  0050: 6f 00 68 20 88 22 00 02 00 18 00 04 04 00 00 02  o.h ."..........
  0060: 88 00 01 01 88 00 02 00 88 00 03 03 88 00 04 03  ................
  0070: 00 17 00 22 18 00 00 00 03 0f 01 00 00 00 00 00  ..."............
  0080: 00 00 00 00 00 00 80 00 10 00 ff 00 7f 02 00 00  ................
  0090: 02 a2 00 00 00 00                                ......

MCFG @ 0xfcb63
  0000: 4d 43 46 47 3e 00 00 00 01 a0 44 45 4c 4c 20 20  MCFG>.....DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0  a...............
  0030: 00 00 00 00 00 00 00 ff 00 00 00 00 00 00        ..............

HPET @ 0xfcba1
  0000: 48 50 45 54 38 00 00 00 01 0a 44 45 4c 4c 20 20  HPET8.....DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 01 a7 86 80 00 00 00 00 00 00 d0 fe  a...............
  0030: 00 00 00 00 00 e8 03 00                          ........

Wrong checksum for TCPA
TCPA @ 0xfcdfd
  0000: 54 43 50 41 32 00 00 00 01 00 44 45 4c 4c 20 20  TCPA2.....DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  a...............
  0030: 00 00                                            ..

____ @ 0xfce2f
  0000: 5f 5f 5f 5f 30 00 00 00 01 0b 44 45 4c 4c 20 20  ____0.....DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 23 00 00 00 00 00 00 00 00 00 00 00  a...#...........

XSDT @ 0xfc7ef
  0000: 58 53 44 54 6c 00 00 00 01 ab 44 45 4c 4c 20 20  XSDTl.....DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 1f c9 0f 00 00 00 00 00 d9 12 f2 ff  a...............
  0030: 00 00 00 00 13 ca 0f 00 00 00 00 00 a5 ca 0f 00  ................
  0040: 00 00 00 00 cd ca 0f 00 00 00 00 00 63 cb 0f 00  ............c...
  0050: 00 00 00 00 a1 cb 0f 00 00 00 00 00 fd cd 0f 00  ................
  0060: 00 00 00 00 2f ce 0f 00 00 00 00 00              ..../.......

FACP @ 0xfc8ab
  0000: 46 41 43 50 74 00 00 00 01 7e 44 45 4c 4c 20 20  FACPt....~DELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 00 fc df bf 4b be f1 ff 01 00 09 00  a.......K.......
  0030: b2 00 00 00 70 71 00 00 00 08 00 00 00 00 00 00  ....pq..........
  0040: 04 08 00 00 00 00 00 00 50 08 00 00 08 08 00 00  ........P.......
  0050: 20 08 00 00 00 00 00 00 04 02 01 04 10 00 00 00   ...............
  0060: 01 00 39 00 00 00 00 00 00 00 00 00 00 00 00 00  ..9.............
  0070: a5 00 00 00                                      ....

Wrong checksum for TCPA!
RSDT @ 0xfc77f
  0000: 52 53 44 54 48 00 00 00 01 4a 44 45 4c 4c 20 20  RSDTH....JDELL  
  0010: 42 31 30 4b 20 20 20 00 15 00 00 00 41 53 4c 20  B10K   .....ASL 
  0020: 61 00 00 00 ab c8 0f 00 d9 12 f2 ff a5 ca 0f 00  a...............
  0030: cd ca 0f 00 63 cb 0f 00 a1 cb 0f 00 2f ce 0f 00  ....c......./...
  0040: fd cd 0f 00 13 ca 0f 00                          ........

RSD PTR @ 0xfec00
  0000: 52 53 44 20 50 54 52 20 29 44 45 4c 4c 20 20 02  RSD PTR )DELL  .
  0010: 7f c7 0f 00 24 00 00 00 ef c7 0f 00 00 00 00 00  ....$...........
  0020: 17 00 00 00                                      ....


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2009-10-12  3:05 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-28  6:31 [PATCH] acpi: pci_root: fix NULL pointer deref after resume from suspend Xiaotian Feng
2009-09-28 17:38 ` Alex Chiang
2009-09-28 20:43   ` Rafael J. Wysocki
2009-09-28 21:05     ` Rafael J. Wysocki
2009-09-28 22:20       ` Alex Chiang
2009-09-28 22:50         ` Rafael J. Wysocki
2009-09-29 10:11           ` Danny Feng
2009-09-29 20:08             ` Rafael J. Wysocki
2009-09-29 20:49               ` Alex Chiang
2009-09-29 23:31                 ` Rafael J. Wysocki
2009-09-29  1:44   ` Danny Feng
2009-09-29 20:12     ` Rafael J. Wysocki
2009-09-29 20:12       ` Rafael J. Wysocki
2009-09-30  2:46       ` Danny Feng
2009-09-30 21:26         ` Rafael J. Wysocki
2009-10-01 20:05     ` Alex Chiang
2009-10-03 22:56       ` Rafael J. Wysocki
2009-10-09  1:17         ` Danny Feng
2009-10-09  2:26         ` Danny Feng
2009-10-09 21:46           ` Rafael J. Wysocki
2009-10-12  3:05             ` Danny Feng
2009-10-09  1:16       ` Danny Feng
2009-10-09  2:28       ` Danny Feng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.