All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Reitmayr <treitmayr@devbase.at>
To: linux-dvb@linuxtv.org
Subject: Re: [linux-dvb] NSLU2 dma_free_coherent issue with DIB0700 driver	(and probably others)
Date: Sun, 27 Apr 2008 23:15:46 +0200	[thread overview]
Message-ID: <1209330946.6897.2.camel@localhost> (raw)

Hi Lee,
I was browsing the mailing-list archive and found your email about the
issue with DIB0700-based devices on an NSLU2. I myself use a Terratec
Cinergy DT XS Diversity which I think had the same issue as you
described it. I found that the cause was the rather big DMA buffer of
39480 bytes as specified in dib0700_devices.c.
Looking at the kernel's arch/arm/mach-ixp4xx/common-pci.c there is a top
limit of 4096 bytes for a DMA buffer set by the function call 
   dmabounce_register_dev(dev, 2048, 4096);

My recipe (for SlugOS) below changes the big buffer to a smaller one and
also increases the number of buffers (not sure if the latter is really
needed). Now the module is working just fine, even recording on both
adapters gives a CPU usage of just ~25%. So the smaller buffer size does
not seem to hurt at all. Not sure why it is needed in the first place.

Bye,
-Thomas


PS: My recipe "v4l-dvb_0776e4801991.bb"

========= CUT ==========

DESCRIPTION = "v4l-dvb modules"
#SECTION = ""
PRIORITY = "optional"
HOMEPAGE = "http://linuxtv.org/"
LICENSE = "GPL"
DEPENDS = "virtual/kernel"
PR = "r0"

SRC_URI = "http://linuxtv.org/hg/v4l-dvb/archive/${PV}.tar.bz2"

S = "${WORKDIR}/${PN}-${PV}"

inherit module

MAKE_TARGETS = "DIR=${STAGING_KERNEL_DIR}"

do_configure() {
	# fix make target
	cd "${S}"
	sed -i 's%^install:%install modules_install:%' Makefile
	
	# reduce buffer size (ixp4xx can handle only <= 4096
	# (see arch/arm/mach-ixp4xx/common-pci.c)
	cd "${S}/linux/drivers/media/dvb/dvb-usb"
	sed -i 's%buffersize = 39480%buffersize = 4096%' dib0700_devices.c
	sed -i 's%\.count = 4,%.count = 7,%' dib0700_devices.c
	
	# do not strip here
	cd "${S}/v4l/scripts"
	sed -i 's%@strip %@#strip %' make_makefile.pl
}

fakeroot do_install() {
	oe_runmake DESTDIR="${D}" install
}

FILES_${PN} = "/lib/modules"

========= CUT ==========


        ---- Original Message ----
        From: Lee Essen lee.essen at nowonline.co.uk 
        Date: Thu Apr 3 12:48:05 CEST 2008
        
        Hi,
        
        Apologies if this is directed in the wrong place, as I suspect
        this is more of a kernel/USB issue than a DVB driver issue, but
        it does have an impact on people wanting to use this device with
        an NSLU2 (and I suspect it will also be a problem with many
        other devices.)
        
        I have been experimenting using a variety of DVB-T USB devices
        with an NSLU2 with my ultimate aim being to build in a dual
        DVB-T device into the case and use it in very much the same way
        as the HDHomeRun device.
        
        Using a DTT200U based device everything worked perfectly.
        
        Then I started playing with a DIB0700 based device (actually an
        Elgato Eye-TV Diversity) and the system would just hang whenever
        I started using dvbstream, I got slightly different behaviour if
        I tried to tune it to an invalid frequency and eventually
        managed to get to a state when I could interrupt it before it
        completely locked up.
        
        It seems that the driver was flagging an issue in the ARM
        architecture around not calling dma_free_coherent() with IRQ's
        disabled, apparently a warning was recently added to the ARM
        kernel so it logs a message and a stack trace each time ... this
        seemed to be happening so frequently it effectively locked the
        system up.
        
        I did a little digging, but I'm not a kernel expert at all, and
        it seems that the ehci_hcd module is actually where the call is
        originating rather than the DVB driver itself, so I suspect that
        this will actually effect a significant number of the drivers
        when used on an ARM platform.
        
        For the purposes of testing I removed the warning (from
        arch/arm/mm/ consistent line 363) and everything is fine, the
        driver operates perfectly and I can stream video nicely. BUT -
        clearly there is some kind of issue here that needs to be
        resolved.
        
        More information is available at the link below, and also I have
        read comments suggesting that the issue has been discussed on
        the arm-kernel mailing list but that no resolution has yet been
        found.
        
        http://forum.soft32.com/linux/ehci_hcd-map_single-unable-map-unsafe-buffer-standard-NSLU2-ftopict461241.html
        
        For reference I'm using 2.6.24 and have tried the most recent
        drivers from linuxtv.org as well as a variety of others -- all
        seem to have the same problem (which is expected if the problem
        is actually in the USB system.)
        
        Hope this is useful,
        
        Lee.


_______________________________________________
linux-dvb mailing list
linux-dvb@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

             reply	other threads:[~2008-04-27 21:15 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-27 21:15 Thomas Reitmayr [this message]
2008-04-28 19:48 ` [linux-dvb] NSLU2 dma_free_coherent issue with DIB0700 driver (and probably others) Thierry Merle
  -- strict thread matches above, loose matches on Subject: below --
2008-04-03 10:48 Lee Essen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1209330946.6897.2.camel@localhost \
    --to=treitmayr@devbase.at \
    --cc=linux-dvb@linuxtv.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.