s390 update with bug fixes for 5.0-rc6
- Fix specification exception on z196 during ap probe - A fix for suspend-to-disk, the VMAP stack patch broke the swsusp_arch_suspend function - The EMC CKD ioctl of the dasd driver needs an additional size check for user space data - Revert an incorrect patch for the PCI base code that removed a bit lock that turned out to be required after all -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABCAAGBQJcYRUOAAoJEDjwexyKj9rgsj0H/0podjAiHUMw2F6ccgN6ZULp g1zqUbRS4AoYX6v/sqMdCczbCSKwQdRR16juLaZHz1tfTP02KkR9KxVLg1/EmNNT 1NqeGVHrStR5MLFES+DNsxmJEVhye82aeT6Mj4NFvsYJvGr68ha90hMzB9ljc6jf 1BFTWgNOea+iQSZix0D9ALbmsoj4cFuSXG+U4N0D4jf+ZPCYLFXUsvsojtMdallS WIdKTEj2MPMvmC+WpUY91ClkmXf27dmkoz7v/sRMNyW7n62sfmlA+34gRnAO4HVB 1bbIxJ1ss2ZyYtFL5mYI9ikYKsBL+WStmxl5HkhTXl7cdAtwgSbid9gcXqabi7A= =k0u1 -----END PGP SIGNATURE----- Merge tag 's390-5.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux Pull s390 bug fixes from Martin Schwidefsky: - Fix specification exception on z196 during ap probe - A fix for suspend-to-disk, the VMAP stack patch broke the swsusp_arch_suspend function - The EMC CKD ioctl of the dasd driver needs an additional size check for user space data - Revert an incorrect patch for the PCI base code that removed a bit lock that turned out to be required after all * tag 's390-5.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: Revert "s390/pci: remove bit_lock usage in interrupt handler" s390/zcrypt: fix specification exception on z196 during ap probe s390/dasd: fix using offset into zero size array error s390/suspend: fix stack setup in swsusp_arch_suspend
This commit is contained in:
commit
fb7453e61a
|
@ -30,10 +30,10 @@
|
||||||
.section .text
|
.section .text
|
||||||
ENTRY(swsusp_arch_suspend)
|
ENTRY(swsusp_arch_suspend)
|
||||||
lg %r1,__LC_NODAT_STACK
|
lg %r1,__LC_NODAT_STACK
|
||||||
aghi %r1,-STACK_FRAME_OVERHEAD
|
|
||||||
stmg %r6,%r15,__SF_GPRS(%r1)
|
stmg %r6,%r15,__SF_GPRS(%r1)
|
||||||
|
aghi %r1,-STACK_FRAME_OVERHEAD
|
||||||
stg %r15,__SF_BACKCHAIN(%r1)
|
stg %r15,__SF_BACKCHAIN(%r1)
|
||||||
lgr %r1,%r15
|
lgr %r15,%r1
|
||||||
|
|
||||||
/* Store FPU registers */
|
/* Store FPU registers */
|
||||||
brasl %r14,save_fpu_regs
|
brasl %r14,save_fpu_regs
|
||||||
|
|
|
@ -382,7 +382,9 @@ static void zpci_irq_handler(struct airq_struct *airq)
|
||||||
if (ai == -1UL)
|
if (ai == -1UL)
|
||||||
break;
|
break;
|
||||||
inc_irq_stat(IRQIO_MSI);
|
inc_irq_stat(IRQIO_MSI);
|
||||||
|
airq_iv_lock(aibv, ai);
|
||||||
generic_handle_irq(airq_iv_get_data(aibv, ai));
|
generic_handle_irq(airq_iv_get_data(aibv, ai));
|
||||||
|
airq_iv_unlock(aibv, ai);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -408,7 +410,7 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
|
||||||
zdev->aisb = aisb;
|
zdev->aisb = aisb;
|
||||||
|
|
||||||
/* Create adapter interrupt vector */
|
/* Create adapter interrupt vector */
|
||||||
zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA);
|
zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK);
|
||||||
if (!zdev->aibv)
|
if (!zdev->aibv)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -4469,6 +4469,14 @@ static int dasd_symm_io(struct dasd_device *device, void __user *argp)
|
||||||
usrparm.psf_data &= 0x7fffffffULL;
|
usrparm.psf_data &= 0x7fffffffULL;
|
||||||
usrparm.rssd_result &= 0x7fffffffULL;
|
usrparm.rssd_result &= 0x7fffffffULL;
|
||||||
}
|
}
|
||||||
|
/* at least 2 bytes are accessed and should be allocated */
|
||||||
|
if (usrparm.psf_data_len < 2) {
|
||||||
|
DBF_DEV_EVENT(DBF_WARNING, device,
|
||||||
|
"Symmetrix ioctl invalid data length %d",
|
||||||
|
usrparm.psf_data_len);
|
||||||
|
rc = -EINVAL;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
/* alloc I/O data area */
|
/* alloc I/O data area */
|
||||||
psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA);
|
psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA);
|
||||||
rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA);
|
rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA);
|
||||||
|
|
|
@ -248,7 +248,8 @@ static inline int ap_test_config(unsigned int *field, unsigned int nr)
|
||||||
static inline int ap_test_config_card_id(unsigned int id)
|
static inline int ap_test_config_card_id(unsigned int id)
|
||||||
{
|
{
|
||||||
if (!ap_configuration) /* QCI not supported */
|
if (!ap_configuration) /* QCI not supported */
|
||||||
return 1;
|
/* only ids 0...3F may be probed */
|
||||||
|
return id < 0x40 ? 1 : 0;
|
||||||
return ap_test_config(ap_configuration->apm, id);
|
return ap_test_config(ap_configuration->apm, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue