On 9/19/19 12:40 PM, Josh Poimboeuf wrote: > On Thu, Sep 19, 2019 at 12:21:46PM -0700, Randy Dunlap wrote: >> On 9/19/19 9:51 AM, Josh Poimboeuf wrote: >>> On Wed, Sep 18, 2019 at 09:04:21PM -0700, Randy Dunlap wrote: >>>> On 9/18/19 3:10 PM, Mark Brown wrote: >>>>> Hi all, >>>>> >>>>> Changes since 20190917: >>>>> >>>> >>>> on x86_64: >>>> >>>> drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: i915_gem_execbuffer2_ioctl()+0x2fb: call to gen8_canonical_addr() with UACCESS enabled >>>> >>>> using >>>>> gcc --version >>>> gcc (SUSE Linux) 7.4.1 20190424 [gcc-7-branch revision 270538] >>>> >>>> .o and .config files are attached. >>> >>> Does this fix it? >> >> This patch produces this message: >> >> drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o: warning: objtool: i915_gem_execbuffer2_ioctl()+0x2fb: call to sign_extend64.constprop.20() with UACCESS enabled > > Ha, ok. I guess we have to __always_inline that one too... Yes, that takes care of the objtool warning. Thanks. Acked-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> # build-tested > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c > index b5f6937369ea..7e111cb5b14b 100644 > --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c > +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c > @@ -284,7 +284,7 @@ struct i915_execbuffer { > * canonical form [63:48] == [47]." > */ > #define GEN8_HIGH_ADDRESS_BIT 47 > -static inline u64 gen8_canonical_addr(u64 address) > +static __always_inline u64 gen8_canonical_addr(u64 address) > { > return sign_extend64(address, GEN8_HIGH_ADDRESS_BIT); > } > diff --git a/include/linux/bitops.h b/include/linux/bitops.h > index cf074bce3eb3..fae10792b198 100644 > --- a/include/linux/bitops.h > +++ b/include/linux/bitops.h > @@ -151,7 +151,7 @@ static inline __s32 sign_extend32(__u32 value, int index) > * @value: value to sign extend > * @index: 0 based bit index (0<=index<64) to sign bit > */ > -static inline __s64 sign_extend64(__u64 value, int index) > +static __always_inline __s64 sign_extend64(__u64 value, int index) > { > __u8 shift = 63 - index; > return (__s64)(value << shift) >> shift; > -- ~Randy