linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Michael Buesch <mb@bu3sch.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: "Larry Finger" <Larry.Finger@lwfinger.net>,
	"Gábor Stefanik" <netrolller.3d@gmail.com>,
	"John W. Linville" <linville@tuxdriver.com>,
	"David S. Miller" <davem@davemloft.net>,
	wireless <linux-wireless@vger.kernel.org>,
	"Greg Kroah-Hartman" <gregkh@suse.de>
Subject: Re: Make b43 driver fall back gracefully to PIO mode after fatal DMA  errors
Date: Sat, 27 Feb 2010 19:51:59 +0100	[thread overview]
Message-ID: <201002271952.00144.mb@bu3sch.de> (raw)
In-Reply-To: <alpine.LFD.2.00.1002271016330.4513@localhost.localdomain>

On Saturday 27 February 2010 19:31:11 Linus Torvalds wrote:
> 
> On Sat, 27 Feb 2010, Michael Buesch wrote:
> > 
> > However, did you add the udelay to b43_write()? Please try to add it
> > further down in the callchain into the lowlevel SSB read and write functions.
> > drivers/ssb/pci.c
> 
> Well, I don't know what that would help from a timing standpoint, since 
> the delay gets done either way,

Well, but not for SSB-only accesses that access registers on the bus or other
devices on the bus.

> but looking at it, I do note that the  
> locking for the writes is very very wrong.

Yeah that is known very well. But we don't care, as it is implicitely protected
by b43's mutex.

This is nontrivial to fix, so for now I don't care. We could simply
remove the lowlevel SSB lock, if it bothers you much.

> That said, I assume that 'mapped_device' almost never actually changes in 
> practice, so the race presumably doesn't really matter.

Yes, that's the case.
There are no races in practice. Even if you remove the lock completely.
I was going to fix this at some point, but it's really nontrivial.

> I don't know how  
> these "devices" even work - is there a separate "device" for different SSB 
> functions (ie power management vs DMA vs wireless radio), or is there 
> multiple devices only if you actually have multiple radio's?

Depends on the actual device.
The SSB is a bus like PCI. You can attach basically anything you want to it.

> So for all I know, it's possible that in my case there is always just one 
> device, and the race really fundamentally cannot ever happen.

That's basically the case for a PCI device, yes.

> I can write a patch and test whether it matters, but I'd like to know if 
> my chip even _has_ multiple cores behind the ssb bridge. If people tell me 
> that there is only one core on that chip, and that the race can never 
> happen, then I won't bother.

Nah, you really don't want to touch that lowlevel code. It is not broken as-is.
Simply remove the lock, if you really care that much.
I tried to fix this properly a few weeks ago, but I didn't really see a sane way
to do it so I finally gave up, because it wouldn't fix a real-life problem anyway.
The problem is that this code may basically run in any context. And (if that were not
enough), it must work on all host-busses that SSB supports. That being plain SSB, PCI,
PCMCIA and SDIO. Where SDIO is special in that it requires sleeping.

I assure you that this is not part of the DMA problem. 100% guaranteed. ;)

-- 
Greetings, Michael.

  reply	other threads:[~2010-02-27 18:53 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <alpine.LFD.2.00.1002261034140.4513@localhost.localdomain>
2010-02-26 19:09 ` Make b43 driver fall back gracefully to PIO mode after fatal DMA errors Larry Finger
2010-02-26 19:13   ` Linus Torvalds
2010-02-26 20:06     ` Linus Torvalds
2010-02-26 20:09       ` Gábor Stefanik
2010-02-26 20:50         ` Linus Torvalds
2010-02-26 21:01           ` Larry Finger
2010-02-26 21:45             ` Linus Torvalds
2010-02-26 21:50               ` Linus Torvalds
2010-02-26 22:08                 ` Gábor Stefanik
2010-02-26 22:46                   ` Linus Torvalds
2010-02-26 22:54                     ` Gábor Stefanik
2010-02-27 15:04                     ` Michael Buesch
2010-02-27 14:59                 ` Michael Buesch
2010-02-27 18:31                   ` Linus Torvalds
2010-02-27 18:51                     ` Michael Buesch [this message]
2010-02-26 19:59   ` Michael Buesch
2010-02-26 20:07     ` Linus Torvalds
2010-02-26 20:20       ` Michael Buesch
2010-02-26 20:33         ` Linus Torvalds
2010-02-26 20:42           ` Linus Torvalds
2010-02-27 14:44             ` Michael Buesch
2010-02-27 14:49           ` Michael Buesch
2010-02-27 17:36           ` Michael Buesch
2010-02-27 20:12             ` Nathan Schulte
2010-02-27 21:08             ` Linus Torvalds
2010-02-27 21:43               ` Michael Buesch
2010-02-27 22:12                 ` Linus Torvalds
2010-02-26 20:46 Nathan Schulte

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=201002271952.00144.mb@bu3sch.de \
    --to=mb@bu3sch.de \
    --cc=Larry.Finger@lwfinger.net \
    --cc=davem@davemloft.net \
    --cc=gregkh@suse.de \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    --cc=netrolller.3d@gmail.com \
    --cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).