b43-dev.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: "Michael Büsch" <mb@bu3sch.de>
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC][PATCH] bcmai: introduce AI driver
Date: Wed, 06 Apr 2011 23:20:46 +0200	[thread overview]
Message-ID: <1302124846.20093.16.camel@maggie> (raw)
In-Reply-To: <BANLkTik76dwwnmmPzXL9Kkk7fdt01QPzZA@mail.gmail.com> (sfid-20110406_231255_603822_1FED7627)

On Wed, 2011-04-06 at 23:12 +0200, Rafa? Mi?ecki wrote: 
> W dniu 6 kwietnia 2011 23:08 u?ytkownik Michael B?sch <mb@bu3sch.de> napisa?:
> > On Wed, 2011-04-06 at 23:01 +0200, Rafa? Mi?ecki wrote:
> >> W dniu 6 kwietnia 2011 22:57 u?ytkownik Michael B?sch <mb@bu3sch.de> napisa?:
> >> > On Wed, 2011-04-06 at 22:42 +0200, Rafa? Mi?ecki wrote:
> >> >> 2011/4/6 Rafa? Mi?ecki <zajec5@gmail.com>:
> >> >> > If we want to have two drivers working on two (different) cores
> >> >> > simultaneously, we will have to add trivial mutex to group core
> >> >> > switching with core operation (read/write).
> >> >>
> >> >> With a little of work we could avoid switching and mutexes on no-host
> >> >> boards. MMIO is not limited to one core at once in such a case.
> >> >
> >> > I don't think that this is a problem at all.
> >> > All that magic does happen inside of the bus I/O handlers.
> >> > Just like SSB does it.
> >> > From a driver point of view, the I/O functions just need to
> >> > be atomic.
> >> >
> >> > For SSB it's not always 100% atomic, but we're always safe
> >> > due to some assumptions being made. But this is an SSB implementation
> >> > detail that is different from AXI. So don't look too closely
> >> > at the SSB implementation of the I/O functions. You certainly want
> >> > to implement them slightly differently in AXI. SSB currently doesn't
> >> > make use of the additional sliding windows, because they are not
> >> > available in the majority of SSB devices.
> >> >
> >> > The AXI bus subsystem will manage the sliding windows and the driver
> >> > doesn't know about the details.
> >>
> >> Sure, I've meant mutex inside bcmai (or whatever name), not on the driver side!
> >>
> >> In BCMAI:
> >> bcmai_read() {
> >> mutex_get();
> >> switch_core();
> >> ioread();
> >> mutex_release();
> >> }
> >
> > Yeah that basically is the idea. But it's a little bit harder than that.
> > The problem is that the mutex cannot be taken in interrupt context.
> > A spinlock probably is a bit hairy, too, depending on how heavy
> > a core switch is on AXI.
> >
> > On SSB we workaround this with some (dirty but working) assumptions.
> >
> > On AXI you probably can do lockless I/O, if you use the two windows
> > (how many windows are there?) in a clever way to avoid core switching
> > completely after the system was initialized.
> 
> We have 2 windows. I didn't try this, but let's assume they have no
> limitations. We can use first window for one driver only, second
> driver for second driver only. That gives us 2 drivers simultaneously
> working drivers. No driver need to reset core really often (and not
> inside interrupt context) so we will switch driver's window to agent
> (from core) only at init/reset.

On SSB one major assumption is that on non-embedded no coreswitch will
happen after init. (On embedded, the I/O accesses are safe anyway,
because all cores are always mapped).

> The question is what amount of driver we will need to support at the same time.

I guess (guess!) that the answer will be similar to SSB:
On non-embedded after init only one core is accessed: The wireless core.
And on embedded cores are accessed in random order. But it's safe
because the MMIO is always mapped.
Does this also apply to AXI?
Even if we would need to access two cores after init (wireless and
chipcommon, perhaps), we would use the two windows to survive without
an actual core switch while running.

-- 
Greetings Michael.

  reply	other threads:[~2011-04-06 21:20 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-05 19:57 [RFC][PATCH] bcmai: introduce AI driver Rafał Miłecki
2011-04-05 19:25 ` Rafał Miłecki
2011-04-05 19:29 ` Michael Büsch
     [not found] ` <1302032137.3969.10.camel@Joe-Laptop>
2011-04-05 20:15   ` Rafał Miłecki
2011-04-05 20:25     ` Michael Büsch
2011-04-05 20:50     ` Larry Finger
     [not found] ` <op.vtisojsk3ri7v4@arend-laptop>
2011-04-06 18:02   ` Rafał Miłecki
     [not found]     ` <op.vti9ote53ri7v4@arend-laptop>
2011-04-06 20:40       ` Rafał Miłecki
2011-04-06 20:42         ` Rafał Miłecki
2011-04-06 20:57           ` Michael Büsch
2011-04-06 21:01             ` Rafał Miłecki
2011-04-06 21:08               ` Michael Büsch
2011-04-06 21:12                 ` Rafał Miłecki
2011-04-06 21:20                   ` Michael Büsch [this message]
     [not found]                   ` <1302124737.27258.7.camel@dev.znau.edu.ua>
2011-04-06 23:20                     ` Rafał Miłecki
     [not found]                       ` <1302134429.27258.32.camel@dev.znau.edu.ua>
2011-04-07  0:54                         ` Rafał Miłecki
2011-04-07  7:54                           ` Michael Büsch
2011-04-07  9:55                             ` Rafał Miłecki
2011-04-08 16:56   ` Rafał Miłecki
2011-04-08 17:09     ` Rafał Miłecki
2011-04-08 17:14       ` Rafał Miłecki
     [not found]     ` <op.vtmqm7fw3ri7v4@arend-laptop>
2011-04-08 17:27       ` Rafał Miłecki
     [not found]         ` <op.vtmqujir3ri7v4@arend-laptop>
2011-04-08 17:31           ` Rafał Miłecki
     [not found]   ` <20110410080159.GB2798@ucw.cz>
2011-04-10  8:05     ` Rafał Miłecki
     [not found]       ` <20110410082420.GA1460@localhost.ucw.cz>
2011-04-10  8:30         ` Rafał Miłecki
     [not found]           ` <op.vtpt6v173ri7v4@arend-laptop>
2011-04-10 11:32             ` Rafał Miłecki

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=1302124846.20093.16.camel@maggie \
    --to=mb@bu3sch.de \
    --cc=linux-arm-kernel@lists.infradead.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).