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 branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux

Pull s390 fixes from Martin Schwidefsky:
"Four bug fixes"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
s390/dasd: fix wrongly assigned configuration data
s390: fix preemption race in disable_sacf_uaccess
s390/sclp: disable FORTIFY_SOURCE for early sclp code
s390/pci: handle insufficient resources during dma tlb flush

+35 -3
+1 -1
arch/s390/lib/uaccess.c
··· 89 89 90 90 void disable_sacf_uaccess(mm_segment_t old_fs) 91 91 { 92 + current->thread.mm_segment = old_fs; 92 93 if (old_fs == USER_DS && test_facility(27)) { 93 94 __ctl_load(S390_lowcore.user_asce, 1, 1); 94 95 clear_cpu_flag(CIF_ASCE_PRIMARY); 95 96 } 96 - current->thread.mm_segment = old_fs; 97 97 } 98 98 EXPORT_SYMBOL(disable_sacf_uaccess); 99 99
+19 -2
arch/s390/pci/pci_dma.c
··· 181 181 static int __dma_purge_tlb(struct zpci_dev *zdev, dma_addr_t dma_addr, 182 182 size_t size, int flags) 183 183 { 184 + unsigned long irqflags; 185 + int ret; 186 + 184 187 /* 185 188 * With zdev->tlb_refresh == 0, rpcit is not required to establish new 186 189 * translations when previously invalid translation-table entries are ··· 199 196 return 0; 200 197 } 201 198 202 - return zpci_refresh_trans((u64) zdev->fh << 32, dma_addr, 203 - PAGE_ALIGN(size)); 199 + ret = zpci_refresh_trans((u64) zdev->fh << 32, dma_addr, 200 + PAGE_ALIGN(size)); 201 + if (ret == -ENOMEM && !s390_iommu_strict) { 202 + /* enable the hypervisor to free some resources */ 203 + if (zpci_refresh_global(zdev)) 204 + goto out; 205 + 206 + spin_lock_irqsave(&zdev->iommu_bitmap_lock, irqflags); 207 + bitmap_andnot(zdev->iommu_bitmap, zdev->iommu_bitmap, 208 + zdev->lazy_bitmap, zdev->iommu_pages); 209 + bitmap_zero(zdev->lazy_bitmap, zdev->iommu_pages); 210 + spin_unlock_irqrestore(&zdev->iommu_bitmap_lock, irqflags); 211 + ret = 0; 212 + } 213 + out: 214 + return ret; 204 215 } 205 216 206 217 static int dma_update_trans(struct zpci_dev *zdev, unsigned long pa,
+3
arch/s390/pci/pci_insn.c
··· 89 89 if (cc) 90 90 zpci_err_insn(cc, status, addr, range); 91 91 92 + if (cc == 1 && (status == 4 || status == 16)) 93 + return -ENOMEM; 94 + 92 95 return (cc) ? -EIO : 0; 93 96 } 94 97
+10
drivers/s390/block/dasd_3990_erp.c
··· 2803 2803 erp = dasd_3990_erp_handle_match_erp(cqr, erp); 2804 2804 } 2805 2805 2806 + 2807 + /* 2808 + * For path verification work we need to stick with the path that was 2809 + * originally chosen so that the per path configuration data is 2810 + * assigned correctly. 2811 + */ 2812 + if (test_bit(DASD_CQR_VERIFY_PATH, &erp->flags) && cqr->lpm) { 2813 + erp->lpm = cqr->lpm; 2814 + } 2815 + 2806 2816 if (device->features & DASD_FEATURE_ERPLOG) { 2807 2817 /* print current erp_chain */ 2808 2818 dev_err(&device->cdev->dev,
+2
drivers/s390/char/Makefile
··· 17 17 CFLAGS_sclp_early_core.o += -march=z900 18 18 endif 19 19 20 + CFLAGS_sclp_early_core.o += -D__NO_FORTIFY 21 + 20 22 obj-y += ctrlchar.o keyboard.o defkeymap.o sclp.o sclp_rw.o sclp_quiesce.o \ 21 23 sclp_cmd.o sclp_config.o sclp_cpi_sys.o sclp_ocf.o sclp_ctl.o \ 22 24 sclp_early.o sclp_early_core.o