[#5902] reading /proc/bus/usb/devices on BF548-EZKIT in OTG mode results in crash
Submitted By: Mike Frysinger
Open Date
2010-02-17 16:23:11 Close Date
2010-06-11 04:12:38
Priority:
Medium Assignee:
Cliff Cai
Status:
Closed Fixed In Release:
N/A
Found In Release:
2010R1 Release:
Category:
N/A Board:
N/A
Processor:
ALL Silicon Revision:
Is this bug repeatable?:
Yes Resolution:
Out of Date
Uboot version or rev.:
Toolchain version or rev.:
trunk
App binary format:
N/A
Summary: reading /proc/bus/usb/devices on BF548-EZKIT in OTG mode results in crash
Details:
root:/> cat /proc/bus/usb/devices
Data access misaligned address violation
<5> - Attempted misaligned data memory or data cache access.
Kernel OOPS in progress
Deferred Exception context
CURRENT PROCESS:
COMM=cat PID=338 CPU=0
TEXT = 0x02500000-0x0254d2f8 DATA = 0x028a82f8-0x028abc44
BSS = 0x028abc44-0x02800000 USER-STACK = 0x0281fea0
return address: [0x00022e9e]; contents of:
0x00022e70: 0025 e10a 9fc8 9110 0040 6c66 0127 3001
0x00022e80: 0538 0010 3042 e30c 560f 3008 2fed 0000
0x00022e90: 0578 0167 6fa6 3210 0037 61f8 0040 [9110]
0x00022ea0: 0c00 1811 67f8 9310 6200 5407 0c00 1c07
ADSP-BF548-0.2 525(MHz CCLK) 131(MHz SCLK) (mpu off)
Linux version 2.6.32.8-ADI-2010R1-pre (vapier@vapier-m) (gcc version 4.3.4 (ADI-trunk/git-5d90a14) ) #408 Wed Feb 17 16:10:48 EST 2010
SEQUENCER STATUS: Not tainted
SEQSTAT: 00002024 IPEND: 8008 IMASK: 003f SYSCFG: 0006
Peripheral interrupts masked off
Kernel interrupts masked off
EXCAUSE : 0x24
physical IVG3 asserted : <0xffa00704> { _trap + 0x0 }
physical IVG15 asserted : <0xffa00f4c> { _evt_system_call + 0x0 }
logical irq 6 mapped : <0xffa0039c> { _bfin_coretmr_interrupt + 0x0 }
logical irq 9 mapped : <0x000b8e08> { _bfin_bf54x_irq_error + 0x0 }
logical irq 10 mapped : <0x0015b8fc> { _err_handler + 0x0 }
logical irq 14 mapped : <0x00128540> { _bfin_rtc_interrupt + 0x0 }
logical irq 16 mapped : <0x0015bbe8> { _rx_handler + 0x0 }
logical irq 17 mapped : <0x0015bb8c> { _tx_handler + 0x0 }
logical irq 48 mapped : <0x000cf984> { _bfin_serial_dma_rx_int + 0x0 }
logical irq 49 mapped : <0x000cf708> { _bfin_serial_dma_tx_int + 0x0 }
logical irq 52 mapped : <0x0012afb8> { _bfin_twi_interrupt_entry + 0x0 }
logical irq 53 mapped : <0x0012afb8> { _bfin_twi_interrupt_entry + 0x0 }
logical irq 68 mapped : <0x000f1cd8> { _bfin_ata_interrupt + 0x0 }
logical irq 76 mapped : <0x00125b00> { _bfin_kpad_isr + 0x0 }
logical irq 82 mapped : <0x0011be48> { _blackfin_interrupt + 0x0 }
logical irq 85 mapped : <0x001220bc> { _dma_controller_irq + 0x0 }
logical irq 123 mapped : <0x00126448> { _ad7877_irq + 0x0 }
logical irq 175 mapped : <0x00107848> { _smsc911x_irqhandler + 0x0 }
RETE: <0x00000000> /* Maybe null pointer? */
RETN: <0x02773e4c> /* kernel dynamic memory (maybe user-space) */
RETX: <0x00000480> /* Maybe fixed code section */
RETS: <0x001172bc> { _usb_device_read + 0x88 }
PC : <0x00022e9e> { _down + 0xe }
DCPLB_FAULT_ADDR: <0x6000f60c> /* kernel dynamic memory (maybe user-space) */
ICPLB_FAULT_ADDR: <0x00022e9e> { _down + 0xe }
PROCESSOR STATE:
R0 : 0000003f R1 : 0042e628 R2 : 00000000 R3 : 00000000
R4 : 00000098 R5 : 00000000 R6 : 00000000 R7 : 0000ffff
P0 : 025ed2f0 P1 : 02773ef0 P2 : 6000f60d P3 : 0026affc
P4 : 001000d8 P5 : 02773ef0 FP : 02773eb4 SP : 02773d70
LB0: 023ec5a1 LT0: 023ec594 LC0: 00000000
LB1: 023ebffb LT1: 023ebff8 LC1: 00000000
B0 : 00000137 L0 : 00000000 M0 : fffffffc I0 : 0281ffed
B1 : 000000c0 L1 : 00000000 M1 : 00000001 I1 : 028a5168
B2 : 7ffff000 L2 : 00000000 M2 : 00001802 I2 : 00000003
B3 : 00000000 L3 : 00000000 M3 : 0000005b I3 : 00000006
A0.w: 00000000 A0.x: 00000000 A1.w: 00000000 A1.x: 00000000
USP : 0281ece0 ASTAT: 02000000
Hardware Trace:
0 Target : <0x00005230> { _trap_c + 0x0 }
Source : <0xffa00698> { _exception_to_level5 + 0xa4 } CALL pcrel
1 Target : <0xffa005f4> { _exception_to_level5 + 0x0 }
Source : <0xffa004a8> { _bfin_return_from_exception + 0x18 } RTX
2 Target : <0xffa00490> { _bfin_return_from_exception + 0x0 }
Source : <0xffa0054c> { _ex_trap_c + 0x74 } JUMP.S
3 Target : <0xffa004d8> { _ex_trap_c + 0x0 }
Source : <0xffa0075e> { _trap + 0x5a } JUMP (P4)
4 Target : <0xffa00704> { _trap + 0x0 }
Source : <0x00022e9c> { _down + 0xc } STI R0
5 Target : <0x00022e90> { _down + 0x0 }
Source : <0x001172b8> { _usb_device_read + 0x84 } CALL pcrel
6 Target : <0x001172f2> { _usb_device_read + 0xbe }
Source : <0x001172b4> { _usb_device_read + 0x80 } IF !CC JUMP
7 Target : <0x001172ae> { _usb_device_read + 0x7a }
Source : <0x001172ff> { _usb_device_read + 0xcb }
8 Target : <0x001172f6> { _usb_device_read + 0xc2 }
Source : <0x001172ac> { _usb_device_read + 0x78 } JUMP.S
9 Target : <0x00117296> { _usb_device_read + 0x62 }
Source : <0x001ad6c6> { _mutex_lock + 0x36 } RTS
10 Target : <0x001ad69c> { _mutex_lock + 0xc }
Source : <0x001acda8> { __cond_resched + 0x20 } RTS
11 Target : <0x001acda2> { __cond_resched + 0x1a }
Source : <0x001acd9a> { __cond_resched + 0x12 } IF CC JUMP
12 Target : <0x001acd88> { __cond_resched + 0x0 }
Source : <0x001ad698> { _mutex_lock + 0x8 } CALL pcrel
13 Target : <0x001ad690> { _mutex_lock + 0x0 }
Source : <0x00117292> { _usb_device_read + 0x5e } CALL pcrel
14 Target : <0x00117286> { _usb_device_read + 0x52 }
Source : <0x00117280> { _usb_device_read + 0x4c } IF !CC JUMP
15 Target : <0x0011727e> { _usb_device_read + 0x4a }
Source : <0xffa001ae> { __access_ok + 0x5e } RTS
Kernel Stack
Stack info:
SP: [0x02773f24] <0x02773f24> /* kernel dynamic memory (maybe user-space) */
Memory from 0x02773f20 to 02774000
02773f20: 00000003 [0248d77a] 00008000 00002000 00000000 02774000 0248d77a 0248d77a
02773f40:<02506560><ffa00fb0> 02001004 023ebffb 023ec5a1 023ebff8 023ec594 00000000
02773f60: 00000000 00000000 00000000 00000000 00000000 00000000 7ffff000 000000c0
02773f80: 00000137 00000000 00000000 00000000 00000000 0000005b 00001802 00000001
02773fa0: fffffffc 00000006 00000003 028a5168 0281ffed 0281ece0 0281ecec 028a9868
02773fc0: 028a5b98 028a5168 02835150 0248d770 00000003 00001000 0281ed2c 00000003
02773fe0: 00000000 0000d770 00001000 0281ed2c 00000003 00000003 00000003 00000006
Return addresses in stack:
address : <0x02506560> /* kernel dynamic memory (maybe user-space) */
address : <0xffa00fb0> { _evt_system_call + 0x64 }
Modules linked in: [last unloaded: gadgetfs]
Kernel panic - not syncing: Kernel exception
Hardware Trace:
Stack info:
SP: [0x02773c8c] <0x02773c8c> /* kernel dynamic memory (maybe user-space) */
FP: (0x02773e5c)
Memory from 0x02773c80 to 02774000
02773c80: 00000007 02773c8c 00000013 [001f2bf4]<001ac69a> 02773d70 001f2bf4 0024970e
02773ca0: 0024970e 0024970e 02773cc4 <0000566c> 02773d70 ffe02014 0026affc 00008008
02773cc0: 02773d70 0000003f 0000003f 002ebe80 <000313b0> 00030001 ffffffc0 0000003f
02773ce0: 002ebe80 ffffffc0 00020000 00200200 026c18b4 00000815 00000173 <0004795e>
02773d00: 0200ee20 02773d98 00000000 00000000 02773d68 0200e2a0 02773d68 <00047bc0>
02773d20: 026da7d4 02773e30 02773d98 02773d84 0200ee20 02773d84 02773d98 021d4268
02773d40: 00200200 00000001 <0004912e><ffa0069c> 00246000 00008008 00002024 00000000
02773d60: 00000098 02773e14 ad3c7055 00000480 00000480 00008008 00002024 00000000
02773d80: 02773e4c 00000480 00022e9e <001172bc> 0000003f 02000000 023ebffb 023ec5a1
02773da0: 023ebff8 023ec594 00000000 00000000 00000000 00000000 00000000 00000000
02773dc0: 00000000 7ffff000 000000c0 00000137 00000000 00000000 00000000 00000000
02773de0: 0000005b 00001802 00000001 fffffffc 00000006 00000003 028a5168 0281ffed
02773e00: 0281ece0 02773eb4 02773ef0 001000d8 0026affc 6000f60d 02773ef0 025ed2f0
02773e20: 0000ffff 00000000 00000000 00000098 00000000 00000000 0042e628 0000003f
02773e40: 0000003f 025ed2f0 00000006 00000101 00000001 <0011727e><001172bc>(02773ef0)
02773e60:<000bc5c8> 02032da0 <000bc5da> 00000000 0281fd24 <0003f25e> 00000001 00000001
02773e80: 00000000 00000000 00000000 0281ecec <00041f8e> 025fdbc0 00000003 028a5168
02773ea0: 02773ef0 0281ed2c 00001000 00000000 00000020 0281ed2c 00001000 02773ef0
02773ec0: 023d81ed <0002ea80><000420b4> 025fdbc0 00000003 0281ed2c 00001000 00000003
02773ee0: 028a5168 00000000 ffffe000 02773ef0 (00000000) 00000000 00000000 <ffa00896>
02773f00: 00042084 00000000 ffffe000 02835150 00000296 006568c3 0000d770 00000000
02773f20: 00000003 0248d77a 00008000 00002000 00000000 02774000 0248d77a 0248d77a
02773f40:<02506560><ffa00fb0> 02001004 023ebffb 023ec5a1 023ebff8 023ec594 00000000
02773f60: 00000000 00000000 00000000 00000000 00000000 00000000 7ffff000 000000c0
02773f80: 00000137 00000000 00000000 00000000 00000000 0000005b 00001802 00000001
02773fa0: fffffffc 00000006 00000003 028a5168 0281ffed 0281ece0 0281ecec 028a9868
02773fc0: 028a5b98 028a5168 02835150 0248d770 00000003 00001000 0281ed2c 00000003
02773fe0: 00000000 0000d770 00001000 0281ed2c 00000003 00000003 00000003 00000006
Return addresses in stack:
address : <0x001ac69a> { _panic + 0x46 }
address : <0x0000566c> { _trap_c + 0x43c }
address : <0x000313b0> { _do_generic_file_read + 0x160 }
address : <0x0004795e> { ___follow_mount + 0x2a }
address : <0x00047bc0> { _do_lookup + 0x78 }
address : <0x0004912e> { ___link_path_walk + 0x532 }
address : <0xffa0069c> { _exception_to_level5 + 0xa8 }
address : <0x001172bc> { _usb_device_read + 0x88 }
address : <0x0011727e> { _usb_device_read + 0x4a }
address : <0x001172bc> { _usb_device_read + 0x88 }
frame 1 : <0x000bc5c8> { _tty_ioctl + 0xc8 }
address : <0x000bc5da> { _tty_ioctl + 0xda }
address : <0x0003f25e> { _kmem_cache_alloc + 0x7a }
address : <0x00041f8e> { _vfs_read + 0x6a }
address : <0x0002ea80> { _handle_simple_irq + 0x68 }
address : <0x000420b4> { _sys_read + 0x30 }
address : <0xffa00896> { _system_call + 0x6a }
address : <0x02506560> /* kernel dynamic memory (maybe user-space) */
address : <0xffa00fb0> { _evt_system_call + 0x64 }
Follow-ups
--- Cliff Cai 2010-03-19 00:09:48
I didn't see the problem.
Cliff
## Booting kernel from Legacy Image at 01000000 ...
Image Name: bf548-2.6.33.1-ADI-2010R1-pre-sv
Created: 2010-03-19 3:59:16 UTC
Image Type: Blackfin Linux Kernel Image (gzip compressed)
Data Size: 6618149 Bytes = 6.3 MB
Load Address: 00001000
Entry Point: 0028aab4
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK
Starting Kernel at = 0028aab4
Linux version 2.6.33.1-ADI-2010R1-pre-svn8507 (cliff@debiancliff) (gcc version
4.1.2 (ADI svn)) #216 Fri Mar 19 11:59:05 CST 0
register early platform devices
bootconsole [early_shadow0] enabled
bootconsole [early_BFuart1] enabled
early printk enabled on early_BFuart1
Board Memory: 64MB
Kernel Managed Memory: 64MB
Memory map:
fixedcode = 0x00000400-0x00000490
text = 0x00001000-0x001a7c20
rodata = 0x001a7c20-0x00247318
bss = 0x00248000-0x0025c000
data = 0x0025c000-0x00278000
stack = 0x00276000-0x00278000
init = 0x00278000-0x00c6a000
available = 0x00c6a000-0x03e00000
DMA Zone = 0x03e00000-0x04000000
Hardware Trace Active and Enabled
Boot Mode: 1
Blackfin support (C) 2004-2009 Analog Devices, Inc.
Compiled for ADSP-BF548 Rev 0.2
Blackfin Linux support by http://blackfin.uclinux.org/
Processor Speed: 525 MHz core clock and 131 MHz System Clock
NOMPU: setting up cplb tables
Instruction Cache Enabled for CPU0
External memory: cacheable in instruction cache
L2 SRAM : uncacheable in instruction cache
Data Cache Enabled for CPU0
External memory: cacheable (write-through) in data cache
L2 SRAM : uncacheable in data cache
Built 1 zonelists in Zone order, mobility grouping off. Total pages: 15748
Kernel command line: root=/dev/mtdblock0 rw earlyprintk=serial,uart1,57600
console=ttyBF1,57600 ip=10.100.4.50:10.100.4.174:1f
PID hash table entries: 256 (order: -2, 1024 bytes)
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory available: 50208k/65536k RAM, (10184k init code, 1691k kernel code, 833k
data, 2048k dma, 572k reserved)
Hierarchical RCU implementation.
NR_IRQS:295
Configuring Blackfin Priority Driven Interrupts
console [ttyBF1] enabled, bootconsole disabled
console [ttyBF1] enabled, bootconsole disabled
Calibrating delay loop... 1044.48 BogoMIPS (lpj=2088960)
Mount-cache hash table entries: 512
Blackfin Scratchpad data SRAM: 4 KB
Blackfin L1 Data A SRAM: 16 KB (16 KB free)
Blackfin L1 Data B SRAM: 16 KB (16 KB free)
Blackfin L1 Instruction SRAM: 48 KB (41 KB free)
Blackfin L2 SRAM: 128 KB (128 KB free)
NET: Registered protocol family 16
Blackfin DMA Controller
ezkit_init(): registering device resources
bio: create slab <bio-0> at 0
SCSI subsystem initialized
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
Advanced Linux Sound Architecture Driver Version 1.0.21.
Switching to clocksource jiffies
musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
musb_hdrc: kernel must blacklist external hubs
000000 musb_hdrc: HDRC RTL version 1.900
musb_hdrc: USB OTG mode controller at ffc03c00 using DMA, IRQ 82
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
Slow work thread pool: Starting up
Slow work thread pool: Ready
msgmni has been set to 98
io scheduler noop registered (default)
bf54x-lq043: FrameBuffer initializing...
dma_alloc_init: dma_page @ 0x02c8e000 - 512 pages at 0x03e00000
bfin-otp: initialized
bfin-uart: Blackfin serial driver
bfin-uart.1: ttyBF1 at MMIO 0xffc02000 (irq = 48) is a BFIN-UART
brd: module loaded
register bfin atapi driver
scsi0 : pata-bf54x
ata1: PATA max UDMA/66 irq 68
physmap platform flash device: 02000000 at 20000000
physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Intel/Sharp Extended Query Table at 0x010A
Using buffer write method
Using auto-unlock on power-up/resume
cfi_cmdset_0001: Erase suspend on write enabled
RedBoot partition parsing not available
Using physmap partition information
Creating 3 MTD partitions on "physmap-flash.0":
0x000000000000-0x000000040000 : "bootloader(nor)"
0x000000040000-0x000000440000 : "linux kernel(nor)"
0x000000440000-0x000001000000 : "file system(nor)"
m25p80 spi0.1: m25p16 (2048 Kbytes)
Creating 2 MTD partitions on "m25p80":
0x000000000000-0x000000040000 : "bootloader(spi)"
0x000000040000-0x000000200000 : "linux kernel(spi)"
bfin-spi bfin-spi.0: Blackfin on-chip SPI Controller Driver, Version 1.0,
regs_base@ffc00500, dma channel@4
bfin-spi bfin-spi.1: Blackfin on-chip SPI Controller Driver, Version 1.0,
regs_base@ffc02300, dma channel@5
smsc911x: Driver version 2008-10-21.
smsc911x-mdio: probed
eth0: attached PHY driver [Generic PHY] (mii_bus:phy_addr=0:01, irq=-1)
net eth0: MAC Address: 00:e0:22:fe:be:df
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
input: bf54x-keys as /devices/platform/bf54x-keys/input/input0
rtc-bfin rtc-bfin: rtc core: registered rtc-bfin as rtc0
i2c /dev entries driver
i2c-bfin-twi i2c-bfin-twi.0: Blackfin BF5xx on-chip I2C TWI Contoller,
regs_base@ffc00700
i2c-bfin-twi i2c-bfin-twi.1: Blackfin BF5xx on-chip I2C TWI Contoller,
regs_base@ffc02200
bfin-wdt: initialized: timeout=20 sec (nowayout=0)
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
dma rx:0 tx:1, err irq:10, regs:ffc00800
ALSA device list:
No soundcards found.
TCP cubic registered
NET: Registered protocol family 17
rtc-bfin rtc-bfin: setting system clock to 1970-01-07 01:32:35 UTC (523955)
ata1.00: ATA-7: FUJITSU MHW2040AT, 0000000B, max UDMA/100
ata1.00: 78140160 sectors, multi 16: LBA
ata1.00: configured for UDMA/66
blk_queue_max_hw_segments: set to minimum 1
scsi 0:0:0:0: Direct-Access ATA FUJITSU MHW2040A 0000 PQ: 0 ANSI: 5
sd 0:0:0:0: [sda] 78140160 512-byte logical blocks: (40.0 GB/37.2 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support
DPO or FUA
sda: sda1
sd 0:0:0:0: [sda] Attached SCSI disk
net eth0: SMSC911x/921x identified at 0x24000000, IRQ: 175
IP-Config: Gateway not on directly connected network.
Freeing unused kernel memory: 10184k freed
_____________________________________
a8888b. / Welcome to the uClinux distribution \
d888888b. / _ _ \
8P"YP"Y88 / | | |_| __ __ (TM) |
8|o||o|88 _____/ | | _ ____ _ _ \ \/ / |
8' .88 \ | | | | _ \| | | | \ / |
8`._.' Y8. \ | |__ | | | | | |_| | / \ |
d/ `8b. \ \____||_|_| |_|\____|/_/\_\ |
dP . Y8b. \ For embedded processors including |
d8:' " `::88b \ the Analog Devices Blackfin /
d8" 'Y88b \___________________________________/
:8P ' :888
8a. : _a88P For further information, check out:
._/"Yaa_: .| 88P| - http://blackfin.uclinux.org/
\ YP" `| 8P `. - http://docs.blackfin.uclinux.org/
/ \.___.d| .' - http://www.uclinux.org/
`--..__)8888P`._.' jgs/a:f - http://www.analog.com/blackfin
Have a lot of fun...
BusyBox v1.15.3 (2010-01-05 01:28:08 CST) hush - the humble shell
root:/> cat /proc/bus/usb/devices
cat: can't open '/proc/bus/usb/devices': No such file or directory
root:/> modprobe g_zero autoresume=5
zero gadget: Gadget Zero, version: Cinco de Mayo 2008
zero gadget: zero ready
musb_hdrc musb_hdrc.0: MUSB HDRC host driver
musb_hdrc musb_hdrc.0: new USB bus registered, assigned bus number 1
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
root:/> cat /proc/bus/usb/devices
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
B: Alloc= 0/800 us ( 0%), #Int= 0, #Iso= 0
D: Ver= 2.00 Cls=09(hub ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1d6b ProdID=0002 Rev= 2.06
S: Manufacturer=Linux 2.6.33.1-ADI-2010R1-pre-svn8507 musb-hcd
S: Product=MUSB HDRC host driver
S: SerialNumber=musb_hdrc.0
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
--- Cliff Cai 2010-06-10 03:25:24
it's OK with trunk head.
Files
Changes
Commits
Dependencies
Duplicates
Associations
Tags
File Name File Type File Size Posted By
kernel-config application/octet-stream 42303 Mike Frysinger