All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrzej Hajda <andrzej.hajda@intel.com>
To: "Nerlige Ramappa, Umesh" <umesh.nerlige.ramappa@intel.com>,
	intel-gfx@lists.freedesktop.org,
	Lionel G Landwerlin <lionel.g.landwerlin@intel.com>,
	Matt Roper <matthew.d.roper@intel.com>
Subject: Re: [Intel-gfx] [PATCH 1/2] i915/perf: Replace DRM_DEBUG with driver specific drm_dbg call
Date: Fri, 8 Jul 2022 10:41:21 +0200	[thread overview]
Message-ID: <e670c978-85e5-a133-87e1-4fde9f9415c9@intel.com> (raw)
In-Reply-To: <20220707193002.2859653-1-umesh.nerlige.ramappa@intel.com>

On 07.07.2022 21:30, Nerlige Ramappa, Umesh wrote:
> DRM_DEBUG is not the right debug call to use in i915 OA, replace it with
> driver specific drm_dbg() call (Matt).
> 
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com > ---
>   drivers/gpu/drm/i915/i915_perf.c | 151 ++++++++++++++++++++-----------
>   1 file changed, 100 insertions(+), 51 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
> index 1577ab6754db..b3beb89884e0 100644
> --- a/drivers/gpu/drm/i915/i915_perf.c
> +++ b/drivers/gpu/drm/i915/i915_perf.c
> @@ -885,8 +885,9 @@ static int gen8_oa_read(struct i915_perf_stream *stream,
>   		if (ret)
>   			return ret;
>   
> -		DRM_DEBUG("OA buffer overflow (exponent = %d): force restart\n",
> -			  stream->period_exponent);
> +		drm_dbg(&stream->perf->i915->drm,

Looking at number of uses of &stream->perf->i915->drm I wonder if some 
helper wouldn't simplify things, sth like to_drm(stream) ?

Anyway:
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>

Regards
Andrzej

> +			"OA buffer overflow (exponent = %d): force restart\n",
> +			stream->period_exponent);
>   
>   		stream->perf->ops.oa_disable(stream);
>   		stream->perf->ops.oa_enable(stream);
> @@ -1108,8 +1109,9 @@ static int gen7_oa_read(struct i915_perf_stream *stream,
>   		if (ret)
>   			return ret;
>   
> -		DRM_DEBUG("OA buffer overflow (exponent = %d): force restart\n",
> -			  stream->period_exponent);
> +		drm_dbg(&stream->perf->i915->drm,
> +			"OA buffer overflow (exponent = %d): force restart\n",
> +			stream->period_exponent);
>   
>   		stream->perf->ops.oa_disable(stream);
>   		stream->perf->ops.oa_enable(stream);
> @@ -2863,7 +2865,8 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
>   	int ret;
>   
>   	if (!props->engine) {
> -		DRM_DEBUG("OA engine not specified\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"OA engine not specified\n");
>   		return -EINVAL;
>   	}
>   
> @@ -2873,18 +2876,21 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
>   	 * IDs
>   	 */
>   	if (!perf->metrics_kobj) {
> -		DRM_DEBUG("OA metrics weren't advertised via sysfs\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"OA metrics weren't advertised via sysfs\n");
>   		return -EINVAL;
>   	}
>   
>   	if (!(props->sample_flags & SAMPLE_OA_REPORT) &&
>   	    (GRAPHICS_VER(perf->i915) < 12 || !stream->ctx)) {
> -		DRM_DEBUG("Only OA report sampling supported\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"Only OA report sampling supported\n");
>   		return -EINVAL;
>   	}
>   
>   	if (!perf->ops.enable_metric_set) {
> -		DRM_DEBUG("OA unit not supported\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"OA unit not supported\n");
>   		return -ENODEV;
>   	}
>   
> @@ -2894,12 +2900,14 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
>   	 * we currently only allow exclusive access
>   	 */
>   	if (perf->exclusive_stream) {
> -		DRM_DEBUG("OA unit already in use\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"OA unit already in use\n");
>   		return -EBUSY;
>   	}
>   
>   	if (!props->oa_format) {
> -		DRM_DEBUG("OA report format not specified\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"OA report format not specified\n");
>   		return -EINVAL;
>   	}
>   
> @@ -2929,20 +2937,23 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
>   	if (stream->ctx) {
>   		ret = oa_get_render_ctx_id(stream);
>   		if (ret) {
> -			DRM_DEBUG("Invalid context id to filter with\n");
> +			drm_dbg(&stream->perf->i915->drm,
> +				"Invalid context id to filter with\n");
>   			return ret;
>   		}
>   	}
>   
>   	ret = alloc_noa_wait(stream);
>   	if (ret) {
> -		DRM_DEBUG("Unable to allocate NOA wait batch buffer\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"Unable to allocate NOA wait batch buffer\n");
>   		goto err_noa_wait_alloc;
>   	}
>   
>   	stream->oa_config = i915_perf_get_oa_config(perf, props->metrics_set);
>   	if (!stream->oa_config) {
> -		DRM_DEBUG("Invalid OA config id=%i\n", props->metrics_set);
> +		drm_dbg(&stream->perf->i915->drm,
> +			"Invalid OA config id=%i\n", props->metrics_set);
>   		ret = -EINVAL;
>   		goto err_config;
>   	}
> @@ -2973,11 +2984,13 @@ static int i915_oa_stream_init(struct i915_perf_stream *stream,
>   
>   	ret = i915_perf_stream_enable_sync(stream);
>   	if (ret) {
> -		DRM_DEBUG("Unable to enable metric set\n");
> +		drm_dbg(&stream->perf->i915->drm,
> +			"Unable to enable metric set\n");
>   		goto err_enable;
>   	}
>   
> -	DRM_DEBUG("opening stream oa config uuid=%s\n",
> +	drm_dbg(&stream->perf->i915->drm,
> +		"opening stream oa config uuid=%s\n",
>   		  stream->oa_config->uuid);
>   
>   	hrtimer_init(&stream->poll_check_timer,
> @@ -3429,7 +3442,8 @@ i915_perf_open_ioctl_locked(struct i915_perf *perf,
>   
>   		specific_ctx = i915_gem_context_lookup(file_priv, ctx_handle);
>   		if (IS_ERR(specific_ctx)) {
> -			DRM_DEBUG("Failed to look up context with ID %u for opening perf stream\n",
> +			drm_dbg(&perf->i915->drm,
> +				"Failed to look up context with ID %u for opening perf stream\n",
>   				  ctx_handle);
>   			ret = PTR_ERR(specific_ctx);
>   			goto err;
> @@ -3463,7 +3477,8 @@ i915_perf_open_ioctl_locked(struct i915_perf *perf,
>   
>   	if (props->hold_preemption) {
>   		if (!props->single_context) {
> -			DRM_DEBUG("preemption disable with no context\n");
> +			drm_dbg(&perf->i915->drm,
> +				"preemption disable with no context\n");
>   			ret = -EINVAL;
>   			goto err;
>   		}
> @@ -3485,7 +3500,8 @@ i915_perf_open_ioctl_locked(struct i915_perf *perf,
>   	 */
>   	if (privileged_op &&
>   	    i915_perf_stream_paranoid && !perfmon_capable()) {
> -		DRM_DEBUG("Insufficient privileges to open i915 perf stream\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Insufficient privileges to open i915 perf stream\n");
>   		ret = -EACCES;
>   		goto err_ctx;
>   	}
> @@ -3592,7 +3608,8 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   	props->poll_oa_period = DEFAULT_POLL_PERIOD_NS;
>   
>   	if (!n_props) {
> -		DRM_DEBUG("No i915 perf properties given\n");
> +		drm_dbg(&perf->i915->drm,
> +			"No i915 perf properties given\n");
>   		return -EINVAL;
>   	}
>   
> @@ -3601,7 +3618,8 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   						 I915_ENGINE_CLASS_RENDER,
>   						 0);
>   	if (!props->engine) {
> -		DRM_DEBUG("No RENDER-capable engines\n");
> +		drm_dbg(&perf->i915->drm,
> +			"No RENDER-capable engines\n");
>   		return -EINVAL;
>   	}
>   
> @@ -3612,7 +3630,8 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   	 * from userspace.
>   	 */
>   	if (n_props >= DRM_I915_PERF_PROP_MAX) {
> -		DRM_DEBUG("More i915 perf properties specified than exist\n");
> +		drm_dbg(&perf->i915->drm,
> +			"More i915 perf properties specified than exist\n");
>   		return -EINVAL;
>   	}
>   
> @@ -3629,7 +3648,8 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   			return ret;
>   
>   		if (id == 0 || id >= DRM_I915_PERF_PROP_MAX) {
> -			DRM_DEBUG("Unknown i915 perf property ID\n");
> +			drm_dbg(&perf->i915->drm,
> +				"Unknown i915 perf property ID\n");
>   			return -EINVAL;
>   		}
>   
> @@ -3644,19 +3664,22 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   			break;
>   		case DRM_I915_PERF_PROP_OA_METRICS_SET:
>   			if (value == 0) {
> -				DRM_DEBUG("Unknown OA metric set ID\n");
> +				drm_dbg(&perf->i915->drm,
> +					"Unknown OA metric set ID\n");
>   				return -EINVAL;
>   			}
>   			props->metrics_set = value;
>   			break;
>   		case DRM_I915_PERF_PROP_OA_FORMAT:
>   			if (value == 0 || value >= I915_OA_FORMAT_MAX) {
> -				DRM_DEBUG("Out-of-range OA report format %llu\n",
> +				drm_dbg(&perf->i915->drm,
> +					"Out-of-range OA report format %llu\n",
>   					  value);
>   				return -EINVAL;
>   			}
>   			if (!oa_format_valid(perf, value)) {
> -				DRM_DEBUG("Unsupported OA report format %llu\n",
> +				drm_dbg(&perf->i915->drm,
> +					"Unsupported OA report format %llu\n",
>   					  value);
>   				return -EINVAL;
>   			}
> @@ -3664,7 +3687,8 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   			break;
>   		case DRM_I915_PERF_PROP_OA_EXPONENT:
>   			if (value > OA_EXPONENT_MAX) {
> -				DRM_DEBUG("OA timer exponent too high (> %u)\n",
> +				drm_dbg(&perf->i915->drm,
> +					"OA timer exponent too high (> %u)\n",
>   					 OA_EXPONENT_MAX);
>   				return -EINVAL;
>   			}
> @@ -3692,7 +3716,8 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   				oa_freq_hz = 0;
>   
>   			if (oa_freq_hz > i915_oa_max_sample_rate && !perfmon_capable()) {
> -				DRM_DEBUG("OA exponent would exceed the max sampling frequency (sysctl dev.i915.oa_max_sample_rate) %uHz without CAP_PERFMON or CAP_SYS_ADMIN privileges\n",
> +				drm_dbg(&perf->i915->drm,
> +					"OA exponent would exceed the max sampling frequency (sysctl dev.i915.oa_max_sample_rate) %uHz without CAP_PERFMON or CAP_SYS_ADMIN privileges\n",
>   					  i915_oa_max_sample_rate);
>   				return -EACCES;
>   			}
> @@ -3709,13 +3734,15 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   			if (copy_from_user(&user_sseu,
>   					   u64_to_user_ptr(value),
>   					   sizeof(user_sseu))) {
> -				DRM_DEBUG("Unable to copy global sseu parameter\n");
> +				drm_dbg(&perf->i915->drm,
> +					"Unable to copy global sseu parameter\n");
>   				return -EFAULT;
>   			}
>   
>   			ret = get_sseu_config(&props->sseu, props->engine, &user_sseu);
>   			if (ret) {
> -				DRM_DEBUG("Invalid SSEU configuration\n");
> +				drm_dbg(&perf->i915->drm,
> +					"Invalid SSEU configuration\n");
>   				return ret;
>   			}
>   			props->has_sseu = true;
> @@ -3723,7 +3750,8 @@ static int read_properties_unlocked(struct i915_perf *perf,
>   		}
>   		case DRM_I915_PERF_PROP_POLL_OA_PERIOD:
>   			if (value < 100000 /* 100us */) {
> -				DRM_DEBUG("OA availability timer too small (%lluns < 100us)\n",
> +				drm_dbg(&perf->i915->drm,
> +					"OA availability timer too small (%lluns < 100us)\n",
>   					  value);
>   				return -EINVAL;
>   			}
> @@ -3774,7 +3802,8 @@ int i915_perf_open_ioctl(struct drm_device *dev, void *data,
>   	int ret;
>   
>   	if (!perf->i915) {
> -		DRM_DEBUG("i915 perf interface not available for this system\n");
> +		drm_dbg(&perf->i915->drm,
> +			"i915 perf interface not available for this system\n");
>   		return -ENOTSUPP;
>   	}
>   
> @@ -3782,7 +3811,8 @@ int i915_perf_open_ioctl(struct drm_device *dev, void *data,
>   			   I915_PERF_FLAG_FD_NONBLOCK |
>   			   I915_PERF_FLAG_DISABLED;
>   	if (param->flags & ~known_open_flags) {
> -		DRM_DEBUG("Unknown drm_i915_perf_open_param flag\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Unknown drm_i915_perf_open_param flag\n");
>   		return -EINVAL;
>   	}
>   
> @@ -4028,7 +4058,8 @@ static struct i915_oa_reg *alloc_oa_regs(struct i915_perf *perf,
>   			goto addr_err;
>   
>   		if (!is_valid(perf, addr)) {
> -			DRM_DEBUG("Invalid oa_reg address: %X\n", addr);
> +			drm_dbg(&perf->i915->drm,
> +				"Invalid oa_reg address: %X\n", addr);
>   			err = -EINVAL;
>   			goto addr_err;
>   		}
> @@ -4102,30 +4133,35 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   	int err, id;
>   
>   	if (!perf->i915) {
> -		DRM_DEBUG("i915 perf interface not available for this system\n");
> +		drm_dbg(&perf->i915->drm,
> +			"i915 perf interface not available for this system\n");
>   		return -ENOTSUPP;
>   	}
>   
>   	if (!perf->metrics_kobj) {
> -		DRM_DEBUG("OA metrics weren't advertised via sysfs\n");
> +		drm_dbg(&perf->i915->drm,
> +			"OA metrics weren't advertised via sysfs\n");
>   		return -EINVAL;
>   	}
>   
>   	if (i915_perf_stream_paranoid && !perfmon_capable()) {
> -		DRM_DEBUG("Insufficient privileges to add i915 OA config\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Insufficient privileges to add i915 OA config\n");
>   		return -EACCES;
>   	}
>   
>   	if ((!args->mux_regs_ptr || !args->n_mux_regs) &&
>   	    (!args->boolean_regs_ptr || !args->n_boolean_regs) &&
>   	    (!args->flex_regs_ptr || !args->n_flex_regs)) {
> -		DRM_DEBUG("No OA registers given\n");
> +		drm_dbg(&perf->i915->drm,
> +			"No OA registers given\n");
>   		return -EINVAL;
>   	}
>   
>   	oa_config = kzalloc(sizeof(*oa_config), GFP_KERNEL);
>   	if (!oa_config) {
> -		DRM_DEBUG("Failed to allocate memory for the OA config\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Failed to allocate memory for the OA config\n");
>   		return -ENOMEM;
>   	}
>   
> @@ -4133,7 +4169,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   	kref_init(&oa_config->ref);
>   
>   	if (!uuid_is_valid(args->uuid)) {
> -		DRM_DEBUG("Invalid uuid format for OA config\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Invalid uuid format for OA config\n");
>   		err = -EINVAL;
>   		goto reg_err;
>   	}
> @@ -4150,7 +4187,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   			     args->n_mux_regs);
>   
>   	if (IS_ERR(regs)) {
> -		DRM_DEBUG("Failed to create OA config for mux_regs\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Failed to create OA config for mux_regs\n");
>   		err = PTR_ERR(regs);
>   		goto reg_err;
>   	}
> @@ -4163,7 +4201,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   			     args->n_boolean_regs);
>   
>   	if (IS_ERR(regs)) {
> -		DRM_DEBUG("Failed to create OA config for b_counter_regs\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Failed to create OA config for b_counter_regs\n");
>   		err = PTR_ERR(regs);
>   		goto reg_err;
>   	}
> @@ -4182,7 +4221,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   				     args->n_flex_regs);
>   
>   		if (IS_ERR(regs)) {
> -			DRM_DEBUG("Failed to create OA config for flex_regs\n");
> +			drm_dbg(&perf->i915->drm,
> +				"Failed to create OA config for flex_regs\n");
>   			err = PTR_ERR(regs);
>   			goto reg_err;
>   		}
> @@ -4198,7 +4238,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   	 */
>   	idr_for_each_entry(&perf->metrics_idr, tmp, id) {
>   		if (!strcmp(tmp->uuid, oa_config->uuid)) {
> -			DRM_DEBUG("OA config already exists with this uuid\n");
> +			drm_dbg(&perf->i915->drm,
> +				"OA config already exists with this uuid\n");
>   			err = -EADDRINUSE;
>   			goto sysfs_err;
>   		}
> @@ -4206,7 +4247,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   
>   	err = create_dynamic_oa_sysfs_entry(perf, oa_config);
>   	if (err) {
> -		DRM_DEBUG("Failed to create sysfs entry for OA config\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Failed to create sysfs entry for OA config\n");
>   		goto sysfs_err;
>   	}
>   
> @@ -4215,14 +4257,16 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   				  oa_config, 2,
>   				  0, GFP_KERNEL);
>   	if (oa_config->id < 0) {
> -		DRM_DEBUG("Failed to create sysfs entry for OA config\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Failed to create sysfs entry for OA config\n");
>   		err = oa_config->id;
>   		goto sysfs_err;
>   	}
>   
>   	mutex_unlock(&perf->metrics_lock);
>   
> -	DRM_DEBUG("Added config %s id=%i\n", oa_config->uuid, oa_config->id);
> +	drm_dbg(&perf->i915->drm,
> +		"Added config %s id=%i\n", oa_config->uuid, oa_config->id);
>   
>   	return oa_config->id;
>   
> @@ -4230,7 +4274,8 @@ int i915_perf_add_config_ioctl(struct drm_device *dev, void *data,
>   	mutex_unlock(&perf->metrics_lock);
>   reg_err:
>   	i915_oa_config_put(oa_config);
> -	DRM_DEBUG("Failed to add new OA config\n");
> +	drm_dbg(&perf->i915->drm,
> +		"Failed to add new OA config\n");
>   	return err;
>   }
>   
> @@ -4254,12 +4299,14 @@ int i915_perf_remove_config_ioctl(struct drm_device *dev, void *data,
>   	int ret;
>   
>   	if (!perf->i915) {
> -		DRM_DEBUG("i915 perf interface not available for this system\n");
> +		drm_dbg(&perf->i915->drm,
> +			"i915 perf interface not available for this system\n");
>   		return -ENOTSUPP;
>   	}
>   
>   	if (i915_perf_stream_paranoid && !perfmon_capable()) {
> -		DRM_DEBUG("Insufficient privileges to remove i915 OA config\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Insufficient privileges to remove i915 OA config\n");
>   		return -EACCES;
>   	}
>   
> @@ -4269,7 +4316,8 @@ int i915_perf_remove_config_ioctl(struct drm_device *dev, void *data,
>   
>   	oa_config = idr_find(&perf->metrics_idr, *arg);
>   	if (!oa_config) {
> -		DRM_DEBUG("Failed to remove unknown OA config\n");
> +		drm_dbg(&perf->i915->drm,
> +			"Failed to remove unknown OA config\n");
>   		ret = -ENOENT;
>   		goto err_unlock;
>   	}
> @@ -4282,7 +4330,8 @@ int i915_perf_remove_config_ioctl(struct drm_device *dev, void *data,
>   
>   	mutex_unlock(&perf->metrics_lock);
>   
> -	DRM_DEBUG("Removed config %s id=%i\n", oa_config->uuid, oa_config->id);
> +	drm_dbg(&perf->i915->drm,
> +		"Removed config %s id=%i\n", oa_config->uuid, oa_config->id);
>   
>   	i915_oa_config_put(oa_config);
>   


  parent reply	other threads:[~2022-07-08  8:41 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-07 19:30 [Intel-gfx] [PATCH 1/2] i915/perf: Replace DRM_DEBUG with driver specific drm_dbg call Nerlige Ramappa, Umesh
2022-07-07 19:30 ` [Intel-gfx] [PATCH 2/2] i915/perf: Disable OA sseu config param for gfx12.50+ Nerlige Ramappa, Umesh
2022-07-08  6:35   ` Lionel Landwerlin
2022-07-08  8:45   ` Andrzej Hajda
2022-07-07 20:00 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [1/2] i915/perf: Replace DRM_DEBUG with driver specific drm_dbg call Patchwork
2022-07-07 20:19 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-07-08  6:34 ` [Intel-gfx] [PATCH 1/2] " Lionel Landwerlin
2022-07-08  8:41 ` Andrzej Hajda [this message]
2022-07-08 13:44 ` [Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [1/2] " Patchwork
2022-07-08 15:49   ` Matt Roper
2022-07-08 16:09     ` Umesh Nerlige Ramappa
  -- strict thread matches above, loose matches on Subject: below --
2022-07-07 19:26 [Intel-gfx] [PATCH 1/2] " Nerlige Ramappa, Umesh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e670c978-85e5-a133-87e1-4fde9f9415c9@intel.com \
    --to=andrzej.hajda@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=lionel.g.landwerlin@intel.com \
    --cc=matthew.d.roper@intel.com \
    --cc=umesh.nerlige.ramappa@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.