From: Alex Williamson <alex.williamson-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Santosh Shukla <sshukla-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
Cc: Santosh Shukla
<santosh.shukla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
"H. Peter Anvin" <hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>,
josh-iaAMLnmF4UmaiuxdJuQwMA@public.gmane.org,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
Linux Kernel Mailing List
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Yuanhan Liu <yuanhan.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Subject: Re: [PATCH] drivers/char/mem.c: Add /dev/ioports, supporting 16-bit and 32-bit ports
Date: Tue, 29 Dec 2015 10:31:09 -0700 [thread overview]
Message-ID: <1451410269.18084.15.camel@redhat.com> (raw)
In-Reply-To: <CAAyOgsYuMWudLgbSNM+QAkSXpU_fp6Ue01r=Ufmf5MXUHMs4UQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
On Tue, 2015-12-29 at 22:00 +0530, Santosh Shukla wrote:
> On Tue, Dec 29, 2015 at 9:50 PM, Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org> wrote:
> > On Tuesday 29 December 2015 21:25:15 Santosh Shukla wrote:
> > > mistakenly added wrong email-id of alex, looping his correct one.
> > >
> > > On 29 December 2015 at 21:23, Santosh Shukla <santosh.shukla@lina
> > > ro.org> wrote:
> > > > On 29 December 2015 at 18:58, Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
> > > > wrote:
> > > > > On Wednesday 23 December 2015 17:04:40 Santosh Shukla wrote:
> > > > > > On 23 December 2015 at 03:26, Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
> > > > > > wrote:
> > > > > > > On Tuesday 22 December 2015, Santosh Shukla wrote:
> > > > > > > > }
> > > > > > > >
> > > > > > > > So I care for /dev/ioport types interface who could do
> > > > > > > > more than byte
> > > > > > > > data copy to/from user-space. I tested this patch with
> > > > > > > > little
> > > > > > > > modification and could able to run pmd driver for
> > > > > > > > arm/arm64 case.
> > > > > > > >
> > > > > > > > Like to know how to address pci_io region mapping
> > > > > > > > problem for
> > > > > > > > arm/arm64, in-case /dev/ioports approach is not
> > > > > > > > acceptable or else I
> > > > > > > > can spent time on restructuring the patch?
> > > > > > > >
> > > > > > >
> > > > > > > For the use case you describe, can't you use the vfio
> > > > > > > framework to
> > > > > > > access the PCI BARs?
> > > > > > >
> > > > > >
> > > > > > I looked at file: drivers/vfio/pci/vfio_pci.c, func
> > > > > > vfio_pci_map() and
> > > > > > it look to me that it only maps ioresource_mem pci region,
> > > > > > pasting
> > > > > > code snap:
> > > > > >
> > > > > > if (!(pci_resource_flags(pdev, index) & IORESOURCE_MEM))
> > > > > > return -EINVAL;
> > > > > > ....
> > > > > >
> > > > > > and I want to map ioresource_io pci region for arm platform
> > > > > > in my
> > > > > > use-case. Not sure vfio maps pci_iobar region?
> > > > >
> > > > > Mapping I/O BARs is not portable, notably it doesn't work on
> > > > > x86.
> > > > >
> > > > > You should be able access them using the read/write interface
> > > > > on
> > > > > the vfio device.
> > > > >
> > > > Right, x86 doesn't care as iopl() could give userspace
> > > > application
> > > > direct access to ioports.
> > > >
> > > > Also, Alex in other dpdk thread [1] suggested someone to
> > > > propose io
> > > > bar mapping in vfio-pci, I guess in particular to non-x86 arch
> > > > so I
> > > > started working on it.
> > > >
> > >
> >
> > So what's wrong with just using the existing read/write API on all
> > architectures?
> >
>
> nothing wrong, infact read/write api will still be used so to access
> mmaped io pci bar at userspace. But right now vfio_pci_map() doesn't
vfio_pci_mmap(), the read/write accessors fully support i/o port.
> map io pci bar in particular (i.e.. ioresource_io) so I guess need to
> add that bar mapping in vfio. pl. correct me if i misunderstood
> anything.
Maybe I misunderstood what you were asking for, it seemed like you
specifically wanted to be able to mmap i/o port space, which is
possible, just not something we can do on x86. Maybe I should have
asked why. The vfio API already supports read/write access to i/o port
space, so if you intend to mmap it only to use read/write on top of the
mmap, I suppose you might see some performance improvement, but not
really any new functionality. You'd also need to deal with page size
issues since i/o port ranges are generally quite a bit smaller than the
host page size and they'd need to be mapped such that each devices does
not share a host page of i/o port space with other devices. On x86 i/o
port space is mostly considered legacy and not a performance critical
path for most modern devices; PCI SR-IOV specifically excludes i/o port
space. So what performance gains do you expect to see in being able to
mmap i/o port space and what hardware are you dealing with that relies
on i/o port space rather than mmio for performance? Thanks,
Alex
WARNING: multiple messages have this Message-ID (diff)
From: Alex Williamson <alex.williamson@redhat.com>
To: Santosh Shukla <sshukla@mvista.com>, Arnd Bergmann <arnd@arndb.de>
Cc: Santosh Shukla <santosh.shukla@linaro.org>,
"H. Peter Anvin" <hpa@zytor.com>,
josh@joshtriplett.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
akpm@linux-foundation.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-api@vger.kernel.org,
Yuanhan Liu <yuanhan.liu@linux.intel.com>
Subject: Re: [PATCH] drivers/char/mem.c: Add /dev/ioports, supporting 16-bit and 32-bit ports
Date: Tue, 29 Dec 2015 10:31:09 -0700 [thread overview]
Message-ID: <1451410269.18084.15.camel@redhat.com> (raw)
In-Reply-To: <CAAyOgsYuMWudLgbSNM+QAkSXpU_fp6Ue01r=Ufmf5MXUHMs4UQ@mail.gmail.com>
On Tue, 2015-12-29 at 22:00 +0530, Santosh Shukla wrote:
> On Tue, Dec 29, 2015 at 9:50 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> > On Tuesday 29 December 2015 21:25:15 Santosh Shukla wrote:
> > > mistakenly added wrong email-id of alex, looping his correct one.
> > >
> > > On 29 December 2015 at 21:23, Santosh Shukla <santosh.shukla@lina
> > > ro.org> wrote:
> > > > On 29 December 2015 at 18:58, Arnd Bergmann <arnd@arndb.de>
> > > > wrote:
> > > > > On Wednesday 23 December 2015 17:04:40 Santosh Shukla wrote:
> > > > > > On 23 December 2015 at 03:26, Arnd Bergmann <arnd@arndb.de>
> > > > > > wrote:
> > > > > > > On Tuesday 22 December 2015, Santosh Shukla wrote:
> > > > > > > > }
> > > > > > > >
> > > > > > > > So I care for /dev/ioport types interface who could do
> > > > > > > > more than byte
> > > > > > > > data copy to/from user-space. I tested this patch with
> > > > > > > > little
> > > > > > > > modification and could able to run pmd driver for
> > > > > > > > arm/arm64 case.
> > > > > > > >
> > > > > > > > Like to know how to address pci_io region mapping
> > > > > > > > problem for
> > > > > > > > arm/arm64, in-case /dev/ioports approach is not
> > > > > > > > acceptable or else I
> > > > > > > > can spent time on restructuring the patch?
> > > > > > > >
> > > > > > >
> > > > > > > For the use case you describe, can't you use the vfio
> > > > > > > framework to
> > > > > > > access the PCI BARs?
> > > > > > >
> > > > > >
> > > > > > I looked at file: drivers/vfio/pci/vfio_pci.c, func
> > > > > > vfio_pci_map() and
> > > > > > it look to me that it only maps ioresource_mem pci region,
> > > > > > pasting
> > > > > > code snap:
> > > > > >
> > > > > > if (!(pci_resource_flags(pdev, index) & IORESOURCE_MEM))
> > > > > > return -EINVAL;
> > > > > > ....
> > > > > >
> > > > > > and I want to map ioresource_io pci region for arm platform
> > > > > > in my
> > > > > > use-case. Not sure vfio maps pci_iobar region?
> > > > >
> > > > > Mapping I/O BARs is not portable, notably it doesn't work on
> > > > > x86.
> > > > >
> > > > > You should be able access them using the read/write interface
> > > > > on
> > > > > the vfio device.
> > > > >
> > > > Right, x86 doesn't care as iopl() could give userspace
> > > > application
> > > > direct access to ioports.
> > > >
> > > > Also, Alex in other dpdk thread [1] suggested someone to
> > > > propose io
> > > > bar mapping in vfio-pci, I guess in particular to non-x86 arch
> > > > so I
> > > > started working on it.
> > > >
> > >
> >
> > So what's wrong with just using the existing read/write API on all
> > architectures?
> >
>
> nothing wrong, infact read/write api will still be used so to access
> mmaped io pci bar at userspace. But right now vfio_pci_map() doesn't
vfio_pci_mmap(), the read/write accessors fully support i/o port.
> map io pci bar in particular (i.e.. ioresource_io) so I guess need to
> add that bar mapping in vfio. pl. correct me if i misunderstood
> anything.
Maybe I misunderstood what you were asking for, it seemed like you
specifically wanted to be able to mmap i/o port space, which is
possible, just not something we can do on x86. Maybe I should have
asked why. The vfio API already supports read/write access to i/o port
space, so if you intend to mmap it only to use read/write on top of the
mmap, I suppose you might see some performance improvement, but not
really any new functionality. You'd also need to deal with page size
issues since i/o port ranges are generally quite a bit smaller than the
host page size and they'd need to be mapped such that each devices does
not share a host page of i/o port space with other devices. On x86 i/o
port space is mostly considered legacy and not a performance critical
path for most modern devices; PCI SR-IOV specifically excludes i/o port
space. So what performance gains do you expect to see in being able to
mmap i/o port space and what hardware are you dealing with that relies
on i/o port space rather than mmio for performance? Thanks,
Alex
next prev parent reply other threads:[~2015-12-29 17:31 UTC|newest]
Thread overview: 68+ 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:19 ` Josh Triplett
2014-05-09 19:21 ` [PATCH] mem.4, ioports.4: Document /dev/ioports Josh Triplett
2014-05-09 19:21 ` 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 19:58 ` Arnd Bergmann
2014-05-09 20:54 ` H. Peter Anvin
2014-05-09 20:54 ` H. Peter Anvin
2014-05-09 21:12 ` Arnd Bergmann
2014-05-09 21:20 ` H. Peter Anvin
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-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-15 21:56 ` josh
2014-05-19 12:36 ` Arnd Bergmann
2014-05-19 12:36 ` Arnd Bergmann
2014-05-28 21:41 ` H. Peter Anvin
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 9:26 ` Arnd Bergmann
2014-05-29 13:38 ` H. Peter Anvin
2014-05-29 13:38 ` H. Peter Anvin
[not found] ` <5387385B.1030203-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2014-05-30 11:32 ` Arnd Bergmann
2014-05-30 11:32 ` Arnd Bergmann
2015-12-22 10:52 ` Santosh Shukla
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 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-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 13:28 ` Arnd Bergmann
2015-12-29 15:53 ` Santosh Shukla
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
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:20 ` Arnd Bergmann
2015-12-29 16:30 ` Santosh Shukla
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 [this message]
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
2015-12-31 9:33 ` Santosh Shukla
[not found] ` <CAAyOgsaxEaQ5+BW6Rwmz4cEuzVUdswZAWyF0OrbdPpXduwESYg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-12-31 15:41 ` Alex Williamson
2015-12-31 15:41 ` Alex Williamson
2016-01-07 9:31 ` Santosh Shukla
2014-05-10 7:07 ` Jann Horn
2014-05-10 7:07 ` Jann Horn
[not found] ` <20140510070742.GE6099-7cfQGs147y6a6lf8Wg2v7Z5kstrrjoWp@public.gmane.org>
2014-05-10 19:32 ` Josh Triplett
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-05-11 21:05 ` Josh Triplett
2014-06-01 10:35 ` Maciej W. Rozycki
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-06-06 9:02 ` Maciej W. Rozycki
2014-05-10 17:18 ` Greg Kroah-Hartman
2014-05-10 17:18 ` Greg Kroah-Hartman
[not found] ` <20140510171845.GA799-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-05-10 19:36 ` Josh Triplett
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=1451410269.18084.15.camel@redhat.com \
--to=alex.williamson-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=arnd-r2nGTMty4D4@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 \
--cc=santosh.shukla-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=sshukla-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org \
--cc=yuanhan.liu-VuQAYsv1563Yd54FQh9/CA@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.