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...

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;

Reply via email to