Commit 2d2d92bc authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915: use fine grained -Woverride-init disable



Use localized __diag_push(), __diag_ignore_all() with rationale, and
__diag_pop() for specific initializations instead of blanket disabling
of -Woverride-init across several files.

Note that we've tried this before with commit 88e96644 ("drm/i915:
use localized __diag_ignore_all() instead of per file") and reverted in
commit 290d1610 ("Revert "drm/i915: use localized
__diag_ignore_all() instead of per file""). The issue turned out to be
in __diag_ignore_all() and it was fixed by commit 689b097a
("compiler-gcc: Suppress -Wmissing-prototypes warning for all supported
GCC"). So we should be able to pull this off now.

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Reviewed-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240328102455.944131-1-jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 5a1da42b
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -32,11 +32,6 @@ endif
# Enable -Werror in CI and development
subdir-ccflags-$(CONFIG_DRM_I915_WERROR) += -Werror

# Fine grained warnings disable
CFLAGS_i915_pci.o = $(call cc-disable-warning, override-init)
CFLAGS_display/intel_display_device.o = $(call cc-disable-warning, override-init)
CFLAGS_display/intel_fbdev.o = $(call cc-disable-warning, override-init)

# Support compiling the display code separately for both i915 and xe
# drivers. Define I915 when building i915.
subdir-ccflags-y += -DI915
+5 −0
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@
#include "intel_display_reg_defs.h"
#include "intel_fbc.h"

__diag_push();
__diag_ignore_all("-Woverride-init", "Allow field initialization overrides for display info");

static const struct intel_display_device_info no_display = {};

#define PIPE_A_OFFSET		0x70000
@@ -768,6 +771,8 @@ static const struct intel_display_device_info xe2_lpd_display = {
		BIT(INTEL_FBC_C) | BIT(INTEL_FBC_D),
};

__diag_pop();

/*
 * Separate detection for no display cases to keep the display id array simple.
 *
+5 −0
Original line number Diff line number Diff line
@@ -135,6 +135,9 @@ static int intel_fbdev_mmap(struct fb_info *info, struct vm_area_struct *vma)
	return i915_gem_fb_mmap(obj, vma);
}

__diag_push();
__diag_ignore_all("-Woverride-init", "Allow field initialization overrides for fb ops");

static const struct fb_ops intelfb_ops = {
	.owner = THIS_MODULE,
	__FB_DEFAULT_DEFERRED_OPS_RDWR(intel_fbdev),
@@ -146,6 +149,8 @@ static const struct fb_ops intelfb_ops = {
	.fb_mmap = intel_fbdev_mmap,
};

__diag_pop();

static int intelfb_create(struct drm_fb_helper *helper,
			  struct drm_fb_helper_surface_size *sizes)
{
+5 −0
Original line number Diff line number Diff line
@@ -38,6 +38,9 @@
#include "i915_reg.h"
#include "intel_pci_config.h"

__diag_push();
__diag_ignore_all("-Woverride-init", "Allow field initialization overrides for device info");

#define PLATFORM(x) .platform = (x)
#define GEN(x) \
	.__runtime.graphics.ip.ver = (x), \
@@ -785,6 +788,8 @@ static const struct intel_device_info mtl_info = {

#undef PLATFORM

__diag_pop();

/*
 * Make sure any device matches here are from most specific to most
 * general.  For example, since the Quanta match is based on the subsystem
+0 −3
Original line number Diff line number Diff line
@@ -169,9 +169,6 @@ subdir-ccflags-$(CONFIG_DRM_XE_DISPLAY) += \
	-Ddrm_i915_gem_object=xe_bo \
	-Ddrm_i915_private=xe_device

CFLAGS_i915-display/intel_fbdev.o = $(call cc-disable-warning, override-init)
CFLAGS_i915-display/intel_display_device.o = $(call cc-disable-warning, override-init)

# Rule to build SOC code shared with i915
$(obj)/i915-soc/%.o: $(srctree)/drivers/gpu/drm/i915/soc/%.c FORCE
	$(call cmd,force_checksrc)