From: "Joakim Tjernlund" <joakim.tjernlund-SNLAxHN9vbcOP4wsBPIw7w@public.gmane.org>
To: "spi-devel-general"
<spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Performance of spi_mpc83xx.c sucks.
Date: Tue, 21 Oct 2008 18:19:08 +0200 [thread overview]
Message-ID: <1224605947.14078.17.camel@gentoo-jocke.transmode.se> (raw)
We have noticed that the spi_mpc83xx.c driver is very slow, the gap
between words are huge.
So I started to optimise it and it still sucks.
However, if I poll the SPIE_NF SPIE_NE bits instead it works MUCH
better, like so:
struct mpc83xx_spi_reg *regs = mpc83xx_spi->base;
u32 event=SPIE_NF;
mpc83xx_spi->tx_count -= 1;
word = mpc83xx_spi->get_tx(mpc83xx_spi);
mpc83xx_spi_write_reg(®s->transmit, word);
if (len >= 2) { /* FIFO is 2 words */
mpc83xx_spi->tx_count -= 1;
word = mpc83xx_spi->get_tx(mpc83xx_spi);
mpc83xx_spi_write_reg(®s->transmit, word);
}
clear_need_resched();
do {
if (event & SPIE_NE) {
word = mpc83xx_spi_read_reg(®s->receive);
mpc83xx_spi->rx_count -= 1;
if (mpc83xx_spi->rx)
mpc83xx_spi->get_rx(word, mpc83xx_spi);
if ((event & SPIE_NF) && mpc83xx_spi->tx_count) {
mpc83xx_spi->tx_count -= 1;
word = mpc83xx_spi->get_tx(mpc83xx_spi);
mpc83xx_spi_write_reg(®s->transmit, word);
}
} else if (need_resched()){
clear_need_resched();
schedule();
printk("Cond, rx:%d\n", mpc83xx_spi->rx_count);
}
event = mpc83xx_spi_read_reg(®s->event);
} while (mpc83xx_spi->rx_count);
I am not sure what this polling will do to the system though. Is this really bad to do?
The resched() stuff doesn't seem to work, probably becase I don't know how
to use it properly :(
Jocke
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
next reply other threads:[~2008-10-21 16:19 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-21 16:19 Joakim Tjernlund [this message]
[not found] ` <1224605947.14078.17.camel-/EMGr9iCeazgSi9v3i4K4Pmbkio/vSLMs0AfqQuZ5sE@public.gmane.org>
2008-10-21 18:14 ` Performance of spi_mpc83xx.c sucks Peter Korsgaard
[not found] ` <877i81rf2g.fsf-uXGAPMMVk8amE9MCos8gUmSdvHPH+/yF@public.gmane.org>
2008-10-21 18:31 ` Joakim Tjernlund
[not found] ` <002f01c933ab$4bee9180$e3cbb480$@Tjernlund@transmode.se>
[not found] ` <002f01c933ab$4bee9180$e3cbb480$@Tjernlund-SNLAxHN9vbcOP4wsBPIw7w@public.gmane.org>
2008-11-21 4:10 ` David Brownell
[not found] ` <200811202010.30845.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-12-02 15:20 ` Joakim Tjernlund
[not found] ` <1228231118.9867.108.camel-/EMGr9iCeazgSi9v3i4K4Pmbkio/vSLMs0AfqQuZ5sE@public.gmane.org>
2008-12-02 16:23 ` Peter Korsgaard
[not found] ` <87d4gav94h.fsf-uXGAPMMVk8amE9MCos8gUmSdvHPH+/yF@public.gmane.org>
2008-12-02 18:20 ` Joakim Tjernlund
[not found] ` <040001c954aa$a00e3930$e02aab90$@Tjernlund@transmode.se>
[not found] ` <040001c954aa$a00e3930$e02aab90$@Tjernlund-SNLAxHN9vbcOP4wsBPIw7w@public.gmane.org>
2008-12-02 18:31 ` David Brownell
[not found] ` <200812021031.26711.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-12-02 18:58 ` Joakim Tjernlund
[not found] ` <041201c954af$f32ad3d0$d9807b70$@Tjernlund@transmode.se>
[not found] ` <041201c954af$f32ad3d0$d9807b70$@Tjernlund-SNLAxHN9vbcOP4wsBPIw7w@public.gmane.org>
2008-12-02 20:46 ` David Brownell
[not found] ` <200812021246.27884.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-12-02 22:12 ` Joakim Tjernlund
[not found] ` <041e01c954cb$15c0f030$4142d090$@Tjernlund@transmode.se>
[not found] ` <041e01c954cb$15c0f030$4142d090$@Tjernlund-SNLAxHN9vbcOP4wsBPIw7w@public.gmane.org>
2008-12-03 8:56 ` David Brownell
2008-12-02 18:17 ` David Brownell
[not found] ` <200812021017.11880.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2008-12-02 18:25 ` Joakim Tjernlund
[not found] ` <040601c954ab$554cff20$ffe6fd60$@Tjernlund@transmode.se>
[not found] ` <040601c954ab$554cff20$ffe6fd60$@Tjernlund-SNLAxHN9vbcOP4wsBPIw7w@public.gmane.org>
2008-12-02 19:10 ` David Brownell
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=1224605947.14078.17.camel@gentoo-jocke.transmode.se \
--to=joakim.tjernlund-snlaxhn9vbcop4wsbpiw7w@public.gmane.org \
--cc=spi-devel-general-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.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).