Skip to contentSkip to conversation

s390 patches for 4.7-rc5

GIT PULL Martin Schwidefsky 1 participant 1 message Jun 20, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi Linus,

please pull from the 'for-linus' branch of

git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux.git for-linus

to receive the following updates:

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

Christian Borntraeger (1):
KVM: s390/mm: Fix CMMA reset during reboot

Hendrik Brueckner (1):
s390/cpum_cf: use perf software context for hardware counters

 arch/s390/kernel/perf_cpum_cf.c | 8 ++------
 arch/s390/mm/pgtable.c          | 2 +-
 2 files changed, 3 insertions(+), 7 deletions(-)
arch/s390/kernel/perf_cpum_cf.c +2 -6
index 59215c5..7ec63b1 100644
@@ -649,6 +649,8 @@ static int cpumf_pmu_commit_txn(struct pmu *pmu)
 
 /* Performance monitoring unit for s390x */
 static struct pmu cpumf_pmu = {
+	.task_ctx_nr  = perf_sw_context,
+	.capabilities = PERF_PMU_CAP_NO_INTERRUPT,
 	.pmu_enable   = cpumf_pmu_enable,
 	.pmu_disable  = cpumf_pmu_disable,
 	.event_init   = cpumf_pmu_event_init,
@@ -708,12 +710,6 @@ static int __init cpumf_pmu_init(void)
 		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();
 	rc = perf_pmu_register(&cpumf_pmu, "cpum_cf", PERF_TYPE_RAW);
 	if (rc) {
arch/s390/mm/pgtable.c +1 -1
index 4324b87..9f0ce0e 100644
@@ -437,7 +437,7 @@ void ptep_zap_unused(struct mm_struct *mm, unsigned long addr,
 	pgste = pgste_get_lock(ptep);
 	pgstev = pgste_val(pgste);
 	pte = *ptep;
-	if (pte_swap(pte) &&
+	if (!reset && pte_swap(pte) &&
 	    ((pgstev & _PGSTE_GPS_USAGE_MASK) == _PGSTE_GPS_USAGE_UNUSED ||
 	     (pgstev & _PGSTE_GPS_ZERO))) {
 		ptep_zap_swap_entry(mm, pte_to_swp_entry(pte));