Messages in this thread | | | From | Matt Ranostay <> | Date | Wed, 31 Aug 2016 13:43:29 -0700 | Subject | Re: screen rotation flipped in 4.8-rc |
| |
On Wed, Aug 31, 2016 at 1:29 PM, Pandruvada, Srinivas <srinivas.pandruvada@intel.com> wrote: > On Wed, 2016-08-31 at 13:24 -0700, Matt Ranostay wrote: >> On Wed, Aug 31, 2016 at 1:18 PM, Pandruvada, Srinivas >> <srinivas.pandruvada@intel.com> wrote: >> > >> > On Tue, 2016-08-30 at 17:41 -0700, Matt Ranostay wrote: >> > > >> > > On Tue, Aug 30, 2016 at 3:42 PM, Pandruvada, Srinivas >> > > <srinivas.pandruvada@intel.com> wrote: >> > > > >> > > > >> > > > Hi All, >> > > > >> > > > I observed that using iio-sensor-proxy.service, the auto screen >> > > > rotation flipped on my laptop (Normal -> vertical, vertical- >> > > > > >> > > > > normal) >> > > > using kernel v4.8. >> > > > >> > > > Anyone else has seen this? >> > > > >> > > > I did a bisect and found a commit, which I am not sure how can >> > > > it >> > > > impact. >> > > Could you post the results of CONFIG_TEST_HASH enabled? >> > Attached dmesg.txt with the CONFIG_TEST_HASH=y. >> > >> > I see >> > [ 4.276138] test_hash: __hash_32() has no arch implementation to >> > test. >> > [ 4.276138] test_hash: hash_32() has no arch implementation to >> > test. >> > [ 4.276139] test_hash: hash_64() has no arch implementation to >> > test. >> > [ 4.276141] test_hash: 33152 tests passed. >> > >> Ok have you tested with that patchset reverted? And if so does the >> regression disappear? > Yes, but not after adding CONFIG_TEST_HASH=y. > regression disappears. > >> I would highly doubt if it was a issue with that dcache patchsets it >> wouldn't be breaking a ton of things. > I also think that.
Only thing I could suspect is a toolchain bug.. Have crazy idea for you to try below..
From the patchset notice the return doesn't cast the result to (unsigned int) as before. But __hash_32_generic is "static inline u32", and maybe the end_name_hash is returning the whole result as a 64-bit unsigned long rather than 32-bit unsigned int.
.... static inline unsigned long end_name_hash(unsigned long hash) { - return (unsigned int)hash; + return __hash_32((unsigned int)hash); } ....
Just a theory.. Could totally be wrong :).
> > Thanks, > Srinivas > >> >> > >> > Thanks, >> > Srinivas >> > > >> > > >> > > Thanks, >> > > >> > > Matt >> > > >> > > > >> > > > >> > > > >> > > > >> > > > commit 703b5faf22fbddf984a361e6555f3a03fdba63d9 >> > > > Author: George Spelvin <linux@sciencehorizons.net> >> > > > Date: Fri Jun 10 00:22:12 2016 -0400 >> > > > >> > > > fs/dcache.c: Save one 32-bit multiply in dcache lookup >> > > > >> > > > Noe that we're mixing in the parent pointer earlier, we >> > > > don't need to use hash_32() to mix its bits. Instead, we >> > > > can >> > > > just take the msbits of the hash value directly. >> > > > >> > > > For those applications which use the partial_name_hash(), >> > > > move the multiply to end_name_hash. >> > > > >> > > > Signed-off-by: George Spelvin <linux@sciencehorizons.net> >> > > > Signed-off-by: Linus Torvalds <torvalds@linux-foundation.or >> > > > g> >> > > > >> > > > >> > > > Thanks, >> > > > Srinivas
| |