[Intel-xe] [PATCH] drm/xe: make compound literal initialization const

Jani Nikula jani.nikula at intel.com
Fri Mar 10 11:07:11 UTC 2023


On Thu, 09 Mar 2023, Rodrigo Vivi <rodrigo.vivi at intel.com> wrote:
> On Thu, Mar 09, 2023 at 02:17:46PM +0200, Jani Nikula wrote:
>> Be careful about having const in the compound literal initialization to
>> keep the initializers in rodata. Here, the impact is 1.8k of mutable
>> data moved to rodata.
>
> is there any static tool/script that we could run along with checkpatch
> to prevent these?

Glad you asked. Over the years I had accumulated a number of quick bash
scripts for checking various style issues in i915. I now have them all
gathered in a single python script at [1]. It's not the greatest, and I
kind of wish checkpatch was more accessible (i.e. not perl) and allowed
local plugins, but this is what I have.

It's really just a collection of simple git greps. And probably too many
false positives to add to CI. And you'd have to hack it to make it work
on patches, not the source tree.

Anyway, for global data it uses objdump. You need to build the driver
first, and then run 'i915-check data'. Or, for xe, 'i915-check
--path=drivers/gpu/drm/xe data'.

Try 'i915-check help' or 'i915-check --explain <check>' where <check> is
one of the listed checks.


BR,
Jani.


PS. Regarding the recent discussion whether module parameters should be
individual variables or gathered in a struct, the objdump is IMO in
favour of a struct. Contrast the scattered results in xe:

drivers/gpu/drm/xe/xe_module.o: .data	0000000000000008 xe_param_force_probe
drivers/gpu/drm/xe/xe_module.o: .data	0000000000000004 xe_guc_log_level
drivers/gpu/drm/xe/xe_module.o: .bss	0000000000000004 xe_force_vram_bar_size
drivers/gpu/drm/xe/xe_module.o: .data	0000000000000001 enable_display
drivers/gpu/drm/xe/xe_module.o: .data	0000000000000001 enable_guc

with i915:

drivers/gpu/drm/i915/i915_params.o: .data..read_mostly	00000000000000a0 i915_modparams



[1] https://gitlab.freedesktop.org/jani/i915-check


>
>> 
>> add/remove: 0/1 grow/shrink: 0/0 up/down: 0/-1804 (-1804)
>> Data                                         old     new   delta
>> __compound_literal                          1804       -   -1804
>> Total: Before=42425, After=40621, chg -4.25%
>> add/remove: 0/0 grow/shrink: 1/0 up/down: 1804/0 (1804)
>> RO Data                                      old     new   delta
>> __compound_literal                          7696    9500   +1804
>> Total: Before=138535, After=140339, chg +1.30
>> 
>> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
>
>
>> ---
>>  drivers/gpu/drm/xe/xe_rtp.h | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/xe/xe_rtp.h b/drivers/gpu/drm/xe/xe_rtp.h
>> index bd44fd8bbe05..8fc393ef7358 100644
>> --- a/drivers/gpu/drm/xe/xe_rtp.h
>> +++ b/drivers/gpu/drm/xe/xe_rtp.h
>> @@ -363,7 +363,7 @@ struct xe_reg_sr;
>>   */
>>  #define XE_RTP_RULES(r1, ...)							\
>>  	.n_rules = COUNT_ARGS(r1, ##__VA_ARGS__),				\
>> -	.rules = (struct xe_rtp_rule[]) {					\
>> +	.rules = (const struct xe_rtp_rule[]) {					\
>>  		CALL_FOR_EACH(__ADD_XE_RTP_RULE_PREFIX, r1, ##__VA_ARGS__)	\
>>  	}
>>  
>> @@ -390,7 +390,7 @@ struct xe_reg_sr;
>>   */
>>  #define XE_RTP_ACTIONS(a1, ...)							\
>>  	.n_actions = COUNT_ARGS(a1, ##__VA_ARGS__),				\
>> -	.actions = (struct xe_rtp_action[]) {					\
>> +	.actions = (const struct xe_rtp_action[]) {				\
>>  		CALL_FOR_EACH(__ADD_XE_RTP_ACTION_PREFIX, a1, ##__VA_ARGS__)	\
>>  	}
>>  
>> -- 
>> 2.39.1
>> 

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the Intel-xe mailing list