summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
diff options
context:
space:
mode:
authorSamuel Russell <samuelr@nvidia.com>2014-07-22 13:55:54 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:10:56 -0400
commit08dc7c3584e696f06f10ce496febed0bf4afef05 (patch)
treeb079819f2cbfce4731d9e6248c8b38fd07eeb0fb /drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c
parent04efcaf97ee08a460deee192134ba30402c577be (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.c28
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,
469static DEVICE_ATTR(allow_all, ROOTRW, 469static 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
472static 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
487static 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
496static DEVICE_ATTR(emc3d_ratio, ROOTRW, emc3d_ratio_read, emc3d_ratio_store);
497
472#ifdef CONFIG_PM_RUNTIME 498#ifdef CONFIG_PM_RUNTIME
473static ssize_t force_idle_store(struct device *device, 499static 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);