From: Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
To: "linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
"benh@kernel.crashing.org" <benh@kernel.crashing.org>
Subject: Re: UIO memmap of PCi devices not working?
Date: Thu, 7 Sep 2017 08:59:55 +0000 [thread overview]
Message-ID: <1504774792.31322.13.camel@infinera.com> (raw)
In-Reply-To: <1504773212.12628.26.camel@kernel.crashing.org>
On Thu, 2017-09-07 at 18:33 +1000, Benjamin Herrenschmidt wrote:
> On Thu, 2017-09-07 at 07:22 +0000, Joakim Tjernlund wrote:
> > On Thu, 2017-09-07 at 17:16 +1000, Benjamin Herrenschmidt wrote:
> > > On Wed, 2017-09-06 at 15:20 +0000, Joakim Tjernlund wrote:
> > > > Having problems to mmap PCI UIO devices and stumbeled over this pag=
e:
> > > > http://billfarrow.blogspot.se/2010/09/userspace-access-to-pci-memo=
ry.html
> > > > it claims some adjustments are needed for UIO mmap over PCI to work=
.
> > > > These are #if 0 ATM and trying to enable them fails build.
> > > >=20
> > > > Can this be fixed to at least build again ?
> > > > The reason for having #if 0 in the first place appears to be old X =
servers,
> > > > is that still true? Can the special casing be removed now?
> > >=20
> > > This article seems out of date... I *think* things should work withou=
t
> > > change by just mmap'ing the appropriate sysfs files. I'm not sure why
> > > the author thought that had to be ifdef'ed out...
> >=20
> > Isn't that what the article is doing(mmaping sysfs files)?
> > And the article author is #ifdefing it back, not out.
>=20
> Yes sorry that's what I meant. It should work as-is.
>=20
> > >=20
> > > Let me know if you have problems.
> >=20
> > Sure, we still are looking=20
> >=20
> > >=20
> > > As far as I know, the generic code will call pci_resource_to_user()
> > > which on powerpc will return a physical address that already includes
> > > the offset, which is why we don't later add it.
> > >=20
> > > Now we could probably tear all that out and use the new generic code
> > > instead as I *think* X has (very) long been fixed but I'd have to spe=
nd
> > > some time triple checking and testing on old HW which I don't have th=
e
> > > bandwidth for right now.=20
> >=20
> > Could you fixup the code which is now #if 0 ? I wan't to test the
> > difference and I not sure how to fix the build problem after changing
> > those two #if 0 to #if 1
> > Even better if they could be a CONFIG option instead.
>=20
> Hrm it's tricky, you shouldn't just turn that ifdef back on without
> also changing pci_resource_to_user().
There are two ifdef to change:
__pci_mmap_make_offset():
#if 0 /* See comment in pci_resource_to_user() for why this is disabled */
*offset +=3D hose->pci_mem_offset;
#endif
and
pci_resource_to_user()
/* We pass a fully fixed up address to userland for MMIO instead of
* a BAR value because X is lame and expects to be able to use that
* to pass to /dev/mem !
*
* That means that we'll have potentially 64 bits values where some
* userland apps only expect 32 (like X itself since it thinks only
* Sparc has 64 bits MMIO) but if we don't do that, we break it on
* 32 bits CHRPs :-(
*
* Hopefully, the sysfs insterface is immune to that gunk. Once X
* has been fixed (and the fix spread enough), we can re-enable the
* 2 lines below and pass down a BAR value to userland. In that case
* we'll also have to re-enable the matching code in
* __pci_mmap_make_offset().
*
* BenH.
*/
#if 0
else if (rsrc->flags & IORESOURCE_MEM)
offset =3D hose->pci_mem_offset;
#endif
Problem is that pci_mem_offset is gone, the closed I can find is mem_offset
but that is an array,maybe just mem_offset[0] ?
> I'm not sure exactly what's going
> on in your case, if you have a problem can you add printk to instrument
> ?
Seems to be something else going on in out board. Anyhow, the mem_offset sh=
ould
be fixed to compile, nice to have it behind a CONFIG option. Then
one can start the process to remove the special casing easier.
Jocke=
next prev parent reply other threads:[~2017-09-07 9:00 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-06 15:20 UIO memmap of PCi devices not working? Joakim Tjernlund
2017-09-07 7:16 ` Benjamin Herrenschmidt
2017-09-07 7:22 ` Joakim Tjernlund
2017-09-07 8:33 ` Benjamin Herrenschmidt
2017-09-07 8:59 ` Joakim Tjernlund [this message]
2017-09-07 10:19 ` Joakim Tjernlund
2017-09-07 22:23 ` Benjamin Herrenschmidt
2017-09-07 22:22 ` Benjamin Herrenschmidt
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=1504774792.31322.13.camel@infinera.com \
--to=joakim.tjernlund@infinera.com \
--cc=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.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.