[pvrusb2] New type of oops

Mike Isely isely at isely.net
Fri Apr 23 22:50:10 CDT 2010


Found this one and fixed it.

There is one spot in the driver where it performs a USB control message 
using a buffer that is one single solitary byte in size.  This is a rare 
case - it only happens as part of the FX2 firmware download and not 
during normal operation.  Since the buffer was so tiny I just created a 
local character to hold it.  But that's where your oops came from.  I've 
now modified the code to kmalloc() it instead...

  -Mike


On Wed, 21 Apr 2010, JE Geiger wrote:

> kernel 2.6.33.2 tainted with nvidia
> 
> I have seen this in the past, but did not catch it to record.  It
> appears to indicate a DMA mapping call that maps the stack to DMA,
> which I would think is either being misunderstood, or if it is
> actually occurring it is a bad idea.  Possibly within the kernel code
> itself as part of the kernel objects.  This is just a warning and the
> device works fine.
> 
> When rc5 of 2.6.34 goes golden, I will recompile and test the newest
> to see if these issues go away.
> 
> 
> 
> 
> ------------[ cut here ]------------
> WARNING: at lib/dma-debug.c:866 check_for_stack+0x9b/0xd0()
> Hardware name:
> ehci_hcd 0000:00:02.1: DMA-API: device driver maps memory fromstack
> [addr=f410de57]
> Modules linked in: pvrusb2 cx2341x v4l2_common videodev v4l1_compat
> tveeprom fuse hwmon_vid hwmon sunrpc nf_conntrack_netbios_ns uinput
> snd_intel8x0 snd_ac97_codec ac97_bus snd_seq nvidia(P) snd_seq_device
> rt61pci snd_pcm snd_timer crc_itu_t rt2x00pci snd rt2x00lib
> i2c_nforce2 i2c_core soundcore forcedeth snd_page_alloc led_class
> serio_raw joydev pcspkr eeprom_93cx6 pata_acpi ata_generic pata_amd
> [last unloaded: scsi_wait_scan]
> Pid: 9359, comm: pvrusb2-context Tainted: P           2.6.33.2 #2
> Call Trace:
>  [<c0447bb2>] warn_slowpath_common+0x72/0xa0
>  [<c063dafb>] ? check_for_stack+0x9b/0xd0
>  [<c063dafb>] ? check_for_stack+0x9b/0xd0
>  [<c0447c2b>] warn_slowpath_fmt+0x2b/0x30
>  [<c063dafb>] check_for_stack+0x9b/0xd0
>  [<c063dda0>] debug_dma_map_page+0xd0/0x120
>  [<c073fcae>] dma_map_single_attrs.clone.2+0x8e/0xb0
>  [<c0740512>] usb_hcd_submit_urb+0x842/0xa30
>  [<c044e239>] ? __do_softirq+0x109/0x1d0
>  [<c04fb20f>] ? check_object+0x12f/0x1f0
>  [<c04f9b55>] ? init_object+0x45/0x80
>  [<c04fb7b0>] ? __slab_free+0x1b0/0x260
>  [<c0478ea4>] ? lockdep_init_map+0x44/0x120
>  [<c0740c24>] usb_submit_urb+0xf4/0x300
>  [<c0478ea4>] ? lockdep_init_map+0x44/0x120
>  [<c06364f2>] ? __raw_spin_lock_init+0x32/0x60
>  [<c0741e22>] usb_start_wait_urb+0x52/0x190
>  [<c04fc35a>] ? __slab_alloc+0x4aa/0x4f0
>  [<c0742684>] usb_control_msg+0xc4/0x130
>  [<c04fc35a>] ? __slab_alloc+0x4aa/0x4f0
>  [<f82826ab>] pvr2_hdw_cpureset_assert+0x6b/0xc0 [pvrusb2]
>  [<f8286209>] pvr2_upload_firmware1+0xe9/0x380 [pvrusb2]
>  [<f828676f>] pvr2_hdw_initialize+0xcf/0x1030 [pvrusb2]
>  [<f828b501>] ? pvr2_context_set_notify+0x21/0x100 [pvrusb2]
>  [<c089f99d>] ? __mutex_lock_common+0x26d/0x380
>  [<f828b501>] ? pvr2_context_set_notify+0x21/0x100 [pvrusb2]
>  [<c047b31b>] ? trace_hardirqs_on+0xb/0x10
>  [<f828bad0>] ? pvr2_context_thread_func+0x0/0x2c0 [pvrusb2]
>  [<c089f5bd>] ? mutex_unlock+0xd/0x10
>  [<f828bb4d>] pvr2_context_thread_func+0x7d/0x2c0 [pvrusb2]
>  [<c04655d0>] ? autoremove_wake_function+0x0/0x50
>  [<f828bad0>] ? pvr2_context_thread_func+0x0/0x2c0 [pvrusb2]
>  [<c04651ec>] kthread+0x7c/0x90
>  [<c0465170>] ? kthread+0x0/0x90
>  [<c0404102>] kernel_thread_helper+0x6/0x10
> ---[ end trace cecde4df5215f50f ]---
> 
> The entire modprobe
> 
> Linux video capture interface: v2.00
> pvrusb2: Hardware description: WinTV HVR-1950 Model 751xx
> usbcore: registered new interface driver pvrusb2
> pvrusb2: V4L in-tree version:Hauppauge WinTV-PVR-USB2 MPEG2 Encoder/Tuner
> pvrusb2: Debug mask is 31 (0x1f)
> usb 1-1: firmware: requesting v4l-pvrusb2-73xxx-01.fw
> ------------[ cut here ]------------
> WARNING: at lib/dma-debug.c:866 check_for_stack+0x9b/0xd0()
> Hardware name:
> ehci_hcd 0000:00:02.1: DMA-API: device driver maps memory fromstack
> [addr=f410de57]
> Modules linked in: pvrusb2 cx2341x v4l2_common videodev v4l1_compat
> tveeprom fuse hwmon_vid hwmon sunrpc nf_conntrack_netbios_ns uinput
> snd_intel8x0 snd_ac97_codec ac97_bus snd_seq nvidia(P) snd_seq_device
> rt61pci snd_pcm snd_timer crc_itu_t rt2x00pci snd rt2x00lib
> i2c_nforce2 i2c_core soundcore forcedeth snd_page_alloc led_class
> serio_raw joydev pcspkr eeprom_93cx6 pata_acpi ata_generic pata_amd
> [last unloaded: scsi_wait_scan]
> Pid: 9359, comm: pvrusb2-context Tainted: P           2.6.33.2 #2
> Call Trace:
>  [<c0447bb2>] warn_slowpath_common+0x72/0xa0
>  [<c063dafb>] ? check_for_stack+0x9b/0xd0
>  [<c063dafb>] ? check_for_stack+0x9b/0xd0
>  [<c0447c2b>] warn_slowpath_fmt+0x2b/0x30
>  [<c063dafb>] check_for_stack+0x9b/0xd0
>  [<c063dda0>] debug_dma_map_page+0xd0/0x120
>  [<c073fcae>] dma_map_single_attrs.clone.2+0x8e/0xb0
>  [<c0740512>] usb_hcd_submit_urb+0x842/0xa30
>  [<c044e239>] ? __do_softirq+0x109/0x1d0
>  [<c04fb20f>] ? check_object+0x12f/0x1f0
>  [<c04f9b55>] ? init_object+0x45/0x80
>  [<c04fb7b0>] ? __slab_free+0x1b0/0x260
>  [<c0478ea4>] ? lockdep_init_map+0x44/0x120
>  [<c0740c24>] usb_submit_urb+0xf4/0x300
>  [<c0478ea4>] ? lockdep_init_map+0x44/0x120
>  [<c06364f2>] ? __raw_spin_lock_init+0x32/0x60
>  [<c0741e22>] usb_start_wait_urb+0x52/0x190
>  [<c04fc35a>] ? __slab_alloc+0x4aa/0x4f0
>  [<c0742684>] usb_control_msg+0xc4/0x130
>  [<c04fc35a>] ? __slab_alloc+0x4aa/0x4f0
>  [<f82826ab>] pvr2_hdw_cpureset_assert+0x6b/0xc0 [pvrusb2]
>  [<f8286209>] pvr2_upload_firmware1+0xe9/0x380 [pvrusb2]
>  [<f828676f>] pvr2_hdw_initialize+0xcf/0x1030 [pvrusb2]
>  [<f828b501>] ? pvr2_context_set_notify+0x21/0x100 [pvrusb2]
>  [<c089f99d>] ? __mutex_lock_common+0x26d/0x380
>  [<f828b501>] ? pvr2_context_set_notify+0x21/0x100 [pvrusb2]
>  [<c047b31b>] ? trace_hardirqs_on+0xb/0x10
>  [<f828bad0>] ? pvr2_context_thread_func+0x0/0x2c0 [pvrusb2]
>  [<c089f5bd>] ? mutex_unlock+0xd/0x10
>  [<f828bb4d>] pvr2_context_thread_func+0x7d/0x2c0 [pvrusb2]
>  [<c04655d0>] ? autoremove_wake_function+0x0/0x50
>  [<f828bad0>] ? pvr2_context_thread_func+0x0/0x2c0 [pvrusb2]
>  [<c04651ec>] kthread+0x7c/0x90
>  [<c0465170>] ? kthread+0x0/0x90
>  [<c0404102>] kernel_thread_helper+0x6/0x10
> ---[ end trace cecde4df5215f50f ]---
> pvrusb2: Device microcontroller firmware (re)loaded; it should now
> reset and reconnect.
> usb 1-1: USB disconnect, address 2
> pvrusb2: Device being rendered inoperable
> usb 1-1: new high speed USB device using ehci_hcd and address 4
> usb 1-1: New USB device found, idVendor=2040, idProduct=7501
> usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
> usb 1-1: Product: WinTV
> usb 1-1: Manufacturer: Hauppauge
> usb 1-1: SerialNumber: 7300-00-F0522D8C
> pvrusb2: Hardware description: WinTV HVR-1950 Model 751xx
> pvrusb2: Binding ir_video to i2c address 0x71.
> cx25840 5-0044: cx25843-24 found @ 0x88 (pvrusb2_a)
> pvrusb2: Attached sub-driver cx25840
> tuner 5-0042: chip found @ 0x84 (pvrusb2_a)
> pvrusb2: Attached sub-driver tuner
> cx25840 5-0044: firmware: requesting v4l-cx25840.fw
> cx25840 5-0044: loaded v4l-cx25840.fw firmware (16382 bytes)
> tveeprom 5-00a2: Hauppauge model 75111, rev C3E9, serial# 5385612
> tveeprom 5-00a2: MAC address is 00-0D-FE-52-2D-8C
> tveeprom 5-00a2: tuner model is Philips 18271_8295 (idx 149, type 54)
> tveeprom 5-00a2: TV standards NTSC(M) ATSC/DVB Digital (eeprom 0x88)
> tveeprom 5-00a2: audio processor is CX25843 (idx 37)
> tveeprom 5-00a2: decoder processor is CX25843 (idx 30)
> tveeprom 5-00a2: has radio, has IR receiver, has IR transmitter
> pvrusb2: Supported video standard(s) reported available in hardware:
> PAL-M/N/Nc;NTSC-M/Mj/Mk;ATSC-8VSB/16VSB
> pvrusb2: Mapping standards mask=0x300b700
> (PAL-M/N/Nc;NTSC-M/Mj/Mk;ATSC-8VSB/16VSB)
> pvrusb2: Setting up 6 unique standard(s)
> pvrusb2: Set up standard idx=0 name=PAL-M
> pvrusb2: Set up standard idx=1 name=PAL-N
> pvrusb2: Set up standard idx=2 name=PAL-Nc
> pvrusb2: Set up standard idx=3 name=NTSC-M
> pvrusb2: Set up standard idx=4 name=NTSC-Mj
> pvrusb2: Set up standard idx=5 name=NTSC-Mk
> pvrusb2: Initial video standard (determined by device type): NTSC-M
> pvrusb2: Device initialization completed successfully.
> pvrusb2: registered device video0 [mpeg]
> cx25840 5-0044: firmware: requesting v4l-cx25840.fw
> cx25840 5-0044: loaded v4l-cx25840.fw firmware (16382 bytes)
> tda829x 5-0042: setting tuner address to 60
> tda18271 5-0060: creating new instance
> TDA18271HD/C1 detected @ 5-0060
> tda829x 5-0042: type set to tda8295+18271
> usb 1-1: firmware: requesting v4l-cx2341x-enc.fw
> _______________________________________________
> pvrusb2 mailing list
> pvrusb2 at isely.net
> http://www.isely.net/cgi-bin/mailman/listinfo/pvrusb2
> 

-- 

Mike Isely
isely @ isely (dot) net
PGP: 03 54 43 4D 75 E5 CC 92 71 16 01 E2 B5 F5 C1 E8


More information about the pvrusb2 mailing list