aboutsummaryrefslogtreecommitdiffstats
path: root/src/intel/dev/gen_device_info.c
diff options
context:
space:
mode:
authorMark Janes <[email protected]>2019-07-29 17:38:42 -0700
committerMark Janes <[email protected]>2019-08-01 16:40:03 -0700
commitddb59cd20e180240d1f64df37e606775fc96a2aa (patch)
treea457eb386d30450d33a422bf4373cbbe75360914 /src/intel/dev/gen_device_info.c
parent086c486a75fe64440cb1e76de47b3838215246b1 (diff)
intel/device: make internal functions private
The device info initializer makes several fuctions internal: - handling of device override - updating topology from kernel information The implementation file is slightly reordered due to the renamed functions being static. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Lionel Landwerlin <[email protected]>
Diffstat (limited to 'src/intel/dev/gen_device_info.c')
-rw-r--r--src/intel/dev/gen_device_info.c142
1 files changed, 68 insertions, 74 deletions
diff --git a/src/intel/dev/gen_device_info.c b/src/intel/dev/gen_device_info.c
index 462a906d08d..cbe55007993 100644
--- a/src/intel/dev/gen_device_info.c
+++ b/src/intel/dev/gen_device_info.c
@@ -82,8 +82,8 @@ gen_device_name_to_pci_device_id(const char *name)
*
* Returns -1 if the override is not set.
*/
-int
-gen_get_pci_device_id_override(void)
+static int
+get_pci_device_id_override(void)
{
if (geteuid() == getuid()) {
const char *devid_override = getenv("INTEL_DEVID_OVERRIDE");
@@ -1059,68 +1059,6 @@ fill_masks(struct gen_device_info *devinfo)
}
}
-bool
-gen_device_info_update_from_masks(struct gen_device_info *devinfo,
- uint32_t slice_mask,
- uint32_t subslice_mask,
- uint32_t n_eus)
-{
- struct drm_i915_query_topology_info *topology;
-
- assert((slice_mask & 0xff) == slice_mask);
-
- size_t data_length = 100;
-
- topology = calloc(1, sizeof(*topology) + data_length);
- if (!topology)
- return false;
-
- topology->max_slices = util_last_bit(slice_mask);
- topology->max_subslices = util_last_bit(subslice_mask);
-
- topology->subslice_offset = DIV_ROUND_UP(topology->max_slices, 8);
- topology->subslice_stride = DIV_ROUND_UP(topology->max_subslices, 8);
-
- uint32_t n_subslices = __builtin_popcount(slice_mask) *
- __builtin_popcount(subslice_mask);
- uint32_t num_eu_per_subslice = DIV_ROUND_UP(n_eus, n_subslices);
- uint32_t eu_mask = (1U << num_eu_per_subslice) - 1;
-
- topology->eu_offset = topology->subslice_offset +
- DIV_ROUND_UP(topology->max_subslices, 8);
- topology->eu_stride = DIV_ROUND_UP(num_eu_per_subslice, 8);
-
- /* Set slice mask in topology */
- for (int b = 0; b < topology->subslice_offset; b++)
- topology->data[b] = (slice_mask >> (b * 8)) & 0xff;
-
- for (int s = 0; s < topology->max_slices; s++) {
-
- /* Set subslice mask in topology */
- for (int b = 0; b < topology->subslice_stride; b++) {
- int subslice_offset = topology->subslice_offset +
- s * topology->subslice_stride + b;
-
- topology->data[subslice_offset] = (subslice_mask >> (b * 8)) & 0xff;
- }
-
- /* Set eu mask in topology */
- for (int ss = 0; ss < topology->max_subslices; ss++) {
- for (int b = 0; b < topology->eu_stride; b++) {
- int eu_offset = topology->eu_offset +
- (s * topology->max_subslices + ss) * topology->eu_stride + b;
-
- topology->data[eu_offset] = (eu_mask >> (b * 8)) & 0xff;
- }
- }
- }
-
- gen_device_info_update_from_topology(devinfo, topology);
- free(topology);
-
- return true;
-}
-
static void
reset_masks(struct gen_device_info *devinfo)
{
@@ -1137,9 +1075,9 @@ reset_masks(struct gen_device_info *devinfo)
memset(devinfo->eu_masks, 0, sizeof(devinfo->eu_masks));
}
-void
-gen_device_info_update_from_topology(struct gen_device_info *devinfo,
- const struct drm_i915_query_topology_info *topology)
+static void
+update_from_topology(struct gen_device_info *devinfo,
+ const struct drm_i915_query_topology_info *topology)
{
reset_masks(devinfo);
@@ -1184,6 +1122,66 @@ gen_device_info_update_from_topology(struct gen_device_info *devinfo,
}
static bool
+update_from_masks(struct gen_device_info *devinfo, uint32_t slice_mask,
+ uint32_t subslice_mask, uint32_t n_eus)
+{
+ struct drm_i915_query_topology_info *topology;
+
+ assert((slice_mask & 0xff) == slice_mask);
+
+ size_t data_length = 100;
+
+ topology = calloc(1, sizeof(*topology) + data_length);
+ if (!topology)
+ return false;
+
+ topology->max_slices = util_last_bit(slice_mask);
+ topology->max_subslices = util_last_bit(subslice_mask);
+
+ topology->subslice_offset = DIV_ROUND_UP(topology->max_slices, 8);
+ topology->subslice_stride = DIV_ROUND_UP(topology->max_subslices, 8);
+
+ uint32_t n_subslices = __builtin_popcount(slice_mask) *
+ __builtin_popcount(subslice_mask);
+ uint32_t num_eu_per_subslice = DIV_ROUND_UP(n_eus, n_subslices);
+ uint32_t eu_mask = (1U << num_eu_per_subslice) - 1;
+
+ topology->eu_offset = topology->subslice_offset +
+ DIV_ROUND_UP(topology->max_subslices, 8);
+ topology->eu_stride = DIV_ROUND_UP(num_eu_per_subslice, 8);
+
+ /* Set slice mask in topology */
+ for (int b = 0; b < topology->subslice_offset; b++)
+ topology->data[b] = (slice_mask >> (b * 8)) & 0xff;
+
+ for (int s = 0; s < topology->max_slices; s++) {
+
+ /* Set subslice mask in topology */
+ for (int b = 0; b < topology->subslice_stride; b++) {
+ int subslice_offset = topology->subslice_offset +
+ s * topology->subslice_stride + b;
+
+ topology->data[subslice_offset] = (subslice_mask >> (b * 8)) & 0xff;
+ }
+
+ /* Set eu mask in topology */
+ for (int ss = 0; ss < topology->max_subslices; ss++) {
+ for (int b = 0; b < topology->eu_stride; b++) {
+ int eu_offset = topology->eu_offset +
+ (s * topology->max_subslices + ss) * topology->eu_stride + b;
+
+ topology->data[eu_offset] = (eu_mask >> (b * 8)) & 0xff;
+ }
+ }
+ }
+
+ update_from_topology(devinfo, topology);
+ free(topology);
+
+ return true;
+}
+
+static bool
getparam(int fd, uint32_t param, int *value)
{
int tmp;
@@ -1284,10 +1282,7 @@ getparam_topology(struct gen_device_info *devinfo, int fd)
if (!getparam(fd, I915_PARAM_SUBSLICE_MASK, &subslice_mask))
return false;
- return gen_device_info_update_from_masks(devinfo,
- slice_mask,
- subslice_mask,
- n_eus);
+ return update_from_masks(devinfo, slice_mask, subslice_mask, n_eus);
}
/**
@@ -1315,8 +1310,7 @@ query_topology(struct gen_device_info *devinfo, int fd)
item.length <= 0)
return false;
- gen_device_info_update_from_topology(devinfo,
- topo_info);
+ update_from_topology(devinfo, topo_info);
free(topo_info);
@@ -1327,7 +1321,7 @@ query_topology(struct gen_device_info *devinfo, int fd)
bool
gen_get_device_info_from_fd(int fd, struct gen_device_info *devinfo)
{
- int devid = gen_get_pci_device_id_override();
+ int devid = get_pci_device_id_override();
if (devid > 0) {
if (!gen_get_device_info_from_pci_id(devid, devinfo))
return false;