On 30/01/15 10:21, Thierry Reding wrote:
On Fri, Jan 30, 2015 at 11:15:30AM +0100, Erik Faye-Lund wrote:
On Fri, Jan 30, 2015 at 10:49 AM, Thierry Reding thierry.reding@gmail.com wrote:
On Thu, Jan 29, 2015 at 02:18:41PM -0500, Sean Paul wrote:
On 64-bit targets, tegra_gem_mmap doesn't return the offset to userspace. As such, subsequent calls to mmap(2) fail. Add a new tegra_gem_mmap2 ioctl to fix this.
Signed-off-by: Sean Paul seanpaul@chromium.org
drivers/gpu/drm/tegra/drm.c | 21 +++++++++++++++++++++ include/uapi/drm/tegra_drm.h | 9 +++++++++ 2 files changed, 30 insertions(+)
To be honest, I'd rather just fix the existing IOCTL to do the right thing on 64-bit. All IOCTLs are still protected by the DRM_TEGRA_STAGING Kconfig symbol which depends on STAGING. We originally did that precisely so we'd have some leeway in fixing things up. And we've done precisely that in the past.
The only user of this IOCTL is libdrm and I don't think that has any users aside from a few projects that are still under heavy development (like grate or the xf86-video-opentegra driver).
Cc'ing Erik, who's probably the only one that's ever worked with this, besides me.
I also saw the patch, and had the same reaction. I'm fine with changing the ABI, it was done already anyway (cbfbbabb89b37f6bad05f478d906a385149f288d, "drm/tegra: Remove gratuitous pad field"). And as you say, this is only in staging so nobody is really relying on it, except grate and libdrm (in which this is clearly marked as experimental). I'm fine with just changing it, and updating grate and libdrm accordingly.
Okay, I can prepare a patch for libdrm and push it if we decide to go ahead with this plan.
Rob, Sean, (anyone,) any objections to just changing the ABI? I made another pass through the list of IOCTL argument structures and couldn't spot any others that would have the same issue. Perhaps we're finally approaching a point where we can remove the dependency on STAGING?
Hi Thierry,
Just a small tip - pahole is nice little helper wrt structure size/padding. Just scan the 32 & 64bit build and grep + diff the struct sizes.
Cheers, Emil