[Intel-gfx] [PATCH] drm/i915: add register read IOCTL
Ben Widawsky
ben at bwidawsk.net
Thu Jul 12 22:08:56 CEST 2012
On Thu, 12 Jul 2012 12:42:30 -0700
Eric Anholt <eric at anholt.net> wrote:
> Ben Widawsky <ben at bwidawsk.net> writes:
>
> > The interface's immediate purpose is to do synchronous timestamp queries
> > as required by GL_TIMESTAMP. The GPU has a register for reading the
> > timestamp but because that would normally require root access, the
> > IOCTL can provide this service.
> >
> > Currently the implementation whitelists only the render ring timestamp
> > register, because that is the only thing we need to expose at this time.
>
> Thanks. I was just writing this patch yesterday since it still hadn't
> landed. What I was doing was very similar, I was just not including a
> size, since we're going to whitelist regs and the correct size is
> implied by the register offset.
Please check out:
1342116066-12164-1-git-send-email-ben at bwidawsk.net
We went through this all on IRC already ;-)
>
> > +int i915_reg_read_ioctl(struct drm_device *dev,
> > + void *data, struct drm_file *file)
> > +{
> > + struct drm_i915_private *dev_priv = dev->dev_private;
> > + struct drm_i915_reg_read *reg = data;
> > +
> > + /* Whitelisted for now */
> > + if (reg->offset != RING_TIMESTAMP(RENDER_RING_BASE))
> > + return -ENXIO;
>
> Should this be conditional on the gen having the timestamp register?
>
> > +struct drm_i915_reg_read {
> > + __u64 offset;
> > + __u32 size;
> > + __u64 val; /* Return value */
> > + __u32 pad;
> > +};
>
> Bad padding here. On i386 you'll get a struct like:
>
> {
> uint64_t offset
> uint32_t size
> uint32_t implicit_pad
> uint64_t val
> uint32_t pad
> }
--
Ben Widawsky, Intel Open Source Technology Center
More information about the Intel-gfx
mailing list