mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-21 23:16:50 +08:00
Merge tag 's390-7.0-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fixes from Vasily Gorbik: - Revert IRQ entry/exit path optimization that incorrectly cleared some PSW bits before irqentry_exit(), causing boot failures with linux-next and HRTIMER_REARM_DEFERRED (which only uncovered the problem) - Fix zcrypt code to show CCA card serial numbers even when the default crypto domain is offline by selecting any domain available, preventing empty sysfs entries * tag 's390-7.0-5' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/zcrypt: Enable AUTOSEL_DOM for CCA serialnr sysfs attribute s390: Revert "s390/irq/idle: Remove psw bits early"
This commit is contained in:
@@ -147,10 +147,8 @@ void noinstr do_io_irq(struct pt_regs *regs)
|
||||
bool from_idle;
|
||||
|
||||
from_idle = test_and_clear_cpu_flag(CIF_ENABLED_WAIT);
|
||||
if (from_idle) {
|
||||
if (from_idle)
|
||||
update_timer_idle();
|
||||
regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT);
|
||||
}
|
||||
|
||||
irq_enter_rcu();
|
||||
|
||||
@@ -176,6 +174,9 @@ void noinstr do_io_irq(struct pt_regs *regs)
|
||||
|
||||
set_irq_regs(old_regs);
|
||||
irqentry_exit(regs, state);
|
||||
|
||||
if (from_idle)
|
||||
regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT);
|
||||
}
|
||||
|
||||
void noinstr do_ext_irq(struct pt_regs *regs)
|
||||
@@ -185,10 +186,8 @@ void noinstr do_ext_irq(struct pt_regs *regs)
|
||||
bool from_idle;
|
||||
|
||||
from_idle = test_and_clear_cpu_flag(CIF_ENABLED_WAIT);
|
||||
if (from_idle) {
|
||||
if (from_idle)
|
||||
update_timer_idle();
|
||||
regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT);
|
||||
}
|
||||
|
||||
irq_enter_rcu();
|
||||
|
||||
@@ -210,6 +209,9 @@ void noinstr do_ext_irq(struct pt_regs *regs)
|
||||
irq_exit_rcu();
|
||||
set_irq_regs(old_regs);
|
||||
irqentry_exit(regs, state);
|
||||
|
||||
if (from_idle)
|
||||
regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT);
|
||||
}
|
||||
|
||||
static void show_msi_interrupt(struct seq_file *p, int irq)
|
||||
|
||||
@@ -1639,11 +1639,13 @@ int cca_get_info(u16 cardnr, u16 domain, struct cca_info *ci, u32 xflags)
|
||||
|
||||
memset(ci, 0, sizeof(*ci));
|
||||
|
||||
/* get first info from zcrypt device driver about this apqn */
|
||||
rc = zcrypt_device_status_ext(cardnr, domain, &devstat);
|
||||
if (rc)
|
||||
return rc;
|
||||
ci->hwtype = devstat.hwtype;
|
||||
/* if specific domain given, fetch status and hw info for this apqn */
|
||||
if (domain != AUTOSEL_DOM) {
|
||||
rc = zcrypt_device_status_ext(cardnr, domain, &devstat);
|
||||
if (rc)
|
||||
return rc;
|
||||
ci->hwtype = devstat.hwtype;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prep memory for rule array and var array use.
|
||||
|
||||
@@ -85,8 +85,7 @@ static ssize_t cca_serialnr_show(struct device *dev,
|
||||
|
||||
memset(&ci, 0, sizeof(ci));
|
||||
|
||||
if (ap_domain_index >= 0)
|
||||
cca_get_info(ac->id, ap_domain_index, &ci, 0);
|
||||
cca_get_info(ac->id, AUTOSEL_DOM, &ci, 0);
|
||||
|
||||
return sysfs_emit(buf, "%s\n", ci.serial);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user