diff options
author | Samuel Russell <samuelr@nvidia.com> | 2014-07-22 13:55:54 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:10:56 -0400 |
commit | 08dc7c3584e696f06f10ce496febed0bf4afef05 (patch) | |
tree | b079819f2cbfce4731d9e6248c8b38fd07eeb0fb /drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | |
parent | 04efcaf97ee08a460deee192134ba30402c577be (diff) |
gpu: nvgpu: 3d.emc bandwidth ratio policy
Modify the 3d.emc policy to use a formula based on bandwidth and
utilization instead of the current sku-dependent policy.
Bug 1364894
Change-Id: Id97f765a48f0aa9f5ebeb0c82bccb22db474a1ae
Signed-off-by: Samuel Russell <samuelr@nvidia.com>
Reviewed-on: http://git-master/r/453586
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c index bec18328..fceed5e9 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c | |||
@@ -469,6 +469,32 @@ static ssize_t allow_all_enable_store(struct device *device, | |||
469 | static DEVICE_ATTR(allow_all, ROOTRW, | 469 | static DEVICE_ATTR(allow_all, ROOTRW, |
470 | allow_all_enable_read, allow_all_enable_store); | 470 | allow_all_enable_read, allow_all_enable_store); |
471 | 471 | ||
472 | static ssize_t emc3d_ratio_store(struct device *device, | ||
473 | struct device_attribute *attr, const char *buf, size_t count) | ||
474 | { | ||
475 | struct platform_device *ndev = to_platform_device(device); | ||
476 | struct gk20a *g = get_gk20a(ndev); | ||
477 | unsigned long val = 0; | ||
478 | |||
479 | if (kstrtoul(buf, 10, &val) < 0) | ||
480 | return -EINVAL; | ||
481 | |||
482 | g->emc3d_ratio = val; | ||
483 | |||
484 | return count; | ||
485 | } | ||
486 | |||
487 | static ssize_t emc3d_ratio_read(struct device *device, | ||
488 | struct device_attribute *attr, char *buf) | ||
489 | { | ||
490 | struct platform_device *ndev = to_platform_device(device); | ||
491 | struct gk20a *g = get_gk20a(ndev); | ||
492 | |||
493 | return sprintf(buf, "%d\n", g->emc3d_ratio); | ||
494 | } | ||
495 | |||
496 | static DEVICE_ATTR(emc3d_ratio, ROOTRW, emc3d_ratio_read, emc3d_ratio_store); | ||
497 | |||
472 | #ifdef CONFIG_PM_RUNTIME | 498 | #ifdef CONFIG_PM_RUNTIME |
473 | static ssize_t force_idle_store(struct device *device, | 499 | static ssize_t force_idle_store(struct device *device, |
474 | struct device_attribute *attr, const char *buf, size_t count) | 500 | struct device_attribute *attr, const char *buf, size_t count) |
@@ -566,6 +592,7 @@ void gk20a_remove_sysfs(struct device *dev) | |||
566 | device_remove_file(dev, &dev_attr_slcg_enable); | 592 | device_remove_file(dev, &dev_attr_slcg_enable); |
567 | device_remove_file(dev, &dev_attr_ptimer_scale_factor); | 593 | device_remove_file(dev, &dev_attr_ptimer_scale_factor); |
568 | device_remove_file(dev, &dev_attr_elpg_enable); | 594 | device_remove_file(dev, &dev_attr_elpg_enable); |
595 | device_remove_file(dev, &dev_attr_emc3d_ratio); | ||
569 | device_remove_file(dev, &dev_attr_counters); | 596 | device_remove_file(dev, &dev_attr_counters); |
570 | device_remove_file(dev, &dev_attr_counters_reset); | 597 | device_remove_file(dev, &dev_attr_counters_reset); |
571 | device_remove_file(dev, &dev_attr_load); | 598 | device_remove_file(dev, &dev_attr_load); |
@@ -593,6 +620,7 @@ void gk20a_create_sysfs(struct platform_device *dev) | |||
593 | error |= device_create_file(&dev->dev, &dev_attr_slcg_enable); | 620 | error |= device_create_file(&dev->dev, &dev_attr_slcg_enable); |
594 | error |= device_create_file(&dev->dev, &dev_attr_ptimer_scale_factor); | 621 | error |= device_create_file(&dev->dev, &dev_attr_ptimer_scale_factor); |
595 | error |= device_create_file(&dev->dev, &dev_attr_elpg_enable); | 622 | error |= device_create_file(&dev->dev, &dev_attr_elpg_enable); |
623 | error |= device_create_file(&dev->dev, &dev_attr_emc3d_ratio); | ||
596 | error |= device_create_file(&dev->dev, &dev_attr_counters); | 624 | error |= device_create_file(&dev->dev, &dev_attr_counters); |
597 | error |= device_create_file(&dev->dev, &dev_attr_counters_reset); | 625 | error |= device_create_file(&dev->dev, &dev_attr_counters_reset); |
598 | error |= device_create_file(&dev->dev, &dev_attr_load); | 626 | error |= device_create_file(&dev->dev, &dev_attr_load); |