Broken TIMESTAMP on x86_64 - how to stay compatible

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Some time ago I've raised an issue, that only 32bits of TIMESTAMP are being
exposed to userspace on x86_64, you suggested that we need to stay compatible
with old (and new) userspace and proposed adding a new param that can can be
accessed via getparam. 
However, after checking beignet and mesa, I've noticed that they are already
broken. Currently the register looks like this:

f = valid counter value
X = garbage

i386:
0x0000000fffffffff

x86_64:
0xffffffffXXXXXXXX
(on gen8 we get duplicated 32-bit timestamp in both halves)

Mesa expects values from x86_64 arch, so it's broken on i386, beignet is
checking (compile time) if it's being built for 32 or 64 bits and adjusts its
behaviour for gen7 (broken for 32-bit userspace running on 64-bit kernel - not
sure if that's a valid usecase). For gen8 it's just masking high 32-bits.

Taking all of this under consideration, it's actually impossible to stay
compatible with old userspace and include additional 4-bits. I posted a patch,
that basically stuffs additional 4-bits into high portion of returned value, but
haven't received any comments.

http://lists.freedesktop.org/archives/intel-gfx/2014-October/053455.html
Skipped additional param since well-behaved userspace can just check if there
are zeroes in unused portion of register, as Chris suggested.

Unfortunately because of inconsistent userspace behaviour this actually causes
some breakage (i386 or gen8 beignet). Would it be acceptable? (I don't like it
since we could skip shuffling bytes around and that would just break other
scenarios)
If not, what's your opinion on solution where we setparam from userspace, and
that adjusts kernel behaviour (if param is set we use 2x32 read)?

-- 
Michał Winiarski
Intel VPG
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/intel-gfx





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux