I've recently started testing 2.5.7x kernels and dvb-kernel with a NOVA-T PCI in the UK.
Thanks for testing and reporting the bugs!
> _______________________________________ > Jul 12 17:41:53 holmes kernel: saa7146: register extension 'budget dvb'. > Jul 12 17:41:53 holmes kernel: saa7146: found saa7146 @ mem f8c37000 > (revision 1, irq 17) (0x13c2,0x1005). > Jul 12 17:41:53 holmes kernel: DVB: registering new adapter > (TT-Budget/WinTV-NOVA-T PCI). > Jul 12 17:41:53 holmes kernel: ------------[ cut here ]------------ > Jul 12 17:41:53 holmes kernel: kernel BUG at > drivers/media/common/saa7146_core.c:67! > Jul 12 17:41:53 holmes kernel: invalid operand: 0000 [#1] > Jul 12 17:41:53 holmes kernel: CPU: 0 > Jul 12 17:41:53 holmes kernel: EIP:
Please run the bug through the tools "ksymoops", ie. do a "dmesg | ksymopps" and post the resulting file. This will decode the numbers to usable functions names and the like.
I've spent a load of time building and rebuilding kernels because one moment the "budget" module would load and the next it would seg-fault on insertion with a BUG error in saa7164_core.c:67. After two successful runs with 2.5.73 and the CVS of the day (early July), everything just stopped working. Everytime I load the modules I get the error described. Further investigation suggested that this may be due to the amount of memory I have installed on this box (recently increased to 1.2GB).
If I specify `mem="900M"' when booting - limiting the available memory to less than 1GB - I can install the dvb modules.
Please have a look at the file "saa7146_core.c". There it says: ----------------------schnipp------------------------------------- /* this is videobuf_vmalloc_to_sg() from video-buf.c */ static struct scatterlist* vmalloc_to_sg(unsigned char *virt, int nr_pages) { [...] if (PageHighMem(pg)) BUG(); ----------------------schnipp-------------------------------------
The driver needs to build so-called scatter/gather lists for the memory where the hardware will write it's data to, that means a description of the memory locations. If you have more than 1 GB of memory, you need something called "high-memory support" within Linux. If you do this, it's possible that the memory allocated by the driver will be above > 1 GB, and the function will fail with a call to BUG().
In theory, the hardware can do a DMA up to 4 GB, but I don't know if there is something with the memory management of Linux that prevents this.
If I don't - this is what I get....can anyone help?
It's mentioned in the code that the functions was basically taken from "video-buf.c" from Gerd Knorr. Perhaps he can bring some light into this issues. I've send him a CC of this mail.
For the meantime, you need to disable high memory support or limit the amount of memory.
Laurence
CU Michael.
-- Info: To unsubscribe send a mail to [EMAIL PROTECTED] with "unsubscribe linux-dvb" as subject.
