Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/hwpmc/hwpmc_uncore.c
Show First 20 Lines • Show All 524 Lines • ▼ Show 20 Lines | ucp_allocate_pmc(int cpu, int ri, struct pmc *pm, | ||||
uint32_t caps; | uint32_t caps; | ||||
const struct pmc_md_ucp_op_pmcallocate *ucp; | const struct pmc_md_ucp_op_pmcallocate *ucp; | ||||
KASSERT(cpu >= 0 && cpu < pmc_cpu_max(), | KASSERT(cpu >= 0 && cpu < pmc_cpu_max(), | ||||
("[uncore,%d] illegal CPU %d", __LINE__, cpu)); | ("[uncore,%d] illegal CPU %d", __LINE__, cpu)); | ||||
KASSERT(ri >= 0 && ri < uncore_ucp_npmc, | KASSERT(ri >= 0 && ri < uncore_ucp_npmc, | ||||
("[uncore,%d] illegal row-index value %d", __LINE__, ri)); | ("[uncore,%d] illegal row-index value %d", __LINE__, ri)); | ||||
if (a->pm_class != PMC_CLASS_UCP) | |||||
return (EINVAL); | |||||
/* check requested capabilities */ | /* check requested capabilities */ | ||||
caps = a->pm_caps; | caps = a->pm_caps; | ||||
if ((UCP_PMC_CAPS & caps) != caps) | if ((UCP_PMC_CAPS & caps) != caps) | ||||
return (EPERM); | return (EPERM); | ||||
ucp = &a->pm_md.pm_ucp; | ucp = &a->pm_md.pm_ucp; | ||||
ev = UCP_EVSEL(ucp->pm_ucp_config); | ev = UCP_EVSEL(ucp->pm_ucp_config); | ||||
switch (uncore_cputype) { | switch (uncore_cputype) { | ||||
▲ Show 20 Lines • Show All 319 Lines • Show Last 20 Lines |