From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org
Cc: "H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] drivers/char/mem.c: Add /dev/ioports, supporting 16-bit and 32-bit ports
Date: Mon, 19 May 2014 14:36:24 +0200 [thread overview]
Message-ID: <63645237.lSKEVJUKkQ@wuerfel> (raw)
In-Reply-To: <20140515215646.GA16326@cloud>
On Thursday 15 May 2014 14:56:46 josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org wrote:
> On Tue, May 13, 2014 at 03:10:59PM -0700, H. Peter Anvin wrote:
> > On 05/09/2014 03:38 PM, Josh Triplett wrote:
> > > On Fri, May 09, 2014 at 02:20:45PM -0700, H. Peter Anvin wrote:
> > >> On 05/09/2014 02:12 PM, Arnd Bergmann wrote:
> > >>>
> > >>>> However, if we're going to have these devices I'm wondering if having
> > >>>> /dev/portw and /dev/portl (or something like that) might not make sense,
> > >>>> rather than requiring a system call per transaction.
> > >>>
> > >>> Actually the behavior of /dev/port for >1 byte writes seems questionable
> > >>> already: There are very few devices on which writing to consecutive
> > >>> port numbers makes sense. Normally you just want to write a series
> > >>> of bytes (or 16/32 bit words) into the same port number instead,
> > >>> as the outsb()/outsw()/outsl() functions do.
> > >>>
> > >>
> > >> Indeed. I missed the detail that it increments the port index; it is
> > >> virtually guaranteed to be bogus.
> > >
> > > Exactly. It might make sense to have ioport8/ioport16/ioport32 devices
> > > that accept arbitrary-length reads and writes (divisible by the size)
> > > and do the equivalent of the string I/O instructions outs/ins, but for
> > > the moment I'd like to add the single device that people always seem to
> > > want and can't get from /dev/port. If someone's doing enough writes
> > > that doing a syscall per in/out instruction seems like too much
> > > overhead, they can write a real device driver or use ioperm/iopl.
> >
> > I really have a problem with the logic "our current interface is wrong,
> > so let's introduce another wrong interface which solves a narrow use
> > case". In some ways it would actually be *better* to use an ioctl
> > interface on /dev/port in that case...
>
> ioport{8,16,32} seems preferable to an ioctl on /dev/port, but in any
> case, I'd be happy to adapt this patch to whatever interface seems
> preferable. I just don't want to let the perfect be the enemy of the
> good here; 16-bit and 32-bit port operations are currently completely
> impossible via /dev/port, and I'm primarily interested in fixing that,
> not necessarily in creating a completely generalized interface for doing
> high-performance repeated I/O operations that ought to be in the kernel
> anyway.
I'd prefer to do the absolute minimum to enable this: port I/O is not
something that people really should be doing in this decade, at least
not on non-x86.
A simple pair of ioctls would be fine in my mind, if we think there
is actually a strong use case. Josh, where did you find that testing
driver? Do you have reason to believe it's actually useful on non-x86?
If the reason for the existence of that code is just that someone
didn't find the iopl() man page, I'd rather not have it at all.
My feeling is that all devices we can think of fall into at least one
of these categories:
* legacy PC stuff that needs only byte access
* PCI devices that can be accessed through sysfs
* devices on x86 that can be accessed using iopl
Arnd
next prev parent reply other threads:[~2014-05-19 12:36 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-09 19:19 [PATCH] drivers/char/mem.c: Add /dev/ioports, supporting 16-bit and 32-bit ports Josh Triplett
2014-05-09 19:21 ` [PATCH] mem.4, ioports.4: Document /dev/ioports Josh Triplett
2014-05-13 8:27 ` Michael Kerrisk (man-pages)
2014-05-09 19:58 ` [PATCH] drivers/char/mem.c: Add /dev/ioports, supporting 16-bit and 32-bit ports Arnd Bergmann
2014-05-09 20:54 ` H. Peter Anvin
2014-05-09 21:12 ` Arnd Bergmann
2014-05-09 21:20 ` H. Peter Anvin
[not found] ` <536D46AD.3070608-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2014-05-09 22:38 ` Josh Triplett
2014-05-13 22:10 ` H. Peter Anvin
[not found] ` <53729873.2030805-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2014-05-15 21:56 ` josh-iaAMLnmF4UmaiuxdJuQwMA
2014-05-19 12:36 ` Arnd Bergmann [this message]
2014-05-28 21:41 ` H. Peter Anvin
[not found] ` <53865820.7010309-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2014-05-29 9:26 ` Arnd Bergmann
2014-05-29 13:38 ` H. Peter Anvin
[not found] ` <5387385B.1030203-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2014-05-30 11:32 ` Arnd Bergmann
2015-12-22 10:52 ` Santosh Shukla
[not found] ` <CA+iXiiN8xFaiz6DwyLfWRFZ81pJZf=Fv1E60VZC-iSNPswaGEQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-22 21:56 ` Arnd Bergmann
2015-12-22 22:02 ` H. Peter Anvin
[not found] ` <1592CC7D-B2F2-4E8B-BB90-4A20682B1FEE-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2015-12-22 22:11 ` Arnd Bergmann
2015-12-23 11:34 ` Santosh Shukla
[not found] ` <CA+iXiiOsbC0MBaRwc5JgaTVRpdxHub5t2T=LrGaVN1AjKpiJgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-29 13:28 ` Arnd Bergmann
2015-12-29 15:53 ` Santosh Shukla
[not found] ` <CA+iXiiNKiMz=9BJgu3g=LggXjTv61Uwu+ibNfKeih3rK328LSQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-29 15:55 ` Santosh Shukla
[not found] ` <CA+iXiiM+TrciHROfgTcN01mfGEYuUCvpNRU0Qqgrt56VdCcR8Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-29 16:20 ` Arnd Bergmann
2015-12-29 16:30 ` Santosh Shukla
[not found] ` <CAAyOgsYuMWudLgbSNM+QAkSXpU_fp6Ue01r=Ufmf5MXUHMs4UQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-29 17:31 ` Alex Williamson
[not found] ` <1451410269.18084.15.camel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-12-31 9:33 ` Santosh Shukla
[not found] ` <CAAyOgsaxEaQ5+BW6Rwmz4cEuzVUdswZAWyF0OrbdPpXduwESYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-31 15:41 ` Alex Williamson
2016-01-07 9:31 ` Santosh Shukla
2014-05-10 7:07 ` Jann Horn
[not found] ` <20140510070742.GE6099-7cfQGs147y6a6lf8Wg2v7Z5kstrrjoWp@public.gmane.org>
2014-05-10 19:32 ` Josh Triplett
2014-05-11 12:50 ` Jann Horn
[not found] ` <20140511125006.GA16197-7cfQGs147y6a6lf8Wg2v7Z5kstrrjoWp@public.gmane.org>
2014-05-11 21:05 ` Josh Triplett
2014-06-01 10:35 ` Maciej W. Rozycki
2014-06-04 22:59 ` H. Peter Anvin
[not found] ` <538FA4C7.2050206-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2014-06-06 9:02 ` Maciej W. Rozycki
2014-05-10 17:18 ` Greg Kroah-Hartman
[not found] ` <20140510171845.GA799-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-05-10 19:36 ` Josh Triplett
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=63645237.lSKEVJUKkQ@wuerfel \
--to=arnd-r2ngtmty4d4@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
--cc=josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@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