Skip to content
  • Sam Ravnborg's avatar
    drm: fix alpha build after drm_util.h change · 94520db5
    Sam Ravnborg authored
    0-DAY reported the following bug:
    
    tree:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
    head:   21376e2c
    commit: e9eafcb5 [1/2] drm: move drm_can_sleep() to drm_util.h
    config: alpha-allmodconfig (attached as .config)
    ...
       In file included from include/linux/irqflags.h:16:0,
                        from include/drm/drm_util.h:35,
                        from drivers/gpu/drm/qxl/qxl_cmd.c:28:
    >> arch/alpha/include/asm/irqflags.h:58:15: error: unknown type name 'bool'
        static inline bool arch_irqs_disabled_flags(unsigned long flags)
                      ^~~~
    
    And later following bug:
    tree:   git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
    head:   21376e2c
    commit: e9eafcb5
    
     [1/2] drm: move drm_can_sleep() to drm_util.h
    config: ia64-allyesconfig (attached as .config)
    ...
       In file included from arch/ia64/include/asm/irqflags.h:14,
                        from include/linux/irqflags.h:16,
                        from include/drm/drm_util.h:35,
                        from drivers/gpu/drm/qxl/qxl_cmd.c:28:
       arch/ia64/include/asm/pal.h: In function 'ia64_pal_tr_read':
       arch/ia64/include/asm/pal.h:1703:64: error: implicit declaration of function 'ia64_tpa'; did you mean 'ia64_pal'?  [-Werror=implicit-function-declaration]
         PAL_CALL_PHYS_STK(iprv, PAL_VM_TR_READ, reg_num, tr_type,(u64)ia64_tpa(tr_buffer));
                                                                       ^~~~~~~~
    ...
    
    So we have a situation where we do not pull in <linux/types.h>
    when building for alpha and for ia64 we need even more definitions
    are required.
    
    Two invasive fixes where considered:
    - Change all declarations of arch_irqs_disabled_flags() to use bool
    - Add include of <linux/types.h> to all files that uses bool for
      arch_irqs_disabled_flags
    
    To invasive with a too high pain/benefit ratio, so dropped.
    They would not cover ia64 either.
    
    Some less invasive fixes was also considered:
    - Add include of <linux/types.h> to drm_util.h
    - Add include of <linux/interrupt.h> to drm_util.h
    
    The first was dropped as this did not cover the ia64 case.
    
    The latter was considered the best option as there could
    be other similar cases and we would like the header files below
    include/drm/ to be selfcontained.
    So we end up pulling in a lot of stuff not needed, but this is
    the price we pay in drm/ because the kernel headers are not all
    selfcontained.
    
    While at it, ordred the includefiles in drm_util in alphabetical order.
    
    Build tested with alpha,ia64,arm,x86 with allmodconfig and allyesconfig.
    
    v2:
    - fix ia64 build, changed to include interrupt.h
    - sort include files alphabetically
    
    Fixes: 733748ac37b45 ("drm: move drm_can_sleep() to drm_util.h")
    Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Maxime Ripard <maxime.ripard@bootlin.com>
    Cc: Sean Paul <sean@poorly.run>
    Cc: David Airlie <airlied@linux.ie>
    Cc: Daniel Vetter <daniel@ffwll.ch>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190115214845.8117-1-sam@ravnborg.org
    94520db5