diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-25 11:44:27 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-25 11:44:27 -0400 |
commit | eeb7c41d9d7c0902accb1d481fe78d84d30c69cc (patch) | |
tree | 208fe8d2afd8fa70abfe5a815f5f5cb357856bad | |
parent | 520eccdfe187591a51ea9ab4c1a024ae4d0f68d9 (diff) | |
parent | 97ca7bfc19605bc08e9183441b8b8545e84032d6 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fixes from Martin Schwidefsky:
"Three bug fixes"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
s390/mm: set change and reference bit on lazy key enablement
s390: chp: handle CRW_ERC_INIT for channel-path status change
s390/perf: fix problem state detection
-rw-r--r-- | arch/s390/kernel/perf_cpum_sf.c | 2 | ||||
-rw-r--r-- | arch/s390/mm/pgtable.c | 6 | ||||
-rw-r--r-- | drivers/s390/cio/chp.c | 1 |
3 files changed, 5 insertions, 4 deletions
diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c index 0c82f7903fc7..c1bf75ffb875 100644 --- a/arch/s390/kernel/perf_cpum_sf.c +++ b/arch/s390/kernel/perf_cpum_sf.c | |||
@@ -998,7 +998,7 @@ static int perf_push_sample(struct perf_event *event, struct sf_raw_sample *sfr) | |||
998 | psw_bits(regs.psw).ia = sfr->basic.ia; | 998 | psw_bits(regs.psw).ia = sfr->basic.ia; |
999 | psw_bits(regs.psw).dat = sfr->basic.T; | 999 | psw_bits(regs.psw).dat = sfr->basic.T; |
1000 | psw_bits(regs.psw).wait = sfr->basic.W; | 1000 | psw_bits(regs.psw).wait = sfr->basic.W; |
1001 | psw_bits(regs.psw).per = sfr->basic.P; | 1001 | psw_bits(regs.psw).pstate = sfr->basic.P; |
1002 | psw_bits(regs.psw).as = sfr->basic.AS; | 1002 | psw_bits(regs.psw).as = sfr->basic.AS; |
1003 | 1003 | ||
1004 | /* | 1004 | /* |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index d4d409ba206b..4a1f7366b17a 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
@@ -591,11 +591,11 @@ void ptep_zap_key(struct mm_struct *mm, unsigned long addr, pte_t *ptep) | |||
591 | unsigned long ptev; | 591 | unsigned long ptev; |
592 | pgste_t pgste; | 592 | pgste_t pgste; |
593 | 593 | ||
594 | /* Clear storage key */ | 594 | /* Clear storage key ACC and F, but set R/C */ |
595 | preempt_disable(); | 595 | preempt_disable(); |
596 | pgste = pgste_get_lock(ptep); | 596 | pgste = pgste_get_lock(ptep); |
597 | pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT | | 597 | pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT); |
598 | PGSTE_GR_BIT | PGSTE_GC_BIT); | 598 | pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT; |
599 | ptev = pte_val(*ptep); | 599 | ptev = pte_val(*ptep); |
600 | if (!(ptev & _PAGE_INVALID) && (ptev & _PAGE_WRITE)) | 600 | if (!(ptev & _PAGE_INVALID) && (ptev & _PAGE_WRITE)) |
601 | page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 1); | 601 | page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 1); |
diff --git a/drivers/s390/cio/chp.c b/drivers/s390/cio/chp.c index 7e0d4f724dda..432fc40990bd 100644 --- a/drivers/s390/cio/chp.c +++ b/drivers/s390/cio/chp.c | |||
@@ -559,6 +559,7 @@ static void chp_process_crw(struct crw *crw0, struct crw *crw1, | |||
559 | chpid.id = crw0->rsid; | 559 | chpid.id = crw0->rsid; |
560 | switch (crw0->erc) { | 560 | switch (crw0->erc) { |
561 | case CRW_ERC_IPARM: /* Path has come. */ | 561 | case CRW_ERC_IPARM: /* Path has come. */ |
562 | case CRW_ERC_INIT: | ||
562 | if (!chp_is_registered(chpid)) | 563 | if (!chp_is_registered(chpid)) |
563 | chp_new(chpid); | 564 | chp_new(chpid); |
564 | chsc_chp_online(chpid); | 565 | chsc_chp_online(chpid); |