Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Too much memory???



Hello Laurence,

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 ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index