>Synopsis: race between kqueue vnode note for writes triggering reads on a >pre-mmapped file segment >Category: kernel >Environment: System : OpenBSD 5.9 Details : OpenBSD 5.9 (GENERIC) #1761: Fri Feb 26 01:15:04 MST 2016 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC
Architecture: OpenBSD.amd64 Machine : amd64 >Description: On both UFS and tmpfs, if you watch for updates to the file with kqueue, and pre-mmap a segment of the file, using the kqueue data to notify of updates to the file crusor, and append the file in a separate process, the written contents will populate AFTER the kqueue event is received, and is starting to be read. Part of the end of the read (of mapped memory) will still have 0s until the write completes. I originally reported this on tmpfs on DragonFly. You can see their fix here: http://lists.dragonflybsd.org/pipermail/commits/2015-July/418895.html I had originally used this technique on HAMMER, and it worked, then used tmpfs on Dragonfly, and it didn't work until fixed. It also works in Linux using inotify with both ext4 and tmpfs. It works on OS X with a memory disk and kqueue. I am now testing on OpenBSD, and will keep testing environments to make sure this technique works everywhere, since I have a cross-platform framework to test with. I am not sure if there is any standard or documented API that says that this should work, other than writes are not being atomic in this special case. Shared memory isn't expected to be atomically written to, but the notification is also not atomic with the write, and it could be designed to be atomic with the write, hopefully without significant impact on performance or code complexity. >How-To-Repeat: I have prooprietary software that can easily reproduce, so I can test patches. I hope to free the source if I can get my way, but no decision has been made on that yet. I haven't written a small open test case yet, but I could if needed. The steps are: 1. write a program to: 1.a. open a file. 1.b. memory map beyond its end. Use MAP_SHARED to see outside writes. 1.c. register a kqueue event for vnode writes to the file. 1.d. poll for that event. 1.e. when the event comes, read the memory beyond the end of the file, up to the length passed in the kqueue event data field. 1.f. verify the read memory 2. In a separate program, write something non-zero to the end of the file to trigger the write event in the first program. The non-zero content should (probably?) be fully available in memory immediately after the kqueue event is received. >Fix: This is the commit that fixes tmpfs in DragonFly, but it may be very different: http://lists.dragonflybsd.org/pipermail/commits/2015-July/418895.html dmesg: OpenBSD 5.9 (GENERIC) #1761: Fri Feb 26 01:15:04 MST 2016 dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC real mem = 1056899072 (1007MB) avail mem = 1020764160 (973MB) mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.5 @ 0xe1000 (10 entries) bios0: vendor innotek GmbH version "VirtualBox" date 12/01/2006 bios0: innotek GmbH VirtualBox acpi0 at bios0: rev 2 acpi0: sleep states S0 S5 acpi0: tables DSDT FACP APIC SSDT acpi0: wakeup devices acpitimer0 at acpi0: 3579545 Hz, 32 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Core(TM) M-5Y31 CPU @ 0.90GHz, 1100.23 MHz cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,PCLMUL,MWAIT,SSSE3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,RDRAND,NXE,LONG,LAHF,ABM,3DNOWP,ITSC,RDSEED cpu0: 256KB 64b/line 8-way L2 cache cpu0: smt 0, core 0, package 0 mtrr: CPU supports MTRRs but not enabled by BIOS cpu0: apic clock running at 999MHz cpu0: mwait min=64, max=64 ioapic0 at mainbus0: apid 1 pa 0xfec00000, version 11, 24 pins acpiprt0 at acpi0: bus 0 (PCI0) acpicpu0 at acpi0: C1(@1 halt!) acpibat0 at acpi0: BAT0 model "1" serial 0 type VBOX oem "innotek" acpiac0 at acpi0: AC unit online acpivideo0 at acpi0: GFX0 pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "Intel 82441FX" rev 0x02 pcib0 at pci0 dev 1 function 0 "Intel 82371SB ISA" rev 0x00 pciide0 at pci0 dev 1 function 1 "Intel 82371AB IDE" rev 0x01: DMA, channel 0 configured to compatibility, channel 1 configured to compatibility wd0 at pciide0 channel 0 drive 0: <VBOX HARDDISK> wd0: 128-sector PIO, LBA, 65536MB, 134217728 sectors wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 2 atapiscsi0 at pciide0 channel 1 drive 0 scsibus1 at atapiscsi0: 2 targets cd0 at scsibus1 targ 0 lun 0: <VBOX, CD-ROM, 1.0> ATAPI 5/cdrom removable cd0(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 2 vga1 at pci0 dev 2 function 0 "InnoTek VirtualBox Graphics Adapter" rev 0x00 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) em0 at pci0 dev 3 function 0 "Intel 82540EM" rev 0x02: apic 1 int 19, address 08:00:27:e6:f8:20 "InnoTek VirtualBox Guest Service" rev 0x00 at pci0 dev 4 function 0 not configured auich0 at pci0 dev 5 function 0 "Intel 82801AA AC97" rev 0x01: apic 1 int 21, ICH AC97 ac97: codec id 0x83847600 (SigmaTel STAC9700) audio0 at auich0 ohci0 at pci0 dev 6 function 0 "Apple Intrepid USB" rev 0x00: apic 1 int 22, version 1.0 piixpm0 at pci0 dev 7 function 0 "Intel 82371AB Power" rev 0x08: SMBus disabled ehci0 at pci0 dev 11 function 0 "Intel 82801FB USB" rev 0x00: apic 1 int 19 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1 isa0 at pcib0 isadma0 at isa0 pckbc0 at isa0 port 0x60/5 irq 1 irq 12 pckbd0 at pckbc0 (kbd slot) wskbd0 at pckbd0: console keyboard, using wsdisplay0 pms0 at pckbc0 (aux slot) wsmouse0 at pms0 mux 0 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 usb1 at ohci0: USB revision 1.0 uhub1 at usb1 "Apple OHCI root hub" rev 1.00/1.00 addr 1 vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets root on wd0a (749bc0a6c243b79c.a) swap on wd0b dump on wd0b usbdevs: Controller /dev/usb0: addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x8086), rev 1.00 port 1 powered port 2 powered port 3 powered port 4 powered port 5 powered port 6 powered port 7 powered port 8 powered port 9 powered port 10 powered port 11 powered port 12 powered Controller /dev/usb1: addr 1: full speed, self powered, config 1, OHCI root hub(0x0000), Apple(0x106b), rev 1.00 port 1 powered port 2 powered port 3 powered port 4 powered port 5 powered port 6 powered port 7 powered port 8 powered port 9 powered port 10 powered port 11 powered port 12 powered pcidump: Domain /dev/pci0: 0:0:0: Intel 82441FX 0x0000: Vendor ID: 8086 Product ID: 1237 0x0004: Command: 0000 Status: 0000 0x0008: Class: 06 Subclass: 00 Interface: 00 Revision: 02 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR empty (00000000) 0x0014: BAR empty (00000000) 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 00 Line: 00 Min Gnt: 00 Max Lat: 00 0x0000: 12378086 00000000 06000002 00000000 0x0010: 00000000 00000000 00000000 00000000 0x0020: 00000000 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 00000000 0x0040: 00000000 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:1:0: Intel 82371SB ISA 0x0000: Vendor ID: 8086 Product ID: 7000 0x0004: Command: 0007 Status: 0200 0x0008: Class: 06 Subclass: 01 Interface: 00 Revision: 00 0x000c: BIST: 00 Header Type: 80 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR empty (00000000) 0x0014: BAR empty (00000000) 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 00 Line: 00 Min Gnt: 00 Max Lat: 00 0x0000: 70008086 02000007 06010000 00800000 0x0010: 00000000 00000000 00000000 00000000 0x0020: 00000000 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 00000000 0x0040: 00000000 00000000 00000000 0003004d 0x0050: 00000000 00000000 00000000 00000000 0x0060: 090a0b0b 00000000 00000200 00000000 0x0070: 00000080 0c0c0000 00000002 00000000 0x0080: 00020000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000008 00000000 0000000f 0000ef00 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00be0000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:1:1: Intel 82371AB IDE 0x0000: Vendor ID: 8086 Product ID: 7111 0x0004: Command: 0007 Status: 0000 0x0008: Class: 01 Subclass: 01 Interface: 8a Revision: 01 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR empty (00000000) 0x0014: BAR empty (00000000) 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR io addr: 0x0000d000/0x0010 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 00 Line: 00 Min Gnt: 00 Max Lat: 00 0x0000: 71118086 00000007 01018a01 00000000 0x0010: 00000000 00000000 00000000 00000000 0x0020: 0000d001 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 00000000 0x0040: a307a307 00000000 02020005 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:2:0: InnoTek VirtualBox Graphics Adapter 0x0000: Vendor ID: 80ee Product ID: beef 0x0004: Command: 0007 Status: 0000 0x0008: Class: 03 Subclass: 00 Interface: 00 Revision: 00 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR mem prefetchable 32bit addr: 0xe0000000/0x00800000 0x0014: BAR empty (00000000) 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00 0x0000: beef80ee 00000007 03000000 00000000 0x0010: e0000008 00000000 00000000 00000000 0x0020: 00000000 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 0000010b 0x0040: 00000000 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:3:0: Intel 82540EM 0x0000: Vendor ID: 8086 Product ID: 100e 0x0004: Command: 0007 Status: 0230 0x0008: Class: 02 Subclass: 00 Interface: 00 Revision: 02 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR mem 32bit addr: 0xf0000000/0x00020000 0x0014: BAR empty (00000000) 0x0018: BAR io addr: 0x0000d010/0x0008 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 8086 Product ID: 001e 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 01 Line: 0a Min Gnt: ff Max Lat: 00 0x00dc: Capability 0x01: Power Management State: D0 0x00e4: Capability 0x07: PCI-X 0x0000: 100e8086 02300007 02000002 00000000 0x0010: f0000000 00000000 0000d011 00000000 0x0020: 00000000 00000000 00000000 001e8086 0x0030: 00000000 000000dc 00000000 00ff010a 0x0040: 00000000 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 0022e401 0x00e0: 00000000 00020007 0040fff8 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:4:0: InnoTek VirtualBox Guest Service 0x0000: Vendor ID: 80ee Product ID: cafe 0x0004: Command: 0007 Status: 0000 0x0008: Class: 08 Subclass: 80 Interface: 00 Revision: 00 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR io addr: 0x0000d020/0x0020 0x0014: BAR mem 32bit addr: 0xf0400000/0x00400000 0x0018: BAR mem prefetchable 32bit addr: 0xf0800000/0x00004000 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 01 Line: 09 Min Gnt: 00 Max Lat: 00 0x0000: cafe80ee 00000007 08800000 00000000 0x0010: 0000d021 f0400000 f0800008 00000000 0x0020: 00000000 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 00000109 0x0040: 00000000 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:5:0: Intel 82801AA AC97 0x0000: Vendor ID: 8086 Product ID: 2415 0x0004: Command: 0007 Status: 0280 0x0008: Class: 04 Subclass: 01 Interface: 00 Revision: 01 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR io addr: 0x0000d100/0x0100 0x0014: BAR io addr: 0x0000d200/0x0040 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 8086 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00 0x0000: 24158086 02800007 04010001 00000000 0x0010: 0000d101 0000d201 00000000 00000000 0x0020: 00000000 00000000 00000000 00008086 0x0030: 00000000 00000000 00000000 0000010b 0x0040: 00000000 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:6:0: Apple Intrepid USB 0x0000: Vendor ID: 106b Product ID: 003f 0x0004: Command: 0007 Status: 0010 0x0008: Class: 0c Subclass: 03 Interface: 10 Revision: 00 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR mem 32bit addr: 0xf0804000/0x00001000 0x0014: BAR empty (00000000) 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 01 Line: 0b Min Gnt: 00 Max Lat: 00 0x0000: 003f106b 00100007 0c031000 00000000 0x0010: f0804000 00000000 00000000 00000000 0x0020: 00000000 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 0000010b 0x0040: 00000000 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:7:0: Intel 82371AB Power 0x0000: Vendor ID: 8086 Product ID: 7113 0x0004: Command: 0007 Status: 0280 0x0008: Class: 06 Subclass: 80 Interface: 00 Revision: 08 0x000c: BIST: 00 Header Type: 80 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR empty (00000000) 0x0014: BAR empty (00000000) 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 01 Line: 09 Min Gnt: 00 Max Lat: 00 0x0000: 71138086 02800007 06800008 00800000 0x0010: 00000000 00000000 00000000 00000000 0x0020: 00000000 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 00000109 0x0040: 00000001 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000000 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 0:11:0: Intel 82801FB USB 0x0000: Vendor ID: 8086 Product ID: 265c 0x0004: Command: 0007 Status: 0010 0x0008: Class: 0c Subclass: 03 Interface: 20 Revision: 00 0x000c: BIST: 00 Header Type: 00 Latency Timer: 00 Cache Line Size: 00 0x0010: BAR mem 32bit addr: 0xf0805000/0x00001000 0x0014: BAR empty (00000000) 0x0018: BAR empty (00000000) 0x001c: BAR empty (00000000) 0x0020: BAR empty (00000000) 0x0024: BAR empty (00000000) 0x0028: Cardbus CIS: 00000000 0x002c: Subsystem Vendor ID: 0000 Product ID: 0000 0x0030: Expansion ROM Base Address: 00000000 0x0038: 00000000 0x003c: Interrupt Pin: 01 Line: 0a Min Gnt: 00 Max Lat: 00 0x0000: 265c8086 00100007 0c032000 00000000 0x0010: f0805000 00000000 00000000 00000000 0x0020: 00000000 00000000 00000000 00000000 0x0030: 00000000 00000000 00000000 0000010a 0x0040: 00000000 00000000 00000000 00000000 0x0050: 00000000 00000000 00000000 00000000 0x0060: 00000020 00000000 00000000 00000000 0x0070: 00000000 00000000 00000000 00000000 0x0080: 00000000 00000000 00000000 00000000 0x0090: 00000000 00000000 00000000 00000000 0x00a0: 00000000 00000000 00000000 00000000 0x00b0: 00000000 00000000 00000000 00000000 0x00c0: 00000000 00000000 00000000 00000000 0x00d0: 00000000 00000000 00000000 00000000 0x00e0: 00000000 00000000 00000000 00000000 0x00f0: 00000000 00000000 00000000 00000000 acpidump: begin-base64 644 openbsd.APIC.3 QVBJQ1QAAAACY1ZCT1ggIFZCT1hBUElDAQAAAEFTTCBhAAAAAADg/gEAAAACCgAAAgAAAAAAAgoA CQkAAAANAAAIAAABAAAAAQwBAAAAwP4AAAAA ==== begin-base64 644 openbsd.DSDT.2 RFNEVAseAAABQVZCT1ggIFZCT1hCSU9TAgAAAElOVEwoBRAgW4BEQkcwAQsAMAoEW4ELREJHMAFE SEUxCFuBC0RCRzACREhFMhBbgQtEQkcwA0RIRTQgW4ENREJHMAEACERDSFIIFAxIRVhfAXBoREhF MRQMSEVYMgFwaERIRTIUDEhFWDQBcGhESEU0FAxTTEVOAXBoYKSHYBQkUzJCRgFwaGByU0xFTmAB YAhCVUZGEQJgcGhCVUZGpEJVRkYUKkRCR18BcGhgcFMyQkZgYXCHYWB2YHAAYqIQYHZgcIOIYWIA RENIUnViCFBJQ00AFCFfUElDAURCR18NUGljIG1vZGU6IABIRVg0aHBoUElDTVuAU1lTSQELSEAK CFuBEFNZU0kDSURYMCBEQVQwIFuGQQtJRFgwREFUMANNRU1MIFVJT0EgVUhQVCBVU01DIFVGREMg U0wyQiBTTDJJIFNMM0IgU0wzSSBNRU1IIFVSVEMgQ1BVTCBDUFVDIENQRVQgQ1BFViBOSUNBIEhE QUEgUFdSUyBJT0NBIEhCQ0EgUENJQiBQQ0lMIFNMMEIgU0wwSSBTTDFCIFNMMUkgUFAwQiBQUDBJ IFBQMUIgUFAxSSAAQARJTklOIABAvlZBSU4gEImBAV9TQl8USQhfSU5JAHAM3sCtC1ZBSU5EQkdf DU1FTUw6IABIRVg0TUVNTERCR18NVUlPQTogAEhFWDRVSU9BREJHXw1VSFBUOiAASEVYNFVIUFRE QkdfDVVTTUM6IABIRVg0VVNNQ0RCR18NVUZEQzogAEhFWDRVRkRDREJHXw1NRU1IOiAASEVYNE1F TUgIUFIwMBJPbHgSDQQM//8CAABMTktCABINBAz//wIAAUxOS0MAEg4EDP//AgAKAkxOS0QAEg4E DP//AgAKA0xOS0EAEg0EDP//AwAATE5LQwASDQQM//8DAAFMTktEABIOBAz//wMACgJMTktBABIO BAz//wMACgNMTktCABINBAz//wQAAExOS0QAEg0EDP//BAABTE5LQQASDgQM//8EAAoCTE5LQgAS DgQM//8EAAoDTE5LQwASDQQM//8FAABMTktBABINBAz//wUAAUxOS0IAEg4EDP//BQAKAkxOS0MA Eg4EDP//BQAKA0xOS0QAEg0EDP//BgAATE5LQgASDQQM//8GAAFMTktDABIOBAz//wYACgJMTktE ABIOBAz//wYACgNMTktBABINBAz//wcAAExOS0MAEg0EDP//BwABTE5LRAASDgQM//8HAAoCTE5L QQASDgQM//8HAAoDTE5LQgASDQQM//8IAABMTktEABINBAz//wgAAUxOS0EAEg4EDP//CAAKAkxO S0IAEg4EDP//CAAKA0xOS0MAEg0EDP//CQAATE5LQQASDQQM//8JAAFMTktCABIOBAz//wkACgJM TktDABIOBAz//wkACgNMTktEABINBAz//woAAExOS0IAEg0EDP//CgABTE5LQwASDgQM//8KAAoC TE5LRAASDgQM//8KAAoDTE5LQQASDQQM//8LAABMTktDABINBAz//wsAAUxOS0QAEg4EDP//CwAK AkxOS0EAEg4EDP//CwAKA0xOS0IAEg0EDP//DAAATE5LRAASDQQM//8MAAFMTktBABIOBAz//wwA CgJMTktCABIOBAz//wwACgNMTktDABINBAz//w0AAExOS0EAEg0EDP//DQABTE5LQgASDgQM//8N AAoCTE5LQwASDgQM//8NAAoDTE5LRAASDQQM//8OAABMTktCABINBAz//w4AAUxOS0MAEg4EDP// DgAKAkxOS0QAEg4EDP//DgAKA0xOS0EAEg0EDP//DwAATE5LQwASDQQM//8PAAFMTktEABIOBAz/ /w8ACgJMTktBABIOBAz//w8ACgNMTktCABINBAz//xAAAExOS0QAEg0EDP//EAABTE5LQQASDgQM //8QAAoCTE5LQgASDgQM//8QAAoDTE5LQwASDQQM//8RAABMTktBABINBAz//xEAAUxOS0IAEg4E DP//EQAKAkxOS0MAEg4EDP//EQAKA0xOS0QAEg0EDP//EgAATE5LQgASDQQM//8SAAFMTktDABIO BAz//xIACgJMTktEABIOBAz//xIACgNMTktBABINBAz//xMAAExOS0MAEg0EDP//EwABTE5LRAAS DgQM//8TAAoCTE5LQQASDgQM//8TAAoDTE5LQgASDQQM//8UAABMTktEABINBAz//xQAAUxOS0EA Eg4EDP//FAAKAkxOS0IAEg4EDP//FAAKA0xOS0MAEg0EDP//FQAATE5LQQASDQQM//8VAAFMTktC ABIOBAz//xUACgJMTktDABIOBAz//xUACgNMTktEABINBAz//xYAAExOS0IAEg0EDP//FgABTE5L QwASDgQM//8WAAoCTE5LRAASDgQM//8WAAoDTE5LQQASDQQM//8XAABMTktDABINBAz//xcAAUxO S0QAEg4EDP//FwAKAkxOS0EAEg4EDP//FwAKA0xOS0IAEg0EDP//GAAATE5LRAASDQQM//8YAAFM TktBABIOBAz//xgACgJMTktCABIOBAz//xgACgNMTktDABINBAz//xkAAExOS0EAEg0EDP//GQAB TE5LQgASDgQM//8ZAAoCTE5LQwASDgQM//8ZAAoDTE5LRAASDQQM//8aAABMTktCABINBAz//xoA AUxOS0MAEg4EDP//GgAKAkxOS0QAEg4EDP//GgAKA0xOS0EAEg0EDP//GwAATE5LQwASDQQM//8b AAFMTktEABIOBAz//xsACgJMTktBABIOBAz//xsACgNMTktCABINBAz//xwAAExOS0QAEg0EDP// HAABTE5LQQASDgQM//8cAAoCTE5LQgASDgQM//8cAAoDTE5LQwASDQQM//8dAABMTktBABINBAz/ /x0AAUxOS0IAEg4EDP//HQAKAkxOS0MAEg4EDP//HQAKA0xOS0QAEg0EDP//HgAATE5LQgASDQQM //8eAAFMTktDABIOBAz//x4ACgJMTktEABIOBAz//x4ACgNMTktBABINBAz//x8AAExOS0MAEg0E DP//HwABTE5LRAASDgQM//8fAAoCTE5LQQASDgQM//8fAAoDTE5LQgAIUFIwMRJPXXgSCwQM//8C AAAAChISCwQM//8CAAEAChMSDAQM//8CAAoCAAoUEgwEDP//AgAKAwAKFRILBAz//wMAAAAKExIL BAz//wMAAQAKFBIMBAz//wMACgIAChUSDAQM//8DAAoDAAoWEgsEDP//BAAAAAoUEgsEDP//BAAB AAoVEgwEDP//BAAKAgAKFhIMBAz//wQACgMAChcSCwQM//8FAAAAChUSCwQM//8FAAEAChYSDAQM //8FAAoCAAoXEgwEDP//BQAKAwAKEBILBAz//wYAAAAKFhILBAz//wYAAQAKFxIMBAz//wYACgIA ChASDAQM//8GAAoDAAoREgsEDP//BwAAAAoXEgsEDP//BwABAAoQEgwEDP//BwAKAgAKERIMBAz/ /wcACgMAChISCwQM//8IAAAAChASCwQM//8IAAEAChESDAQM//8IAAoCAAoSEgwEDP//CAAKAwAK ExILBAz//wkAAAAKERILBAz//wkAAQAKEhIMBAz//wkACgIAChMSDAQM//8JAAoDAAoUEgsEDP// CgAAAAoSEgsEDP//CgABAAoTEgwEDP//CgAKAgAKFBIMBAz//woACgMAChUSCwQM//8LAAAAChMS CwQM//8LAAEAChQSDAQM//8LAAoCAAoVEgwEDP//CwAKAwAKFhILBAz//wwAAAAKFBILBAz//wwA AQAKFRIMBAz//wwACgIAChYSDAQM//8MAAoDAAoXEgsEDP//DQAAAAoVEgsEDP//DQABAAoWEgwE DP//DQAKAgAKFxIMBAz//w0ACgMAChASCwQM//8OAAAAChYSCwQM//8OAAEAChcSDAQM//8OAAoC AAoQEgwEDP//DgAKAwAKERILBAz//w8AAAAKFxILBAz//w8AAQAKEBIMBAz//w8ACgIAChESDAQM //8PAAoDAAoSEgsEDP//EAAAAAoQEgsEDP//EAABAAoREgwEDP//EAAKAgAKEhIMBAz//xAACgMA ChMSCwQM//8RAAAAChESCwQM//8RAAEAChISDAQM//8RAAoCAAoTEgwEDP//EQAKAwAKFBILBAz/ /xIAAAAKEhILBAz//xIAAQAKExIMBAz//xIACgIAChQSDAQM//8SAAoDAAoVEgsEDP//EwAAAAoT EgsEDP//EwABAAoUEgwEDP//EwAKAgAKFRIMBAz//xMACgMAChYSCwQM//8UAAAAChQSCwQM//8U AAEAChUSDAQM//8UAAoCAAoWEgwEDP//FAAKAwAKFxILBAz//xUAAAAKFRILBAz//xUAAQAKFhIM BAz//xUACgIAChcSDAQM//8VAAoDAAoQEgsEDP//FgAAAAoWEgsEDP//FgABAAoXEgwEDP//FgAK AgAKEBIMBAz//xYACgMAChESCwQM//8XAAAAChcSCwQM//8XAAEAChASDAQM//8XAAoCAAoREgwE DP//FwAKAwAKEhILBAz//xgAAAAKEBILBAz//xgAAQAKERIMBAz//xgACgIAChISDAQM//8YAAoD AAoTEgsEDP//GQAAAAoREgsEDP//GQABAAoSEgwEDP//GQAKAgAKExIMBAz//xkACgMAChQSCwQM //8aAAAAChISCwQM//8aAAEAChMSDAQM//8aAAoCAAoUEgwEDP//GgAKAwAKFRILBAz//xsAAAAK ExILBAz//xsAAQAKFBIMBAz//xsACgIAChUSDAQM//8bAAoDAAoWEgsEDP//HAAAAAoUEgsEDP// HAABAAoVEgwEDP//HAAKAgAKFhIMBAz//xwACgMAChcSCwQM//8dAAAAChUSCwQM//8dAAEAChYS DAQM//8dAAoCAAoXEgwEDP//HQAKAwAKEBILBAz//x4AAAAKFhILBAz//x4AAQAKFxIMBAz//x4A CgIAChASDAQM//8eAAoDAAoREgsEDP//HwAAAAoXEgsEDP//HwABAAoQEgwEDP//HwAKAgAKERIM BAz//x8ACgMAChIIUFJTQREJCgYjIA4YeQAIUFJTQhEJCgYjIA4YeQAIUFJTQxEJCgYjIA4YeQAI UFJTRBEJCgYjIA4YeQBbgkCpUENJMAhfSElEDEHQCgMUC19BRFIApEhCQ0EIX0JCTgAIX1VJRAAU SwdfUFJUAKA9k5BQSUNNVUlPQQBEQkdfDVJFVFVSTklORyBQSUMKAHAAXi5TQlJHQVBERXAAXi5T QlJHQVBBRKRQUjAwoTVEQkdfDVJFVFVSTklORyBBUElDCgBwCr5eLlNCUkdBUERFcArvXi5TQlJH QVBBRKRQUjAxW4JFY1NCUkcUC19BRFIApElPQ0FbgFBDSUMCAAr/W4EWUENJQwEASFZBUEFECABA GEFQREUIW4JJB15QQ0lFCF9ISUQMQdAMAghfVUlEChEIQ1JTXxERCg6GCQAAAAAA3AAAAAR5ABQz X0NSUwCKQ1JTXwoEQkFTMYpDUlNfCghMRU4xcFBDSUJCQVMxcFBDSUxMRU4xpENSU18UFV9TVEEA oAmTUENJQgCkAKEEpAoPW4I3UFMySwhfSElEDEHQAwMUCV9TVEEApAoPCF9DUlMRGAoVRwFgAGAA AAFHAWQAZAAAASICAHkAW4I1RE1BQwhfSElEDEHQAgAIX0NSUxEgCh1HAQAAAAABEEcBgACAAAEQ RwHAAMAAASAqEAV5AFuCTgVGREMwCF9ISUQMQdAHABQLX1NUQQCkVUZEQwhfQ1JTERsKGEcB8APw AwEGRwH3A/cDAQEiQAAqBAB5AAhfUFJTERsKGEcB8APwAwEGRwH3A/cDAQEiQAAqBAB5AFuCJ1BT Mk0IX0hJRAxB0A8DFAlfU1RBAKQKDwhfQ1JTEQgKBSIAEHkAW4JNCF5MUFQwCF9ISUQMQdAEAAhf VUlEARQVX1NUQQCgCZNQUDBCAKQAoQSkCg8IQ1JTXxEQCg1HAXgDeAMICCKAAHkAFEkEX0NSUwCL Q1JTXwoCUE1JMItDUlNfCgRQTUEwi0NSU18KCVBJUTBwUFAwQlBNSTBwUFAwQlBNQTB5AVBQMElQ SVEwpENSU19bgk4IXkxQVDEIX0hJRAxB0AQACF9VSUQKAhQVX1NUQQCgCZNQUDFCAKQAoQSkCg8I Q1JTXxEQCg1HAXgCeAIICCIgAHkAFEkEX0NSUwCLQ1JTXwoCUE1JMYtDUlNfCgRQTUExi0NSU18K CVBJUTFwUFAxQlBNSTFwUFAxQlBNQTF5AVBQMUlQSVExpENSU19bgk0IXlNSTDAIX0hJRAxB0AUB CF9VSUQBFBVfU1RBAKAJk1NMMEIApAChBKQKDwhDUlNfERAKDUcB+AP4AwEIIhAAeQAUSQRfQ1JT AItDUlNfCgJNSU4wi0NSU18KBE1BWDCLQ1JTXwoJSVJRMHBTTDBCTUlOMHBTTDBCTUFYMHkBU0ww SUlSUTCkQ1JTX1uCTgheU1JMMQhfSElEDEHQBQEIX1VJRAoCFBVfU1RBAKAJk1NMMUIApAChBKQK DwhDUlNfERAKDUcB+AL4AgEIIggAeQAUSQRfQ1JTAItDUlNfCgJNSU4xi0NSU18KBE1BWDGLQ1JT XwoJSVJRMXBTTDFCTUlOMXBTTDFCTUFYMXkBU0wxSUlSUTGkQ1JTX1uCTgheU1JMMghfSElEDEHQ BQEIX1VJRAoDFBVfU1RBAKAJk1NMMkIApAChBKQKDwhDUlNfERAKDUcB6APoAwEIIggAeQAUSQRf Q1JTAItDUlNfCgJNSU4xi0NSU18KBE1BWDGLQ1JTXwoJSVJRMXBTTDJCTUlOMXBTTDJCTUFYMXkB U0wySUlSUTGkQ1JTX1uCTgheU1JMMwhfSElEDEHQBQEIX1VJRAoEFBVfU1RBAKAJk1NMM0IApACh BKQKDwhDUlNfERAKDUcB6ALoAgEIIggAeQAUSQRfQ1JTAItDUlNfCgJNSU4xi0NSU18KBE1BWDGL Q1JTXwoJSVJRMXBTTDNCTUlOMXBTTDNCTUFYMXkBU0wzSUlSUTGkQ1JTX1uCKlRJTVIIX0hJRAxB 0AEACF9DUlMRFQoSRwFAAEAAAARHAVAAUAAQBHkAW4IrUElDXwhfSElEC0HQCF9DUlMRGAoVRwEg ACAAAAJHAaAAoAAAAiIEAHkAW4IuUlRDXwhfSElEDEHQCwAIX0NSUxENCgpHAXAAcAABAnkAFAtf U1RBAKRVUlRDW4JFBUhQRVQIX0hJRAxB0AEDCF9DSUQMQdAMAQhfVUlEABQLX1NUQQCkVUhQVAhD UlNfERcKFCIBACIAAYYJAAEAAND+AAQAAHkAFAtfQ1JTAKRDUlNfW4JNBFNNQ18IX0hJRAwGEAAB CF9DSUQNc21jLW5hcGEAFAtfU1RBAKRVU01DCENSU18REAoNRwEAAwADASAiQAB5ABQLX0NSUwCk Q1JTX1uCOkdJR0UIX0hJRAxB0IOQFAtfQURSAKROSUNBFAhFV09MAaQAFBVfU1RBAKAJk05JQ0EA pAChBKQKD1uCSQVHRlgwCF9BRFIMAAACABAfXF9HUEUUGF9MMDIAhlwvA19TQl9QQ0kwR0ZYMAqB FAZfRE9TARQPX0RPRACkEgcBDAABAIBbghBWR0FfFApfQURSCKQLAAFbgkcJSERFRhROBl9EU00E cBIrBA1sYXlvdXQtaWQAEQcKBAQAAAANUGluQ29uZmlndXJhdGlvbnMAEQIAYKAwk2gREwoQxre1 oBgTHESwyf5pXq+Um6AYk2kBoAyTagBwEQMBA2CkYKAGk2oBpGBwEQMBAGCkYBQLX0FEUgCkSERB QRQVX1NUQQCgCZNIREFBAKQAoQSkCg9bgk0jQkFUMAhfSElEDEHQDAoIX1VJRAAQH1xfR1BFFBhf TDAwAIZcLwNfU0JfUENJMEJBVDAKgVuAQ0JBVAELQEAKCFuBEENCQVQDSURYMCBEQVQwIFuGRgVJ RFgwREFUMANTVEFUIFBSQVQgUkNBUCBQVk9MIFVOSVQgRENBUCBMRkNQIEJURUMgRFZPTCBEV1JO IERMT1cgR1JOMSBHUk4yIEJTVEEgQVBTUiAUC19TVEEApEJTVEEIUEJJRhIqDQEM////fwz///9/ AP8AAAoECgQNMQANMAANVkJPWAANaW5ub3RlawAIUEJTVBISBAAM////fwz///9/DP///38UTg9f QklGAHBVTklUiFBCSUYAAHBEQ0FQiFBCSUYBAHBMRkNQiFBCSUYKAgBwQlRFQ4hQQklGCgMAcERW T0yIUEJJRgoEAHBEV1JOiFBCSUYKBQBwRExPV4hQQklGCgYAcEdSTjGIUEJJRgoHAHBHUk4yiFBC SUYKCABEQkdfDV9CSUY6CgBIRVg0g4hQQklGAABIRVg0g4hQQklGAQBIRVg0g4hQQklGCgIASEVY NIOIUEJJRgoDAEhFWDSDiFBCSUYKBABIRVg0g4hQQklGCgUASEVYNIOIUEJJRgoGAEhFWDSDiFBC SUYKBwBIRVg0g4hQQklGCggApFBCSUYUPV9CU1QAcFNUQVSIUEJTVAAAcFBSQVSIUEJTVAEAcFJD QVCIUEJTVAoCAHBQVk9MiFBCU1QKAwCkUEJTVFuCRARBQ19fCF9ISUQNQUNQSTAwMDMACF9VSUQA CF9QQ0wSBgFfU0JfFBJfUFNSAKReXi5CQVQwQVBTUhQJX1NUQQCkCg8QTgtfU0JfEEcLUENJMAhD UlNfEUIHCm6IDQACDAAAAAAA/wAAAAABRwH4DPgMAQiIDQABDAMAAAAA9wwAAPgMiA0AAQwDAAAA Df//AAAA84cXAAAMAwAAAAAAAAoA//8LAAAAAAAAAAIAhxcAAAgDAAAAAAAAAAD//9//AAAAAAAA AAB5ABQ4X0NSUwCKQ1JTXwpcUkFNVIpDUlNfCmhSQU1ScE1FTUxSQU1UdAwAAOD/UkFNVFJBTVKk Q1JTXxBKLl9TQl9bgScvA1BDSTBTQlJHUENJQwEAQDBQSVJBCFBJUkIIUElSQwhQSVJECAhCVUZB EQkKBiMAgBh5AItCVUZBAUlDUlMUFkxTVEEBe2gKgGCgBWCkCgmhBKQKCxQXTENSUwF7aAoPYHkB YElDUlOkQlVGQRQWTFNSUwGLaAFJU1JTgklTUlNgpHZgFAxMRElTAaR9aAqAAFuCQQxMTktBCF9I SUQMQdAMDwhfVUlEARQfX1NUQQBEQkdfDUxOS0EuX1NUQQoApExTVEFQSVJBFBtfUFJTAERCR18N TE5LQS5fUFJTCgCkUFJTQRQjX0RJUwBEQkdfDUxOS0EuX0RJUwoAcExESVNQSVJBUElSQRQfX0NS UwBEQkdfDUxOS0EuX0NSUwoApExDUlNQSVJBFCpfU1JTAURCR18NTE5LQS5fU1JTOiAASEVYX0xT UlNocExTUlNoUElSQVuCQghMTktCCF9ISUQMQdAMDwhfVUlECgIUD19TVEEApExTVEFQSVJCFAtf UFJTAKRQUlNCFBNfRElTAHBMRElTUElSQlBJUkIUD19DUlMApExDUlNQSVJCFCpfU1JTAURCR18N TE5LQi5fU1JTOiAASEVYX0xTUlNocExTUlNoUElSQluCQghMTktDCF9ISUQMQdAMDwhfVUlECgMU D19TVEEApExTVEFQSVJDFAtfUFJTAKRQUlNDFBNfRElTAHBMRElTUElSQ1BJUkMUD19DUlMApExD UlNQSVJDFCpfU1JTAURCR18NTE5LQy5fU1JTOiAASEVYX0xTUlNocExTUlNoUElSQ1uCQghMTktE CF9ISUQMQdAMDwhfVUlECgQUD19TVEEApExTVEFQSVJEFAtfUFJTAKRQUlNEFBNfRElTAHBMRElT UElSQVBJUkQUD19DUlMApExDUlNQSVJEFCpfU1JTAURCR18NTE5LRC5fU1JTOiAASEVYX0xTUlNo cExTUlNoUElSRAhfUzBfEgQCAACgE3tQV1JTCgIACF9TMV8SBAIBAaAVe1BXUlMKEAAIX1M0XxIG AgoFCgUIX1M1XxIGAgoFCgUUI19QVFMBREJHXw1QcmVwYXJlIHRvIHNsZWVwOiAASEVYX2g= ==== begin-base64 644 openbsd.FACP.1 RkFDUHQAAAAEs1ZCT1ggIFZCT1hGQUNQAQAAAEFTTCBhAAAAAAL/P3AE/z8BAAkALkQAAKGgAAAA QAAAAAAAAARAAAAAAAAAAAAAAAhAAAAgQAAAAAAAAAQCAAQCAAAAZQDpAwAAAAAAAAAAAAMAAEEF AAA= ==== begin-base64 644 openbsd.RSDT.0 UlNEVDAAAAABJ1ZCT1ggIFZCT1hSU0RUAQAAAEFTTCBhAAAAcAD/P0AC/z+gAv8/ ==== begin-base64 644 openbsd.SSDT.4 U1NEVMwBAAABnVZCT1ggIFZCT1hDUFVUAgAAAElOVEwoBRAgEEcaXF9QUl9bgwtDUFUwAAAAAAAA o6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Oj o6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Oj o6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Oj o6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Oj o6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Oj o6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Oj o6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Oj o6Ojow== ==== begin-base64 644 openbsd.headers ClJTRCBQVFI6IENoZWNrc3VtPTM0LCBPRU1JRD1WQk9YLCBSc2R0QWRkcmVzcz0weDNmZmYwMDAw CgoKUlNEVDogTGVuZ3RoPTQ4LCBSZXZpc2lvbj0xLCBDaGVja3N1bT0zOSwKCU9FTUlEPVZCT1gs IE9FTSBUYWJsZSBJRD1WQk9YUlNEVCwgT0VNIFJldmlzaW9uPTB4MSwKCUNyZWF0b3IgSUQ9QVNM LCBDcmVhdG9yIFJldmlzaW9uPTB4NjEKCgoJRW50cmllcz17IDB4M2ZmZjAwNzAsIDB4M2ZmZjAy NDAsIDB4M2ZmZjAyYTAgfQoKCglEU0RUPTB4M2ZmZjA0NzAKCUlOVF9NT0RFTD1BUElDCglTQ0lf SU5UPTkKCVNNSV9DTUQ9MHg0NDJlLCBBQ1BJX0VOQUJMRT0weGExLCBBQ1BJX0RJU0FCTEU9MHhh MCwgUzRCSU9TX1JFUT0weDAKCVBNMWFfRVZUX0JMSz0weDQwMDAtMHg0MDAzCglQTTFhX0NOVF9C TEs9MHg0MDA0LTB4NDAwNQoJUE0yX1RNUl9CTEs9MHg0MDA4LTB4NDAwYgoJUE0yX0dQRTBfQkxL PTB4NDAyMC0weDQwMjEKCVBfTFZMMl9MQVQ9MTAxbXMsIFBfTFZMM19MQVQ9MTAwMW1zCglGTFVT SF9TSVpFPTAsIEZMVVNIX1NUUklERT0wCglEVVRZX09GRlNFVD0wLCBEVVRZX1dJRFRIPTAKCURB WV9BTFJNPTAsIE1PTl9BTFJNPTAsIENFTlRVUlk9MAoJRmxhZ3M9e1dCSU5WRCxGSVhfUlRDLFRN Ul9WQUxfRVhUfQoKCkRTRFQ6IExlbmd0aD03NjkxLCBSZXZpc2lvbj0xLCBDaGVja3N1bT02NSwK CU9FTUlEPVZCT1gsIE9FTSBUYWJsZSBJRD1WQk9YQklPUywgT0VNIFJldmlzaW9uPTB4MiwKCUNy ZWF0b3IgSUQ9SU5UTCwgQ3JlYXRvciBSZXZpc2lvbj0weDIwMTAwNTI4CgoKQVBJQzogTGVuZ3Ro PTg0LCBSZXZpc2lvbj0yLCBDaGVja3N1bT05OSwKCU9FTUlEPVZCT1gsIE9FTSBUYWJsZSBJRD1W Qk9YQVBJQywgT0VNIFJldmlzaW9uPTB4MSwKCUNyZWF0b3IgSUQ9QVNMLCBDcmVhdG9yIFJldmlz aW9uPTB4NjEKCgpTU0RUOiBMZW5ndGg9NDYwLCBSZXZpc2lvbj0xLCBDaGVja3N1bT0xNTcsCglP RU1JRD1WQk9YLCBPRU0gVGFibGUgSUQ9VkJPWENQVVQsIE9FTSBSZXZpc2lvbj0weDIsCglDcmVh dG9yIElEPUlOVEwsIENyZWF0b3IgUmV2aXNpb249MHgyMDEwMDUyOAoK ====