[Intel-gfx] [drm-intel:for-linux-next 479/497] drivers/gpu/drm/i915/i915_gem_gtt.c:1086:26: sparse: Using plain integer as NULL pointer
Daniel Vetter
daniel.vetter at ffwll.ch
Fri Aug 7 04:40:26 PDT 2015
On Fri, Aug 7, 2015 at 12:21 PM, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> On Fri, Aug 07, 2015 at 10:21:34AM +0100, Michel Thierry wrote:
>> On 8/6/2015 11:00 PM, Daniel Vetter wrote:
>> >On Thu, Aug 6, 2015 at 10:17 PM, kbuild test robot
>> ><fengguang.wu at intel.com> wrote:
>> >> 1070 if (IS_ENABLED(CONFIG_X86_32))
>> >> 1071 /* While we have a proliferation of size_t variables
>> >> 1072 * we cannot represent the full ppgtt size on 32bit,
>> >> 1073 * so limit it to the same size as the GGTT (currently
>> >> 1074 * 2GiB).
>> >> 1075 */
>> >> 1076 ppgtt->base.total = to_i915(ppgtt->base.dev)->gtt.base.total;
>> >> 1077 ppgtt->base.cleanup = gen8_ppgtt_cleanup;
>> >> 1078 ppgtt->base.allocate_va_range = gen8_alloc_va_range;
>> >> 1079 ppgtt->base.insert_entries = gen8_ppgtt_insert_entries;
>> >> 1080 ppgtt->base.clear_range = gen8_ppgtt_clear_range;
>> >> 1081 ppgtt->base.unbind_vma = ppgtt_unbind_vma;
>> >> 1082 ppgtt->base.bind_vma = ppgtt_bind_vma;
>> >> 1083
>> >> 1084 ppgtt->switch_mm = gen8_mm_switch;
>> >> 1085
>> >>>1086 ret = __pdp_init(false, &ppgtt->pdp);
>> >
>> >So the first argument of pdp_init ist struct drm_device *dev and yes
>> >the first thing it does is deref it.
>> >
>>
>> *dev is used only for I915_PDPES_PER_PDP/USES_FULL_48BIT_PPGTT,
>> which in this path is always false. I didn't expect kbuild to
>> complain. I'll change it with the other modifications I'm about to
>> send.
>
> Wrong. dev is never deferenced even though it is passed around.
Yeah I spotted that too right after sending out my mail.
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 41c5e7c9c8ab..37283d5a8a4a 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2549,12 +2549,12 @@ struct drm_i915_cmd_table {
>
> #define HAS_HW_CONTEXTS(dev) (INTEL_INFO(dev)->gen >= 6)
> #define HAS_LOGICAL_RING_CONTEXTS(dev) (INTEL_INFO(dev)->gen >= 8)
> -#define USES_PPGTT(dev) (i915.enable_ppgtt)
> -#define USES_FULL_PPGTT(dev) (i915.enable_ppgtt >= 2)
> +#define USES_PPGTT() (i915.enable_ppgtt)
> +#define USES_FULL_PPGTT() (i915.enable_ppgtt >= 2)
> #ifdef CONFIG_X86_64
> -# define USES_FULL_48BIT_PPGTT(dev) (i915.enable_ppgtt == 3)
> +# define USES_FULL_48BIT_PPGTT() (i915.enable_ppgtt == 3)
> #else
> -# define USES_FULL_48BIT_PPGTT(dev) false
> +# define USES_FULL_48BIT_PPGTT() false
> #endif
I'd vote to abolish all these macros and just add an enum for ppgtt modes:
enum i915_ppgtt_mode {
PPGTT_DISABLED = 0,
ALIASING_PPGTT = 1,
FULL_PPGTT = 2,
FULL_48B_PPGTT = 3 };
Then just open-code the checks. Of course separate patch from anything
else really.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list