diff options
Diffstat (limited to 'drivers/gpu/nvgpu/tegra')
-rw-r--r-- | drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.c | 37 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.h | 4 |
2 files changed, 22 insertions, 19 deletions
diff --git a/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.c b/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.c index a2878c8b..b7cbf56e 100644 --- a/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.c +++ b/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.c | |||
@@ -518,7 +518,7 @@ int gr_gp10b_ecc_stat_create(struct device *dev, | |||
518 | int is_l2, | 518 | int is_l2, |
519 | char *ecc_stat_name, | 519 | char *ecc_stat_name, |
520 | struct gk20a_ecc_stat *ecc_stat, | 520 | struct gk20a_ecc_stat *ecc_stat, |
521 | struct device_attribute *dev_attr_array) | 521 | struct device_attribute **dev_attr_array) |
522 | { | 522 | { |
523 | struct gk20a *g = get_gk20a(dev); | 523 | struct gk20a *g = get_gk20a(dev); |
524 | char *ltc_unit_name = "ltc"; | 524 | char *ltc_unit_name = "ltc"; |
@@ -543,12 +543,13 @@ int gp10b_ecc_stat_create(struct device *dev, | |||
543 | char *ecc_unit_name, | 543 | char *ecc_unit_name, |
544 | char *ecc_stat_name, | 544 | char *ecc_stat_name, |
545 | struct gk20a_ecc_stat *ecc_stat, | 545 | struct gk20a_ecc_stat *ecc_stat, |
546 | struct device_attribute *dev_attr_array) | 546 | struct device_attribute **__dev_attr_array) |
547 | { | 547 | { |
548 | int error = 0; | 548 | int error = 0; |
549 | struct gk20a *g = get_gk20a(dev); | 549 | struct gk20a *g = get_gk20a(dev); |
550 | int hw_unit = 0; | 550 | int hw_unit = 0; |
551 | u32 hash_key = 0; | 551 | u32 hash_key = 0; |
552 | struct device_attribute *dev_attr_array; | ||
552 | 553 | ||
553 | /* Allocate arrays */ | 554 | /* Allocate arrays */ |
554 | dev_attr_array = nvgpu_kzalloc(g, sizeof(struct device_attribute) * | 555 | dev_attr_array = nvgpu_kzalloc(g, sizeof(struct device_attribute) * |
@@ -585,6 +586,8 @@ int gp10b_ecc_stat_create(struct device *dev, | |||
585 | &ecc_stat->hash_node, | 586 | &ecc_stat->hash_node, |
586 | hash_key); | 587 | hash_key); |
587 | 588 | ||
589 | *__dev_attr_array = dev_attr_array; | ||
590 | |||
588 | return error; | 591 | return error; |
589 | } | 592 | } |
590 | 593 | ||
@@ -645,80 +648,80 @@ void gr_gp10b_create_sysfs(struct device *dev) | |||
645 | 0, | 648 | 0, |
646 | "sm_lrf_ecc_single_err_count", | 649 | "sm_lrf_ecc_single_err_count", |
647 | &g->ecc.gr.t18x.sm_lrf_single_err_count, | 650 | &g->ecc.gr.t18x.sm_lrf_single_err_count, |
648 | dev_attr_sm_lrf_ecc_single_err_count_array); | 651 | &dev_attr_sm_lrf_ecc_single_err_count_array); |
649 | error |= gr_gp10b_ecc_stat_create(dev, | 652 | error |= gr_gp10b_ecc_stat_create(dev, |
650 | 0, | 653 | 0, |
651 | "sm_lrf_ecc_double_err_count", | 654 | "sm_lrf_ecc_double_err_count", |
652 | &g->ecc.gr.t18x.sm_lrf_double_err_count, | 655 | &g->ecc.gr.t18x.sm_lrf_double_err_count, |
653 | dev_attr_sm_lrf_ecc_double_err_count_array); | 656 | &dev_attr_sm_lrf_ecc_double_err_count_array); |
654 | 657 | ||
655 | error |= gr_gp10b_ecc_stat_create(dev, | 658 | error |= gr_gp10b_ecc_stat_create(dev, |
656 | 0, | 659 | 0, |
657 | "sm_shm_ecc_sec_count", | 660 | "sm_shm_ecc_sec_count", |
658 | &g->ecc.gr.t18x.sm_shm_sec_count, | 661 | &g->ecc.gr.t18x.sm_shm_sec_count, |
659 | dev_attr_sm_shm_ecc_sec_count_array); | 662 | &dev_attr_sm_shm_ecc_sec_count_array); |
660 | error |= gr_gp10b_ecc_stat_create(dev, | 663 | error |= gr_gp10b_ecc_stat_create(dev, |
661 | 0, | 664 | 0, |
662 | "sm_shm_ecc_sed_count", | 665 | "sm_shm_ecc_sed_count", |
663 | &g->ecc.gr.t18x.sm_shm_sed_count, | 666 | &g->ecc.gr.t18x.sm_shm_sed_count, |
664 | dev_attr_sm_shm_ecc_sed_count_array); | 667 | &dev_attr_sm_shm_ecc_sed_count_array); |
665 | error |= gr_gp10b_ecc_stat_create(dev, | 668 | error |= gr_gp10b_ecc_stat_create(dev, |
666 | 0, | 669 | 0, |
667 | "sm_shm_ecc_ded_count", | 670 | "sm_shm_ecc_ded_count", |
668 | &g->ecc.gr.t18x.sm_shm_ded_count, | 671 | &g->ecc.gr.t18x.sm_shm_ded_count, |
669 | dev_attr_sm_shm_ecc_ded_count_array); | 672 | &dev_attr_sm_shm_ecc_ded_count_array); |
670 | 673 | ||
671 | error |= gr_gp10b_ecc_stat_create(dev, | 674 | error |= gr_gp10b_ecc_stat_create(dev, |
672 | 0, | 675 | 0, |
673 | "tex_ecc_total_sec_pipe0_count", | 676 | "tex_ecc_total_sec_pipe0_count", |
674 | &g->ecc.gr.t18x.tex_total_sec_pipe0_count, | 677 | &g->ecc.gr.t18x.tex_total_sec_pipe0_count, |
675 | dev_attr_tex_ecc_total_sec_pipe0_count_array); | 678 | &dev_attr_tex_ecc_total_sec_pipe0_count_array); |
676 | error |= gr_gp10b_ecc_stat_create(dev, | 679 | error |= gr_gp10b_ecc_stat_create(dev, |
677 | 0, | 680 | 0, |
678 | "tex_ecc_total_ded_pipe0_count", | 681 | "tex_ecc_total_ded_pipe0_count", |
679 | &g->ecc.gr.t18x.tex_total_ded_pipe0_count, | 682 | &g->ecc.gr.t18x.tex_total_ded_pipe0_count, |
680 | dev_attr_tex_ecc_total_ded_pipe0_count_array); | 683 | &dev_attr_tex_ecc_total_ded_pipe0_count_array); |
681 | error |= gr_gp10b_ecc_stat_create(dev, | 684 | error |= gr_gp10b_ecc_stat_create(dev, |
682 | 0, | 685 | 0, |
683 | "tex_ecc_unique_sec_pipe0_count", | 686 | "tex_ecc_unique_sec_pipe0_count", |
684 | &g->ecc.gr.t18x.tex_unique_sec_pipe0_count, | 687 | &g->ecc.gr.t18x.tex_unique_sec_pipe0_count, |
685 | dev_attr_tex_ecc_unique_sec_pipe0_count_array); | 688 | &dev_attr_tex_ecc_unique_sec_pipe0_count_array); |
686 | error |= gr_gp10b_ecc_stat_create(dev, | 689 | error |= gr_gp10b_ecc_stat_create(dev, |
687 | 0, | 690 | 0, |
688 | "tex_ecc_unique_ded_pipe0_count", | 691 | "tex_ecc_unique_ded_pipe0_count", |
689 | &g->ecc.gr.t18x.tex_unique_ded_pipe0_count, | 692 | &g->ecc.gr.t18x.tex_unique_ded_pipe0_count, |
690 | dev_attr_tex_ecc_unique_ded_pipe0_count_array); | 693 | &dev_attr_tex_ecc_unique_ded_pipe0_count_array); |
691 | error |= gr_gp10b_ecc_stat_create(dev, | 694 | error |= gr_gp10b_ecc_stat_create(dev, |
692 | 0, | 695 | 0, |
693 | "tex_ecc_total_sec_pipe1_count", | 696 | "tex_ecc_total_sec_pipe1_count", |
694 | &g->ecc.gr.t18x.tex_total_sec_pipe1_count, | 697 | &g->ecc.gr.t18x.tex_total_sec_pipe1_count, |
695 | dev_attr_tex_ecc_total_sec_pipe1_count_array); | 698 | &dev_attr_tex_ecc_total_sec_pipe1_count_array); |
696 | error |= gr_gp10b_ecc_stat_create(dev, | 699 | error |= gr_gp10b_ecc_stat_create(dev, |
697 | 0, | 700 | 0, |
698 | "tex_ecc_total_ded_pipe1_count", | 701 | "tex_ecc_total_ded_pipe1_count", |
699 | &g->ecc.gr.t18x.tex_total_ded_pipe1_count, | 702 | &g->ecc.gr.t18x.tex_total_ded_pipe1_count, |
700 | dev_attr_tex_ecc_total_ded_pipe1_count_array); | 703 | &dev_attr_tex_ecc_total_ded_pipe1_count_array); |
701 | error |= gr_gp10b_ecc_stat_create(dev, | 704 | error |= gr_gp10b_ecc_stat_create(dev, |
702 | 0, | 705 | 0, |
703 | "tex_ecc_unique_sec_pipe1_count", | 706 | "tex_ecc_unique_sec_pipe1_count", |
704 | &g->ecc.gr.t18x.tex_unique_sec_pipe1_count, | 707 | &g->ecc.gr.t18x.tex_unique_sec_pipe1_count, |
705 | dev_attr_tex_ecc_unique_sec_pipe1_count_array); | 708 | &dev_attr_tex_ecc_unique_sec_pipe1_count_array); |
706 | error |= gr_gp10b_ecc_stat_create(dev, | 709 | error |= gr_gp10b_ecc_stat_create(dev, |
707 | 0, | 710 | 0, |
708 | "tex_ecc_unique_ded_pipe1_count", | 711 | "tex_ecc_unique_ded_pipe1_count", |
709 | &g->ecc.gr.t18x.tex_unique_ded_pipe1_count, | 712 | &g->ecc.gr.t18x.tex_unique_ded_pipe1_count, |
710 | dev_attr_tex_ecc_unique_ded_pipe1_count_array); | 713 | &dev_attr_tex_ecc_unique_ded_pipe1_count_array); |
711 | 714 | ||
712 | error |= gr_gp10b_ecc_stat_create(dev, | 715 | error |= gr_gp10b_ecc_stat_create(dev, |
713 | 1, | 716 | 1, |
714 | "lts0_ecc_sec_count", | 717 | "lts0_ecc_sec_count", |
715 | &g->ecc.gr.t18x.l2_sec_count, | 718 | &g->ecc.gr.t18x.l2_sec_count, |
716 | dev_attr_l2_ecc_sec_count_array); | 719 | &dev_attr_l2_ecc_sec_count_array); |
717 | error |= gr_gp10b_ecc_stat_create(dev, | 720 | error |= gr_gp10b_ecc_stat_create(dev, |
718 | 1, | 721 | 1, |
719 | "lts0_ecc_ded_count", | 722 | "lts0_ecc_ded_count", |
720 | &g->ecc.gr.t18x.l2_ded_count, | 723 | &g->ecc.gr.t18x.l2_ded_count, |
721 | dev_attr_l2_ecc_ded_count_array); | 724 | &dev_attr_l2_ecc_ded_count_array); |
722 | 725 | ||
723 | if (error) | 726 | if (error) |
724 | dev_err(dev, "Failed to create sysfs attributes!\n"); | 727 | dev_err(dev, "Failed to create sysfs attributes!\n"); |
diff --git a/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.h b/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.h index fb69fa98..74db60d1 100644 --- a/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.h +++ b/drivers/gpu/nvgpu/tegra/linux/platform_gp10b_tegra.h | |||
@@ -23,13 +23,13 @@ int gr_gp10b_ecc_stat_create(struct device *dev, | |||
23 | int is_l2, | 23 | int is_l2, |
24 | char *ecc_stat_name, | 24 | char *ecc_stat_name, |
25 | struct gk20a_ecc_stat *ecc_stat, | 25 | struct gk20a_ecc_stat *ecc_stat, |
26 | struct device_attribute *dev_attr_array); | 26 | struct device_attribute **dev_attr_array); |
27 | int gp10b_ecc_stat_create(struct device *dev, | 27 | int gp10b_ecc_stat_create(struct device *dev, |
28 | int hw_units, | 28 | int hw_units, |
29 | char *ecc_unit_name, | 29 | char *ecc_unit_name, |
30 | char *ecc_stat_name, | 30 | char *ecc_stat_name, |
31 | struct gk20a_ecc_stat *ecc_stat, | 31 | struct gk20a_ecc_stat *ecc_stat, |
32 | struct device_attribute *dev_attr_array); | 32 | struct device_attribute **dev_attr_array); |
33 | 33 | ||
34 | void gr_gp10b_ecc_stat_remove(struct device *dev, | 34 | void gr_gp10b_ecc_stat_remove(struct device *dev, |
35 | int is_l2, | 35 | int is_l2, |