Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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"

+16 -13
+8 -6
arch/s390/kernel/irq.c
··· 147 147 bool from_idle; 148 148 149 149 from_idle = test_and_clear_cpu_flag(CIF_ENABLED_WAIT); 150 - if (from_idle) { 150 + if (from_idle) 151 151 update_timer_idle(); 152 - regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT); 153 - } 154 152 155 153 irq_enter_rcu(); 156 154 ··· 174 176 175 177 set_irq_regs(old_regs); 176 178 irqentry_exit(regs, state); 179 + 180 + if (from_idle) 181 + regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT); 177 182 } 178 183 179 184 void noinstr do_ext_irq(struct pt_regs *regs) ··· 186 185 bool from_idle; 187 186 188 187 from_idle = test_and_clear_cpu_flag(CIF_ENABLED_WAIT); 189 - if (from_idle) { 188 + if (from_idle) 190 189 update_timer_idle(); 191 - regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT); 192 - } 193 190 194 191 irq_enter_rcu(); 195 192 ··· 209 210 irq_exit_rcu(); 210 211 set_irq_regs(old_regs); 211 212 irqentry_exit(regs, state); 213 + 214 + if (from_idle) 215 + regs->psw.mask &= ~(PSW_MASK_EXT | PSW_MASK_IO | PSW_MASK_WAIT); 212 216 } 213 217 214 218 static void show_msi_interrupt(struct seq_file *p, int irq)
+7 -5
drivers/s390/crypto/zcrypt_ccamisc.c
··· 1639 1639 1640 1640 memset(ci, 0, sizeof(*ci)); 1641 1641 1642 - /* get first info from zcrypt device driver about this apqn */ 1643 - rc = zcrypt_device_status_ext(cardnr, domain, &devstat); 1644 - if (rc) 1645 - return rc; 1646 - ci->hwtype = devstat.hwtype; 1642 + /* if specific domain given, fetch status and hw info for this apqn */ 1643 + if (domain != AUTOSEL_DOM) { 1644 + rc = zcrypt_device_status_ext(cardnr, domain, &devstat); 1645 + if (rc) 1646 + return rc; 1647 + ci->hwtype = devstat.hwtype; 1648 + } 1647 1649 1648 1650 /* 1649 1651 * Prep memory for rule array and var array use.
+1 -2
drivers/s390/crypto/zcrypt_cex4.c
··· 85 85 86 86 memset(&ci, 0, sizeof(ci)); 87 87 88 - if (ap_domain_index >= 0) 89 - cca_get_info(ac->id, ap_domain_index, &ci, 0); 88 + cca_get_info(ac->id, AUTOSEL_DOM, &ci, 0); 90 89 91 90 return sysfs_emit(buf, "%s\n", ci.serial); 92 91 }