* [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.