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. > +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 } -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 197 bytes Desc: not available URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20120712/c20e081b/attachment.pgp>