SIO Interrupt storms and unhanded interrupts

Mike Tancsa mike at sentex.net
Wed Sep 8 16:23:41 PDT 2004


I think we have been bouncing around this issue for the past few months 
both on RELENG_4 and now RELENG_5.  In the past it has been somewhat 
difficult to reproduce, but now we can do it reliably.    I dont think its 
a hardware issue as I can take the exact same 2 boxes with the exact same 
IRQ assignments and boot with OpenBSD and not run into an interrupt storm 
or freeze up the box.  Swap back the RELENG_4 or RELENG_5 HD and again, I 
can produce an interrupt storm at will.

I can also reproduce it on 2 different chipsets as well (VIA and 
Intel).  The problem seems to be around how a PUC device (either a PCI 
modem or a PCI serial card) and the sharing of an interrupt (usually an USB 
controller, but not always).

On RELENG_4, the box just locks up in a race trying to service an interrupt 
on IRQ 12 but remains unhandled.

On RELENG_5, I actually catch an interrupt storm. e.g. I attach to sio4 
(PUC modem) and

Interrupt storm detected on "irq12: uhci1"; throttling interrupt source

Looking at vmstat -i does indeed show a the rate getting throttled

releng-5-pioneer# vmstat -i
interrupt                          total       rate
irq0: clk                         596719         99
irq1: atkbd0                           2          0
irq4: sio0                          1079          0
irq6: fdc0                             1          0
irq8: rtc                         763812        127
irq12: uhci1                        5825          0
irq13: npx0                            1          0
irq14: ata0                        38727          6
irq15: vr0 ata1                     1984          0
Total                            1408150        235
releng-5-pioneer#

where irq12 is the IRQ shared by the modem and the USB port.  However, 
because all IRQ 12s get throttled, the modem is unusable. e.g. trying to cu 
-l /dev/cuaa4 and typing atz takes about 5 seconds.


Is there some way to safely tell the kernel that the PUC device that its 
shareable ?  We did this perhaps very ugly hack on RELENG_4


@@ -1431,15 +1431,19 @@

         rid = 0;
         com->irqres = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0ul, ~0ul, 1,
-           RF_ACTIVE);
+/*         RF_ACTIVE); */
+           RF_SHAREABLE);

to /usr/src/sys/isa/sio.c

and at least we can talk to the sio device.  However, on RELENG_5 there 
does not seem to be the same fix.

My question is this-- Is the root cause the same issue on RELENG_4 and 
RELENG_5 ?  Are we going about it the best way to fix the problem ? Or is 
the underlying problem something else ?

Attached is a dmesg and acpidump

         ---Mike







--------------------------------------------------------------------
Mike Tancsa,                                      tel +1 519 651 3400
Sentex Communications,                            mike at sentex.net
Providing Internet since 1994                    www.sentex.net
Cambridge, Ontario Canada                         www.sentex.net/mike
-------------- next part --------------
Copyright (c) 1992-2004 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD 5.3-BETA3 #1: Wed Sep  8 18:54:01 EDT 2004
    mdtancsa at releng-5-pioneer.sentex.ca:/usr/obj/usr/src/sys/pioneer
Preloaded elf kernel "/boot/kernel/kernel" at 0xc082c000.
Preloaded elf module "/boot/modules/acpi.ko" at 0xc082c1d8.
Calibrating clock(s) ... i8254 clock: 1193179 Hz
CLK_USE_I8254_CALIBRATION not specified - using default frequency
Timecounter "i8254" frequency 1193182 Hz quality 0
Calibrating TSC clock ... TSC clock: 1002280114 Hz
CPU: VIA C3 Nehemiah (1002.28-MHz 686-class CPU)
  Origin = "CentaurHauls"  Id = 0x691  Stepping = 1
  Features=0x380b035<FPU,DE,TSC,MSR,MTRR,PGE,CMOV,MMX,FXSR,SSE>
real memory  = 251592704 (239 MB)
Physical memory chunk(s):
0x0000000000001000 - 0x000000000009ffff, 651264 bytes (159 pages)
0x0000000000100000 - 0x00000000003fffff, 3145728 bytes (768 pages)
0x0000000000c26000 - 0x000000000eb87fff, 234233856 bytes (57186 pages)
avail memory = 236654592 (225 MB)
bios32: Found BIOS32 Service Directory header at 0xc00fab90
bios32: Entry = 0xfb000 (c00fb000)  Rev = 0  Len = 1
pcibios: PCI BIOS entry at 0xf0000+0xb050
pnpbios: Found PnP BIOS data at 0xc00fba50
pnpbios: Entry = f0000:ba80  Rev = 1.0
Other BIOS signatures found:
null: <null device, zero device>
random: <entropy source, Software, Yarrow>
ichwd module loaded
io: <I/O>
mem: <memory>
npx0: [FAST]
npx0: <math processor> on motherboard
npx0: INT 16 interface
acpi0: <VT9174 AWRDACPI> on motherboard
acpi0: [MPSAFE]
pci_open(1):	mode 1 addr port (0x0cf8) is 0x80000060
pci_open(1a):	mode1res=0x80000000 (0x80000000)
pci_cfgcheck:	device 0 [class=060000] [hdr=00] is there (id=31231106)
pcibios: BIOS version 2.10
Found $PIR table, 7 entries at 0xc00fdeb0
PCI-Only Interrupts: 7 11 12 15
Location  Bus Device Pin  Link  IRQs
slot 1      0   20    A   0x02  3 4 5 7 9 10 11 12 14 15
slot 1      0   20    B   0x03  3 4 5 7 9 10 11 12 14 15
slot 1      0   20    C   0x05  3 4 5 7 9 10 11 12 14 15
slot 1      0   20    D   0x01  3 4 5 7 9 10 11 12 14 15
slot 2      0   19    A   0x05  3 4 5 7 9 10 11 12 14 15
slot 2      0   19    B   0x01  3 4 5 7 9 10 11 12 14 15
slot 2      0   19    C   0x02  3 4 5 7 9 10 11 12 14 15
slot 2      0   19    D   0x03  3 4 5 7 9 10 11 12 14 15
embedded    0    1    A   0x01  3 4 5 7 9 10 11 12 14 15
embedded    0    1    B   0x02  3 4 5 7 9 10 11 12 14 15
embedded    0    1    C   0x03  3 4 5 7 9 10 11 12 14 15
embedded    0    1    D   0x05  3 4 5 7 9 10 11 12 14 15
embedded    0   16    A   0x01  3 4 5 7 9 10 11 12 14 15
embedded    0   16    B   0x02  3 4 5 7 9 10 11 12 14 15
embedded    0   16    C   0x03  3 4 5 7 9 10 11 12 14 15
embedded    0   16    D   0x05  3 4 5 7 9 10 11 12 14 15
embedded    0   17    A   0x01  3 4 5 7 9 10 11 12 14 15
embedded    0   17    C   0x03  3 4 5 7 9 10 11 12 14 15
embedded    0   18    A   0x01  3 4 5 7 9 10 11 12 14 15
embedded    0   15    A   0x05  3 4 5 7 9 10 11 12 14 15
embedded    0   15    B   0x01  3 4 5 7 9 10 11 12 14 15
embedded    0   15    C   0x02  3 4 5 7 9 10 11 12 14 15
embedded    0   15    D   0x03  3 4 5 7 9 10 11 12 14 15
AcpiOsDerivePciId: bus 0 dev 10 func 0
AcpiOsDerivePciId: bus 0 dev 10 func 1
AcpiOsDerivePciId: bus 0 dev 17 func 0
acpi0: Power Button (fixed)
ACPI timer looks BAD  min = 2, max = 5, width = 3
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
ACPI timer looks GOOD min = 2, max = 3, width = 1
Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0
unknown: not probed (disabled)
cpu0: <ACPI CPU (3 Cx states)> on acpi0
acpi_button0: <Power Button> on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
ACPI PCI link initial configuration:
\\_SB_.PCI0.LNKB irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 12+ low,level,sharable 0.20.0
\\_SB_.PCI0.LNKC irq  0: [ 1  3  4  5  6  7 10 11 12 14 15]  7+ low,level,sharable 0.20.1
\\_SB_.PCI0.LNKD irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 15+ low,level,sharable 0.20.2
\\_SB_.PCI0.LNKA irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 11+ low,level,sharable 0.20.3
\\_SB_.PCI0.LNKD irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 15+ low,level,sharable 0.19.0
\\_SB_.PCI0.LNKA irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 11+ low,level,sharable 0.19.1
\\_SB_.PCI0.LNKB irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 12+ low,level,sharable 0.19.2
\\_SB_.PCI0.LNKC irq  0: [ 1  3  4  5  6  7 10 11 12 14 15]  7+ low,level,sharable 0.19.3
\\_SB_.PCI0.LNKA irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 11+ low,level,sharable 0.16.0
\\_SB_.PCI0.LNKB irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 12+ low,level,sharable 0.16.1
\\_SB_.PCI0.LNKC irq  0: [ 1  3  4  5  6  7 10 11 12 14 15]  7+ low,level,sharable 0.16.2
\\_SB_.PCI0.LNKD irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 15+ low,level,sharable 0.16.3
\\_SB_.PCI0.LNKA irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 11+ low,level,sharable 0.17.0
\\_SB_.PCI0.LNKC irq  0: [ 1  3  4  5  6  7 10 11 12 14 15]  7+ low,level,sharable 0.17.2
\\_SB_.PCI0.LNKA irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 11+ low,level,sharable 0.18.0
\\_SB_.PCI0.LNKD irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 15+ low,level,sharable 0.15.0
\\_SB_.PCI0.LNKA irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 11+ low,level,sharable 0.15.1
\\_SB_.PCI0.LNKB irq  0: [ 1  3  4  5  6  7 10 11 12 14 15] 12+ low,level,sharable 0.15.2
\\_SB_.PCI0.LNKC irq  0: [ 1  3  4  5  6  7 10 11 12 14 15]  7+ low,level,sharable 0.15.3
pci0: <ACPI PCI bus> on pcib0
pci0: physical bus=0
	map[10]: type 3, range 32, base e6000000, size 22, enabled
found->	vendor=0x1106, dev=0x3123, revid=0x00
	bus=0, slot=0, func=0
	class=06-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0006, statreg=0x2230, cachelnsz=0 (dwords)
	lattimer=0x08 (240 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	powerspec 2  supports D0 D3  current D0
found->	vendor=0x1106, dev=0xb091, revid=0x00
	bus=0, slot=1, func=0
	class=06-04-00, hdrtype=0x01, mfdev=0
	cmdreg=0x0107, statreg=0xa230, cachelnsz=0 (dwords)
	lattimer=0x00 (0 ns), mingnt=0x0c (3000 ns), maxlat=0x00 (0 ns)
	map[10]: type 4, range 32, base 0000d000, size  8, enabled
	map[14]: type 1, range 32, base e6400000, size  8, enabled
pcib0: matched entry for 0.15.INTA (src \\_SB_.PCI0.LNKD)
pcib0: possible interrupts:  1  3  4  5  6  7 10 11 12 14 15
ACPI PCI link arbitrated settings:
\\_SB_.PCI0.LNKA (references 6, priority 123894):
	interrupts:	    11    10     5    12     7     6     4     3    15    14     1
	penalty:	   190   190   240  5190  5190  5190  5190  5190 50190 50190100190
\\_SB_.PCI0.LNKC (references 5, priority 103245):
	interrupts:	    11    10     5    12     7     6     4     3    15    14     1
	penalty:	   190   190   240  5190  5190  5190  5190  5190 50190 50190100190
\\_SB_.PCI0.LNKB (references 4, priority 82596):
	interrupts:	    11    10     5    12     7     6     4     3    15    14     1
	penalty:	   190   190   240  5190  5190  5190  5190  5190 50190 50190100190
\\_SB_.PCI0.LNKD (references 4, priority 82596):
	interrupts:	    11    10     5    12     7     6     4     3    15    14     1
	penalty:	   190   190   240  5190  5190  5190  5190  5190 50190 50190100190
pcib0: slot 15 INTA routed to irq 15 via \\_SB_.PCI0.LNKD
found->	vendor=0x1106, dev=0x3106, revid=0x8b
	bus=0, slot=15, func=0
	class=02-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x0210, cachelnsz=8 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x03 (750 ns), maxlat=0x08 (2000 ns)
	intpin=a, irq=15
	powerspec 2  supports D0 D1 D2 D3  current D0
	map[20]: type 4, range 32, base 0000d400, size  5, enabled
pcib0: matched entry for 0.16.INTA (src \\_SB_.PCI0.LNKA)
pcib0: possible interrupts:  1  3  4  5  6  7 10 11 12 14 15
ACPI PCI link arbitrated settings:
\\_SB_.PCI0.LNKA (references 6, priority 125056):
	interrupts:	    11    10     5    12     7     6     4     3    14    15     1
	penalty:	   380   380   430  5380  5380  5380  5380  5380 50380 50420100380
\\_SB_.PCI0.LNKC (references 5, priority 104213):
	interrupts:	    11    10     5    12     7     6     4     3    14    15     1
	penalty:	   380   380   430  5380  5380  5380  5380  5380 50380 50420100380
\\_SB_.PCI0.LNKB (references 4, priority 83370):
	interrupts:	    11    10     5    12     7     6     4     3    14    15     1
	penalty:	   380   380   430  5380  5380  5380  5380  5380 50380 50420100380
pcib0: slot 16 INTA routed to irq 11 via \\_SB_.PCI0.LNKA
found->	vendor=0x1106, dev=0x3038, revid=0x80
	bus=0, slot=16, func=0
	class=0c-03-00, hdrtype=0x00, mfdev=1
	cmdreg=0x0007, statreg=0x0210, cachelnsz=8 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	intpin=a, irq=11
	powerspec 2  supports D0 D1 D2 D3  current D0
	map[20]: type 4, range 32, base 0000d800, size  5, enabled
pcib0: matched entry for 0.16.INTB (src \\_SB_.PCI0.LNKB)
pcib0: possible interrupts:  1  3  4  5  6  7 10 11 12 14 15
ACPI PCI link arbitrated settings:
\\_SB_.PCI0.LNKC (references 5, priority 105190):
	interrupts:	    10     5    11    12     7     6     4     3    14    15     1
	penalty:	   570   620   630  5570  5570  5570  5570  5570 50570 50610100570
\\_SB_.PCI0.LNKB (references 4, priority 84152):
	interrupts:	    10     5    11    12     7     6     4     3    14    15     1
	penalty:	   570   620   630  5570  5570  5570  5570  5570 50570 50610100570
pcib0: slot 16 INTB routed to irq 12 via \\_SB_.PCI0.LNKB
found->	vendor=0x1106, dev=0x3038, revid=0x80
	bus=0, slot=16, func=1
	class=0c-03-00, hdrtype=0x00, mfdev=1
	cmdreg=0x0007, statreg=0x0210, cachelnsz=8 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	intpin=b, irq=12
	powerspec 2  supports D0 D1 D2 D3  current D0
	map[20]: type 4, range 32, base 0000dc00, size  5, enabled
pcib0: matched entry for 0.16.INTC (src \\_SB_.PCI0.LNKC)
pcib0: possible interrupts:  1  3  4  5  6  7 10 11 12 14 15
ACPI PCI link arbitrated settings:
\\_SB_.PCI0.LNKC (references 5, priority 106159):
	interrupts:	    10     5    11     7     6     4     3    12    14    15     1
	penalty:	   760   810   820  5760  5760  5760  5760  5800 50760 50800100760
pcib0: slot 16 INTC routed to irq 7 via \\_SB_.PCI0.LNKC
found->	vendor=0x1106, dev=0x3038, revid=0x80
	bus=0, slot=16, func=2
	class=0c-03-00, hdrtype=0x00, mfdev=1
	cmdreg=0x0007, statreg=0x0210, cachelnsz=8 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	intpin=c, irq=7
	powerspec 2  supports D0 D1 D2 D3  current D0
	map[10]: type 1, range 32, base e6401000, size  8, enabled
pcib0: matched entry for 0.16.INTD (src \\_SB_.PCI0.LNKD)
pcib0: slot 16 INTD is already routed to irq 15
found->	vendor=0x1106, dev=0x3104, revid=0x82
	bus=0, slot=16, func=3
	class=0c-03-20, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x0210, cachelnsz=8 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	intpin=d, irq=15
	powerspec 2  supports D0 D1 D2 D3  current D0
found->	vendor=0x1106, dev=0x3177, revid=0x00
	bus=0, slot=17, func=0
	class=06-01-00, hdrtype=0x00, mfdev=1
	cmdreg=0x0087, statreg=0x0210, cachelnsz=0 (dwords)
	lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	powerspec 2  supports D0 D3  current D0
	map[20]: type 4, range 32, base 0000e000, size  4, enabled
found->	vendor=0x1106, dev=0x0571, revid=0x06
	bus=0, slot=17, func=1
	class=01-01-8a, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x0290, cachelnsz=0 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	intpin=a, irq=255
	powerspec 2  supports D0 D3  current D0
	map[10]: type 4, range 32, base 0000e400, size  8, enabled
	map[14]: type 1, range 32, base e6402000, size  8, enabled
pcib0: matched entry for 0.18.INTA (src \\_SB_.PCI0.LNKA)
pcib0: slot 18 INTA is already routed to irq 11
found->	vendor=0x1106, dev=0x3065, revid=0x74
	bus=0, slot=18, func=0
	class=02-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x0210, cachelnsz=8 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x03 (750 ns), maxlat=0x08 (2000 ns)
	intpin=a, irq=11
	powerspec 2  supports D0 D1 D2 D3  current D0
	map[10]: type 4, range 32, base 0000e800, size  3, enabled
pcib0: matched entry for 0.20.INTA (src \\_SB_.PCI0.LNKB)
pcib0: slot 20 INTA is already routed to irq 12
found->	vendor=0x151f, dev=0x0000, revid=0x00
	bus=0, slot=20, func=0
	class=07-80-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0001, statreg=0x0200, cachelnsz=0 (dwords)
	lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns)
	intpin=a, irq=12
agp0: <VIA Generic host to PCI bridge> mem 0xe6000000-0xe63fffff at device 0.0 on pci0
agp0: Reserved 0x400000 bytes for rid 0x10 type 3 at 0xe6000000
agp0: allocating GATT for aperture of size 228M
pcib1: <ACPI PCI-PCI bridge> at device 1.0 on pci0
pcib1:   secondary bus     1
pcib1:   subordinate bus   1
pcib1:   I/O decode        0xf000-0xfff
pcib1:   memory decode     0xe4000000-0xe5ffffff
pcib1:   prefetched decode 0xe0000000-0xe3ffffff
ACPI PCI link initial configuration:
\\_SB_.PCI0.LNKA irq*11: [ 1  3  4  5  6  7 10 11 12 14 15] 11+ low,level,sharable 1.0.0
\\_SB_.PCI0.LNKB irq*12: [ 1  3  4  5  6  7 10 11 12 14 15] 12+ low,level,sharable 1.0.1
\\_SB_.PCI0.LNKC irq* 7: [ 1  3  4  5  6  7 10 11 12 14 15]  7+ low,level,sharable 1.0.2
\\_SB_.PCI0.LNKD irq*15: [ 1  3  4  5  6  7 10 11 12 14 15] 15+ low,level,sharable 1.0.3
pci1: <ACPI PCI bus> on pcib1
pci1: physical bus=1
	map[10]: type 3, range 32, base e0000000, size 26, enabled
pcib1: device (null) requested decoded memory range 0xe0000000-0xe3ffffff
	map[14]: type 1, range 32, base e4000000, size 24, enabled
pcib1: device (null) requested decoded memory range 0xe4000000-0xe4ffffff
pcib1: matched entry for 1.0.INTA (src \\_SB_.PCI0.LNKA)
pcib1: slot 0 INTA is already routed to irq 11
found->	vendor=0x1106, dev=0x3122, revid=0x03
	bus=1, slot=0, func=0
	class=03-00-00, hdrtype=0x00, mfdev=0
	cmdreg=0x0007, statreg=0x0230, cachelnsz=0 (dwords)
	lattimer=0x20 (960 ns), mingnt=0x02 (500 ns), maxlat=0x00 (0 ns)
	intpin=a, irq=11
	powerspec 2  supports D0 D1 D2 D3  current D0
pci1: <display, VGA> at device 0.0 (no driver attached)
vr0: <VIA VT6105 Rhine III 10/100BaseTX> port 0xd000-0xd0ff mem 0xe6400000-0xe64000ff irq 15 at device 15.0 on pci0
vr0: Reserved 0x100 bytes for rid 0x10 type 4 at 0xd000
miibus0: <MII bus> on vr0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0: OUI 0x004063, model 0x0034, rev. 9
ukphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
vr0: bpf attached
vr0: Ethernet address: 00:40:63:c9:fa:99
vr0: [MPSAFE]
uhci0: <VIA 83C572 USB controller> port 0xd400-0xd41f irq 11 at device 16.0 on pci0
uhci0: Reserved 0x20 bytes for rid 0x20 type 4 at 0xd400
uhci0: [GIANT-LOCKED]
usb0: <VIA 83C572 USB controller> on uhci0
usb0: USB revision 1.0
uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1: <VIA 83C572 USB controller> port 0xd800-0xd81f irq 12 at device 16.1 on pci0
uhci1: Reserved 0x20 bytes for rid 0x20 type 4 at 0xd800
uhci1: [GIANT-LOCKED]
usb1: <VIA 83C572 USB controller> on uhci1
usb1: USB revision 1.0
uhub1: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhid0: APC Back-UPS ES 500 FW:801.e5.D USB FW:e5, rev 1.10/1.06, addr 2, iclass 3/0
uhci2: <VIA 83C572 USB controller> port 0xdc00-0xdc1f irq 7 at device 16.2 on pci0
uhci2: Reserved 0x20 bytes for rid 0x20 type 4 at 0xdc00
uhci2: [GIANT-LOCKED]
usb2: <VIA 83C572 USB controller> on uhci2
usb2: USB revision 1.0
uhub2: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
pci0: <serial bus, USB> at device 16.3 (no driver attached)
isab0: <PCI-ISA bridge> at device 17.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <VIA 8235 UDMA133 controller> port 0xe000-0xe00f,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 17.1 on pci0
atapci0: Reserved 0x10 bytes for rid 0x20 type 4 at 0xe000
ata0: channel #0 on atapci0
atapci0: Reserved 0x8 bytes for rid 0x10 type 4 at 0x1f0
atapci0: Reserved 0x1 bytes for rid 0x14 type 4 at 0x3f6
ata0: reset tp1 mask=03 ostat0=50 ostat1=00
ata0-master: stat=0x90 err=0x90 lsb=0x90 msb=0x90
ata0-master: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata0-slave:  stat=0x00 err=0x01 lsb=0x00 msb=0x00
ata0: reset tp2 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
ata0: [MPSAFE]
ata1: channel #1 on atapci0
atapci0: Reserved 0x8 bytes for rid 0x18 type 4 at 0x170
atapci0: Reserved 0x1 bytes for rid 0x1c type 4 at 0x376
ata1: reset tp1 mask=00 ostat0=ff ostat1=ff
ata1: [MPSAFE]
vr1: <VIA VT6102 Rhine II 10/100BaseTX> port 0xe400-0xe4ff mem 0xe6402000-0xe64020ff irq 11 at device 18.0 on pci0
vr1: Reserved 0x100 bytes for rid 0x10 type 4 at 0xe400
miibus1: <MII bus> on vr1
ukphy1: <Generic IEEE 802.3u media interface> on miibus1
ukphy1: OUI 0x004063, model 0x0032, rev. 5
ukphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
vr1: bpf attached
vr1: Ethernet address: 00:40:63:c9:fa:98
vr1: [MPSAFE]
sio0: Reserved 0x8 bytes for rid 0x10 type 4 at 0xe800
sio0: irq maps: 0x1 0x1001 0x1 0x1
sio0: <SmartLink 5634PCV SurfRider> port 0xe800-0xe807 irq 12 at device 20.0 on pci0
sio0: moving to sio4
sio4: type 16550A
fdc0: <floppy drive controller> port 0x3f7,0x3f0-0x3f5 irq 6 drq 2 on acpi0
sio0: irq maps: 0x1 0x11 0x1 0x1
can't re-use a leaf (%desc)!
can't re-use a leaf (%driver)!
can't re-use a leaf (%location)!
can't re-use a leaf (%pnpinfo)!
can't re-use a leaf (%parent)!
sio0 port 0x3f8-0x3ff irq 4 on acpi0
sio0: type 16550A, console
sio1: irq maps: 0x1 0x9 0x1 0x1
sio1 port 0x2f8-0x2ff irq 3 on acpi0
sio1: type 16550A
unknown: not probed (disabled)
unknown: not probed (disabled)
unknown: not probed (disabled)
atkbdc0: <Keyboard controller (i8042)> port 0x64,0x60 irq 1 on acpi0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
atkbd: the current kbd controller command byte 0067
atkbd: keyboard ID 0x41ab (2)
kbd0 at atkbd0
kbd0: atkbd0, AT 101/102 (2), config:0x0, flags:0x1d0000
atkbd0: [GIANT-LOCKED]
psm0: unable to allocate IRQ
unknown: not probed (disabled)
sio2: irq maps: 0x1 0x21 0x1 0x1
sio2 port 0x3e8-0x3ef irq 5 on acpi0
sio2: type 16550A
sio3: irq maps: 0x1 0x401 0x1 0x1
sio3 port 0x2e8-0x2ef irq 10 on acpi0
sio3: type 16550A
unknown: not probed (disabled)
unknown: not probed (disabled)
unknown: not probed (disabled)
unknown: not probed (disabled)
unknown: not probed (disabled)
ata: ata0 already exists; skipping it
ata: ata1 already exists; skipping it
atkbdc: atkbdc0 already exists; skipping it
fdc: fdc0 already exists; skipping it
sc: sc0 already exists; skipping it
sio: sio0 already exists; skipping it
sio: sio1 already exists; skipping it
sio: sio2 already exists; skipping it
sio: sio3 already exists; skipping it
vga: vga0 already exists; skipping it
Trying Read_Port at 203
Trying Read_Port at 243
Trying Read_Port at 283
Trying Read_Port at 2c3
Trying Read_Port at 303
Trying Read_Port at 343
Trying Read_Port at 383
Trying Read_Port at 3c3
isa_probe_children: disabling PnP devices
isa_probe_children: probing non-PnP devices
orm0: <ISA Option ROM> at iomem 0xc0000-0xcdfff on isa0
sc0: <System console> on isa0
sc0: VGA <16 virtual consoles, flags=0x0>
sc0: fb0, kbd0, terminal emulator: sc (syscons terminal)
vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
fb0: vga0, vga, type:VGA (5), flags:0x7007f
fb0: port:0x3c0-0x3df, crtc:0x3d4, mem:0xa0000 0x20000
fb0: init mode:24, bios mode:3, current mode:24
fb0: window:0xc00b8000 size:32k gran:32k, buf:0 size:32k
VGA parameters upon power-up
50 18 10 00 00 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0e 0f 00 00 07 80 9c ee 8f 28 1f 96 
b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 
3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff 
VGA parameters in BIOS for mode 24
50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0d 0e 00 00 00 00 9c 6e 8f 28 1f 96 
b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 
3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff 
EGA/VGA parameters to be used for mode 24
50 18 10 00 00 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0e 0f 00 00 07 80 9c ee 8f 28 1f 96 
b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 
3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff 
adv0: not probed (disabled)
aha0: not probed (disabled)
aic0: not probed (disabled)
bt0: not probed (disabled)
cs0: not probed (disabled)
ed0: not probed (disabled)
fe0: not probed (disabled)
ie0: not probed (disabled)
lnc0: not probed (disabled)
pcic0 failed to probe at port 0x3e0 iomem 0xd0000 on isa0
pcic1: not probed (disabled)
ppc0 failed to probe at irq 7 on isa0
sn0: not probed (disabled)
vt0: not probed (disabled)
isa_probe_children: probing PnP devices
Device configuration finished.
procfs registered
Timecounter "TSC" frequency 1002280114 Hz quality 800
Timecounters tick every 10.000 msec
ipfw2 initialized, divert disabled, rule-based forwarding disabled, default to accept, logging limited to 2100 packets/entry by default
lo0: bpf attached
cpu0: set speed to 100.0%
acpi_cpu: throttling enabled, 2 steps (100% to 50.0%), currently 100.0%
ata0-master: pio=0x0c wdma=0x22 udma=0x45 cable=80pin
ata0-master: setting PIO4 on VIA 8235 chip
ata0-master: setting UDMA100 on VIA 8235 chip
ad0: <ST340014A/3.06> ATA-6 disk at ata0-master
ad0: 38166MB (78165360 sectors), 77545 C, 16 H, 63 S, 512 B
ad0: 16 secs/int, 1 depth queue, UDMA100
GEOM: new disk ad0
ar: FreeBSD check1 failed
[0] f:80 typ:165 s(CHS):0/1/1 e(CHS):1023/254/63 s:63 l:78156162
[1] f:00 typ:0 s(CHS):0/0/0 e(CHS):0/0/0 s:0 l:0
[2] f:00 typ:0 s(CHS):0/0/0 e(CHS):0/0/0 s:0 l:0
[3] f:00 typ:0 s(CHS):0/0/0 e(CHS):0/0/0 s:0 l:0
GEOM: Configure ad0s1, start 32256 length 40015954944 end 40015987199
GEOM: Configure ad0s1a, start 0 length 524288000 end 524287999
GEOM: Configure ad0s1b, start 524288000 length 1073741824 end 1598029823
GEOM: Configure ad0s1c, start 0 length 40015954944 end 40015954943
GEOM: Configure ad0s1d, start 1598029824 length 2147483648 end 3745513471
GEOM: Configure ad0s1e, start 3745513472 length 21474836480 end 25220349951
GEOM: Configure ad0s1f, start 25220349952 length 14795604992 end 40015954943
Mounting root from ufs:/dev/ad0s1a
start_init: trying /sbin/init
-------------- next part --------------
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20040527
 *
 * Disassembly of /tmp/acpidump.5bh0ZF, Wed Sep  8 19:16:35 2004
 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "VT9174", "AWRDACPI", 4096)
{
    Scope (\_PR)
    {
        Processor (\_PR.CPU0, 0x00, 0x00000410, 0x06) {}
    }

    Name (U3DX, 0x00)
    Name (U4DX, 0x00)
    Name (U5DX, 0x00)
    Name (U6DX, 0x00)
    Name (\_S0, Package (0x04)
    {
        0x00, 
        0x00, 
        0x00, 
        0x00
    })
    Name (\_S1, Package (0x04)
    {
        0x04, 
        0x04, 
        0x04, 
        0x04
    })
    Name (\SS3, Package (0x04)
    {
        0x01, 
        0x01, 
        0x01, 
        0x01
    })
    Name (\_S4, Package (0x04)
    {
        0x02, 
        0x02, 
        0x02, 
        0x02
    })
    Name (\_S5, Package (0x04)
    {
        0x02, 
        0x02, 
        0x02, 
        0x02
    })
    OperationRegion (\DEBG, SystemIO, 0x80, 0x01)
    Field (\DEBG, ByteAcc, NoLock, Preserve)
    {
        DBG1,   8
    }

    OperationRegion (EXTM, SystemMemory, 0x000FF830, 0x10)
    Field (EXTM, WordAcc, NoLock, Preserve)
    {
        ROM1,   16, 
        RMS1,   16, 
        ROM2,   16, 
        RMS2,   16, 
        ROM3,   16, 
        RMS3,   16, 
        AMEM,   32
    }

    OperationRegion (\GPST, SystemIO, 0x0420, 0x02)
    Field (\GPST, ByteAcc, NoLock, Preserve)
    {
        GS00,   1, 
        GS01,   1, 
        GS02,   1, 
        GS03,   1, 
        GS04,   1, 
        GS05,   1, 
        GS06,   1, 
        GS07,   1, 
        GS08,   1, 
        GS09,   1, 
        GS10,   1, 
        GS11,   1, 
        GS12,   1, 
        GS13,   1, 
        GS14,   1, 
        GS15,   1
    }

    OperationRegion (ELCR, SystemIO, 0x04D0, 0x02)
    Field (ELCR, ByteAcc, NoLock, Preserve)
    {
        ELC1,   8, 
        ELC2,   8
    }

    OperationRegion (\PMS, SystemIO, 0x0400, 0x02)
    Field (\PMS, ByteAcc, NoLock, Preserve)
    {
        AITS,   1, 
        Offset (0x01), 
        PBTS,   1, 
            ,   6, 
        WAKE,   1
    }

    OperationRegion (\GPSE, SystemIO, 0x0424, 0x02)
    Field (\GPSE, ByteAcc, NoLock, Preserve)
    {
        GPS0,   1, 
        GPS1,   1, 
        KBCE,   1, 
        LANE,   1, 
        EXTE,   1, 
        PME,    1, 
        Offset (0x01), 
        RING,   1, 
            ,   5, 
        USBE,   1, 
        Offset (0x02)
    }

    OperationRegion (\GLOS, SystemIO, 0x0428, 0x02)
    Field (\GLOS, ByteAcc, NoLock, Preserve)
    {
            ,   6, 
        SSMI,   1, 
        PRII,   1, 
            ,   2, 
        SLPE,   1, 
        SIRS,   1, 
        Offset (0x02)
    }

    OperationRegion (\WIRQ, SystemIO, 0x042A, 0x01)
    Field (\WIRQ, ByteAcc, NoLock, Preserve)
    {
        IRQR,   8
    }

    OperationRegion (\SMIC, SystemIO, 0x042F, 0x01)
    Field (\SMIC, ByteAcc, NoLock, Preserve)
    {
        SCP,    8
    }

    OperationRegion (\STUS, SystemIO, 0x0430, 0x01)
    Field (\STUS, ByteAcc, NoLock, Preserve)
    {
        PADS,   8
    }

    OperationRegion (GPOB, SystemIO, 0x044C, 0x04)
    Field (GPOB, ByteAcc, NoLock, Preserve)
    {
        GP00,   1, 
        GP01,   1, 
        GP02,   1, 
        GP03,   1, 
        GP04,   1, 
        GP05,   1, 
        GP06,   1, 
        GP07,   1, 
        GP08,   1, 
        GP09,   1, 
        GP10,   1, 
        GP11,   1, 
        GP12,   1, 
        GP13,   1, 
        GP14,   1, 
        GP15,   1, 
        GP16,   1, 
        GP17,   1, 
        GP18,   1, 
        GP19,   1, 
        GP20,   1, 
        GP21,   1, 
        GP22,   1, 
        GP23,   1, 
        GP24,   1, 
        GP25,   1, 
        GP26,   1, 
        GP27,   1, 
        GP28,   1, 
        GP29,   1, 
        GP30,   1, 
        GPXX,   1
    }

    Name (OSFX, 0x01)
    Name (OSFL, 0x01)
    Method (STRC, 2, NotSerialized)
    {
        If (LNot (LEqual (SizeOf (Arg0), SizeOf (Arg1))))
        {
            Return (0x00)
        }

        Add (SizeOf (Arg0), 0x01, Local0)
        Name (BUF0, Buffer (Local0) {})
        Name (BUF1, Buffer (Local0) {})
        Store (Arg0, BUF0)
        Store (Arg1, BUF1)
        While (Local0)
        {
            Decrement (Local0)
            If (LNot (LEqual (DerefOf (Index (BUF0, Local0)), DerefOf (Index (BUF1, Local0)))))
            {
                Return (Zero)
            }
        }

        Return (One)
    }

    OperationRegion (RTCM, SystemIO, 0x70, 0x02)
    Field (RTCM, ByteAcc, NoLock, Preserve)
    {
        CMIN,   8, 
        CMDA,   8
    }

    IndexField (CMIN, CMDA, ByteAcc, NoLock, Preserve)
    {
        Offset (0x0F), 
        SHUT,   8
    }

    OperationRegion (INFO, SystemMemory, 0x000FF840, 0x01)
    Field (INFO, ByteAcc, NoLock, Preserve)
    {
        KBDI,   1, 
        RTCW,   1, 
        PS2F,   1, 
        IRFL,   2, 
        DISE,   1, 
        SSHU,   1
    }

    OperationRegion (BEEP, SystemIO, 0x61, 0x01)
    Field (BEEP, ByteAcc, NoLock, Preserve)
    {
        S1B,    8
    }

    OperationRegion (CONT, SystemIO, 0x40, 0x04)
    Field (CONT, ByteAcc, NoLock, Preserve)
    {
        CNT0,   8, 
        CNT1,   8, 
        CNT2,   8, 
        CTRL,   8
    }

    Method (SPKR, 1, NotSerialized)
    {
        Store (S1B, Local0)
        Store (0xB6, CTRL)
        Store (0x55, CNT2)
        Store (0x03, CNT2)
        Store (Arg0, Local2)
        While (LGreater (Local2, 0x00))
        {
            Or (S1B, 0x03, S1B)
            Store (0x5FFF, Local3)
            While (LGreater (Local3, 0x00))
            {
                Decrement (Local3)
            }

            And (S1B, 0xFC, S1B)
            Store (0x0EFF, Local3)
            While (LGreater (Local3, 0x00))
            {
                Decrement (Local3)
            }

            Decrement (Local2)
        }

        Store (Local0, S1B)
    }

    Method (\_PTS, 1, NotSerialized)
    {
        Or (Arg0, 0xF0, Local0)
        Store (Local0, DBG1)
        \_SB.PCI0.OSTP ()
        If (LEqual (Arg0, 0x01))
        {
            If (LNot (LEqual (OSFL, 0x00)))
            {
                Store (\_SB.PCI0.USB3.ECDX, U3DX)
                Store (\_SB.PCI0.USB4.ECDX, U4DX)
                Store (\_SB.PCI0.USB5.ECDX, U5DX)
                Store (0x02, \_SB.PCI0.USB3.ECDX)
                Store (0x02, \_SB.PCI0.USB4.ECDX)
                Store (0x02, \_SB.PCI0.USB5.ECDX)
            }

            Store (0x03, \_SB.PCI0.USB6.ECDX)
            While (PRII)
            {
                Store (One, PRII)
            }

            While (LNot (LEqual (PADS, 0x00)))
            {
                Store (PADS, PADS)
            }

            Or (IRQR, 0x80, IRQR)
        }

        If (LEqual (Arg0, 0x03))
        {
            Or (Arg0, 0x50, Local1)
            Store (Local1, SCP)
        }

        If (LEqual (Arg0, 0x04))
        {
            Sleep (0x64)
            Store (One, LANE)
            Or (Arg0, 0x50, Local2)
            Store (Local2, SCP)
        }

        If (LEqual (Arg0, 0x05))
        {
            Store (One, LANE)
        }

        If (LEqual (Arg0, 0x01)) {}
        If (LEqual (Arg0, 0x03)) {}
        If (LEqual (Arg0, 0x04)) {}
        If (LEqual (Arg0, 0x05)) {}
    }

    Method (\_WAK, 1, NotSerialized)
    {
        Store (0xFF, DBG1)
        If (LEqual (Arg0, 0x01)) {}
        If (LEqual (Arg0, 0x03)) {}
        If (LEqual (Arg0, 0x01))
        {
            If (LNot (LEqual (OSFL, 0x00)))
            {
                Store (U3DX, \_SB.PCI0.USB3.ECDX)
                Store (U4DX, \_SB.PCI0.USB4.ECDX)
                Store (U5DX, \_SB.PCI0.USB5.ECDX)
            }

            Store (U6DX, \_SB.PCI0.USB6.ECDX)
            And (IRQR, 0x7F, IRQR)
            While (PRII)
            {
                Store (One, PRII)
            }

            While (LNot (LEqual (PADS, 0x00)))
            {
                Store (PADS, PADS)
            }
        }

        If (OSFL)
        {
            Notify (\_SB.PWRB, 0x02)
        }
        Else
        {
            If (LEqual (RTCW, 0x00))
            {
                Notify (\_SB.PWRB, 0x02)
            }
        }
    }

    Scope (\_SI)
    {
        Method (_MSG, 1, NotSerialized)
        {
            Store (Local0, Local0)
        }

        Method (_SST, 1, NotSerialized)
        {
            If (LEqual (Arg0, 0x03)) {}
            If (LEqual (Arg0, 0x01)) {}
            If (LEqual (Arg0, Zero)) {}
            Store (Local0, Local0)
        }
    }

    Scope (\_GPE)
    {
        Method (_L03, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.LAN0, 0x02)
        }

        Method (_L0E, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.USB0, 0x02)
            Notify (\_SB.PCI0.USB3, 0x02)
            Notify (\_SB.PCI0.USB4, 0x02)
            Notify (\_SB.PCI0.USB5, 0x02)
            Notify (\_SB.PCI0.USB6, 0x02)
        }

        Method (_L05, 0, NotSerialized)
        {
            Store (0x01, \_SB.PCI0.CRD0.PMST)
            Store (0x01, \_SB.PCI0.CRD1.PMST)
            Notify (\_SB.PCI0, 0x02)
        }

        Method (_L08, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.UAR1, 0x02)
        }

        Method (_L0D, 0, NotSerialized)
        {
            Notify (\_SB.PCI0.AC97, 0x02)
        }
    }

    Scope (\_SB)
    {
        Device (PWRB)
        {
            Name (_HID, EisaId ("PNP0C0C"))
            Method (_STA, 0, NotSerialized)
            {
                Return (0x0B)
            }
        }

        Device (MEM)
        {
            Name (_HID, EisaId ("PNP0C01"))
            Method (_CRS, 0, NotSerialized)
            {
                Name (BUF0, ResourceTemplate ()
                {
                    Memory32Fixed (ReadWrite, 0x000F0000, 0x00004000)
                    Memory32Fixed (ReadWrite, 0x000F4000, 0x00004000)
                    Memory32Fixed (ReadWrite, 0x000F8000, 0x00004000)
                    Memory32Fixed (ReadWrite, 0x000FC000, 0x00004000)
                    Memory32Fixed (ReadWrite, 0x00000000, 0x00010000)
                    Memory32Fixed (ReadWrite, 0xFFFF0000, 0x00010000)
                    Memory32Fixed (ReadWrite, 0x00000000, 0x000A0000)
                    Memory32Fixed (ReadWrite, 0x00100000, 0x00000000)
                    Memory32Fixed (ReadWrite, 0xFEE00000, 0x00001000)
                    Memory32Fixed (ReadWrite, 0xFFF80000, 0x00070000)
                })
                CreateDWordField (BUF0, 0x34, ACMM)
                CreateDWordField (BUF0, 0x04, RMA1)
                CreateDWordField (BUF0, 0x08, RSS1)
                CreateDWordField (BUF0, 0x10, RMA2)
                CreateDWordField (BUF0, 0x14, RSS2)
                CreateDWordField (BUF0, 0x1C, RMA3)
                CreateDWordField (BUF0, 0x20, RSS3)
                CreateDWordField (BUF0, 0x28, RMA4)
                CreateDWordField (BUF0, 0x2C, RSS4)
                CreateDWordField (BUF0, 0x5C, EXTM)
                Subtract (AMEM, 0x00100000, EXTM)
                If (LNot (LEqual (ROM1, Zero)))
                {
                    Store (RMA1, RMA2)
                    ShiftLeft (ROM1, 0x08, Local0)
                    Store (Local0, RMA1)
                    ShiftLeft (RMS1, 0x08, Local0)
                    Store (Local0, RSS1)
                    Store (0x8000, RSS2)
                }

                If (LNot (LEqual (ROM2, Zero)))
                {
                    Store (RMA2, RMA3)
                    ShiftLeft (ROM2, 0x08, Local0)
                    Store (Local0, RMA2)
                    ShiftLeft (RMS2, 0x08, Local0)
                    Store (Local0, RSS2)
                    Store (0xC000, RSS3)
                }

                If (LNot (LEqual (ROM3, Zero)))
                {
                    Store (RMA3, RMA4)
                    ShiftLeft (ROM3, 0x08, Local0)
                    Store (Local0, RMA3)
                    ShiftLeft (RMS3, 0x08, Local0)
                    Store (Local0, RSS3)
                    Store (0x00010000, RSS4)
                }

                Store (AMEM, ACMM)
                Return (BUF0)
            }
        }

        Device (PCI0)
        {
            Name (_HID, EisaId ("PNP0A03"))
            Name (_ADR, 0x00)
            Name (_UID, 0x00)
            Name (_BBN, 0x00)
            Method (SS3D, 0, NotSerialized)
            {
                If (LEqual (OSFL, 0x02))
                {
                    Return (0x02)
                }
                Else
                {
                    Return (0x03)
                }
            }

            OperationRegion (GART, PCI_Config, 0x80, 0x01)
            Scope (\)
            {
                Field (\_SB.PCI0.GART, ByteAcc, NoLock, Preserve)
                {
                    GAR1,   8
                }
            }

            OperationRegion (GARA, PCI_Config, 0x88, 0x01)
            Scope (\)
            {
                Field (\_SB.PCI0.GARA, ByteAcc, NoLock, Preserve)
                {
                    GAR2,   8
                }
            }

            Method (_STA, 0, NotSerialized)
            {
                Return (0x0F)
            }

            Name (_PRW, Package (0x02)
            {
                0x05, 
                0x05
            })
            Method (_CRS, 0, NotSerialized)
            {
                Name (BUF0, ResourceTemplate ()
                {
                    WordBusNumber (ResourceConsumer, MinNotFixed, MaxNotFixed, PosDecode,
                        0x0000,
                        0x0000,
                        0x00FF,
                        0x0000,
                        0x0100)
                    IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,
                        0x0000,
                        0x0CF7,
                        0x0000,
                        0x0CF8)
                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange,
                        0x0000,
                        0x0D00,
                        0xFFFF,
                        0x0000,
                        0xF300)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,
                        0x000A0000,
                        0x000BFFFF,
                        0x00000000,
                        0x00020000)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,
                        0x000C0000,
                        0x000DFFFF,
                        0x00000000,
                        0x00020000)
                    DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite,
                        0x00000000,
                        0x00100000,
                        0xFFEFFFFF,
                        0x00000000,
                        0xFFF00000)
                })
                CreateDWordField (BUF0, 0x76, TCMM)
                CreateDWordField (BUF0, 0x82, TOMM)
                Add (AMEM, 0x00010000, TCMM)
                Subtract (0xFFF00000, TCMM, TOMM)
                Return (BUF0)
            }

            Name (PICM, Package (0x13)
            {
                Package (0x04)
                {
                    0x0014FFFF, 
                    0x00, 
                    \_SB.PCI0.LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0014FFFF, 
                    0x01, 
                    \_SB.PCI0.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0014FFFF, 
                    0x02, 
                    \_SB.PCI0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0014FFFF, 
                    0x03, 
                    \_SB.PCI0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0013FFFF, 
                    0x00, 
                    \_SB.PCI0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0013FFFF, 
                    0x01, 
                    \_SB.PCI0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0013FFFF, 
                    0x02, 
                    \_SB.PCI0.LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0013FFFF, 
                    0x03, 
                    \_SB.PCI0.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0010FFFF, 
                    0x00, 
                    \_SB.PCI0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0010FFFF, 
                    0x01, 
                    \_SB.PCI0.LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0010FFFF, 
                    0x02, 
                    \_SB.PCI0.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0010FFFF, 
                    0x03, 
                    \_SB.PCI0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0011FFFF, 
                    0x00, 
                    \_SB.PCI0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0011FFFF, 
                    0x02, 
                    \_SB.PCI0.LNKC, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x0012FFFF, 
                    0x00, 
                    \_SB.PCI0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000FFFFF, 
                    0x00, 
                    \_SB.PCI0.LNKD, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000FFFFF, 
                    0x01, 
                    \_SB.PCI0.LNKA, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000FFFFF, 
                    0x02, 
                    \_SB.PCI0.LNKB, 
                    0x00
                }, 

                Package (0x04)
                {
                    0x000FFFFF, 
                    0x03, 
                    \_SB.PCI0.LNKC, 
                    0x00
                }
            })
            Method (_PRT, 0, NotSerialized)
            {
                Return (PICM)
            }

            Device (AGPB)
            {
                Name (_ADR, 0x00010000)
                Name (PICM, Package (0x04)
                {
                    Package (0x04)
                    {
                        0xFFFF, 
                        0x00, 
                        \_SB.PCI0.LNKA, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x01, 
                        \_SB.PCI0.LNKB, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x02, 
                        \_SB.PCI0.LNKC, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0xFFFF, 
                        0x03, 
                        \_SB.PCI0.LNKD, 
                        0x00
                    }
                })
                Method (_PRT, 0, NotSerialized)
                {
                    Return (PICM)
                }
            }

            Device (PMIO)
            {
                Name (_HID, EisaId ("PNP0C02"))
                Name (_UID, 0x02)
                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0400, 0x0400, 0x01, 0x80)
                        IO (Decode16, 0x0500, 0x0500, 0x01, 0x10)
                    })
                    Return (BUF0)
                }
            }

            Device (VT86)
            {
                Name (_ADR, 0x00110000)
                OperationRegion (VTSB, PCI_Config, 0x00, 0xE8)
                Scope (\)
                {
                    Field (\_SB.PCI0.VT86.VTSB, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x02), 
                        DEID,   16, 
                        Offset (0x52), 
                        SIRQ,   8, 
                        Offset (0x55), 
                        PIRA,   8, 
                        PIBC,   8, 
                        PIRD,   8, 
                        Offset (0x94), 
                        PWC1,   8
                    }
                }
            }

            Device (IDE0)
            {
                Name (_ADR, 0x00110001)
                Name (REGF, 0x01)
                Method (_REG, 2, NotSerialized)
                {
                    If (LEqual (Arg0, 0x02))
                    {
                        Store (Arg1, REGF)
                    }
                }

                OperationRegion (VIDE, PCI_Config, 0x00, 0xC2)
                Scope (\)
                {
                    Field (\_SB.PCI0.IDE0.VIDE, ByteAcc, NoLock, Preserve)
                    {
                        Offset (0x09), 
                        ENAT,   4, 
                        Offset (0x3C), 
                        IDEI,   4
                    }
                }

                Method (A133, 0, NotSerialized)
                {
                    If (LNot (LEqual (DEID, 0x3177)))
                    {
                        If (LEqual (DEID, 0x3147))
                        {
                            Return (One)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                    Else
                    {
                        Return (One)
                    }
                }

                Name (TIM0, Package (0x0F)
                {
                    Package (0x04)
                    {
                        0x78, 
                        0xB4, 
                        0xF0, 
                        0x0258
                    }, 

                    Package (0x04)
                    {
                        0x20, 
                        0x31, 
                        0x65, 
                        0xA8
                    }, 

                    Package (0x08)
                    {
                        0x02, 
                        0x01, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00, 
                        0x00
                    }, 

                    Package (0x08)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        0x02, 
                        0x01, 
                        0x01, 
                        0x00, 
                        0x00
                    }, 

                    Package (0x06)
                    {
                        0x78, 
                        0x50, 
                        0x3C, 
                        0x2D, 
                        0x1E, 
                        0x14
                    }, 

                    Package (0x05)
                    {
                        0x02, 
                        0x01, 
                        0x00, 
                        0x00, 
                        0x00
                    }, 

                    Package (0x05)
                    {
                        0x06, 
                        0x04, 
                        0x02, 
                        0x01, 
                        0x00
                    }, 

                    Package (0x05)
                    {
                        0x00, 
                        0x00, 
                        0x00, 
                        0x01, 
                        0x01
                    }, 

                    Package (0x04)
                    {
                        0x04, 
                        0x03, 
                        0x02, 
                        0x00
                    }, 

                    Package (0x04)
                    {
                        0x02, 
                        0x01, 
                        0x00, 
                        0x00
                    }, 

                    Package (0x0B)
                    {
                        0x05, 
                        0x04, 
                        0x03, 
                        0x03, 
                        0x02, 
                        0x02, 
                        0x01, 
                        0x01, 
                        0x01, 
                        0x01, 
                        0x00
                    }, 

                    Package (0x06)
                    {
                        0x0A, 
                        0x06, 
                        0x04, 
                        0x02, 
                        0x01, 
                        0x00
                    }, 

                    Package (0x07)
                    {
                        0x78, 
                        0x50, 
                        0x3C, 
                        0x2D, 
                        0x1E, 
                        0x14, 
                        0x0F
                    }, 

                    Package (0x0F)
                    {
                        0x06, 
                        0x05, 
                        0x04, 
                        0x04, 
                        0x03, 
                        0x03, 
                        0x02, 
                        0x02, 
                        0x01, 
                        0x01, 
                        0x01, 
                        0x01, 
                        0x01, 
                        0x01, 
                        0x00
                    }, 

                    Package (0x07)
                    {
                        0x0E, 
                        0x08, 
                        0x06, 
                        0x04, 
                        0x02, 
                        0x01, 
                        0x00
                    }
                })
                Name (TMD0, Buffer (0x14) {})
                CreateDWordField (TMD0, 0x00, PIO0)
                CreateDWordField (TMD0, 0x04, DMA0)
                CreateDWordField (TMD0, 0x08, PIO1)
                CreateDWordField (TMD0, 0x0C, DMA1)
                CreateDWordField (TMD0, 0x10, CHNF)
                OperationRegion (CFG2, PCI_Config, 0x40, 0x20)
                Field (CFG2, DWordAcc, NoLock, Preserve)
                {
                    Offset (0x08), 
                    SSPT,   8, 
                    SMPT,   8, 
                    PSPT,   8, 
                    PMPT,   8, 
                    Offset (0x10), 
                    SSUT,   4, 
                    SSCT,   1, 
                    SSUE,   3, 
                    SMUT,   4, 
                    SMCT,   1, 
                    SMUE,   3, 
                    PSUT,   4, 
                    PSCT,   1, 
                    PSUE,   3, 
                    PMUT,   4, 
                    PMCT,   1, 
                    PMUE,   3
                }

                Name (GMPT, 0x00)
                Name (GMUE, 0x00)
                Name (GMUT, 0x00)
                Name (GSPT, 0x00)
                Name (GSUE, 0x00)
                Name (GSUT, 0x00)
                Name (GBCS, 0x00)
                Device (CHN0)
                {
                    Name (_ADR, 0x00)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (GTM (PMPT, PMUE, PMUT, PSPT, PSUE, PSUT))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, TMD0)
                        Store (PMPT, GMPT)
                        Store (PMUE, GMUE)
                        Store (PMUT, GMUT)
                        Store (PSPT, GSPT)
                        Store (PSUE, GSUE)
                        Store (PSUT, GSUT)
                        STM ()
                        Store (GMPT, PMPT)
                        Store (GMUE, PMUE)
                        Store (GMUT, PMUT)
                        Store (GSPT, PSPT)
                        Store (GSUE, PSUE)
                        Store (GSUT, PSUT)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x00, PMUE, PMUT, PMPT))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x01, PSUE, PSUT, PSPT))
                        }
                    }
                }

                Device (CHN1)
                {
                    Name (_ADR, 0x01)
                    Method (_GTM, 0, NotSerialized)
                    {
                        Return (GTM (SMPT, SMUE, SMUT, SSPT, SSUE, SSUT))
                    }

                    Method (_STM, 3, NotSerialized)
                    {
                        Store (Arg0, TMD0)
                        Store (SMPT, GMPT)
                        Store (SMUE, GMUE)
                        Store (SMUT, GMUT)
                        Store (SSPT, GSPT)
                        Store (SSUE, GSUE)
                        Store (SSUT, GSUT)
                        STM ()
                        Store (GMPT, SMPT)
                        Store (GMUE, SMUE)
                        Store (GMUT, SMUT)
                        Store (GSPT, SSPT)
                        Store (GSUE, SSUE)
                        Store (GSUT, SSUT)
                    }

                    Device (DRV0)
                    {
                        Name (_ADR, 0x00)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x02, SMUE, SMUT, SMPT))
                        }
                    }

                    Device (DRV1)
                    {
                        Name (_ADR, 0x01)
                        Method (_GTF, 0, NotSerialized)
                        {
                            Return (GTF (0x03, SSUE, SSUT, SSPT))
                        }
                    }
                }

                Method (GTF, 4, Serialized)
                {
                    Store (Buffer (0x07)
                        {
                            0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                        }, Local1)
                    Store (Buffer (0x07)
                        {
                            0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF
                        }, Local2)
                    CreateByteField (Local1, 0x01, MODE)
                    CreateByteField (Local2, 0x01, UMOD)
                    CreateByteField (Local1, 0x05, PCHA)
                    CreateByteField (Local2, 0x05, UCHA)
                    And (Arg0, 0x03, Local3)
                    If (LEqual (And (Local3, 0x01), 0x01))
                    {
                        Store (0xB0, PCHA)
                        Store (0xB0, UCHA)
                    }

                    If (Arg1)
                    {
                        If (A133 ())
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0D)), Arg2)), UMOD)
                        }
                        Else
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0A)), Arg2)), UMOD)
                        }

                        Or (UMOD, 0x40, UMOD)
                    }
                    Else
                    {
                        Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg3, MTR, 0x00, 0x00), Local0)
                        Or (0x20, DerefOf (Index (DerefOf (Index (TIM0, 0x09)), Local0)), UMOD)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg3, MTR, 0x00, 0x00), Local0)
                    Or (0x08, DerefOf (Index (DerefOf (Index (TIM0, 0x08)), Local0)), MODE)
                    Concatenate (Local1, Local2, Local6)
                    Return (Local6)
                }

                Method (GTM, 6, Serialized)
                {
                    Store (Ones, PIO0)
                    Store (Ones, PIO1)
                    Store (Ones, DMA0)
                    Store (Ones, DMA1)
                    Store (0x10, CHNF)
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg0, MTR, 0x00, 0x00), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x00)), Local6)), Local7)
                    Store (Local7, DMA0)
                    Store (Local7, PIO0)
                    Store (Match (DerefOf (Index (TIM0, 0x01)), MEQ, Arg3, MTR, 0x00, 0x00), Local6)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x00)), Local6)), Local7)
                    Store (Local7, DMA1)
                    Store (Local7, PIO1)
                    If (Arg1)
                    {
                        If (A133 ())
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0D)), Arg2)), Local5)
                        }
                        Else
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0A)), Arg2)), Local5)
                        }

                        If (A133 ())
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0C)), Local5)), DMA0)
                        }
                        Else
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local5)), DMA0)
                        }

                        Or (CHNF, 0x01, CHNF)
                    }

                    If (Arg4)
                    {
                        If (A133 ())
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0D)), Arg5)), Local5)
                        }
                        Else
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0A)), Arg5)), Local5)
                        }

                        If (A133 ())
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0C)), Local5)), DMA1)
                        }
                        Else
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x04)), Local5)), DMA1)
                        }

                        Or (CHNF, 0x04, CHNF)
                    }

                    Return (TMD0)
                }

                Method (STM, 0, Serialized)
                {
                    If (REGF) {}
                    Else
                    {
                        Return (TMD0)
                    }

                    Store (0x00, GMUE)
                    Store (0x00, GSUE)
                    Store (0x07, GMUT)
                    Store (0x07, GSUT)
                    If (And (CHNF, 0x01))
                    {
                        If (A133 ())
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x0C)), MLE, DMA0, MTR, 0x00, 0x00), Local0)
                        }
                        Else
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x04)), MLE, DMA0, MTR, 0x00, 0x00), Local0)
                        }

                        If (A133 ())
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0E)), Local0)), GMUT)
                        }
                        Else
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0B)), Local0)), GMUT)
                        }

                        Or (GMUE, 0x07, GMUE)
                    }
                    Else
                    {
                        If (Or (LEqual (PIO0, Ones), LEqual (PIO0, 0x00)))
                        {
                            If (And (LLess (DMA0, Ones), LGreater (DMA0, 0x00)))
                            {
                                Store (DMA0, PIO0)
                            }
                        }
                    }

                    If (And (CHNF, 0x04))
                    {
                        If (A133 ())
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x0C)), MLE, DMA1, MTR, 0x00, 0x00), Local0)
                        }
                        Else
                        {
                            Store (Match (DerefOf (Index (TIM0, 0x04)), MLE, DMA1, MTR, 0x00, 0x00), Local0)
                        }

                        If (A133 ())
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0E)), Local0)), GSUT)
                        }
                        Else
                        {
                            Store (DerefOf (Index (DerefOf (Index (TIM0, 0x0B)), Local0)), GSUT)
                        }

                        Or (GSUE, 0x07, GSUE)
                    }
                    Else
                    {
                        If (Or (LEqual (PIO1, Ones), LEqual (PIO1, 0x00)))
                        {
                            If (And (LLess (DMA1, Ones), LGreater (DMA1, 0x00)))
                            {
                                Store (DMA1, PIO1)
                            }
                        }
                    }

                    And (Match (DerefOf (Index (TIM0, 0x00)), MGE, PIO0, MTR, 0x00, 0x00), 0x03, Local0)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x01)), Local0)), Local1)
                    Store (Local1, GMPT)
                    And (Match (DerefOf (Index (TIM0, 0x00)), MGE, PIO1, MTR, 0x00, 0x00), 0x03, Local0)
                    Store (DerefOf (Index (DerefOf (Index (TIM0, 0x01)), Local0)), Local1)
                    Store (Local1, GSPT)
                }
            }

            Device (USB0)
            {
                Name (_ADR, 0x00110002)
                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x05
                })
                Method (SS3D, 0, NotSerialized)
                {
                    Store (0x55, DBG1)
                    If (LEqual (OSFL, 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }
            }

            Device (USB1)
            {
                Name (_ADR, 0x00110003)
                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x05
                })
                Method (SS3D, 0, NotSerialized)
                {
                    If (LEqual (OSFL, 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }
            }

            Device (USB2)
            {
                Name (_ADR, 0x00110004)
                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x05
                })
                Method (SS3D, 0, NotSerialized)
                {
                    If (LEqual (OSFL, 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }
            }

            Device (USB3)
            {
                Name (_ADR, 0x00100000)
                OperationRegion (U2F0, PCI_Config, 0x00, 0xC2)
                Field (U2F0, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x84), 
                    ECDX,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x03
                })
                Method (SS3D, 0, NotSerialized)
                {
                    If (LEqual (OSFL, 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }
            }

            Device (USB4)
            {
                Name (_ADR, 0x00100001)
                OperationRegion (U2F1, PCI_Config, 0x00, 0xC2)
                Field (U2F1, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x84), 
                    ECDX,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x03
                })
                Method (SS3D, 0, NotSerialized)
                {
                    If (LEqual (OSFL, 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }
            }

            Device (USB5)
            {
                Name (_ADR, 0x00100002)
                OperationRegion (U2F2, PCI_Config, 0x00, 0xC2)
                Field (U2F2, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x84), 
                    ECDX,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x03
                })
                Method (SS3D, 0, NotSerialized)
                {
                    If (LEqual (OSFL, 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }
            }

            Device (USB6)
            {
                Name (_ADR, 0x00100003)
                OperationRegion (U2F3, PCI_Config, 0x00, 0xC2)
                Field (U2F3, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x84), 
                    ECDX,   2
                }

                Name (_PRW, Package (0x02)
                {
                    0x0E, 
                    0x03
                })
                Method (SS3D, 0, NotSerialized)
                {
                    If (LEqual (OSFL, 0x02))
                    {
                        Return (0x02)
                    }
                    Else
                    {
                        Return (0x03)
                    }
                }
            }

            Device (LAN0)
            {
                Name (_ADR, 0x00120000)
                Name (_PRW, Package (0x02)
                {
                    0x03, 
                    0x05
                })
            }

            Device (AC97)
            {
                Name (_ADR, 0x00110005)
                Name (_PRW, Package (0x02)
                {
                    0x0D, 
                    0x05
                })
            }

            Device (CRD0)
            {
                Name (_ADR, 0x000A0000)
                Method (_INI, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PSC, 0, NotSerialized)
                {
                    Return (PWST)
                }

                Method (_PS0, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PS2, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                OperationRegion (CCRA, PCI_Config, 0xE0, 0x04)
                Field (CCRA, DWordAcc, Lock, Preserve)
                {
                    PWST,   2, 
                    Offset (0x01), 
                        ,   7, 
                    PMST,   1
                }
            }

            Device (CRD1)
            {
                Name (_ADR, 0x000A0001)
                Method (_INI, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PSC, 0, NotSerialized)
                {
                    Return (PWST)
                }

                Method (_PS0, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PS2, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                Method (_PS3, 0, NotSerialized)
                {
                    Store (0x01, PMST)
                }

                OperationRegion (CCRB, PCI_Config, 0xE0, 0x04)
                Field (CCRB, DWordAcc, Lock, Preserve)
                {
                    PWST,   2, 
                    Offset (0x01), 
                        ,   7, 
                    PMST,   1
                }
            }

            Scope (\)
            {
                Method (DISD, 1, NotSerialized)
                {
                }

                Method (CKIO, 2, NotSerialized)
                {
                }

                Method (SLDM, 2, NotSerialized)
                {
                }
            }

            Device (LNKA)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x01)
                Method (_STA, 0, NotSerialized)
                {
                    And (PIRA, 0xF0, Local0)
                    If (LEqual (Local0, 0x00))
                    {
                        Return (0x09)
                    }
                    Else
                    {
                        Return (0x0B)
                    }
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Name (BUFB, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {1,3,4,5,6,7,10,11,12,14,15}
                    })
                    Return (BUFB)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    And (PIRA, 0x0F, PIRA)
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUFB, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {}
                    })
                    CreateByteField (BUFB, 0x01, IRB1)
                    CreateByteField (BUFB, 0x02, IRB2)
                    Store (0x00, Local3)
                    Store (0x00, Local4)
                    And (PIRA, 0xF0, Local1)
                    ShiftRight (Local1, 0x04, Local1)
                    If (LNot (LEqual (Local1, 0x00)))
                    {
                        If (LGreater (Local1, 0x07))
                        {
                            Subtract (Local1, 0x08, Local2)
                            ShiftLeft (One, Local2, Local4)
                        }
                        Else
                        {
                            If (LGreater (Local1, 0x00))
                            {
                                ShiftLeft (One, Local1, Local3)
                            }
                        }

                        Store (Local3, IRB1)
                        Store (Local4, IRB2)
                    }

                    Return (BUFB)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x01, IRB1)
                    CreateByteField (Arg0, 0x02, IRB2)
                    ShiftLeft (IRB2, 0x08, Local0)
                    Or (Local0, IRB1, Local0)
                    Store (0x00, Local1)
                    ShiftRight (Local0, 0x01, Local0)
                    While (LGreater (Local0, 0x00))
                    {
                        Increment (Local1)
                        ShiftRight (Local0, 0x01, Local0)
                    }

                    And (PIRA, 0x0F, PIRA)
                    ShiftLeft (Local1, 0x04, Local1)
                    Or (PIRA, Local1, PIRA)
                }
            }

            Device (LNKB)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x02)
                Method (_STA, 0, NotSerialized)
                {
                    And (PIBC, 0x0F, Local0)
                    If (LEqual (Local0, 0x00))
                    {
                        Return (0x09)
                    }
                    Else
                    {
                        Return (0x0B)
                    }
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Name (BUFA, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {1,3,4,5,6,7,10,11,12,14,15}
                    })
                    Return (BUFA)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    And (PIBC, 0xF0, PIBC)
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUFA, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {}
                    })
                    CreateByteField (BUFA, 0x01, IRA1)
                    CreateByteField (BUFA, 0x02, IRA2)
                    Store (0x00, Local3)
                    Store (0x00, Local4)
                    And (PIBC, 0x0F, Local1)
                    If (LNot (LEqual (Local1, 0x00)))
                    {
                        If (LGreater (Local1, 0x07))
                        {
                            Subtract (Local1, 0x08, Local2)
                            ShiftLeft (One, Local2, Local4)
                        }
                        Else
                        {
                            If (LGreater (Local1, 0x00))
                            {
                                ShiftLeft (One, Local1, Local3)
                            }
                        }

                        Store (Local3, IRA1)
                        Store (Local4, IRA2)
                    }

                    Return (BUFA)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x01, IRA1)
                    CreateByteField (Arg0, 0x02, IRA2)
                    ShiftLeft (IRA2, 0x08, Local0)
                    Or (Local0, IRA1, Local0)
                    Store (0x00, Local1)
                    ShiftRight (Local0, 0x01, Local0)
                    While (LGreater (Local0, 0x00))
                    {
                        Increment (Local1)
                        ShiftRight (Local0, 0x01, Local0)
                    }

                    And (PIBC, 0xF0, PIBC)
                    Or (PIBC, Local1, PIBC)
                }
            }

            Device (LNKC)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x03)
                Method (_STA, 0, NotSerialized)
                {
                    And (PIBC, 0xF0, Local0)
                    If (LEqual (Local0, 0x00))
                    {
                        Return (0x09)
                    }
                    Else
                    {
                        Return (0x0B)
                    }
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Name (BUFC, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {1,3,4,5,6,7,10,11,12,14,15}
                    })
                    Return (BUFC)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    And (PIBC, 0x0F, PIBC)
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUFC, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {}
                    })
                    CreateByteField (BUFC, 0x01, IRC1)
                    CreateByteField (BUFC, 0x02, IRC2)
                    Store (0x00, Local3)
                    Store (0x00, Local4)
                    And (PIBC, 0xF0, Local1)
                    ShiftRight (Local1, 0x04, Local1)
                    If (LNot (LEqual (Local1, 0x00)))
                    {
                        If (LGreater (Local1, 0x07))
                        {
                            Subtract (Local1, 0x08, Local2)
                            ShiftLeft (One, Local2, Local4)
                        }
                        Else
                        {
                            If (LGreater (Local1, 0x00))
                            {
                                ShiftLeft (One, Local1, Local3)
                            }
                        }

                        Store (Local3, IRC1)
                        Store (Local4, IRC2)
                    }

                    Return (BUFC)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x01, IRC1)
                    CreateByteField (Arg0, 0x02, IRC2)
                    ShiftLeft (IRC2, 0x08, Local0)
                    Or (Local0, IRC1, Local0)
                    Store (0x00, Local1)
                    ShiftRight (Local0, 0x01, Local0)
                    While (LGreater (Local0, 0x00))
                    {
                        Increment (Local1)
                        ShiftRight (Local0, 0x01, Local0)
                    }

                    And (PIBC, 0x0F, PIBC)
                    ShiftLeft (Local1, 0x04, Local1)
                    Or (PIBC, Local1, PIBC)
                }
            }

            Device (LNKD)
            {
                Name (_HID, EisaId ("PNP0C0F"))
                Name (_UID, 0x04)
                Method (_STA, 0, NotSerialized)
                {
                    And (PIRD, 0xF0, Local0)
                    If (LEqual (Local0, 0x00))
                    {
                        Return (0x09)
                    }
                    Else
                    {
                        Return (0x0B)
                    }
                }

                Method (_PRS, 0, NotSerialized)
                {
                    Name (BUFD, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {1,3,4,5,6,7,10,11,12,14,15}
                    })
                    Return (BUFD)
                }

                Method (_DIS, 0, NotSerialized)
                {
                    And (PIRD, 0x0F, PIRD)
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUFD, ResourceTemplate ()
                    {
                        IRQ (Level, ActiveLow, Shared) {}
                    })
                    CreateByteField (BUFD, 0x01, IRD1)
                    CreateByteField (BUFD, 0x02, IRD2)
                    Store (0x00, Local3)
                    Store (0x00, Local4)
                    And (PIRD, 0xF0, Local1)
                    ShiftRight (Local1, 0x04, Local1)
                    If (LNot (LEqual (Local1, 0x00)))
                    {
                        If (LGreater (Local1, 0x07))
                        {
                            Subtract (Local1, 0x08, Local2)
                            ShiftLeft (One, Local2, Local4)
                        }
                        Else
                        {
                            If (LGreater (Local1, 0x00))
                            {
                                ShiftLeft (One, Local1, Local3)
                            }
                        }

                        Store (Local3, IRD1)
                        Store (Local4, IRD2)
                    }

                    Return (BUFD)
                }

                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x01, IRD1)
                    CreateByteField (Arg0, 0x02, IRD2)
                    ShiftLeft (IRD2, 0x08, Local0)
                    Or (Local0, IRD1, Local0)
                    Store (0x00, Local1)
                    ShiftRight (Local0, 0x01, Local0)
                    While (LGreater (Local0, 0x00))
                    {
                        Increment (Local1)
                        ShiftRight (Local0, 0x01, Local0)
                    }

                    And (PIRD, 0x0F, PIRD)
                    ShiftLeft (Local1, 0x04, Local1)
                    Or (PIRD, Local1, PIRD)
                }
            }

            OperationRegion (\SCPP, SystemIO, 0x042F, 0x01)
            Field (\SCPP, ByteAcc, NoLock, Preserve)
            {
                SMIP,   8
            }

            Method (\_SB.PCI0._INI, 0, NotSerialized)
            {
                If (STRC (\_OS, "Microsoft Windows"))
                {
                    Store (0x56, SMIP)
                }
                Else
                {
                    If (STRC (\_OS, "Microsoft Windows NT"))
                    {
                        Store (0x58, SMIP)
                        Store (0x00, OSFL)
                    }
                    Else
                    {
                        Store (0x57, SMIP)
                        Store (0x02, OSFL)
                    }
                }
            }

            Method (OSTP, 0, NotSerialized)
            {
                If (LEqual (OSFL, 0x01))
                {
                    Store (0x56, SMIP)
                }

                If (LEqual (OSFL, 0x02))
                {
                    Store (0x57, SMIP)
                }

                If (LEqual (OSFL, 0x00))
                {
                    Store (0x58, SMIP)
                }
            }

            Device (SYSR)
            {
                Name (_HID, EisaId ("PNP0C02"))
                Name (_UID, 0x01)
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x0010, 0x0010, 0x01, 0x10)
                    IO (Decode16, 0x0022, 0x0022, 0x01, 0x1E)
                    IO (Decode16, 0x0044, 0x0044, 0x01, 0x1C)
                    IO (Decode16, 0x0062, 0x0062, 0x01, 0x02)
                    IO (Decode16, 0x0065, 0x0065, 0x01, 0x0B)
                    IO (Decode16, 0x0074, 0x0074, 0x01, 0x0C)
                    IO (Decode16, 0x0091, 0x0091, 0x01, 0x03)
                    IO (Decode16, 0x00A2, 0x00A2, 0x01, 0x1E)
                    IO (Decode16, 0x00E0, 0x00E0, 0x01, 0x10)
                    IO (Decode16, 0x04D0, 0x04D0, 0x01, 0x02)
                })
            }

            Device (PIC)
            {
                Name (_HID, EisaId ("PNP0000"))
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x0020, 0x0020, 0x01, 0x02)
                    IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02)
                    IRQNoFlags () {2}
                })
            }

            Device (DMA1)
            {
                Name (_HID, EisaId ("PNP0200"))
                Name (_CRS, ResourceTemplate ()
                {
                    DMA (Compatibility, BusMaster, Transfer8) {4}
                    IO (Decode16, 0x0000, 0x0000, 0x01, 0x10)
                    IO (Decode16, 0x0080, 0x0080, 0x01, 0x11)
                    IO (Decode16, 0x0094, 0x0094, 0x01, 0x0C)
                    IO (Decode16, 0x00C0, 0x00C0, 0x01, 0x20)
                })
            }

            Device (TMR)
            {
                Name (_HID, EisaId ("PNP0100"))
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x0040, 0x0040, 0x01, 0x04)
                    IRQNoFlags () {0}
                })
            }

            Device (RTC)
            {
                Name (_HID, EisaId ("PNP0B00"))
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x0070, 0x0070, 0x04, 0x04)
                    IRQNoFlags () {8}
                })
            }

            Device (SPKR)
            {
                Name (_HID, EisaId ("PNP0800"))
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x0061, 0x0061, 0x01, 0x01)
                })
            }

            Device (COPR)
            {
                Name (_HID, EisaId ("PNP0C04"))
                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x00F0, 0x00F0, 0x01, 0x10)
                    IRQNoFlags () {13}
                })
            }

            Scope (\)
            {
                OperationRegion (WIN1, SystemIO, 0x2E, 0x02)
                Field (WIN1, ByteAcc, NoLock, Preserve)
                {
                    INDP,   8, 
                    DATA,   8
                }

                IndexField (INDP, DATA, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x02), 
                    CFG,    8, 
                    Offset (0x07), 
                    LDN,    8, 
                    Offset (0x20), 
                    IDHI,   8, 
                    IDLO,   8, 
                    POWC,   8, 
                    Offset (0x30), 
                    ACTR,   8, 
                    Offset (0x60), 
                    IOAH,   8, 
                    IOAL,   8, 
                    Offset (0x70), 
                    INTR,   8, 
                    Offset (0x72), 
                    INT1,   8, 
                    Offset (0x74), 
                    DMCH,   8, 
                    Offset (0xC0), 
                    GP40,   8, 
                    Offset (0xF0), 
                    OPT1,   8, 
                    OPT2,   8, 
                    OPT3,   8, 
                    OPT4,   8, 
                    OPT5,   8, 
                    OPT6,   8, 
                    OPT7,   8
                }

                Method (ENFG, 0, NotSerialized)
                {
                    Store (0x87, INDP)
                    Store (0x87, INDP)
                }

                Method (EXFG, 0, NotSerialized)
                {
                    Store (0xAA, INDP)
                }
            }

            OperationRegion (COM1, SystemIO, 0x03F8, 0x08)
            Field (COM1, ByteAcc, NoLock, Preserve)
            {
                P3F8,   8, 
                P3F9,   8, 
                P3FA,   8, 
                P3FB,   8, 
                P3FC,   8, 
                P3FD,   8, 
                P3FE,   8, 
                P3FF,   8
            }

            OperationRegion (COM2, SystemIO, 0x02F8, 0x08)
            Field (COM2, ByteAcc, NoLock, Preserve)
            {
                P2F8,   8, 
                P2F9,   8, 
                P2FA,   8, 
                P2FB,   8, 
                P2FC,   8, 
                P2FD,   8, 
                P2FE,   8, 
                P2FF,   8
            }

            OperationRegion (COM3, SystemIO, 0x03E8, 0x08)
            Field (COM3, ByteAcc, NoLock, Preserve)
            {
                P3E8,   8, 
                P3E9,   8, 
                P3EA,   8, 
                P3EB,   8, 
                P3EC,   8, 
                P3ED,   8, 
                P3EE,   8, 
                P3EF,   8
            }

            OperationRegion (COM4, SystemIO, 0x02E8, 0x08)
            Field (COM4, ByteAcc, NoLock, Preserve)
            {
                P2E8,   8, 
                P2E9,   8, 
                P2EA,   8, 
                P2EB,   8, 
                P2EC,   8, 
                P2ED,   8, 
                P2EE,   8, 
                P2EF,   8
            }

            Method (ICOM, 1, NotSerialized)
            {
                Store (Arg0, Local0)
                If (LEqual (Local0, 0x03F8))
                {
                    Store (P3FD, Local0)
                    Store (P3FD, Local0)
                    Store (0xC3, P3FA)
                    While (LNot (LEqual (P3FA, 0xC1)))
                    {
                        Store (P3FE, Local0)
                    }
                }
                Else
                {
                    If (LEqual (Local0, 0x02F8))
                    {
                        Store (P2FD, Local0)
                        Store (P2FD, Local0)
                        Store (0xC3, P2FA)
                        While (LNot (LEqual (P2FA, 0xC1)))
                        {
                            Store (P2FE, Local0)
                        }
                    }
                    Else
                    {
                        If (LEqual (Local0, 0x03E8))
                        {
                            Store (P3ED, Local0)
                            Store (P3ED, Local0)
                            Store (0xC3, P3EA)
                            While (LNot (LEqual (P3EA, 0xC1)))
                            {
                                Store (P3EE, Local0)
                            }
                        }
                        Else
                        {
                            If (LEqual (Local0, 0x02E8))
                            {
                                Store (P2ED, Local0)
                                Store (P2ED, Local0)
                                Store (0xC3, P2EA)
                                While (LNot (LEqual (P2EA, 0xC1)))
                                {
                                    Store (P2EE, Local0)
                                }
                            }
                        }
                    }
                }
            }

            Device (FDC0)
            {
                Name (_HID, EisaId ("PNP0700"))
                Method (_STA, 0, NotSerialized)
                {
                    ENFG ()
                    Store (Zero, LDN)
                    If (ACTR)
                    {
                        EXFG ()
                        Return (0x0F)
                    }
                    Else
                    {
                        If (LOr (IOAH, IOAL))
                        {
                            EXFG ()
                            Return (0x0D)
                        }
                        Else
                        {
                            EXFG ()
                            Return (0x00)
                        }
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    ENFG ()
                    Store (0x00, LDN)
                    Store (Zero, ACTR)
                    SLDM (DMCH, 0x04)
                    EXFG ()
                    DISD (0x03)
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF0, ResourceTemplate ()
                    {
                        IO (Decode16, 0x03F0, 0x03F0, 0x00, 0x06)
                        IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
                        IRQNoFlags () {6}
                        DMA (Compatibility, NotBusMaster, Transfer8) {2}
                    })
                    CreateByteField (BUF0, 0x02, IOLO)
                    CreateByteField (BUF0, 0x03, IOHI)
                    CreateByteField (BUF0, 0x04, IORL)
                    CreateByteField (BUF0, 0x05, IORH)
                    ENFG ()
                    EXFG ()
                    Return (BUF0)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03F0, 0x03F0, 0x00, 0x06)
                        IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01)
                        IRQNoFlags () {6}
                        DMA (Compatibility, NotBusMaster, Transfer8) {2}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x02, IOAD)
                    CreateWordField (Arg0, 0x19, IRQL)
                    CreateByteField (Arg0, 0x1C, DMAV)
                    ENFG ()
                    Store (Zero, LDN)
                    Store (One, ACTR)
                    SLDM (DMCH, DMCH)
                    EXFG ()
                    CKIO (IOAD, 0x03)
                }
            }

            Device (UAR1)
            {
                Name (_HID, EisaId ("PNP0501"))
                Name (_UID, 0x01)
                Method (_STA, 0, NotSerialized)
                {
                    ENFG ()
                    Store (0x02, LDN)
                    If (ACTR)
                    {
                        EXFG ()
                        Return (0x0F)
                    }
                    Else
                    {
                        If (LNot (LEqual (IOAH, 0x00)))
                        {
                            EXFG ()
                            Return (0x0D)
                        }
                        Else
                        {
                            EXFG ()
                            Return (0x00)
                        }
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    ENFG ()
                    Store (0x02, LDN)
                    Store (Zero, ACTR)
                    EXFG ()
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
                        IRQNoFlags () {4}
                    })
                    CreateWordField (BUF1, 0x02, IMIN)
                    CreateWordField (BUF1, 0x04, IMAX)
                    CreateWordField (BUF1, 0x09, IRQW)
                    ENFG ()
                    Store (0x02, LDN)
                    Store (IOAH, Local0)
                    ShiftLeft (Local0, 0x02, Local0)
                    Store (Local0, IMIN)
                    Store (Local0, IMAX)
                    Store (INTR, Local0)
                    And (Local0, 0x0F, Local0)
                    Store (One, Local1)
                    ShiftLeft (Local1, Local0, IRQW)
                    EXFG ()
                    Return (BUF1)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
                        IRQNoFlags () {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
                        IRQNoFlags () {3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
                        IRQNoFlags () {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
                        IRQNoFlags () {3}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x09, IRQW)
                    ENFG ()
                    Store (0x02, LDN)
                    Store (IOLO, Local0)
                    ShiftRight (Local0, 0x02, Local0)
                    And (Local0, 0xFE, Local0)
                    Store (IOHI, Local1)
                    ShiftLeft (Local1, 0x06, Local1)
                    Or (Local0, Local1, Local0)
                    Store (Local0, IOAH)
                    FindSetRightBit (IRQW, Local0)
                    If (LGreater (Local0, 0x00))
                    {
                        Decrement (Local0)
                    }

                    Store (Local0, INTR)
                    Store (One, ACTR)
                    EXFG ()
                }
            }

            Device (UAR2)
            {
                Name (_HID, EisaId ("PNP0501"))
                Name (_UID, 0x02)
                Method (_STA, 0, NotSerialized)
                {
                    ENFG ()
                    Store (0x03, LDN)
                    If (ACTR)
                    {
                        EXFG ()
                        Return (0x0F)
                    }
                    Else
                    {
                        If (LNot (LEqual (IOAH, 0x00)))
                        {
                            EXFG ()
                            Return (0x0D)
                        }
                        Else
                        {
                            EXFG ()
                            Return (0x00)
                        }
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    ENFG ()
                    Store (0x03, LDN)
                    Store (Zero, ACTR)
                    EXFG ()
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF2, ResourceTemplate ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
                        IRQNoFlags () {3}
                    })
                    CreateWordField (BUF2, 0x02, IMIN)
                    CreateWordField (BUF2, 0x04, IMAX)
                    CreateWordField (BUF2, 0x09, IRQ0)
                    ENFG ()
                    Store (0x03, LDN)
                    Store (IOAH, Local0)
                    ShiftLeft (Local0, 0x02, Local0)
                    Store (Local0, IMIN)
                    Store (Local0, IMAX)
                    Store (INTR, Local0)
                    And (Local0, 0x0F, Local0)
                    Store (One, Local1)
                    ShiftLeft (Local1, Local0, IRQ0)
                    EXFG ()
                    Return (BUF2)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
                        IRQNoFlags () {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
                        IRQNoFlags () {3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
                        IRQNoFlags () {4}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
                        IRQNoFlags () {3}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x09, IRQW)
                    ENFG ()
                    Store (0x03, LDN)
                    Store (IOLO, Local0)
                    ShiftRight (Local0, 0x02, Local0)
                    And (Local0, 0xFE, Local0)
                    Store (IOHI, Local1)
                    ShiftLeft (Local1, 0x06, Local1)
                    Or (Local0, Local1, Local0)
                    Store (Local0, IOAH)
                    FindSetRightBit (IRQW, Local0)
                    If (LGreater (Local0, 0x00))
                    {
                        Decrement (Local0)
                    }

                    Store (Local0, INTR)
                    Store (One, ACTR)
                    EXFG ()
                }
            }

            Device (LPT1)
            {
                Name (PIOM, Buffer (0x01)
                {
                    0x00
                })
                CreateByteField (PIOM, 0x00, LPTM)
                Name (_HID, EisaId ("PNP0400"))
                Method (_STA, 0, NotSerialized)
                {
                    ENFG ()
                    Store (One, LDN)
                    Store (ACTR, Local0)
                    And (Local0, 0x03, Local0)
                    If (LEqual (Local0, 0x01))
                    {
                        EXFG ()
                        Return (0x00)
                    }

                    If (LEqual (Local0, 0x03))
                    {
                        Store (IOAH, Local1)
                        If (LNot (LEqual (Local1, 0x00)))
                        {
                            EXFG ()
                            Return (0x0D)
                        }
                        Else
                        {
                            EXFG ()
                            Return (0x00)
                        }
                    }
                    Else
                    {
                        Store (Local0, LPTM)
                        EXFG ()
                        Return (0x0F)
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    ENFG ()
                    Store (One, LDN)
                    Store (0x03, ACTR)
                    EXFG ()
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF5, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
                        IRQNoFlags () {7}
                    })
                    CreateWordField (BUF5, 0x02, IMIN)
                    CreateWordField (BUF5, 0x04, IMAX)
                    CreateByteField (BUF5, 0x06, LALN)
                    CreateByteField (BUF5, 0x07, LLEN)
                    CreateWordField (BUF5, 0x09, IRQ0)
                    ENFG ()
                    Store (One, LDN)
                    Store (IOAH, Local0)
                    ShiftLeft (Local0, 0x02, Local0)
                    Store (Local0, IMIN)
                    Store (Local0, IMAX)
                    If (LEqual (IMIN, 0x03BC))
                    {
                        Store (0x04, LALN)
                        Store (0x04, LLEN)
                    }
                    Else
                    {
                        Store (0x08, LALN)
                        Store (0x08, LLEN)
                    }

                    Store (INTR, Local0)
                    Store (0x01, Local1)
                    ShiftLeft (Local1, Local0, IRQ0)
                    EXFG ()
                    Return (BUF5)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
                        IRQNoFlags () {7}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0278, 0x0278, 0x08, 0x08)
                        IRQNoFlags () {5}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03BC, 0x03BC, 0x04, 0x04)
                        IRQNoFlags () {7}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x09, IRQ0)
                    ENFG ()
                    Store (One, LDN)
                    Store (IOLO, Local0)
                    ShiftRight (Local0, 0x02, Local0)
                    Store (IOHI, Local1)
                    ShiftLeft (Local1, 0x06, Local1)
                    Or (Local0, Local1, Local0)
                    Store (Local0, IOAH)
                    FindSetRightBit (IRQ0, Local0)
                    If (LGreater (Local0, 0x00))
                    {
                        Decrement (Local0)
                    }

                    Store (Local0, INTR)
                    Store (ACTR, Local0)
                    And (Local0, 0xFC, Local0)
                    Store (LPTM, Local1)
                    Or (Local0, Local1, Local1)
                    Store (Local1, ACTR)
                    EXFG ()
                }
            }

            Device (ECP1)
            {
                Name (_HID, EisaId ("PNP0401"))
                Method (_STA, 0, NotSerialized)
                {
                    ENFG ()
                    Store (One, LDN)
                    Store (ACTR, Local0)
                    And (Local0, 0x03, Local0)
                    If (LOr (LEqual (Local0, 0x00), LEqual (Local0, 0x02)))
                    {
                        EXFG ()
                        Return (0x00)
                    }

                    If (LEqual (Local0, 0x01))
                    {
                        EXFG ()
                        Return (0x0F)
                    }

                    If (LEqual (Local0, 0x03))
                    {
                        If (LNot (LEqual (DMCH, 0x00)))
                        {
                            EXFG ()
                            Return (0x0D)
                        }
                        Else
                        {
                            EXFG ()
                            Return (0x00)
                        }
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    ENFG ()
                    Store (One, LDN)
                    Store (0x03, ACTR)
                    EXFG ()
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF6, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
                        IO (Decode16, 0x0778, 0x0778, 0x04, 0x04)
                        IRQNoFlags () {7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {3}
                    })
                    CreateWordField (BUF6, 0x02, IMI1)
                    CreateWordField (BUF6, 0x04, IMA1)
                    CreateByteField (BUF6, 0x06, ALN1)
                    CreateByteField (BUF6, 0x07, LEN1)
                    CreateWordField (BUF6, 0x0A, IMI2)
                    CreateWordField (BUF6, 0x0C, IMA2)
                    CreateWordField (BUF6, 0x11, IRQ0)
                    CreateByteField (BUF6, 0x14, DMA0)
                    ENFG ()
                    Store (One, LDN)
                    Store (IOAH, Local0)
                    ShiftLeft (Local0, 0x02, Local0)
                    Store (Local0, IMI1)
                    Store (Local0, IMA1)
                    Add (Local0, 0x0400, Local0)
                    Store (Local0, IMI2)
                    Store (Local0, IMA2)
                    If (LEqual (IMI1, 0x03BC))
                    {
                        Store (0x04, ALN1)
                        Store (0x04, LEN1)
                    }
                    Else
                    {
                        Store (0x08, ALN1)
                        Store (0x08, LEN1)
                    }

                    Store (INTR, Local0)
                    Store (0x01, Local1)
                    ShiftLeft (Local1, Local0, IRQ0)
                    Store (DMCH, Local0)
                    And (Local0, 0x03, Local0)
                    Store (0x01, Local1)
                    ShiftLeft (Local1, Local0, DMA0)
                    EXFG ()
                    Return (BUF6)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
                        IO (Decode16, 0x0778, 0x0778, 0x04, 0x04)
                        IRQNoFlags () {7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {1,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x0278, 0x0278, 0x08, 0x08)
                        IO (Decode16, 0x0678, 0x0678, 0x04, 0x04)
                        IRQNoFlags () {5}
                        DMA (Compatibility, NotBusMaster, Transfer8) {1,3}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03BC, 0x03BC, 0x04, 0x04)
                        IO (Decode16, 0x07BC, 0x07BC, 0x04, 0x04)
                        IRQNoFlags () {7}
                        DMA (Compatibility, NotBusMaster, Transfer8) {1,3}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x11, IRQ0)
                    CreateByteField (Arg0, 0x14, DMA0)
                    ENFG ()
                    Store (One, LDN)
                    Store (IOLO, Local0)
                    ShiftRight (Local0, 0x02, Local0)
                    Store (IOHI, Local1)
                    ShiftLeft (Local1, 0x06, Local1)
                    Or (Local0, Local1, Local0)
                    Store (Local0, IOAH)
                    FindSetRightBit (IRQ0, Local0)
                    If (LGreater (Local0, 0x00))
                    {
                        Decrement (Local0)
                    }

                    Store (Local0, INTR)
                    FindSetRightBit (DMA0, Local0)
                    If (LGreater (Local0, 0x00))
                    {
                        Decrement (Local0)
                    }

                    Store (Local0, DMCH)
                    Store (ACTR, Local0)
                    And (Local0, 0xFC, Local0)
                    Or (Local0, 0x01, Local0)
                    Store (Local0, ACTR)
                    EXFG ()
                }
            }

            OperationRegion (KBCT, SystemIO, 0x60, 0x05)
            Field (KBCT, ByteAcc, NoLock, Preserve)
            {
                P060,   8, 
                Offset (0x04), 
                P064,   8
            }

            Device (PS2M)
            {
                Name (_HID, EisaId ("PNP0F13"))
                Method (_STA, 0, NotSerialized)
                {
                    If (LEqual (PS2F, 0x00))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (0x00)
                    }
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF1, ResourceTemplate ()
                    {
                        IRQNoFlags () {12}
                    })
                    Name (BUF2, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
                        IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
                        IRQNoFlags () {12}
                    })
                    If (LEqual (KBDI, 0x01))
                    {
                        If (LEqual (OSFL, 0x02))
                        {
                            Return (BUF1)
                        }

                        If (LEqual (OSFL, 0x01))
                        {
                            Return (BUF1)
                        }
                        Else
                        {
                            Return (BUF2)
                        }
                    }
                    Else
                    {
                        Return (BUF1)
                    }
                }
            }

            Device (PS2K)
            {
                Name (_HID, EisaId ("PNP0303"))
                Method (_STA, 0, NotSerialized)
                {
                    If (LEqual (KBDI, 0x01))
                    {
                        Return (0x00)
                    }
                    Else
                    {
                        Return (0x0F)
                    }
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
                    IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
                    IRQNoFlags () {1}
                })
            }

            Device (PSMR)
            {
                Name (_HID, EisaId ("PNP0C02"))
                Name (_UID, 0x04)
                Method (_STA, 0, NotSerialized)
                {
                    If (LEqual (KBDI, 0x00))
                    {
                        Return (0x00)
                    }

                    If (LEqual (PS2F, 0x00))
                    {
                        If (LEqual (OSFL, 0x02))
                        {
                            Return (0x0F)
                        }

                        If (LEqual (OSFL, 0x01))
                        {
                            Return (0x0F)
                        }

                        Return (0x00)
                    }

                    Return (0x0F)
                }

                Name (_CRS, ResourceTemplate ()
                {
                    IO (Decode16, 0x0060, 0x0060, 0x01, 0x01)
                    IO (Decode16, 0x0064, 0x0064, 0x01, 0x01)
                })
            }

            Device (FIR1)
            {
                Name (_HID, EisaId ("VIA3076"))
                Method (_STA, 0, NotSerialized)
                {
                    ENFG ()
                    Store (0x0C, LDN)
                    If (ACTR)
                    {
                        EXFG ()
                        Return (0x0F)
                    }
                    Else
                    {
                        If (LOr (IOAH, IOAL))
                        {
                            EXFG ()
                            Return (0x0D)
                        }
                        Else
                        {
                            EXFG ()
                            Return (0x00)
                        }
                    }

                    EXFG ()
                }

                Method (_DIS, 0, NotSerialized)
                {
                    ENFG ()
                    Store (0x0C, LDN)
                    Store (Zero, ACTR)
                    EXFG ()
                    DISD (0x00)
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16, 0x0000, 0x0000, 0x01, 0x80)
                        IRQNoFlags () {}
                        DMA (Compatibility, NotBusMaster, Transfer8) {}
                    })
                    CreateByteField (BUF1, 0x02, IOLO)
                    CreateByteField (BUF1, 0x03, IOHI)
                    CreateByteField (BUF1, 0x04, IORL)
                    CreateByteField (BUF1, 0x05, IORH)
                    CreateWordField (BUF1, 0x09, IRQW)
                    CreateByteField (BUF1, 0x0C, DMA0)
                    ENFG ()
                    Store (0x0C, LDN)
                    Store (IOAL, IOLO)
                    Store (IOAL, IORL)
                    Store (IOAH, IOHI)
                    Store (IOAH, IORH)
                    Store (One, Local0)
                    ShiftLeft (Local0, INTR, IRQW)
                    Store (DMCH, Local0)
                    And (Local0, 0x0F, Local1)
                    If (LEqual (Local1, 0x0A))
                    {
                        Store (0x06, Local0)
                    }

                    Store (One, Local1)
                    ShiftLeft (Local1, Local0, DMA0)
                    EXFG ()
                    Return (BUF1)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0xE600, 0xE600, 0x01, 0x80)
                        IRQNoFlags () {3,4,5,7,9,10,11,12}
                        DMA (Compatibility, NotBusMaster, Transfer8) {5,6}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x02, IOAD)
                    CreateWordField (Arg0, 0x09, IRQW)
                    CreateByteField (Arg0, 0x0C, DMA0)
                    ENFG ()
                    Store (0x0C, LDN)
                    Store (One, ACTR)
                    Store (IOLO, IOAL)
                    Store (IOHI, IOAH)
                    FindSetRightBit (IRQW, Local0)
                    Subtract (Local0, 0x01, INTR)
                    Store (DMA0, Local0)
                    If (LEqual (Local0, 0x40))
                    {
                        Store (0x0A, DMCH)
                    }
                    Else
                    {
                        FindSetRightBit (DMA0, Local0)
                        Subtract (Local0, 0x01, DMCH)
                    }

                    EXFG ()
                    CKIO (IOAD, 0x00)
                }
            }

            Scope (\)
            {
                OperationRegion (WIN2, SystemIO, 0x4E, 0x02)
                Field (WIN2, ByteAcc, NoLock, Preserve)
                {
                    SINP,   8, 
                    SDAT,   8
                }

                IndexField (SINP, SDAT, ByteAcc, NoLock, Preserve)
                {
                    Offset (0x02), 
                    SCFG,   8, 
                    Offset (0x07), 
                    SLDN,   8, 
                    Offset (0x20), 
                    SDHI,   8, 
                    SDLO,   8, 
                    SOWC,   8, 
                    Offset (0x30), 
                    SCTR,   8, 
                    Offset (0x60), 
                    SOAH,   8, 
                    SOAL,   8, 
                    Offset (0x70), 
                    SNTR,   8, 
                    Offset (0x72), 
                    SNT1,   8, 
                    Offset (0x74), 
                    SMCH,   8, 
                    Offset (0xC0), 
                    SP40,   8, 
                    Offset (0xF0), 
                    SPT1,   8, 
                    SPT2,   8, 
                    SPT3,   8, 
                    SPT4,   8, 
                    SPT5,   8, 
                    SPT6,   8, 
                    SPT7,   8
                }

                Method (SENF, 0, NotSerialized)
                {
                    Store (0x87, SINP)
                    Store (0x87, SINP)
                }

                Method (SEXF, 0, NotSerialized)
                {
                    Store (0xAA, SINP)
                }
            }

            OperationRegion (COM5, SystemIO, 0x03F8, 0x08)
            Field (COM5, ByteAcc, NoLock, Preserve)
            {
                S3F8,   8, 
                S3F9,   8, 
                S3FA,   8, 
                S3FB,   8, 
                S3FC,   8, 
                S3FD,   8, 
                S3FE,   8, 
                S3FF,   8
            }

            OperationRegion (COM6, SystemIO, 0x02F8, 0x08)
            Field (COM6, ByteAcc, NoLock, Preserve)
            {
                S2F8,   8, 
                S2F9,   8, 
                S2FA,   8, 
                S2FB,   8, 
                S2FC,   8, 
                S2FD,   8, 
                S2FE,   8, 
                S2FF,   8
            }

            OperationRegion (COM7, SystemIO, 0x03E8, 0x08)
            Field (COM7, ByteAcc, NoLock, Preserve)
            {
                S3E8,   8, 
                S3E9,   8, 
                S3EA,   8, 
                S3EB,   8, 
                S3EC,   8, 
                S3ED,   8, 
                S3EE,   8, 
                S3EF,   8
            }

            OperationRegion (COM8, SystemIO, 0x02E8, 0x08)
            Field (COM8, ByteAcc, NoLock, Preserve)
            {
                S2E8,   8, 
                S2E9,   8, 
                S2EA,   8, 
                S2EB,   8, 
                S2EC,   8, 
                S2ED,   8, 
                S2EE,   8, 
                S2EF,   8
            }

            Method (SICO, 1, NotSerialized)
            {
                Store (Arg0, Local0)
                If (LEqual (Local0, 0x03F8))
                {
                    Store (S3FD, Local0)
                    Store (S3FD, Local0)
                    Store (0xC3, S3FA)
                    While (LNot (LEqual (S3FA, 0xC1)))
                    {
                        Store (S3FE, Local0)
                    }
                }
                Else
                {
                    If (LEqual (Local0, 0x02F8))
                    {
                        Store (S2FD, Local0)
                        Store (S2FD, Local0)
                        Store (0xC3, S2FA)
                        While (LNot (LEqual (S2FA, 0xC1)))
                        {
                            Store (S2FE, Local0)
                        }
                    }
                    Else
                    {
                        If (LEqual (Local0, 0x03E8))
                        {
                            Store (S3ED, Local0)
                            Store (S3ED, Local0)
                            Store (0xC3, S3EA)
                            While (LNot (LEqual (S3EA, 0xC1)))
                            {
                                Store (S3EE, Local0)
                            }
                        }
                        Else
                        {
                            If (LEqual (Local0, 0x02E8))
                            {
                                Store (S2ED, Local0)
                                Store (S2ED, Local0)
                                Store (0xC3, S2EA)
                                While (LNot (LEqual (S2EA, 0xC1)))
                                {
                                    Store (S2EE, Local0)
                                }
                            }
                        }
                    }
                }
            }

            Device (UAR3)
            {
                Name (_HID, EisaId ("PNP0501"))
                Name (_UID, 0x03)
                Method (_STA, 0, NotSerialized)
                {
                    SENF ()
                    Store (0x02, SLDN)
                    If (SCTR)
                    {
                        SEXF ()
                        Return (0x0F)
                    }
                    Else
                    {
                        If (LNot (LEqual (SOAH, 0x00)))
                        {
                            SEXF ()
                            Return (0x0D)
                        }
                        Else
                        {
                            SEXF ()
                            Return (0x00)
                        }
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    SENF ()
                    Store (0x02, SLDN)
                    Store (Zero, SCTR)
                    SEXF ()
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF1, ResourceTemplate ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
                        IRQNoFlags () {5}
                    })
                    CreateWordField (BUF1, 0x02, IMIN)
                    CreateWordField (BUF1, 0x04, IMAX)
                    CreateWordField (BUF1, 0x09, IRQW)
                    SENF ()
                    Store (0x02, SLDN)
                    Store (SOAH, Local0)
                    ShiftLeft (Local0, 0x02, Local0)
                    Store (Local0, IMIN)
                    Store (Local0, IMAX)
                    Store (SNTR, Local0)
                    And (Local0, 0x0F, Local0)
                    Store (One, Local1)
                    ShiftLeft (Local1, Local0, IRQW)
                    SEXF ()
                    Return (BUF1)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
                        IRQNoFlags () {5}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
                        IRQNoFlags () {10}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
                        IRQNoFlags () {5}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
                        IRQNoFlags () {10}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x09, IRQW)
                    SENF ()
                    Store (0x02, SLDN)
                    Store (IOLO, Local0)
                    ShiftRight (Local0, 0x02, Local0)
                    And (Local0, 0xFE, Local0)
                    Store (IOHI, Local1)
                    ShiftLeft (Local1, 0x06, Local1)
                    Or (Local0, Local1, Local0)
                    Store (Local0, SOAH)
                    FindSetRightBit (IRQW, Local0)
                    If (LGreater (Local0, 0x00))
                    {
                        Decrement (Local0)
                    }

                    Store (Local0, SNTR)
                    Store (One, SCTR)
                    SEXF ()
                }
            }

            Device (UAR4)
            {
                Name (_HID, EisaId ("PNP0501"))
                Name (_UID, 0x04)
                Method (_STA, 0, NotSerialized)
                {
                    SENF ()
                    Store (0x03, SLDN)
                    If (SCTR)
                    {
                        SEXF ()
                        Return (0x0F)
                    }
                    Else
                    {
                        If (LNot (LEqual (SOAH, 0x00)))
                        {
                            SEXF ()
                            Return (0x0D)
                        }
                        Else
                        {
                            SEXF ()
                            Return (0x00)
                        }
                    }
                }

                Method (_DIS, 0, NotSerialized)
                {
                    SENF ()
                    Store (0x03, SLDN)
                    Store (Zero, SCTR)
                    SEXF ()
                }

                Method (_CRS, 0, NotSerialized)
                {
                    Name (BUF2, ResourceTemplate ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
                        IRQNoFlags () {10}
                    })
                    CreateWordField (BUF2, 0x02, IMIN)
                    CreateWordField (BUF2, 0x04, IMAX)
                    CreateWordField (BUF2, 0x09, IRQ0)
                    SENF ()
                    Store (0x03, SLDN)
                    Store (SOAH, Local0)
                    ShiftLeft (Local0, 0x02, Local0)
                    Store (Local0, IMIN)
                    Store (Local0, IMAX)
                    Store (SNTR, Local0)
                    And (Local0, 0x0F, Local0)
                    Store (One, Local1)
                    ShiftLeft (Local1, Local0, IRQ0)
                    SEXF ()
                    Return (BUF2)
                }

                Name (_PRS, ResourceTemplate ()
                {
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03F8, 0x03F8, 0x08, 0x08)
                        IRQNoFlags () {5}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02F8, 0x02F8, 0x08, 0x08)
                        IRQNoFlags () {10}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x03E8, 0x03E8, 0x08, 0x08)
                        IRQNoFlags () {5}
                    }
                    StartDependentFnNoPri ()
                    {
                        IO (Decode16, 0x02E8, 0x02E8, 0x08, 0x08)
                        IRQNoFlags () {10}
                    }
                    EndDependentFn ()
                })
                Method (_SRS, 1, NotSerialized)
                {
                    CreateByteField (Arg0, 0x02, IOLO)
                    CreateByteField (Arg0, 0x03, IOHI)
                    CreateWordField (Arg0, 0x09, IRQW)
                    SENF ()
                    Store (0x03, SLDN)
                    Store (IOLO, Local0)
                    ShiftRight (Local0, 0x02, Local0)
                    And (Local0, 0xFE, Local0)
                    Store (IOHI, Local1)
                    ShiftLeft (Local1, 0x06, Local1)
                    Or (Local0, Local1, Local0)
                    Store (Local0, SOAH)
                    FindSetRightBit (IRQW, Local0)
                    If (LGreater (Local0, 0x00))
                    {
                        Decrement (Local0)
                    }

                    Store (Local0, SNTR)
                    Store (One, SCTR)
                    SEXF ()
                }
            }

            Method (\_SB.PCI0.UAR1._PRW, 0, NotSerialized)
            {
                Return (Package (0x02)
                {
                    0x08, 
                    0x05
                })
            }
        }
    }
}


More information about the freebsd-current mailing list