Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: "Kevin D. Kissell" <kevink@mips.com>
To: "Alan Cox" <alan@lxorguk.ukuu.org.uk>,
	"Carsten Langgaard" <carstenl@mips.com>
Cc: "Dominic Sweetman" <dom@algor.co.uk>,
	"Ralf Baechle" <ralf@linux-mips.org>, <linux-mips@linux-mips.org>
Subject: Re: Promblem with PREF (prefetching) in memcpy
Date: Fri, 4 Oct 2002 15:00:18 +0200	[thread overview]
Message-ID: <00fe01c26ba6$04943480$10eca8c0@grendel> (raw)
In-Reply-To: 1033734968.31839.5.camel@irongate.swansea.linux.org.uk

> On Fri, 2002-10-04 at 13:11, Carsten Langgaard wrote:
> > Is a bus error exception an address related exception ?
> > I'm afraid some implementation think it's not.
> 
> So you need an option for broken systems, no new news 8)

Alas, it's not so simple.  Bus errors are often not even
precise exceptions, which is to say, they cannot be
associated with a specific causing instruction.

> > What about an UART RX register, we might loose a character ?
> > You can also configure you system, so you get a external interrupt from you
> > system controller in case of a bus error, there is no way the CPU can
> > relate this interrupt to the prefetching.
> 
> The use of memcpy for I/O space isnt permitted in Linux, thats why we
> have memcpy_*_io stuff. Thus prefetches should never touch 'special'
> spaces. (On x86 the older Athlons corrupt their cache if you do this so
> its not a mips specific matter)

The issue isn't that anyone would deliberately use memcpy() in I/O
space.  Rather, it's that memcpy() prefetches quite a ways ahead,
and if one has I/O space assigned just after the end of physical
memory, Bad Things might happen on a perfectly legal memcpy()
that references the last couple hundred bytes of memory in a 
way that not even a clever and well-informed bus error handler 
could undo.

            Kevin K.

WARNING: multiple messages have this Message-ID (diff)
From: "Kevin D. Kissell" <kevink@mips.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Carsten Langgaard <carstenl@mips.com>
Cc: Dominic Sweetman <dom@algor.co.uk>,
	Ralf Baechle <ralf@linux-mips.org>,
	linux-mips@linux-mips.org
Subject: Re: Promblem with PREF (prefetching) in memcpy
Date: Fri, 4 Oct 2002 15:00:18 +0200	[thread overview]
Message-ID: <00fe01c26ba6$04943480$10eca8c0@grendel> (raw)
Message-ID: <20021004130018._p7D1xQEtx0CyD38_I48nDMrfz4_L_SoSz3Oe4RLdMY@z> (raw)
In-Reply-To: 1033734968.31839.5.camel@irongate.swansea.linux.org.uk

> On Fri, 2002-10-04 at 13:11, Carsten Langgaard wrote:
> > Is a bus error exception an address related exception ?
> > I'm afraid some implementation think it's not.
> 
> So you need an option for broken systems, no new news 8)

Alas, it's not so simple.  Bus errors are often not even
precise exceptions, which is to say, they cannot be
associated with a specific causing instruction.

> > What about an UART RX register, we might loose a character ?
> > You can also configure you system, so you get a external interrupt from you
> > system controller in case of a bus error, there is no way the CPU can
> > relate this interrupt to the prefetching.
> 
> The use of memcpy for I/O space isnt permitted in Linux, thats why we
> have memcpy_*_io stuff. Thus prefetches should never touch 'special'
> spaces. (On x86 the older Athlons corrupt their cache if you do this so
> its not a mips specific matter)

The issue isn't that anyone would deliberately use memcpy() in I/O
space.  Rather, it's that memcpy() prefetches quite a ways ahead,
and if one has I/O space assigned just after the end of physical
memory, Bad Things might happen on a perfectly legal memcpy()
that references the last couple hundred bytes of memory in a 
way that not even a clever and well-informed bus error handler 
could undo.

            Kevin K.

  parent reply	other threads:[~2002-10-04 12:58 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-04  7:50 Promblem with PREF (prefetching) in memcpy Carsten Langgaard
2002-10-04 11:53 ` Dominic Sweetman
2002-10-04 12:11   ` Carsten Langgaard
2002-10-04 12:35     ` Dr. David Alan Gilbert
2002-10-04 12:36     ` Alan Cox
2002-10-04 12:35       ` Carsten Langgaard
2002-10-04 13:09         ` Alan Cox
2002-10-04 13:07           ` Hartvig Ekner
2002-10-04 13:07             ` Hartvig Ekner
2002-10-04 13:00       ` Kevin D. Kissell [this message]
2002-10-04 13:00         ` Kevin D. Kissell
2002-10-04 13:15         ` Alan Cox
2002-10-04 13:15           ` Kevin D. Kissell
2002-10-04 13:15             ` Kevin D. Kissell
2002-10-04 13:44             ` Alan Cox
2002-10-04 14:17               ` Kevin D. Kissell
2002-10-04 14:17                 ` Kevin D. Kissell
2002-10-04 14:54                 ` Alan Cox
2002-10-04 13:01       ` Maciej W. Rozycki
2002-10-04 13:17         ` Ralf Baechle
2002-10-04 13:32           ` Maciej W. Rozycki
2002-10-04 13:29     ` Dominic Sweetman
2002-10-04 13:46       ` Maciej W. Rozycki
2002-10-04 12:33   ` Hartvig Ekner
2002-10-04 12:33     ` Hartvig Ekner
2002-10-04 12:38     ` Ralf Baechle
2002-10-04 12:36   ` Kevin D. Kissell
2002-10-04 12:36     ` Kevin D. Kissell
2002-10-04 14:24     ` Dominic Sweetman
2002-10-04 14:24       ` Dominic Sweetman
2002-10-04 23:43     ` Ralf Baechle
2002-10-05 15:12       ` Hartvig Ekner
2002-10-05 15:12         ` Hartvig Ekner
2002-10-05 15:56         ` Alan Cox
2002-10-04 12:37   ` Kevin D. Kissell
2002-10-04 12:37     ` Kevin D. Kissell

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='00fe01c26ba6$04943480$10eca8c0@grendel' \
    --to=kevink@mips.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=carstenl@mips.com \
    --cc=dom@algor.co.uk \
    --cc=linux-mips@linux-mips.org \
    --cc=ralf@linux-mips.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