Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fixes from Martin Schwidefsky: "Two more bugs fixes for 4.7: - a KVM regression introduced with the pgtable.c code split - a perf issue with two hardware PMUs using a shared event context" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/cpum_cf: use perf software context for hardware counters KVM: s390/mm: Fix CMMA reset during reboot
This commit is contained in:
commit
97f78c7de8
@ -649,6 +649,8 @@ static int cpumf_pmu_commit_txn(struct pmu *pmu)
|
|||||||
|
|
||||||
/* Performance monitoring unit for s390x */
|
/* Performance monitoring unit for s390x */
|
||||||
static struct pmu cpumf_pmu = {
|
static struct pmu cpumf_pmu = {
|
||||||
|
.task_ctx_nr = perf_sw_context,
|
||||||
|
.capabilities = PERF_PMU_CAP_NO_INTERRUPT,
|
||||||
.pmu_enable = cpumf_pmu_enable,
|
.pmu_enable = cpumf_pmu_enable,
|
||||||
.pmu_disable = cpumf_pmu_disable,
|
.pmu_disable = cpumf_pmu_disable,
|
||||||
.event_init = cpumf_pmu_event_init,
|
.event_init = cpumf_pmu_event_init,
|
||||||
@ -708,12 +710,6 @@ static int __init cpumf_pmu_init(void)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The CPU measurement counter facility does not have overflow
|
|
||||||
* interrupts to do sampling. Sampling must be provided by
|
|
||||||
* external means, for example, by timers.
|
|
||||||
*/
|
|
||||||
cpumf_pmu.capabilities |= PERF_PMU_CAP_NO_INTERRUPT;
|
|
||||||
|
|
||||||
cpumf_pmu.attr_groups = cpumf_cf_event_group();
|
cpumf_pmu.attr_groups = cpumf_cf_event_group();
|
||||||
rc = perf_pmu_register(&cpumf_pmu, "cpum_cf", PERF_TYPE_RAW);
|
rc = perf_pmu_register(&cpumf_pmu, "cpum_cf", PERF_TYPE_RAW);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
|
@ -437,7 +437,7 @@ void ptep_zap_unused(struct mm_struct *mm, unsigned long addr,
|
|||||||
pgste = pgste_get_lock(ptep);
|
pgste = pgste_get_lock(ptep);
|
||||||
pgstev = pgste_val(pgste);
|
pgstev = pgste_val(pgste);
|
||||||
pte = *ptep;
|
pte = *ptep;
|
||||||
if (pte_swap(pte) &&
|
if (!reset && pte_swap(pte) &&
|
||||||
((pgstev & _PGSTE_GPS_USAGE_MASK) == _PGSTE_GPS_USAGE_UNUSED ||
|
((pgstev & _PGSTE_GPS_USAGE_MASK) == _PGSTE_GPS_USAGE_UNUSED ||
|
||||||
(pgstev & _PGSTE_GPS_ZERO))) {
|
(pgstev & _PGSTE_GPS_ZERO))) {
|
||||||
ptep_zap_swap_entry(mm, pte_to_swp_entry(pte));
|
ptep_zap_swap_entry(mm, pte_to_swp_entry(pte));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user