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
This commit is contained in:
@@ -998,7 +998,7 @@ static int perf_push_sample(struct perf_event *event, struct sf_raw_sample *sfr)
|
|||||||
psw_bits(regs.psw).ia = sfr->basic.ia;
|
psw_bits(regs.psw).ia = sfr->basic.ia;
|
||||||
psw_bits(regs.psw).dat = sfr->basic.T;
|
psw_bits(regs.psw).dat = sfr->basic.T;
|
||||||
psw_bits(regs.psw).wait = sfr->basic.W;
|
psw_bits(regs.psw).wait = sfr->basic.W;
|
||||||
psw_bits(regs.psw).per = sfr->basic.P;
|
psw_bits(regs.psw).pstate = sfr->basic.P;
|
||||||
psw_bits(regs.psw).as = sfr->basic.AS;
|
psw_bits(regs.psw).as = sfr->basic.AS;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -591,11 +591,11 @@ void ptep_zap_key(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
|
|||||||
unsigned long ptev;
|
unsigned long ptev;
|
||||||
pgste_t pgste;
|
pgste_t pgste;
|
||||||
|
|
||||||
/* Clear storage key */
|
/* Clear storage key ACC and F, but set R/C */
|
||||||
preempt_disable();
|
preempt_disable();
|
||||||
pgste = pgste_get_lock(ptep);
|
pgste = pgste_get_lock(ptep);
|
||||||
pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT |
|
pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT);
|
||||||
PGSTE_GR_BIT | PGSTE_GC_BIT);
|
pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT;
|
||||||
ptev = pte_val(*ptep);
|
ptev = pte_val(*ptep);
|
||||||
if (!(ptev & _PAGE_INVALID) && (ptev & _PAGE_WRITE))
|
if (!(ptev & _PAGE_INVALID) && (ptev & _PAGE_WRITE))
|
||||||
page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 1);
|
page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 1);
|
||||||
|
@@ -559,6 +559,7 @@ static void chp_process_crw(struct crw *crw0, struct crw *crw1,
|
|||||||
chpid.id = crw0->rsid;
|
chpid.id = crw0->rsid;
|
||||||
switch (crw0->erc) {
|
switch (crw0->erc) {
|
||||||
case CRW_ERC_IPARM: /* Path has come. */
|
case CRW_ERC_IPARM: /* Path has come. */
|
||||||
|
case CRW_ERC_INIT:
|
||||||
if (!chp_is_registered(chpid))
|
if (!chp_is_registered(chpid))
|
||||||
chp_new(chpid);
|
chp_new(chpid);
|
||||||
chsc_chp_online(chpid);
|
chsc_chp_online(chpid);
|
||||||
|
Reference in New Issue
Block a user