All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Merle <thierry.merle@free.fr>
To: Thomas Reitmayr <treitmayr@devbase.at>
Cc: linux-dvb@linuxtv.org
Subject: Re: [linux-dvb] NSLU2 dma_free_coherent issue with DIB0700	driver (and probably others)
Date: Mon, 28 Apr 2008 21:48:36 +0200	[thread overview]
Message-ID: <48162A14.9010905@free.fr> (raw)
In-Reply-To: <1209330946.6897.2.camel@localhost>

Hello,
I put Lee in CC.

Thomas Reitmayr a écrit :
> 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.
> 
Well, I experienced the same issue with the Terratec Cinergy Hybrid XS.
See the problem on the em28xx ML:
http://www.spinics.net/lists/linux-usb-devel/msg09511.html
This problem can occur generally on USB devices on the ixp4xx arch.
I tried to patch the linux kernel for the dma part of ixp4xx:
http://www.spinics.net/lists/arm-kernel/msg43509.html
With this patch the driver was able to tune channels instead of the famous BUG message.
But I could not stream video unfortunately.
So this patch did not have any following although I expected someone to propose something better.
Your solution is to decrease the buffer size and I suspect other USB drivers made a similar correction.

> Bye,
> -Thomas

Cheers,
Thierry
> 
> 
> 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
> 


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

  reply	other threads:[~2008-04-28 19:48 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-27 21:15 [linux-dvb] NSLU2 dma_free_coherent issue with DIB0700 driver (and probably others) Thomas Reitmayr
2008-04-28 19:48 ` Thierry Merle [this message]
  -- 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=48162A14.9010905@free.fr \
    --to=thierry.merle@free.fr \
    --cc=linux-dvb@linuxtv.org \
    --cc=treitmayr@devbase.at \
    /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.