From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH] drm/i915: add register read IOCTL Date: Thu, 12 Jul 2012 13:08:56 -0700 Message-ID: <20120712130856.64973401@bwidawsk.net> References: <1342051656-32481-1-git-send-email-ben@bwidawsk.net> <87zk74hil5.fsf@eliezer.anholt.net> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from cloud01.chad-versace.us (184-106-247-128.static.cloud-ips.com [184.106.247.128]) by gabe.freedesktop.org (Postfix) with ESMTP id A65F5A0FA1 for ; Thu, 12 Jul 2012 13:09:07 -0700 (PDT) In-Reply-To: <87zk74hil5.fsf@eliezer.anholt.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Eric Anholt Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On Thu, 12 Jul 2012 12:42:30 -0700 Eric Anholt wrote: > Ben Widawsky 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@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