From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 20/49] perf/x86/intel: Add Alder Lake Hybrid support
Date: Tue, 09 Feb 2021 12:24:35 +0800 [thread overview]
Message-ID: <202102091224.blTrzSBS-lkp@intel.com> (raw)
In-Reply-To: <1612797946-18784-21-git-send-email-kan.liang@linux.intel.com>
[-- Attachment #1: Type: text/plain, Size: 34541 bytes --]
Hi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on tip/perf/core]
[cannot apply to tip/master linus/master tip/x86/core v5.11-rc6 next-20210125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/kan-liang-linux-intel-com/Add-Alder-Lake-support-for-perf/20210209-070642
base: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git 32451614da2a9cf4296f90d3606ac77814fb519d
config: x86_64-randconfig-a013-20210209 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project c9439ca36342fb6013187d0a69aef92736951476)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# install x86_64 cross compiling tool for clang build
# apt-get install binutils-x86-64-linux-gnu
# https://github.com/0day-ci/linux/commit/b4dd7dba3e07b911b667e9c8052547a7af28298b
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review kan-liang-linux-intel-com/Add-Alder-Lake-support-for-perf/20210209-070642
git checkout b4dd7dba3e07b911b667e9c8052547a7af28298b
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> arch/x86/events/intel/core.c:6110:7: error: use of undeclared identifier 'INTEL_FAM6_ALDERLAKE_L'
case INTEL_FAM6_ALDERLAKE_L:
^
1 error generated.
vim +/INTEL_FAM6_ALDERLAKE_L +6110 arch/x86/events/intel/core.c
5499
5500 __init int intel_pmu_init(void)
5501 {
5502 struct attribute **extra_skl_attr = &empty_attrs;
5503 struct attribute **extra_attr = &empty_attrs;
5504 struct attribute **td_attr = &empty_attrs;
5505 struct attribute **mem_attr = &empty_attrs;
5506 struct attribute **tsx_attr = &empty_attrs;
5507 union cpuid10_edx edx;
5508 union cpuid10_eax eax;
5509 union cpuid10_ebx ebx;
5510 unsigned int fixed_mask;
5511 bool pmem = false;
5512 int version, i;
5513 char *name;
5514 struct x86_hybrid_pmu *pmu;
5515
5516 if (!cpu_has(&boot_cpu_data, X86_FEATURE_ARCH_PERFMON)) {
5517 switch (boot_cpu_data.x86) {
5518 case 0x6:
5519 return p6_pmu_init();
5520 case 0xb:
5521 return knc_pmu_init();
5522 case 0xf:
5523 return p4_pmu_init();
5524 }
5525 return -ENODEV;
5526 }
5527
5528 /*
5529 * Check whether the Architectural PerfMon supports
5530 * Branch Misses Retired hw_event or not.
5531 */
5532 cpuid(10, &eax.full, &ebx.full, &fixed_mask, &edx.full);
5533 if (eax.split.mask_length < ARCH_PERFMON_EVENTS_COUNT)
5534 return -ENODEV;
5535
5536 version = eax.split.version_id;
5537 if (version < 2)
5538 x86_pmu = core_pmu;
5539 else
5540 x86_pmu = intel_pmu;
5541
5542 x86_pmu.version = version;
5543 x86_pmu.num_counters = eax.split.num_counters;
5544 x86_pmu.cntval_bits = eax.split.bit_width;
5545 x86_pmu.cntval_mask = (1ULL << eax.split.bit_width) - 1;
5546
5547 x86_pmu.events_maskl = ebx.full;
5548 x86_pmu.events_mask_len = eax.split.mask_length;
5549
5550 x86_pmu.max_pebs_events = min_t(unsigned, MAX_PEBS_EVENTS, x86_pmu.num_counters);
5551
5552 /*
5553 * Quirk: v2 perfmon does not report fixed-purpose events, so
5554 * assume@least 3 events, when not running in a hypervisor:
5555 */
5556 if (version > 1 && version < 5) {
5557 int assume = 3 * !boot_cpu_has(X86_FEATURE_HYPERVISOR);
5558
5559 x86_pmu.num_counters_fixed =
5560 max((int)edx.split.num_counters_fixed, assume);
5561
5562 fixed_mask = (1L << x86_pmu.num_counters_fixed) - 1;
5563 } else if (version >= 5)
5564 x86_pmu.num_counters_fixed = fls(fixed_mask);
5565
5566 if (boot_cpu_has(X86_FEATURE_PDCM)) {
5567 u64 capabilities;
5568
5569 rdmsrl(MSR_IA32_PERF_CAPABILITIES, capabilities);
5570 x86_pmu.intel_cap.capabilities = capabilities;
5571 }
5572
5573 if (x86_pmu.intel_cap.lbr_format == LBR_FORMAT_32) {
5574 x86_pmu.lbr_reset = intel_pmu_lbr_reset_32;
5575 x86_pmu.lbr_read = intel_pmu_lbr_read_32;
5576 }
5577
5578 if (boot_cpu_has(X86_FEATURE_ARCH_LBR))
5579 intel_pmu_arch_lbr_init();
5580
5581 intel_ds_init();
5582
5583 x86_add_quirk(intel_arch_events_quirk); /* Install first, so it runs last */
5584
5585 if (version >= 5) {
5586 x86_pmu.intel_cap.anythread_deprecated = edx.split.anythread_deprecated;
5587 if (x86_pmu.intel_cap.anythread_deprecated)
5588 pr_cont(" AnyThread deprecated, ");
5589 }
5590
5591 /*
5592 * Install the hw-cache-events table:
5593 */
5594 switch (boot_cpu_data.x86_model) {
5595 case INTEL_FAM6_CORE_YONAH:
5596 pr_cont("Core events, ");
5597 name = "core";
5598 break;
5599
5600 case INTEL_FAM6_CORE2_MEROM:
5601 x86_add_quirk(intel_clovertown_quirk);
5602 fallthrough;
5603
5604 case INTEL_FAM6_CORE2_MEROM_L:
5605 case INTEL_FAM6_CORE2_PENRYN:
5606 case INTEL_FAM6_CORE2_DUNNINGTON:
5607 memcpy(hw_cache_event_ids, core2_hw_cache_event_ids,
5608 sizeof(hw_cache_event_ids));
5609
5610 intel_pmu_lbr_init_core();
5611
5612 x86_pmu.event_constraints = intel_core2_event_constraints;
5613 x86_pmu.pebs_constraints = intel_core2_pebs_event_constraints;
5614 pr_cont("Core2 events, ");
5615 name = "core2";
5616 break;
5617
5618 case INTEL_FAM6_NEHALEM:
5619 case INTEL_FAM6_NEHALEM_EP:
5620 case INTEL_FAM6_NEHALEM_EX:
5621 memcpy(hw_cache_event_ids, nehalem_hw_cache_event_ids,
5622 sizeof(hw_cache_event_ids));
5623 memcpy(hw_cache_extra_regs, nehalem_hw_cache_extra_regs,
5624 sizeof(hw_cache_extra_regs));
5625
5626 intel_pmu_lbr_init_nhm();
5627
5628 x86_pmu.event_constraints = intel_nehalem_event_constraints;
5629 x86_pmu.pebs_constraints = intel_nehalem_pebs_event_constraints;
5630 x86_pmu.enable_all = intel_pmu_nhm_enable_all;
5631 x86_pmu.extra_regs = intel_nehalem_extra_regs;
5632 x86_pmu.limit_period = nhm_limit_period;
5633
5634 mem_attr = nhm_mem_events_attrs;
5635
5636 /* UOPS_ISSUED.STALLED_CYCLES */
5637 intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] =
5638 X86_CONFIG(.event=0x0e, .umask=0x01, .inv=1, .cmask=1);
5639 /* UOPS_EXECUTED.CORE_ACTIVE_CYCLES,c=1,i=1 */
5640 intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] =
5641 X86_CONFIG(.event=0xb1, .umask=0x3f, .inv=1, .cmask=1);
5642
5643 intel_pmu_pebs_data_source_nhm();
5644 x86_add_quirk(intel_nehalem_quirk);
5645 x86_pmu.pebs_no_tlb = 1;
5646 extra_attr = nhm_format_attr;
5647
5648 pr_cont("Nehalem events, ");
5649 name = "nehalem";
5650 break;
5651
5652 case INTEL_FAM6_ATOM_BONNELL:
5653 case INTEL_FAM6_ATOM_BONNELL_MID:
5654 case INTEL_FAM6_ATOM_SALTWELL:
5655 case INTEL_FAM6_ATOM_SALTWELL_MID:
5656 case INTEL_FAM6_ATOM_SALTWELL_TABLET:
5657 memcpy(hw_cache_event_ids, atom_hw_cache_event_ids,
5658 sizeof(hw_cache_event_ids));
5659
5660 intel_pmu_lbr_init_atom();
5661
5662 x86_pmu.event_constraints = intel_gen_event_constraints;
5663 x86_pmu.pebs_constraints = intel_atom_pebs_event_constraints;
5664 x86_pmu.pebs_aliases = intel_pebs_aliases_core2;
5665 pr_cont("Atom events, ");
5666 name = "bonnell";
5667 break;
5668
5669 case INTEL_FAM6_ATOM_SILVERMONT:
5670 case INTEL_FAM6_ATOM_SILVERMONT_D:
5671 case INTEL_FAM6_ATOM_SILVERMONT_MID:
5672 case INTEL_FAM6_ATOM_AIRMONT:
5673 case INTEL_FAM6_ATOM_AIRMONT_MID:
5674 memcpy(hw_cache_event_ids, slm_hw_cache_event_ids,
5675 sizeof(hw_cache_event_ids));
5676 memcpy(hw_cache_extra_regs, slm_hw_cache_extra_regs,
5677 sizeof(hw_cache_extra_regs));
5678
5679 intel_pmu_lbr_init_slm();
5680
5681 x86_pmu.event_constraints = intel_slm_event_constraints;
5682 x86_pmu.pebs_constraints = intel_slm_pebs_event_constraints;
5683 x86_pmu.extra_regs = intel_slm_extra_regs;
5684 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5685 td_attr = slm_events_attrs;
5686 extra_attr = slm_format_attr;
5687 pr_cont("Silvermont events, ");
5688 name = "silvermont";
5689 break;
5690
5691 case INTEL_FAM6_ATOM_GOLDMONT:
5692 case INTEL_FAM6_ATOM_GOLDMONT_D:
5693 memcpy(hw_cache_event_ids, glm_hw_cache_event_ids,
5694 sizeof(hw_cache_event_ids));
5695 memcpy(hw_cache_extra_regs, glm_hw_cache_extra_regs,
5696 sizeof(hw_cache_extra_regs));
5697
5698 intel_pmu_lbr_init_skl();
5699
5700 x86_pmu.event_constraints = intel_slm_event_constraints;
5701 x86_pmu.pebs_constraints = intel_glm_pebs_event_constraints;
5702 x86_pmu.extra_regs = intel_glm_extra_regs;
5703 /*
5704 * It's recommended to use CPU_CLK_UNHALTED.CORE_P + NPEBS
5705 * for precise cycles.
5706 * :pp is identical to :ppp
5707 */
5708 x86_pmu.pebs_aliases = NULL;
5709 x86_pmu.pebs_prec_dist = true;
5710 x86_pmu.lbr_pt_coexist = true;
5711 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5712 td_attr = glm_events_attrs;
5713 extra_attr = slm_format_attr;
5714 pr_cont("Goldmont events, ");
5715 name = "goldmont";
5716 break;
5717
5718 case INTEL_FAM6_ATOM_GOLDMONT_PLUS:
5719 memcpy(hw_cache_event_ids, glp_hw_cache_event_ids,
5720 sizeof(hw_cache_event_ids));
5721 memcpy(hw_cache_extra_regs, glp_hw_cache_extra_regs,
5722 sizeof(hw_cache_extra_regs));
5723
5724 intel_pmu_lbr_init_skl();
5725
5726 x86_pmu.event_constraints = intel_slm_event_constraints;
5727 x86_pmu.extra_regs = intel_glm_extra_regs;
5728 /*
5729 * It's recommended to use CPU_CLK_UNHALTED.CORE_P + NPEBS
5730 * for precise cycles.
5731 */
5732 x86_pmu.pebs_aliases = NULL;
5733 x86_pmu.pebs_prec_dist = true;
5734 x86_pmu.lbr_pt_coexist = true;
5735 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5736 x86_pmu.flags |= PMU_FL_PEBS_ALL;
5737 x86_pmu.get_event_constraints = glp_get_event_constraints;
5738 td_attr = glm_events_attrs;
5739 /* Goldmont Plus has 4-wide pipeline */
5740 event_attr_td_total_slots_scale_glm.event_str = "4";
5741 extra_attr = slm_format_attr;
5742 pr_cont("Goldmont plus events, ");
5743 name = "goldmont_plus";
5744 break;
5745
5746 case INTEL_FAM6_ATOM_TREMONT_D:
5747 case INTEL_FAM6_ATOM_TREMONT:
5748 case INTEL_FAM6_ATOM_TREMONT_L:
5749 x86_pmu.late_ack = true;
5750 memcpy(hw_cache_event_ids, glp_hw_cache_event_ids,
5751 sizeof(hw_cache_event_ids));
5752 memcpy(hw_cache_extra_regs, tnt_hw_cache_extra_regs,
5753 sizeof(hw_cache_extra_regs));
5754 hw_cache_event_ids[C(ITLB)][C(OP_READ)][C(RESULT_ACCESS)] = -1;
5755
5756 intel_pmu_lbr_init_skl();
5757
5758 x86_pmu.event_constraints = intel_slm_event_constraints;
5759 x86_pmu.extra_regs = intel_tnt_extra_regs;
5760 /*
5761 * It's recommended to use CPU_CLK_UNHALTED.CORE_P + NPEBS
5762 * for precise cycles.
5763 */
5764 x86_pmu.pebs_aliases = NULL;
5765 x86_pmu.pebs_prec_dist = true;
5766 x86_pmu.lbr_pt_coexist = true;
5767 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5768 x86_pmu.get_event_constraints = tnt_get_event_constraints;
5769 td_attr = tnt_events_attrs;
5770 extra_attr = slm_format_attr;
5771 pr_cont("Tremont events, ");
5772 name = "Tremont";
5773 break;
5774
5775 case INTEL_FAM6_WESTMERE:
5776 case INTEL_FAM6_WESTMERE_EP:
5777 case INTEL_FAM6_WESTMERE_EX:
5778 memcpy(hw_cache_event_ids, westmere_hw_cache_event_ids,
5779 sizeof(hw_cache_event_ids));
5780 memcpy(hw_cache_extra_regs, nehalem_hw_cache_extra_regs,
5781 sizeof(hw_cache_extra_regs));
5782
5783 intel_pmu_lbr_init_nhm();
5784
5785 x86_pmu.event_constraints = intel_westmere_event_constraints;
5786 x86_pmu.enable_all = intel_pmu_nhm_enable_all;
5787 x86_pmu.pebs_constraints = intel_westmere_pebs_event_constraints;
5788 x86_pmu.extra_regs = intel_westmere_extra_regs;
5789 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5790
5791 mem_attr = nhm_mem_events_attrs;
5792
5793 /* UOPS_ISSUED.STALLED_CYCLES */
5794 intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] =
5795 X86_CONFIG(.event=0x0e, .umask=0x01, .inv=1, .cmask=1);
5796 /* UOPS_EXECUTED.CORE_ACTIVE_CYCLES,c=1,i=1 */
5797 intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] =
5798 X86_CONFIG(.event=0xb1, .umask=0x3f, .inv=1, .cmask=1);
5799
5800 intel_pmu_pebs_data_source_nhm();
5801 extra_attr = nhm_format_attr;
5802 pr_cont("Westmere events, ");
5803 name = "westmere";
5804 break;
5805
5806 case INTEL_FAM6_SANDYBRIDGE:
5807 case INTEL_FAM6_SANDYBRIDGE_X:
5808 x86_add_quirk(intel_sandybridge_quirk);
5809 x86_add_quirk(intel_ht_bug);
5810 memcpy(hw_cache_event_ids, snb_hw_cache_event_ids,
5811 sizeof(hw_cache_event_ids));
5812 memcpy(hw_cache_extra_regs, snb_hw_cache_extra_regs,
5813 sizeof(hw_cache_extra_regs));
5814
5815 intel_pmu_lbr_init_snb();
5816
5817 x86_pmu.event_constraints = intel_snb_event_constraints;
5818 x86_pmu.pebs_constraints = intel_snb_pebs_event_constraints;
5819 x86_pmu.pebs_aliases = intel_pebs_aliases_snb;
5820 if (boot_cpu_data.x86_model == INTEL_FAM6_SANDYBRIDGE_X)
5821 x86_pmu.extra_regs = intel_snbep_extra_regs;
5822 else
5823 x86_pmu.extra_regs = intel_snb_extra_regs;
5824
5825
5826 /* all extra regs are per-cpu when HT is on */
5827 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5828 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
5829
5830 td_attr = snb_events_attrs;
5831 mem_attr = snb_mem_events_attrs;
5832
5833 /* UOPS_ISSUED.ANY,c=1,i=1 to count stall cycles */
5834 intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] =
5835 X86_CONFIG(.event=0x0e, .umask=0x01, .inv=1, .cmask=1);
5836 /* UOPS_DISPATCHED.THREAD,c=1,i=1 to count stall cycles*/
5837 intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_BACKEND] =
5838 X86_CONFIG(.event=0xb1, .umask=0x01, .inv=1, .cmask=1);
5839
5840 extra_attr = nhm_format_attr;
5841
5842 pr_cont("SandyBridge events, ");
5843 name = "sandybridge";
5844 break;
5845
5846 case INTEL_FAM6_IVYBRIDGE:
5847 case INTEL_FAM6_IVYBRIDGE_X:
5848 x86_add_quirk(intel_ht_bug);
5849 memcpy(hw_cache_event_ids, snb_hw_cache_event_ids,
5850 sizeof(hw_cache_event_ids));
5851 /* dTLB-load-misses on IVB is different than SNB */
5852 hw_cache_event_ids[C(DTLB)][C(OP_READ)][C(RESULT_MISS)] = 0x8108; /* DTLB_LOAD_MISSES.DEMAND_LD_MISS_CAUSES_A_WALK */
5853
5854 memcpy(hw_cache_extra_regs, snb_hw_cache_extra_regs,
5855 sizeof(hw_cache_extra_regs));
5856
5857 intel_pmu_lbr_init_snb();
5858
5859 x86_pmu.event_constraints = intel_ivb_event_constraints;
5860 x86_pmu.pebs_constraints = intel_ivb_pebs_event_constraints;
5861 x86_pmu.pebs_aliases = intel_pebs_aliases_ivb;
5862 x86_pmu.pebs_prec_dist = true;
5863 if (boot_cpu_data.x86_model == INTEL_FAM6_IVYBRIDGE_X)
5864 x86_pmu.extra_regs = intel_snbep_extra_regs;
5865 else
5866 x86_pmu.extra_regs = intel_snb_extra_regs;
5867 /* all extra regs are per-cpu when HT is on */
5868 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5869 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
5870
5871 td_attr = snb_events_attrs;
5872 mem_attr = snb_mem_events_attrs;
5873
5874 /* UOPS_ISSUED.ANY,c=1,i=1 to count stall cycles */
5875 intel_perfmon_event_map[PERF_COUNT_HW_STALLED_CYCLES_FRONTEND] =
5876 X86_CONFIG(.event=0x0e, .umask=0x01, .inv=1, .cmask=1);
5877
5878 extra_attr = nhm_format_attr;
5879
5880 pr_cont("IvyBridge events, ");
5881 name = "ivybridge";
5882 break;
5883
5884
5885 case INTEL_FAM6_HASWELL:
5886 case INTEL_FAM6_HASWELL_X:
5887 case INTEL_FAM6_HASWELL_L:
5888 case INTEL_FAM6_HASWELL_G:
5889 x86_add_quirk(intel_ht_bug);
5890 x86_add_quirk(intel_pebs_isolation_quirk);
5891 x86_pmu.late_ack = true;
5892 memcpy(hw_cache_event_ids, hsw_hw_cache_event_ids, sizeof(hw_cache_event_ids));
5893 memcpy(hw_cache_extra_regs, hsw_hw_cache_extra_regs, sizeof(hw_cache_extra_regs));
5894
5895 intel_pmu_lbr_init_hsw();
5896
5897 x86_pmu.event_constraints = intel_hsw_event_constraints;
5898 x86_pmu.pebs_constraints = intel_hsw_pebs_event_constraints;
5899 x86_pmu.extra_regs = intel_snbep_extra_regs;
5900 x86_pmu.pebs_aliases = intel_pebs_aliases_ivb;
5901 x86_pmu.pebs_prec_dist = true;
5902 /* all extra regs are per-cpu when HT is on */
5903 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5904 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
5905
5906 x86_pmu.hw_config = hsw_hw_config;
5907 x86_pmu.get_event_constraints = hsw_get_event_constraints;
5908 x86_pmu.lbr_double_abort = true;
5909 extra_attr = boot_cpu_has(X86_FEATURE_RTM) ?
5910 hsw_format_attr : nhm_format_attr;
5911 td_attr = hsw_events_attrs;
5912 mem_attr = hsw_mem_events_attrs;
5913 tsx_attr = hsw_tsx_events_attrs;
5914 pr_cont("Haswell events, ");
5915 name = "haswell";
5916 break;
5917
5918 case INTEL_FAM6_BROADWELL:
5919 case INTEL_FAM6_BROADWELL_D:
5920 case INTEL_FAM6_BROADWELL_G:
5921 case INTEL_FAM6_BROADWELL_X:
5922 x86_add_quirk(intel_pebs_isolation_quirk);
5923 x86_pmu.late_ack = true;
5924 memcpy(hw_cache_event_ids, hsw_hw_cache_event_ids, sizeof(hw_cache_event_ids));
5925 memcpy(hw_cache_extra_regs, hsw_hw_cache_extra_regs, sizeof(hw_cache_extra_regs));
5926
5927 /* L3_MISS_LOCAL_DRAM is BIT(26) in Broadwell */
5928 hw_cache_extra_regs[C(LL)][C(OP_READ)][C(RESULT_MISS)] = HSW_DEMAND_READ |
5929 BDW_L3_MISS|HSW_SNOOP_DRAM;
5930 hw_cache_extra_regs[C(LL)][C(OP_WRITE)][C(RESULT_MISS)] = HSW_DEMAND_WRITE|BDW_L3_MISS|
5931 HSW_SNOOP_DRAM;
5932 hw_cache_extra_regs[C(NODE)][C(OP_READ)][C(RESULT_ACCESS)] = HSW_DEMAND_READ|
5933 BDW_L3_MISS_LOCAL|HSW_SNOOP_DRAM;
5934 hw_cache_extra_regs[C(NODE)][C(OP_WRITE)][C(RESULT_ACCESS)] = HSW_DEMAND_WRITE|
5935 BDW_L3_MISS_LOCAL|HSW_SNOOP_DRAM;
5936
5937 intel_pmu_lbr_init_hsw();
5938
5939 x86_pmu.event_constraints = intel_bdw_event_constraints;
5940 x86_pmu.pebs_constraints = intel_bdw_pebs_event_constraints;
5941 x86_pmu.extra_regs = intel_snbep_extra_regs;
5942 x86_pmu.pebs_aliases = intel_pebs_aliases_ivb;
5943 x86_pmu.pebs_prec_dist = true;
5944 /* all extra regs are per-cpu when HT is on */
5945 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5946 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
5947
5948 x86_pmu.hw_config = hsw_hw_config;
5949 x86_pmu.get_event_constraints = hsw_get_event_constraints;
5950 x86_pmu.limit_period = bdw_limit_period;
5951 extra_attr = boot_cpu_has(X86_FEATURE_RTM) ?
5952 hsw_format_attr : nhm_format_attr;
5953 td_attr = hsw_events_attrs;
5954 mem_attr = hsw_mem_events_attrs;
5955 tsx_attr = hsw_tsx_events_attrs;
5956 pr_cont("Broadwell events, ");
5957 name = "broadwell";
5958 break;
5959
5960 case INTEL_FAM6_XEON_PHI_KNL:
5961 case INTEL_FAM6_XEON_PHI_KNM:
5962 memcpy(hw_cache_event_ids,
5963 slm_hw_cache_event_ids, sizeof(hw_cache_event_ids));
5964 memcpy(hw_cache_extra_regs,
5965 knl_hw_cache_extra_regs, sizeof(hw_cache_extra_regs));
5966 intel_pmu_lbr_init_knl();
5967
5968 x86_pmu.event_constraints = intel_slm_event_constraints;
5969 x86_pmu.pebs_constraints = intel_slm_pebs_event_constraints;
5970 x86_pmu.extra_regs = intel_knl_extra_regs;
5971
5972 /* all extra regs are per-cpu when HT is on */
5973 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
5974 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
5975 extra_attr = slm_format_attr;
5976 pr_cont("Knights Landing/Mill events, ");
5977 name = "knights-landing";
5978 break;
5979
5980 case INTEL_FAM6_SKYLAKE_X:
5981 pmem = true;
5982 fallthrough;
5983 case INTEL_FAM6_SKYLAKE_L:
5984 case INTEL_FAM6_SKYLAKE:
5985 case INTEL_FAM6_KABYLAKE_L:
5986 case INTEL_FAM6_KABYLAKE:
5987 case INTEL_FAM6_COMETLAKE_L:
5988 case INTEL_FAM6_COMETLAKE:
5989 x86_add_quirk(intel_pebs_isolation_quirk);
5990 x86_pmu.late_ack = true;
5991 memcpy(hw_cache_event_ids, skl_hw_cache_event_ids, sizeof(hw_cache_event_ids));
5992 memcpy(hw_cache_extra_regs, skl_hw_cache_extra_regs, sizeof(hw_cache_extra_regs));
5993 intel_pmu_lbr_init_skl();
5994
5995 /* INT_MISC.RECOVERY_CYCLES has umask 1 in Skylake */
5996 event_attr_td_recovery_bubbles.event_str_noht =
5997 "event=0xd,umask=0x1,cmask=1";
5998 event_attr_td_recovery_bubbles.event_str_ht =
5999 "event=0xd,umask=0x1,cmask=1,any=1";
6000
6001 x86_pmu.event_constraints = intel_skl_event_constraints;
6002 x86_pmu.pebs_constraints = intel_skl_pebs_event_constraints;
6003 x86_pmu.extra_regs = intel_skl_extra_regs;
6004 x86_pmu.pebs_aliases = intel_pebs_aliases_skl;
6005 x86_pmu.pebs_prec_dist = true;
6006 /* all extra regs are per-cpu when HT is on */
6007 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
6008 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
6009
6010 x86_pmu.hw_config = hsw_hw_config;
6011 x86_pmu.get_event_constraints = hsw_get_event_constraints;
6012 extra_attr = boot_cpu_has(X86_FEATURE_RTM) ?
6013 hsw_format_attr : nhm_format_attr;
6014 extra_skl_attr = skl_format_attr;
6015 td_attr = hsw_events_attrs;
6016 mem_attr = hsw_mem_events_attrs;
6017 tsx_attr = hsw_tsx_events_attrs;
6018 intel_pmu_pebs_data_source_skl(pmem);
6019
6020 if (boot_cpu_has(X86_FEATURE_TSX_FORCE_ABORT)) {
6021 x86_pmu.flags |= PMU_FL_TFA;
6022 x86_pmu.get_event_constraints = tfa_get_event_constraints;
6023 x86_pmu.enable_all = intel_tfa_pmu_enable_all;
6024 x86_pmu.commit_scheduling = intel_tfa_commit_scheduling;
6025 }
6026
6027 pr_cont("Skylake events, ");
6028 name = "skylake";
6029 break;
6030
6031 case INTEL_FAM6_ICELAKE_X:
6032 case INTEL_FAM6_ICELAKE_D:
6033 pmem = true;
6034 fallthrough;
6035 case INTEL_FAM6_ICELAKE_L:
6036 case INTEL_FAM6_ICELAKE:
6037 case INTEL_FAM6_TIGERLAKE_L:
6038 case INTEL_FAM6_TIGERLAKE:
6039 case INTEL_FAM6_ROCKETLAKE:
6040 x86_pmu.late_ack = true;
6041 memcpy(hw_cache_event_ids, skl_hw_cache_event_ids, sizeof(hw_cache_event_ids));
6042 memcpy(hw_cache_extra_regs, skl_hw_cache_extra_regs, sizeof(hw_cache_extra_regs));
6043 hw_cache_event_ids[C(ITLB)][C(OP_READ)][C(RESULT_ACCESS)] = -1;
6044 intel_pmu_lbr_init_skl();
6045
6046 x86_pmu.event_constraints = intel_icl_event_constraints;
6047 x86_pmu.pebs_constraints = intel_icl_pebs_event_constraints;
6048 x86_pmu.extra_regs = intel_icl_extra_regs;
6049 x86_pmu.pebs_aliases = NULL;
6050 x86_pmu.pebs_prec_dist = true;
6051 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
6052 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
6053
6054 x86_pmu.hw_config = hsw_hw_config;
6055 x86_pmu.get_event_constraints = icl_get_event_constraints;
6056 extra_attr = boot_cpu_has(X86_FEATURE_RTM) ?
6057 hsw_format_attr : nhm_format_attr;
6058 extra_skl_attr = skl_format_attr;
6059 mem_attr = icl_events_attrs;
6060 td_attr = icl_td_events_attrs;
6061 tsx_attr = icl_tsx_events_attrs;
6062 x86_pmu.rtm_abort_event = X86_CONFIG(.event=0xc9, .umask=0x04);
6063 x86_pmu.lbr_pt_coexist = true;
6064 intel_pmu_pebs_data_source_skl(pmem);
6065 x86_pmu.num_topdown_events = 4;
6066 x86_pmu.update_topdown_event = icl_update_topdown_event;
6067 x86_pmu.set_topdown_event_period = icl_set_topdown_event_period;
6068 pr_cont("Icelake events, ");
6069 name = "icelake";
6070 break;
6071
6072 case INTEL_FAM6_SAPPHIRERAPIDS_X:
6073 pmem = true;
6074 x86_pmu.late_ack = true;
6075 memcpy(hw_cache_event_ids, spr_hw_cache_event_ids, sizeof(hw_cache_event_ids));
6076 memcpy(hw_cache_extra_regs, spr_hw_cache_extra_regs, sizeof(hw_cache_extra_regs));
6077
6078 x86_pmu.event_constraints = intel_spr_event_constraints;
6079 x86_pmu.pebs_constraints = intel_spr_pebs_event_constraints;
6080 x86_pmu.extra_regs = intel_spr_extra_regs;
6081 x86_pmu.limit_period = spr_limit_period;
6082 x86_pmu.pebs_aliases = NULL;
6083 x86_pmu.pebs_prec_dist = true;
6084 x86_pmu.pebs_block = true;
6085 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
6086 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
6087 x86_pmu.flags |= PMU_FL_PEBS_ALL;
6088 x86_pmu.flags |= PMU_FL_INSTR_LATENCY;
6089 x86_pmu.flags |= PMU_FL_MEM_LOADS_AUX;
6090
6091 x86_pmu.hw_config = hsw_hw_config;
6092 x86_pmu.get_event_constraints = spr_get_event_constraints;
6093 extra_attr = boot_cpu_has(X86_FEATURE_RTM) ?
6094 hsw_format_attr : nhm_format_attr;
6095 extra_skl_attr = skl_format_attr;
6096 mem_attr = spr_events_attrs;
6097 td_attr = spr_td_events_attrs;
6098 tsx_attr = spr_tsx_events_attrs;
6099 x86_pmu.rtm_abort_event = X86_CONFIG(.event=0xc9, .umask=0x04);
6100 x86_pmu.lbr_pt_coexist = true;
6101 intel_pmu_pebs_data_source_skl(pmem);
6102 x86_pmu.num_topdown_events = 8;
6103 x86_pmu.update_topdown_event = icl_update_topdown_event;
6104 x86_pmu.set_topdown_event_period = icl_set_topdown_event_period;
6105 pr_cont("Sapphire Rapids events, ");
6106 name = "sapphire_rapids";
6107 break;
6108
6109 case INTEL_FAM6_ALDERLAKE:
> 6110 case INTEL_FAM6_ALDERLAKE_L:
6111 /*
6112 * Alder Lake has 2 types of CPU, core and atom.
6113 *
6114 * Initialize the common PerfMon capabilities here.
6115 */
6116 x86_pmu.late_ack = true;
6117 x86_pmu.pebs_aliases = NULL;
6118 x86_pmu.pebs_prec_dist = true;
6119 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
6120 x86_pmu.flags |= PMU_FL_NO_HT_SHARING;
6121 x86_pmu.flags |= PMU_FL_PEBS_ALL;
6122 x86_pmu.flags |= PMU_FL_INSTR_LATENCY;
6123 x86_pmu.flags |= PMU_FL_MEM_LOADS_AUX;
6124 x86_pmu.lbr_pt_coexist = true;
6125 intel_pmu_pebs_data_source_skl(false);
6126 x86_pmu.num_topdown_events = 8;
6127 x86_pmu.update_topdown_event = adl_update_topdown_event;
6128 x86_pmu.set_topdown_event_period = adl_set_topdown_event_period;
6129
6130 x86_pmu.filter_match = intel_pmu_filter_match;
6131 x86_pmu.get_event_constraints = adl_get_event_constraints;
6132 x86_pmu.hw_config = adl_hw_config;
6133 x86_pmu.limit_period = spr_limit_period;
6134 /*
6135 * The rtm_abort_event is used to check whether to enable GPRs
6136 * for the RTM abort event. Atom doesn't have the RTM abort
6137 * event. There is no harmful to set it in the common
6138 * x86_pmu.rtm_abort_event.
6139 */
6140 x86_pmu.rtm_abort_event = X86_CONFIG(.event=0xc9, .umask=0x04);
6141
6142 td_attr = adl_hybrid_events_attrs;
6143 mem_attr = adl_hybrid_mem_attrs;
6144 tsx_attr = adl_hybrid_tsx_attrs;
6145 extra_attr = boot_cpu_has(X86_FEATURE_RTM) ?
6146 adl_hybrid_extra_attr_rtm : adl_hybrid_extra_attr;
6147
6148 /* Initialize big core specific PerfMon capabilities.*/
6149 set_bit(X86_HYBRID_PMU_CORE_IDX, &x86_pmu.hybrid_pmu_bitmap);
6150 pmu = &x86_pmu.hybrid_pmu[X86_HYBRID_PMU_CORE_IDX];
6151 pmu->name = "cpu_core";
6152 pmu->cpu_type = X86_HYBRID_CORE_CPU_TYPE;
6153 pmu->num_counters = x86_pmu.num_counters + 2;
6154 pmu->num_counters_fixed = x86_pmu.num_counters_fixed + 1;
6155 pmu->max_pebs_events = min_t(unsigned, MAX_PEBS_EVENTS, pmu->num_counters);
6156 pmu->unconstrained = (struct event_constraint)
6157 __EVENT_CONSTRAINT(0, (1ULL << pmu->num_counters) - 1,
6158 0, pmu->num_counters, 0, 0);
6159 pmu->intel_cap.capabilities = x86_pmu.intel_cap.capabilities;
6160 pmu->intel_cap.perf_metrics = 1;
6161 pmu->intel_cap.pebs_output_pt_available = 0;
6162
6163 memcpy(pmu->hw_cache_event_ids, spr_hw_cache_event_ids, sizeof(pmu->hw_cache_event_ids));
6164 memcpy(pmu->hw_cache_extra_regs, spr_hw_cache_extra_regs, sizeof(pmu->hw_cache_extra_regs));
6165 pmu->event_constraints = intel_spr_event_constraints;
6166 pmu->pebs_constraints = intel_spr_pebs_event_constraints;
6167 pmu->extra_regs = intel_spr_extra_regs;
6168
6169 /* Initialize Atom core specific PerfMon capabilities.*/
6170 set_bit(X86_HYBRID_PMU_ATOM_IDX, &x86_pmu.hybrid_pmu_bitmap);
6171 pmu = &x86_pmu.hybrid_pmu[X86_HYBRID_PMU_ATOM_IDX];
6172 pmu->name = "cpu_atom";
6173 pmu->cpu_type = X86_HYBRID_ATOM_CPU_TYPE;
6174 pmu->num_counters = x86_pmu.num_counters;
6175 pmu->num_counters_fixed = x86_pmu.num_counters_fixed;
6176 pmu->max_pebs_events = x86_pmu.max_pebs_events;
6177 pmu->unconstrained = (struct event_constraint)
6178 __EVENT_CONSTRAINT(0, (1ULL << pmu->num_counters) - 1,
6179 0, pmu->num_counters, 0, 0);
6180 pmu->intel_cap.capabilities = x86_pmu.intel_cap.capabilities;
6181 pmu->intel_cap.perf_metrics = 0;
6182 pmu->intel_cap.pebs_output_pt_available = 1;
6183
6184 memcpy(pmu->hw_cache_event_ids, glp_hw_cache_event_ids, sizeof(pmu->hw_cache_event_ids));
6185 memcpy(pmu->hw_cache_extra_regs, tnt_hw_cache_extra_regs, sizeof(pmu->hw_cache_extra_regs));
6186 pmu->hw_cache_event_ids[C(ITLB)][C(OP_READ)][C(RESULT_ACCESS)] = -1;
6187 pmu->event_constraints = intel_slm_event_constraints;
6188 pmu->pebs_constraints = intel_grt_pebs_event_constraints;
6189 pmu->extra_regs = intel_grt_extra_regs;
6190 pr_cont("Alderlake Hybrid events, ");
6191 name = "alderlake_hybrid";
6192 break;
6193
6194 default:
6195 switch (x86_pmu.version) {
6196 case 1:
6197 x86_pmu.event_constraints = intel_v1_event_constraints;
6198 pr_cont("generic architected perfmon v1, ");
6199 name = "generic_arch_v1";
6200 break;
6201 default:
6202 /*
6203 * default constraints for v2 and up
6204 */
6205 x86_pmu.event_constraints = intel_gen_event_constraints;
6206 pr_cont("generic architected perfmon, ");
6207 name = "generic_arch_v2+";
6208 break;
6209 }
6210 }
6211
6212 snprintf(pmu_name_str, sizeof(pmu_name_str), "%s", name);
6213
6214 if (!IS_X86_HYBRID) {
6215 group_events_td.attrs = td_attr;
6216 group_events_mem.attrs = mem_attr;
6217 group_events_tsx.attrs = tsx_attr;
6218 group_format_extra.attrs = extra_attr;
6219 group_format_extra_skl.attrs = extra_skl_attr;
6220
6221 x86_pmu.attr_update = attr_update;
6222 } else {
6223 hybrid_group_events_td.attrs = td_attr;
6224 hybrid_group_events_mem.attrs = mem_attr;
6225 hybrid_group_events_tsx.attrs = tsx_attr;
6226 hybrid_group_format_extra.attrs = extra_attr;
6227
6228 x86_pmu.attr_update = hybrid_attr_update;
6229 }
6230
6231 intel_pmu_check_num_counters(&x86_pmu.num_counters,
6232 &x86_pmu.num_counters_fixed,
6233 &x86_pmu.intel_ctrl,
6234 (u64)fixed_mask);
6235
6236 /* AnyThread may be deprecated on arch perfmon v5 or later */
6237 if (x86_pmu.intel_cap.anythread_deprecated)
6238 x86_pmu.format_attrs = intel_arch_formats_attr;
6239
6240 intel_pmu_check_event_constraints(x86_pmu.event_constraints,
6241 x86_pmu.num_counters,
6242 x86_pmu.num_counters_fixed,
6243 x86_pmu.intel_ctrl);
6244 /*
6245 * Access LBR MSR may cause #GP under certain circumstances.
6246 * E.g. KVM doesn't support LBR MSR
6247 * Check all LBT MSR here.
6248 * Disable LBR access if any LBR MSRs can not be accessed.
6249 */
6250 if (x86_pmu.lbr_nr && !check_msr(x86_pmu.lbr_tos, 0x3UL))
6251 x86_pmu.lbr_nr = 0;
6252 for (i = 0; i < x86_pmu.lbr_nr; i++) {
6253 if (!(check_msr(x86_pmu.lbr_from + i, 0xffffUL) &&
6254 check_msr(x86_pmu.lbr_to + i, 0xffffUL)))
6255 x86_pmu.lbr_nr = 0;
6256 }
6257
6258 if (x86_pmu.lbr_nr)
6259 pr_cont("%d-deep LBR, ", x86_pmu.lbr_nr);
6260
6261 intel_pmu_check_extra_regs(x86_pmu.extra_regs);
6262
6263 /* Support full width counters using alternative MSR range */
6264 if (x86_pmu.intel_cap.full_width_write) {
6265 x86_pmu.max_period = x86_pmu.cntval_mask >> 1;
6266 x86_pmu.perfctr = MSR_IA32_PMC0;
6267 pr_cont("full-width counters, ");
6268 }
6269
6270 if (!IS_X86_HYBRID && x86_pmu.intel_cap.perf_metrics)
6271 x86_pmu.intel_ctrl |= 1ULL << GLOBAL_CTRL_EN_PERF_METRICS;
6272
6273 return 0;
6274 }
6275
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36963 bytes --]
next prev parent reply other threads:[~2021-02-09 4:24 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-08 15:24 [PATCH 00/49] Add Alder Lake support for perf kan.liang
2021-02-08 15:24 ` [PATCH 01/49] x86/cpufeatures: Enumerate Intel Hybrid Technology feature bit kan.liang
2021-02-08 15:24 ` [PATCH 02/49] x86/cpu: Describe hybrid CPUs in cpuinfo_x86 kan.liang
2021-02-08 17:56 ` Borislav Petkov
2021-02-08 19:04 ` Liang, Kan
2021-02-08 19:10 ` Luck, Tony
2021-02-08 19:19 ` Borislav Petkov
2021-02-08 15:25 ` [PATCH 03/49] perf/x86/intel: Hybrid PMU support for perf capabilities kan.liang
2021-02-08 15:25 ` [PATCH 04/49] perf/x86: Hybrid PMU support for intel_ctrl kan.liang
2021-02-08 15:25 ` [PATCH 05/49] perf/x86: Hybrid PMU support for counters kan.liang
2021-02-08 15:25 ` [PATCH 06/49] perf/x86: Hybrid PMU support for unconstrained kan.liang
2021-02-08 15:25 ` [PATCH 07/49] perf/x86: Hybrid PMU support for hardware cache event kan.liang
2021-02-08 15:25 ` [PATCH 08/49] perf/x86: Hybrid PMU support for event constraints kan.liang
2021-02-08 15:25 ` [PATCH 09/49] perf/x86: Hybrid PMU support for extra_regs kan.liang
2021-02-08 15:25 ` [PATCH 10/49] perf/x86/intel: Factor out intel_pmu_check_num_counters kan.liang
2021-02-08 15:25 ` [PATCH 11/49] perf/x86/intel: Factor out intel_pmu_check_event_constraints kan.liang
2021-02-08 15:25 ` [PATCH 12/49] perf/x86/intel: Factor out intel_pmu_check_extra_regs kan.liang
2021-02-08 15:25 ` [PATCH 13/49] perf/x86: Expose check_hw_exists kan.liang
2021-02-08 15:25 ` [PATCH 14/49] perf/x86: Remove temporary pmu assignment in event_init kan.liang
2021-02-08 15:25 ` [PATCH 15/49] perf/x86: Factor out x86_pmu_show_pmu_cap kan.liang
2021-02-08 15:25 ` [PATCH 16/49] perf/x86: Register hybrid PMUs kan.liang
2021-02-08 15:25 ` [PATCH 17/49] perf/x86: Add structures for the attributes of Hybrid PMUs kan.liang
2021-02-08 15:25 ` [PATCH 18/49] perf/x86/intel: Add attr_update for " kan.liang
2021-02-08 15:25 ` [PATCH 19/49] perf/x86: Support filter_match callback kan.liang
2021-02-08 15:25 ` [PATCH 20/49] perf/x86/intel: Add Alder Lake Hybrid support kan.liang
2021-02-09 2:28 ` kernel test robot
2021-02-09 4:24 ` kernel test robot [this message]
2021-02-08 15:25 ` [PATCH 21/49] perf: Introduce PERF_TYPE_HARDWARE_PMU and PERF_TYPE_HW_CACHE_PMU kan.liang
2021-02-08 15:25 ` [PATCH 22/49] perf/x86/intel/uncore: Add Alder Lake support kan.liang
2021-02-09 4:18 ` kernel test robot
2021-02-09 4:18 ` kernel test robot
2021-02-08 15:25 ` [PATCH 23/49] perf/x86/msr: Add Alder Lake CPU support kan.liang
2021-02-09 3:58 ` kernel test robot
2021-02-09 3:58 ` kernel test robot
2021-02-09 13:44 ` Liang, Kan
2021-02-09 13:44 ` Liang, Kan
2021-02-09 5:15 ` kernel test robot
2021-02-09 5:15 ` kernel test robot
2021-02-08 15:25 ` [PATCH 24/49] perf/x86/cstate: " kan.liang
2021-02-08 15:25 ` [PATCH 25/49] perf/x86/rapl: Add support for Intel Alder Lake kan.liang
2021-02-09 5:16 ` kernel test robot
2021-02-09 5:16 ` kernel test robot
2021-02-08 15:25 ` [PATCH 26/49] perf jevents: Support unit value "cpu_core" and "cpu_atom" kan.liang
2021-02-08 15:25 ` [PATCH 27/49] perf util: Save pmu name to struct perf_pmu_alias kan.liang
2021-02-08 18:57 ` Arnaldo Carvalho de Melo
2021-02-09 0:17 ` Jin, Yao
2021-02-08 15:25 ` [PATCH 28/49] perf pmu: Save detected hybrid pmus to a global pmu list kan.liang
2021-02-08 18:55 ` Arnaldo Carvalho de Melo
2021-02-09 0:05 ` Jin, Yao
2021-02-08 15:25 ` [PATCH 29/49] perf pmu: Add hybrid helper functions kan.liang
2021-02-08 15:25 ` [PATCH 30/49] perf list: Support --cputype option to list hybrid pmu events kan.liang
2021-02-08 15:25 ` [PATCH 31/49] perf stat: Hybrid evsel uses its own cpus kan.liang
2021-02-08 15:25 ` [PATCH 32/49] perf header: Support HYBRID_TOPOLOGY feature kan.liang
2021-02-08 19:05 ` Arnaldo Carvalho de Melo
2021-02-09 0:26 ` Jin, Yao
2021-02-08 15:25 ` [PATCH 33/49] perf header: Support hybrid CPU_PMU_CAPS kan.liang
2021-02-08 15:25 ` [PATCH 34/49] tools headers uapi: Update tools's copy of linux/perf_event.h kan.liang
2021-02-08 15:25 ` [PATCH 35/49] perf parse-events: Create two hybrid hardware events kan.liang
2021-02-08 18:59 ` Arnaldo Carvalho de Melo
2021-02-09 0:23 ` Jin, Yao
2021-02-08 15:25 ` [PATCH 36/49] perf parse-events: Create two hybrid cache events kan.liang
2021-02-08 15:25 ` [PATCH 37/49] perf parse-events: Support hardware events inside PMU kan.liang
2021-02-08 15:25 ` [PATCH 38/49] perf list: Display pmu prefix for partially supported hybrid cache events kan.liang
2021-02-08 15:25 ` [PATCH 39/49] perf parse-events: Support hybrid raw events kan.liang
2021-02-08 19:07 ` Arnaldo Carvalho de Melo
2021-02-09 0:28 ` Jin, Yao
2021-02-08 15:25 ` [PATCH 40/49] perf stat: Support --cputype option for hybrid events kan.liang
2021-02-08 15:25 ` [PATCH 41/49] perf stat: Support metrics with " kan.liang
2021-02-08 15:25 ` [PATCH 42/49] perf evlist: Create two hybrid 'cycles' events by default kan.liang
2021-02-08 15:25 ` [PATCH 43/49] perf stat: Add default hybrid events kan.liang
2021-02-08 19:10 ` Arnaldo Carvalho de Melo
2021-02-09 0:36 ` Jin, Yao
2021-02-08 15:25 ` [PATCH 44/49] perf stat: Uniquify hybrid event name kan.liang
2021-02-08 15:25 ` [PATCH 45/49] perf stat: Merge event counts from all hybrid PMUs kan.liang
2021-02-08 15:25 ` [PATCH 46/49] perf stat: Filter out unmatched aggregation for hybrid event kan.liang
2021-02-08 19:16 ` Arnaldo Carvalho de Melo
2021-02-09 0:53 ` Jin, Yao
2021-02-08 15:25 ` [PATCH 47/49] perf evlist: Warn as events from different hybrid PMUs in a group kan.liang
2021-02-08 15:25 ` [PATCH 48/49] perf Documentation: Document intel-hybrid support kan.liang
2021-02-08 15:25 ` [PATCH 49/49] perf evsel: Adjust hybrid event and global event mixed group kan.liang
2021-02-08 19:12 ` Arnaldo Carvalho de Melo
2021-02-09 0:47 ` Jin, Yao
2021-02-11 11:40 ` [PATCH 00/49] Add Alder Lake support for perf Jiri Olsa
2021-02-11 16:22 ` Liang, Kan
2021-02-18 0:07 ` Jin, Yao
2021-03-04 15:50 ` Liang, Kan
2021-03-04 17:50 ` Peter Zijlstra
2021-03-05 11:14 ` Peter Zijlstra
2021-03-05 13:36 ` Liang, Kan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202102091224.blTrzSBS-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.