[igt-dev] [PATCH i-g-t v3 06/12] lib/intel_pat: add helpers for common pat_index modes

Mishra, Pallavi pallavi.mishra at intel.com
Tue Oct 17 22:54:35 UTC 2023



> -----Original Message-----
> From: Auld, Matthew <matthew.auld at intel.com>
> Sent: Monday, October 16, 2023 7:15 AM
> To: igt-dev at lists.freedesktop.org
> Cc: Souza, Jose <jose.souza at intel.com>; Mishra, Pallavi
> <pallavi.mishra at intel.com>
> Subject: [PATCH i-g-t v3 06/12] lib/intel_pat: add helpers for common
> pat_index modes
> 
> For now just add uc, wt and wb for every platform. The wb mode should
> always be at least 1way coherent, if messing around with system memory.
> Also make non-matching platforms throw an error rather than trying to
> inherit the modes from previous platforms since they will likely be different.
> 
> Signed-off-by: Matthew Auld <matthew.auld at intel.com>
> Cc: José Roberto de Souza <jose.souza at intel.com>
> Cc: Pallavi Mishra <pallavi.mishra at intel.com>

Reviewed-by: Pallavi Mishra <pallavi.mishra at intel.com>

> ---
>  lib/intel_pat.c | 77
> +++++++++++++++++++++++++++++++++++++++++++++++++
>  lib/intel_pat.h | 19 ++++++++++++
>  lib/meson.build |  1 +
>  3 files changed, 97 insertions(+)
>  create mode 100644 lib/intel_pat.c
>  create mode 100644 lib/intel_pat.h
> 
> diff --git a/lib/intel_pat.c b/lib/intel_pat.c new file mode 100644 index
> 000000000..2b892ee52
> --- /dev/null
> +++ b/lib/intel_pat.c
> @@ -0,0 +1,77 @@
> +// SPDX-License-Identifier: MIT
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#include "intel_pat.h"
> +
> +#include "igt.h"
> +
> +struct intel_pat_cache {
> +	uint8_t uc; /* UC + COH_NONE */
> +	uint8_t wt; /* WT + COH_NONE */
> +	uint8_t wb; /* WB + COH_AT_LEAST_1WAY */
> +
> +	uint8_t max_index;
> +};
> +
> +static void intel_get_pat_idx(int fd, struct intel_pat_cache *pat) {
> +	uint16_t dev_id = intel_get_drm_devid(fd);
> +
> +	if (intel_get_device_info(dev_id)->graphics_ver == 20) {
> +		pat->uc = 3;
> +		pat->wt = 15; /* Compressed + WB-transient */
> +		pat->wb = 2;
> +		pat->max_index = 31;
> +	} else if (IS_METEORLAKE(dev_id)) {
> +		pat->uc = 2;
> +		pat->wt = 1;
> +		pat->wb = 3;
> +		pat->max_index = 3;
> +	} else if (IS_PONTEVECCHIO(dev_id)) {
> +		pat->uc = 0;
> +		pat->wt = 2;
> +		pat->wb = 3;
> +		pat->max_index = 7;
> +	} else if (intel_graphics_ver(dev_id) <= IP_VER(12, 60)) {
> +		pat->uc = 3;
> +		pat->wt = 2;
> +		pat->wb = 0;
> +		pat->max_index = 3;
> +	} else {
> +		igt_critical("Platform is missing PAT settings for uc/wt/wb\n");
> +	}
> +}
> +
> +uint8_t intel_get_max_pat_index(int fd) {
> +	struct intel_pat_cache pat = {};
> +
> +	intel_get_pat_idx(fd, &pat);
> +	return pat.max_index;
> +}
> +
> +uint8_t intel_get_pat_idx_uc(int fd)
> +{
> +	struct intel_pat_cache pat = {};
> +
> +	intel_get_pat_idx(fd, &pat);
> +	return pat.uc;
> +}
> +
> +uint8_t intel_get_pat_idx_wt(int fd)
> +{
> +	struct intel_pat_cache pat = {};
> +
> +	intel_get_pat_idx(fd, &pat);
> +	return pat.wt;
> +}
> +
> +uint8_t intel_get_pat_idx_wb(int fd)
> +{
> +	struct intel_pat_cache pat = {};
> +
> +	intel_get_pat_idx(fd, &pat);
> +	return pat.wb;
> +}
> diff --git a/lib/intel_pat.h b/lib/intel_pat.h new file mode 100644 index
> 000000000..c24dbc275
> --- /dev/null
> +++ b/lib/intel_pat.h
> @@ -0,0 +1,19 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2023 Intel Corporation
> + */
> +
> +#ifndef INTEL_PAT_H
> +#define INTEL_PAT_H
> +
> +#include <stdint.h>
> +
> +#define DEFAULT_PAT_INDEX ((uint8_t)-1) /* igt-core can pick 1way or
> +better */
> +
> +uint8_t intel_get_max_pat_index(int fd);
> +
> +uint8_t intel_get_pat_idx_uc(int fd);
> +uint8_t intel_get_pat_idx_wt(int fd);
> +uint8_t intel_get_pat_idx_wb(int fd);
> +
> +#endif /* INTEL_PAT_H */
> diff --git a/lib/meson.build b/lib/meson.build index a7bccafc3..48466a2e9
> 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -64,6 +64,7 @@ lib_sources = [
>  	'intel_device_info.c',
>  	'intel_mmio.c',
>  	'intel_mocs.c',
> +	'intel_pat.c',
>  	'ioctl_wrappers.c',
>  	'media_spin.c',
>  	'media_fill.c',
> --
> 2.41.0



More information about the igt-dev mailing list