Bug 15206
Summary: | uvcvideo fails to work since 2.6.32 | ||
---|---|---|---|
Product: | v4l-dvb | Reporter: | Rich Ercolani (rercola) |
Component: | v4l-core | Assignee: | v4l-dvb_v4l-core (v4l-dvb_v4l-core) |
Status: | CLOSED UNREPRODUCIBLE | ||
Severity: | normal | CC: | alan, florian, hpa, laurent.pinchart+bugzilla-kernel, rjw, zajec5 |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.32.7 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 14230 |
Description
Rich Ercolani
2010-02-01 12:51:03 UTC
Hi Rich, I'm quite puzzled by this, as V4L1 and V4L2 ioctls use 'v' and 'V' respectively, not 'U'. I'm not aware of any kernel change in the uvcvideo driver that could trigger this. Have you upgraded anything beyond the kernel ? If not, bisecting could help. I've not upgraded anything but the kernel. If I switch back to 2.6.31, it all works nicely. I've tried various tools for each (mjpg-streamer, uvccapture), both the latest head of their respective VCS and their latest stable releases. They both work on 2.6.31 and fail silently-ish on 2.6.32 and above, and dmesg floods with the above. Could you try to backport the uvcvideo driver from 2.6.32 to 2.6.31 ? Copying the drivers/media/video/uvc repository should do the trick. If the newer driver works on 2.6.31, the bug probably comes from somewhere else. s/repository/directory Sure, I'll do that and get back to you shortly - I need to go grab the camera and plug it into a machine that I can bisect and manipulate the kernel on. After doing five of the required fourteen builds for a bisect on a machine I could easily reboot, it occurred to me that I hadn't tested whether the kernel from the machine I was having trouble with would fail on this other machine. So I tested it...and it succeeds. So it appears to be less a UVC bug and more a bug with how UVC is interacting with...something. Since it's definitely the case that it works perfectly on 2.6.31 on the affected machine, I guess I get to go do git bisect on the affected machine...rather inconvenient, but c'est la vie. (Working machine: ThinkPad T61p, ICH8-based. USB controller is 82801H) (Faulty machine: homebuilt machine, ICH7-based. USB controller is 82801G) I hate everything. The machine is a 64b 2.6.32.7 with a 32b userland. The program succeeds trivially in 32b land on 2.6.31. The program fails with the above dmesg dumps in 32b land on 2.6.32.7. The program succeeds with no dmesg output built in a 64b chroot from the same 32b userland on 2.6.32.7. It still works on 2.6.31 if I reboot into 2.6.31 on the machine and build the program and run it in the 32b userland. Oh god, it's strictly worse than that. Apparently the compiler on the machine I've been building this on miscompiles the kernel. Building clean 2.6.32.7 from kernel.org on gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1, this works wonderfully. Building clean 2.6.32.7 from kernel.org on gcc (Debian 4.3.2-1.1) 4.3.2 is failing miserably. I wonder if ccache is doing the wrong thing. It shouldn't have for 2.6.32, as it had never seen 2.6.32 before, and I also think it shouldn't have for 2.6.32.7 compared to 2.6.32, esp. failing in the same way. I'll go investigate if building it sans ccache gets this to stop. Rich: any news on this? Sorry, hadn't needed a new kernel in awhile and forgot to update. Just was reminded of this when I rolled to 2.6.33.3. That is to say, 2.6.33.3 did the Wrong Thing as well on the above compiler, and resulted in the uvcvideo driver being unusable. I'm building with gcc (Ubuntu 4.4.1-4ubuntu9) 4.4.1 to make sure the problem still goes away there. Occurs on 2.6.33.3 compiled on the Ubuntu-provided Gcc version. This is fascinating. Is this issue still present in current mainline kernels? Also, can you post the output of scripts/ver_linux for the failing case? And then could you please clarify comment #12: Since 2.6.33.3 uvcvideo fails in all cases? Ping? |