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

Pull more s390 updates from Heiko Carstens:
"Except for the xpram device driver removal it is all about fixes and
cleanups.

- Fix topology update on cpu hotplug, so notifiers see expected
masks. This bug was uncovered with SCHED_CORE support.

- Fix stack unwinding so that the correct number of entries are
omitted like expected by common code. This fixes KCSAN selftests.

- Add kmemleak annotation to stack_alloc to avoid false positive
kmemleak warnings.

- Avoid layering violation in common I/O code and don't unregister
subchannel from child-drivers.

- Remove xpram device driver for which no real use case exists since
the kernel is 64 bit only. Also all hypervisors got required
support removed in the meantime, which means the xpram device
driver is dead code.

- Fix -ENODEV handling of clp_get_state in our PCI code.

- Enable KFENCE in debug defconfig.

- Cleanup hugetlbfs s390 specific Kconfig dependency.

- Quite a lot of trivial fixes to get rid of "W=1" warnings, and and
other simple cleanups"

* tag 's390-5.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
hugetlbfs: s390 is always 64bit
s390/ftrace: remove incorrect __va usage
s390/zcrypt: remove incorrect kernel doc indicators
scsi: zfcp: fix kernel doc comments
s390/sclp: add __nonstring annotation
s390/hmcdrv_ftp: fix kernel doc comment
s390: remove xpram device driver
s390/pci: read clp_list_pci_req only once
s390/pci: fix clp_get_state() handling of -ENODEV
s390/cio: fix kernel doc comment
s390/ctrlchar: fix kernel doc comment
s390/con3270: use proper type for tasklet function
s390/cpum_cf: move array from header to C file
s390/mm: fix kernel doc comments
s390/topology: fix topology information when calling cpu hotplug notifiers
s390/unwind: use current_frame_address() to unwind current task
s390/configs: enable CONFIG_KFENCE in debug_defconfig
s390/entry: make oklabel within CHKSTG macro local
s390: add kmemleak annotation in stack_alloc()
s390/cio: dont unregister subchannel from child-drivers

+139 -562
+1
arch/s390/Kconfig
··· 110 110 select ARCH_STACKWALK 111 111 select ARCH_SUPPORTS_ATOMIC_RMW 112 112 select ARCH_SUPPORTS_DEBUG_PAGEALLOC 113 + select ARCH_SUPPORTS_HUGETLBFS 113 114 select ARCH_SUPPORTS_NUMA_BALANCING 114 115 select ARCH_USE_BUILTIN_BSWAP 115 116 select ARCH_USE_CMPXCHG_LOCKREF
+1
arch/s390/configs/debug_defconfig
··· 804 804 CONFIG_DEBUG_MEMORY_INIT=y 805 805 CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m 806 806 CONFIG_DEBUG_PER_CPU_MAPS=y 807 + CONFIG_KFENCE=y 807 808 CONFIG_DEBUG_SHIRQ=y 808 809 CONFIG_PANIC_ON_OOPS=y 809 810 CONFIG_DETECT_HUNG_TASK=y
-1
arch/s390/configs/defconfig
··· 397 397 CONFIG_BLK_DEV_NBD=m 398 398 CONFIG_BLK_DEV_RAM=y 399 399 CONFIG_BLK_DEV_RAM_SIZE=32768 400 - # CONFIG_BLK_DEV_XPRAM is not set 401 400 CONFIG_VIRTIO_BLK=y 402 401 CONFIG_BLK_DEV_RBD=m 403 402 CONFIG_BLK_DEV_NVME=m
-1
arch/s390/configs/zfcpdump_defconfig
··· 35 35 # CONFIG_ETHTOOL_NETLINK is not set 36 36 CONFIG_DEVTMPFS=y 37 37 CONFIG_BLK_DEV_RAM=y 38 - # CONFIG_BLK_DEV_XPRAM is not set 39 38 # CONFIG_DCSSBLK is not set 40 39 # CONFIG_DASD is not set 41 40 CONFIG_ENCLOSURE_SERVICES=y
-7
arch/s390/include/asm/cpu_mcf.h
··· 24 24 25 25 #define CPUMF_LCCTL_ENABLE_SHIFT 16 26 26 #define CPUMF_LCCTL_ACTCTL_SHIFT 0 27 - static const u64 cpumf_ctr_ctl[CPUMF_CTR_SET_MAX] = { 28 - [CPUMF_CTR_SET_BASIC] = 0x02, 29 - [CPUMF_CTR_SET_USER] = 0x04, 30 - [CPUMF_CTR_SET_CRYPTO] = 0x08, 31 - [CPUMF_CTR_SET_EXT] = 0x01, 32 - [CPUMF_CTR_SET_MT_DIAG] = 0x20, 33 - }; 34 27 35 28 static inline void ctr_set_enable(u64 *state, u64 ctrsets) 36 29 {
+1
arch/s390/include/asm/smp.h
··· 18 18 extern unsigned int smp_cpu_mt_shift; 19 19 extern unsigned int smp_cpu_mtid; 20 20 extern __vector128 __initdata boot_cpu_vector_save_area[__NUM_VXRS]; 21 + extern cpumask_t cpu_setup_mask; 21 22 22 23 extern int __cpu_up(unsigned int cpu, struct task_struct *tidle); 23 24
+10 -10
arch/s390/include/asm/stacktrace.h
··· 34 34 return addr >= info->begin && addr + len <= info->end; 35 35 } 36 36 37 - static __always_inline unsigned long get_stack_pointer(struct task_struct *task, 38 - struct pt_regs *regs) 39 - { 40 - if (regs) 41 - return (unsigned long) kernel_stack_pointer(regs); 42 - if (task == current) 43 - return current_stack_pointer(); 44 - return (unsigned long) task->thread.ksp; 45 - } 46 - 47 37 /* 48 38 * Stack layout of a C stack frame. 49 39 */ ··· 63 73 #define current_frame_address() \ 64 74 ((unsigned long)__builtin_frame_address(0) - \ 65 75 offsetof(struct stack_frame, back_chain)) 76 + 77 + static __always_inline unsigned long get_stack_pointer(struct task_struct *task, 78 + struct pt_regs *regs) 79 + { 80 + if (regs) 81 + return (unsigned long)kernel_stack_pointer(regs); 82 + if (task == current) 83 + return current_frame_address(); 84 + return (unsigned long)task->thread.ksp; 85 + } 66 86 67 87 /* 68 88 * To keep this simple mark register 2-6 as being changed (volatile)
+4 -4
arch/s390/include/asm/unwind.h
··· 55 55 return state->error; 56 56 } 57 57 58 - static inline void unwind_start(struct unwind_state *state, 59 - struct task_struct *task, 60 - struct pt_regs *regs, 61 - unsigned long first_frame) 58 + static __always_inline void unwind_start(struct unwind_state *state, 59 + struct task_struct *task, 60 + struct pt_regs *regs, 61 + unsigned long first_frame) 62 62 { 63 63 task = task ?: current; 64 64 first_frame = first_frame ?: get_stack_pointer(task, regs);
+2 -2
arch/s390/kernel/entry.S
··· 140 140 TSTMSK __LC_MCCK_CODE,(MCCK_CODE_STG_ERROR|MCCK_CODE_STG_KEY_ERROR) 141 141 jnz \errlabel 142 142 TSTMSK __LC_MCCK_CODE,MCCK_CODE_STG_DEGRAD 143 - jz oklabel\@ 143 + jz .Loklabel\@ 144 144 TSTMSK __LC_MCCK_CODE,MCCK_CODE_STG_FAIL_ADDR 145 145 jnz \errlabel 146 - oklabel\@: 146 + .Loklabel\@: 147 147 .endm 148 148 149 149 #if IS_ENABLED(CONFIG_KVM)
+2 -2
arch/s390/kernel/ftrace.c
··· 341 341 */ 342 342 int ftrace_enable_ftrace_graph_caller(void) 343 343 { 344 - brcl_disable(__va(ftrace_graph_caller)); 344 + brcl_disable(ftrace_graph_caller); 345 345 return 0; 346 346 } 347 347 348 348 int ftrace_disable_ftrace_graph_caller(void) 349 349 { 350 - brcl_enable(__va(ftrace_graph_caller)); 350 + brcl_enable(ftrace_graph_caller); 351 351 return 0; 352 352 } 353 353
+8
arch/s390/kernel/perf_cpum_cf.c
··· 158 158 return need; 159 159 } 160 160 161 + static const u64 cpumf_ctr_ctl[CPUMF_CTR_SET_MAX] = { 162 + [CPUMF_CTR_SET_BASIC] = 0x02, 163 + [CPUMF_CTR_SET_USER] = 0x04, 164 + [CPUMF_CTR_SET_CRYPTO] = 0x08, 165 + [CPUMF_CTR_SET_EXT] = 0x01, 166 + [CPUMF_CTR_SET_MT_DIAG] = 0x20, 167 + }; 168 + 161 169 /* Read out all counter sets and save them in the provided data buffer. 162 170 * The last 64 byte host an artificial trailer entry. 163 171 */
+7 -3
arch/s390/kernel/setup.c
··· 50 50 #include <linux/compat.h> 51 51 #include <linux/start_kernel.h> 52 52 #include <linux/hugetlb.h> 53 + #include <linux/kmemleak.h> 53 54 54 55 #include <asm/boot_data.h> 55 56 #include <asm/ipl.h> ··· 357 356 unsigned long stack_alloc(void) 358 357 { 359 358 #ifdef CONFIG_VMAP_STACK 360 - return (unsigned long)__vmalloc_node(THREAD_SIZE, THREAD_SIZE, 361 - THREADINFO_GFP, NUMA_NO_NODE, 362 - __builtin_return_address(0)); 359 + void *ret; 360 + 361 + ret = __vmalloc_node(THREAD_SIZE, THREAD_SIZE, THREADINFO_GFP, 362 + NUMA_NO_NODE, __builtin_return_address(0)); 363 + kmemleak_not_leak(ret); 364 + return (unsigned long)ret; 363 365 #else 364 366 return __get_free_pages(GFP_KERNEL, THREAD_SIZE_ORDER); 365 367 #endif
+7 -2
arch/s390/kernel/smp.c
··· 95 95 #endif 96 96 97 97 static unsigned int smp_max_threads __initdata = -1U; 98 + cpumask_t cpu_setup_mask; 98 99 99 100 static int __init early_nosmt(char *s) 100 101 { ··· 903 902 vtime_init(); 904 903 vdso_getcpu_init(); 905 904 pfault_init(); 905 + cpumask_set_cpu(cpu, &cpu_setup_mask); 906 + update_cpu_masks(); 906 907 notify_cpu_starting(cpu); 907 908 if (topology_cpu_dedicated(cpu)) 908 909 set_cpu_flag(CIF_DEDICATED_CPU); 909 910 else 910 911 clear_cpu_flag(CIF_DEDICATED_CPU); 911 912 set_cpu_online(cpu, true); 912 - update_cpu_masks(); 913 913 inc_irq_stat(CPU_RST); 914 914 local_irq_enable(); 915 915 cpu_startup_entry(CPUHP_AP_ONLINE_IDLE); ··· 952 950 int __cpu_disable(void) 953 951 { 954 952 unsigned long cregs[16]; 953 + int cpu; 955 954 956 955 /* Handle possible pending IPIs */ 957 956 smp_handle_ext_call(); 958 - set_cpu_online(smp_processor_id(), false); 957 + cpu = smp_processor_id(); 958 + set_cpu_online(cpu, false); 959 + cpumask_clear_cpu(cpu, &cpu_setup_mask); 959 960 update_cpu_masks(); 960 961 /* Disable pseudo page faults on this cpu. */ 961 962 pfault_fini();
+7 -6
arch/s390/kernel/topology.c
··· 67 67 static cpumask_t mask; 68 68 69 69 cpumask_clear(&mask); 70 - if (!cpu_online(cpu)) 70 + if (!cpumask_test_cpu(cpu, &cpu_setup_mask)) 71 71 goto out; 72 72 cpumask_set_cpu(cpu, &mask); 73 73 switch (topology_mode) { ··· 88 88 case TOPOLOGY_MODE_SINGLE: 89 89 break; 90 90 } 91 - cpumask_and(&mask, &mask, cpu_online_mask); 91 + cpumask_and(&mask, &mask, &cpu_setup_mask); 92 92 out: 93 93 cpumask_copy(dst, &mask); 94 94 } ··· 99 99 int i; 100 100 101 101 cpumask_clear(&mask); 102 - if (!cpu_online(cpu)) 102 + if (!cpumask_test_cpu(cpu, &cpu_setup_mask)) 103 103 goto out; 104 104 cpumask_set_cpu(cpu, &mask); 105 105 if (topology_mode != TOPOLOGY_MODE_HW) 106 106 goto out; 107 107 cpu -= cpu % (smp_cpu_mtid + 1); 108 - for (i = 0; i <= smp_cpu_mtid; i++) 109 - if (cpu_present(cpu + i)) 108 + for (i = 0; i <= smp_cpu_mtid; i++) { 109 + if (cpumask_test_cpu(cpu + i, &cpu_setup_mask)) 110 110 cpumask_set_cpu(cpu + i, &mask); 111 - cpumask_and(&mask, &mask, cpu_online_mask); 111 + } 112 112 out: 113 113 cpumask_copy(dst, &mask); 114 114 } ··· 569 569 alloc_masks(info, &book_info, 2); 570 570 alloc_masks(info, &drawer_info, 3); 571 571 out: 572 + cpumask_set_cpu(0, &cpu_setup_mask); 572 573 __arch_update_cpu_topology(); 573 574 __arch_update_dedicated_flag(NULL); 574 575 }
+5 -6
arch/s390/mm/gmap.c
··· 27 27 28 28 /** 29 29 * gmap_alloc - allocate and initialize a guest address space 30 - * @mm: pointer to the parent mm_struct 31 30 * @limit: maximum address of the gmap address space 32 31 * 33 32 * Returns a guest address space structure. ··· 503 504 504 505 /** 505 506 * gmap_unlink - disconnect a page table from the gmap shadow tables 506 - * @gmap: pointer to guest mapping meta data structure 507 + * @mm: pointer to the parent mm_struct 507 508 * @table: pointer to the host page table 508 509 * @vmaddr: vm address associated with the host page table 509 510 */ ··· 526 527 unsigned long gaddr); 527 528 528 529 /** 529 - * gmap_link - set up shadow page tables to connect a host to a guest address 530 + * __gmap_link - set up shadow page tables to connect a host to a guest address 530 531 * @gmap: pointer to guest mapping meta data structure 531 532 * @gaddr: guest address 532 533 * @vmaddr: vm address ··· 1970 1971 EXPORT_SYMBOL_GPL(gmap_shadow_sgt); 1971 1972 1972 1973 /** 1973 - * gmap_shadow_lookup_pgtable - find a shadow page table 1974 + * gmap_shadow_pgt_lookup - find a shadow page table 1974 1975 * @sg: pointer to the shadow guest address space structure 1975 1976 * @saddr: the address in the shadow aguest address space 1976 1977 * @pgt: parent gmap address of the page table to get shadowed ··· 2164 2165 } 2165 2166 EXPORT_SYMBOL_GPL(gmap_shadow_page); 2166 2167 2167 - /** 2168 + /* 2168 2169 * gmap_shadow_notify - handle notifications for shadow gmap 2169 2170 * 2170 2171 * Called with sg->parent->shadow_lock. ··· 2224 2225 /** 2225 2226 * ptep_notify - call all invalidation callbacks for a specific pte. 2226 2227 * @mm: pointer to the process mm_struct 2227 - * @addr: virtual address in the process address space 2228 + * @vmaddr: virtual address in the process address space 2228 2229 * @pte: pointer to the page table entry 2229 2230 * @bits: bits from the pgste that caused the notify call 2230 2231 *
+2 -2
arch/s390/mm/pgtable.c
··· 834 834 } 835 835 EXPORT_SYMBOL(set_guest_storage_key); 836 836 837 - /** 837 + /* 838 838 * Conditionally set a guest storage key (handling csske). 839 839 * oldkey will be updated when either mr or mc is set and a pointer is given. 840 840 * ··· 867 867 } 868 868 EXPORT_SYMBOL(cond_set_guest_storage_key); 869 869 870 - /** 870 + /* 871 871 * Reset a guest reference bit (rrbe), returning the reference and changed bit. 872 872 * 873 873 * Returns < 0 in case of error, otherwise the cc to be reported to the guest.
+6 -3
arch/s390/pci/pci_clp.c
··· 383 383 rc = clp_list_pci_req(rrb, &resume_token, &nentries); 384 384 if (rc) 385 385 return rc; 386 + fh_list = rrb->response.fh_list; 386 387 for (i = 0; i < nentries; i++) { 387 - fh_list = rrb->response.fh_list; 388 388 if (fh_list[i].fid == fid) { 389 389 *entry = fh_list[i]; 390 390 return 0; ··· 449 449 struct clp_fh_list_entry entry; 450 450 int rc; 451 451 452 - *state = ZPCI_FN_STATE_RESERVED; 453 452 rrb = clp_alloc_block(GFP_ATOMIC); 454 453 if (!rrb) 455 454 return -ENOMEM; 456 455 457 456 rc = clp_find_pci(rrb, fid, &entry); 458 - if (!rc) 457 + if (!rc) { 459 458 *state = entry.config_state; 459 + } else if (rc == -ENODEV) { 460 + *state = ZPCI_FN_STATE_RESERVED; 461 + rc = 0; 462 + } 460 463 461 464 clp_free_block(rrb); 462 465 return rc;
-11
drivers/s390/block/Kconfig
··· 2 2 comment "S/390 block device drivers" 3 3 depends on S390 && BLOCK 4 4 5 - config BLK_DEV_XPRAM 6 - def_tristate m 7 - prompt "XPRAM disk support" 8 - depends on S390 && BLOCK 9 - help 10 - Select this option if you want to use your expanded storage on S/390 11 - or zSeries as a disk. This is useful as a _fast_ swap device if you 12 - want to access more than 2G of memory when running in 31 bit mode. 13 - This option is also available as a module which will be called 14 - xpram. If unsure, say "N". 15 - 16 5 config DCSSBLK 17 6 def_tristate m 18 7 select FS_DAX_LIMITED
-1
drivers/s390/block/Makefile
··· 16 16 obj-$(CONFIG_DASD_DIAG) += dasd_diag_mod.o 17 17 obj-$(CONFIG_DASD_ECKD) += dasd_eckd_mod.o 18 18 obj-$(CONFIG_DASD_FBA) += dasd_fba_mod.o 19 - obj-$(CONFIG_BLK_DEV_XPRAM) += xpram.o 20 19 obj-$(CONFIG_DCSSBLK) += dcssblk.o 21 20 22 21 scm_block-objs := scm_drv.o scm_blk.o
-416
drivers/s390/block/xpram.c
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - /* 3 - * Xpram.c -- the S/390 expanded memory RAM-disk 4 - * 5 - * significant parts of this code are based on 6 - * the sbull device driver presented in 7 - * A. Rubini: Linux Device Drivers 8 - * 9 - * Author of XPRAM specific coding: Reinhard Buendgen 10 - * buendgen@de.ibm.com 11 - * Rewrite for 2.5: Martin Schwidefsky <schwidefsky@de.ibm.com> 12 - * 13 - * External interfaces: 14 - * Interfaces to linux kernel 15 - * xpram_setup: read kernel parameters 16 - * Device specific file operations 17 - * xpram_iotcl 18 - * xpram_open 19 - * 20 - * "ad-hoc" partitioning: 21 - * the expanded memory can be partitioned among several devices 22 - * (with different minors). The partitioning set up can be 23 - * set by kernel or module parameters (int devs & int sizes[]) 24 - * 25 - * Potential future improvements: 26 - * generic hard disk support to replace ad-hoc partitioning 27 - */ 28 - 29 - #define KMSG_COMPONENT "xpram" 30 - #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt 31 - 32 - #include <linux/module.h> 33 - #include <linux/moduleparam.h> 34 - #include <linux/ctype.h> /* isdigit, isxdigit */ 35 - #include <linux/errno.h> 36 - #include <linux/init.h> 37 - #include <linux/blkdev.h> 38 - #include <linux/blkpg.h> 39 - #include <linux/hdreg.h> /* HDIO_GETGEO */ 40 - #include <linux/device.h> 41 - #include <linux/bio.h> 42 - #include <linux/gfp.h> 43 - #include <linux/uaccess.h> 44 - 45 - #define XPRAM_NAME "xpram" 46 - #define XPRAM_DEVS 1 /* one partition */ 47 - #define XPRAM_MAX_DEVS 32 /* maximal number of devices (partitions) */ 48 - 49 - typedef struct { 50 - unsigned int size; /* size of xpram segment in pages */ 51 - unsigned int offset; /* start page of xpram segment */ 52 - } xpram_device_t; 53 - 54 - static xpram_device_t xpram_devices[XPRAM_MAX_DEVS]; 55 - static unsigned int xpram_sizes[XPRAM_MAX_DEVS]; 56 - static struct gendisk *xpram_disks[XPRAM_MAX_DEVS]; 57 - static unsigned int xpram_pages; 58 - static int xpram_devs; 59 - 60 - /* 61 - * Parameter parsing functions. 62 - */ 63 - static int devs = XPRAM_DEVS; 64 - static char *sizes[XPRAM_MAX_DEVS]; 65 - 66 - module_param(devs, int, 0); 67 - module_param_array(sizes, charp, NULL, 0); 68 - 69 - MODULE_PARM_DESC(devs, "number of devices (\"partitions\"), " \ 70 - "the default is " __MODULE_STRING(XPRAM_DEVS) "\n"); 71 - MODULE_PARM_DESC(sizes, "list of device (partition) sizes " \ 72 - "the defaults are 0s \n" \ 73 - "All devices with size 0 equally partition the " 74 - "remaining space on the expanded strorage not " 75 - "claimed by explicit sizes\n"); 76 - MODULE_LICENSE("GPL"); 77 - 78 - /* 79 - * Copy expanded memory page (4kB) into main memory 80 - * Arguments 81 - * page_addr: address of target page 82 - * xpage_index: index of expandeded memory page 83 - * Return value 84 - * 0: if operation succeeds 85 - * -EIO: if pgin failed 86 - * -ENXIO: if xpram has vanished 87 - */ 88 - static int xpram_page_in (unsigned long page_addr, unsigned int xpage_index) 89 - { 90 - int cc = 2; /* return unused cc 2 if pgin traps */ 91 - 92 - asm volatile( 93 - " .insn rre,0xb22e0000,%1,%2\n" /* pgin %1,%2 */ 94 - "0: ipm %0\n" 95 - " srl %0,28\n" 96 - "1:\n" 97 - EX_TABLE(0b,1b) 98 - : "+d" (cc) : "a" (__pa(page_addr)), "d" (xpage_index) : "cc"); 99 - if (cc == 3) 100 - return -ENXIO; 101 - if (cc == 2) 102 - return -ENXIO; 103 - if (cc == 1) 104 - return -EIO; 105 - return 0; 106 - } 107 - 108 - /* 109 - * Copy a 4kB page of main memory to an expanded memory page 110 - * Arguments 111 - * page_addr: address of source page 112 - * xpage_index: index of expandeded memory page 113 - * Return value 114 - * 0: if operation succeeds 115 - * -EIO: if pgout failed 116 - * -ENXIO: if xpram has vanished 117 - */ 118 - static long xpram_page_out (unsigned long page_addr, unsigned int xpage_index) 119 - { 120 - int cc = 2; /* return unused cc 2 if pgin traps */ 121 - 122 - asm volatile( 123 - " .insn rre,0xb22f0000,%1,%2\n" /* pgout %1,%2 */ 124 - "0: ipm %0\n" 125 - " srl %0,28\n" 126 - "1:\n" 127 - EX_TABLE(0b,1b) 128 - : "+d" (cc) : "a" (__pa(page_addr)), "d" (xpage_index) : "cc"); 129 - if (cc == 3) 130 - return -ENXIO; 131 - if (cc == 2) 132 - return -ENXIO; 133 - if (cc == 1) 134 - return -EIO; 135 - return 0; 136 - } 137 - 138 - /* 139 - * Check if xpram is available. 140 - */ 141 - static int __init xpram_present(void) 142 - { 143 - unsigned long mem_page; 144 - int rc; 145 - 146 - mem_page = (unsigned long) __get_free_page(GFP_KERNEL); 147 - if (!mem_page) 148 - return -ENOMEM; 149 - rc = xpram_page_in(mem_page, 0); 150 - free_page(mem_page); 151 - return rc ? -ENXIO : 0; 152 - } 153 - 154 - /* 155 - * Return index of the last available xpram page. 156 - */ 157 - static unsigned long __init xpram_highest_page_index(void) 158 - { 159 - unsigned int page_index, add_bit; 160 - unsigned long mem_page; 161 - 162 - mem_page = (unsigned long) __get_free_page(GFP_KERNEL); 163 - if (!mem_page) 164 - return 0; 165 - 166 - page_index = 0; 167 - add_bit = 1ULL << (sizeof(unsigned int)*8 - 1); 168 - while (add_bit > 0) { 169 - if (xpram_page_in(mem_page, page_index | add_bit) == 0) 170 - page_index |= add_bit; 171 - add_bit >>= 1; 172 - } 173 - 174 - free_page (mem_page); 175 - 176 - return page_index; 177 - } 178 - 179 - /* 180 - * Block device make request function. 181 - */ 182 - static blk_qc_t xpram_submit_bio(struct bio *bio) 183 - { 184 - xpram_device_t *xdev = bio->bi_bdev->bd_disk->private_data; 185 - struct bio_vec bvec; 186 - struct bvec_iter iter; 187 - unsigned int index; 188 - unsigned long page_addr; 189 - unsigned long bytes; 190 - 191 - blk_queue_split(&bio); 192 - 193 - if ((bio->bi_iter.bi_sector & 7) != 0 || 194 - (bio->bi_iter.bi_size & 4095) != 0) 195 - /* Request is not page-aligned. */ 196 - goto fail; 197 - if ((bio->bi_iter.bi_size >> 12) > xdev->size) 198 - /* Request size is no page-aligned. */ 199 - goto fail; 200 - if ((bio->bi_iter.bi_sector >> 3) > 0xffffffffU - xdev->offset) 201 - goto fail; 202 - index = (bio->bi_iter.bi_sector >> 3) + xdev->offset; 203 - bio_for_each_segment(bvec, bio, iter) { 204 - page_addr = (unsigned long) 205 - kmap(bvec.bv_page) + bvec.bv_offset; 206 - bytes = bvec.bv_len; 207 - if ((page_addr & 4095) != 0 || (bytes & 4095) != 0) 208 - /* More paranoia. */ 209 - goto fail; 210 - while (bytes > 0) { 211 - if (bio_data_dir(bio) == READ) { 212 - if (xpram_page_in(page_addr, index) != 0) 213 - goto fail; 214 - } else { 215 - if (xpram_page_out(page_addr, index) != 0) 216 - goto fail; 217 - } 218 - page_addr += 4096; 219 - bytes -= 4096; 220 - index++; 221 - } 222 - } 223 - bio_endio(bio); 224 - return BLK_QC_T_NONE; 225 - fail: 226 - bio_io_error(bio); 227 - return BLK_QC_T_NONE; 228 - } 229 - 230 - static int xpram_getgeo(struct block_device *bdev, struct hd_geometry *geo) 231 - { 232 - unsigned long size; 233 - 234 - /* 235 - * get geometry: we have to fake one... trim the size to a 236 - * multiple of 64 (32k): tell we have 16 sectors, 4 heads, 237 - * whatever cylinders. Tell also that data starts at sector. 4. 238 - */ 239 - size = (xpram_pages * 8) & ~0x3f; 240 - geo->cylinders = size >> 6; 241 - geo->heads = 4; 242 - geo->sectors = 16; 243 - geo->start = 4; 244 - return 0; 245 - } 246 - 247 - static const struct block_device_operations xpram_devops = 248 - { 249 - .owner = THIS_MODULE, 250 - .submit_bio = xpram_submit_bio, 251 - .getgeo = xpram_getgeo, 252 - }; 253 - 254 - /* 255 - * Setup xpram_sizes array. 256 - */ 257 - static int __init xpram_setup_sizes(unsigned long pages) 258 - { 259 - unsigned long mem_needed; 260 - unsigned long mem_auto; 261 - unsigned long long size; 262 - char *sizes_end; 263 - int mem_auto_no; 264 - int i; 265 - 266 - /* Check number of devices. */ 267 - if (devs <= 0 || devs > XPRAM_MAX_DEVS) { 268 - pr_err("%d is not a valid number of XPRAM devices\n",devs); 269 - return -EINVAL; 270 - } 271 - xpram_devs = devs; 272 - 273 - /* 274 - * Copy sizes array to xpram_sizes and align partition 275 - * sizes to page boundary. 276 - */ 277 - mem_needed = 0; 278 - mem_auto_no = 0; 279 - for (i = 0; i < xpram_devs; i++) { 280 - if (sizes[i]) { 281 - size = simple_strtoull(sizes[i], &sizes_end, 0); 282 - switch (*sizes_end) { 283 - case 'g': 284 - case 'G': 285 - size <<= 20; 286 - break; 287 - case 'm': 288 - case 'M': 289 - size <<= 10; 290 - } 291 - xpram_sizes[i] = (size + 3) & -4UL; 292 - } 293 - if (xpram_sizes[i]) 294 - mem_needed += xpram_sizes[i]; 295 - else 296 - mem_auto_no++; 297 - } 298 - 299 - pr_info(" number of devices (partitions): %d \n", xpram_devs); 300 - for (i = 0; i < xpram_devs; i++) { 301 - if (xpram_sizes[i]) 302 - pr_info(" size of partition %d: %u kB\n", 303 - i, xpram_sizes[i]); 304 - else 305 - pr_info(" size of partition %d to be set " 306 - "automatically\n",i); 307 - } 308 - pr_info(" memory needed (for sized partitions): %lu kB\n", 309 - mem_needed); 310 - pr_info(" partitions to be sized automatically: %d\n", 311 - mem_auto_no); 312 - 313 - if (mem_needed > pages * 4) { 314 - pr_err("Not enough expanded memory available\n"); 315 - return -EINVAL; 316 - } 317 - 318 - /* 319 - * partitioning: 320 - * xpram_sizes[i] != 0; partition i has size xpram_sizes[i] kB 321 - * else: ; all partitions with zero xpram_sizes[i] 322 - * partition equally the remaining space 323 - */ 324 - if (mem_auto_no) { 325 - mem_auto = ((pages - mem_needed / 4) / mem_auto_no) * 4; 326 - pr_info(" automatically determined " 327 - "partition size: %lu kB\n", mem_auto); 328 - for (i = 0; i < xpram_devs; i++) 329 - if (xpram_sizes[i] == 0) 330 - xpram_sizes[i] = mem_auto; 331 - } 332 - return 0; 333 - } 334 - 335 - static int __init xpram_setup_blkdev(void) 336 - { 337 - unsigned long offset; 338 - int i, rc = -ENOMEM; 339 - 340 - for (i = 0; i < xpram_devs; i++) { 341 - xpram_disks[i] = blk_alloc_disk(NUMA_NO_NODE); 342 - if (!xpram_disks[i]) 343 - goto out; 344 - blk_queue_flag_set(QUEUE_FLAG_NONROT, xpram_disks[i]->queue); 345 - blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, 346 - xpram_disks[i]->queue); 347 - blk_queue_logical_block_size(xpram_disks[i]->queue, 4096); 348 - } 349 - 350 - /* 351 - * Register xpram major. 352 - */ 353 - rc = register_blkdev(XPRAM_MAJOR, XPRAM_NAME); 354 - if (rc < 0) 355 - goto out; 356 - 357 - /* 358 - * Setup device structures. 359 - */ 360 - offset = 0; 361 - for (i = 0; i < xpram_devs; i++) { 362 - struct gendisk *disk = xpram_disks[i]; 363 - 364 - xpram_devices[i].size = xpram_sizes[i] / 4; 365 - xpram_devices[i].offset = offset; 366 - offset += xpram_devices[i].size; 367 - disk->major = XPRAM_MAJOR; 368 - disk->first_minor = i; 369 - disk->minors = 1; 370 - disk->fops = &xpram_devops; 371 - disk->private_data = &xpram_devices[i]; 372 - sprintf(disk->disk_name, "slram%d", i); 373 - set_capacity(disk, xpram_sizes[i] << 1); 374 - add_disk(disk); 375 - } 376 - 377 - return 0; 378 - out: 379 - while (i--) 380 - blk_cleanup_disk(xpram_disks[i]); 381 - return rc; 382 - } 383 - 384 - /* 385 - * Finally, the init/exit functions. 386 - */ 387 - static void __exit xpram_exit(void) 388 - { 389 - int i; 390 - for (i = 0; i < xpram_devs; i++) { 391 - del_gendisk(xpram_disks[i]); 392 - blk_cleanup_disk(xpram_disks[i]); 393 - } 394 - unregister_blkdev(XPRAM_MAJOR, XPRAM_NAME); 395 - } 396 - 397 - static int __init xpram_init(void) 398 - { 399 - int rc; 400 - 401 - /* Find out size of expanded memory. */ 402 - if (xpram_present() != 0) { 403 - pr_err("No expanded memory available\n"); 404 - return -ENODEV; 405 - } 406 - xpram_pages = xpram_highest_page_index() + 1; 407 - pr_info(" %u pages expanded memory found (%lu KB).\n", 408 - xpram_pages, (unsigned long) xpram_pages*4); 409 - rc = xpram_setup_sizes(xpram_pages); 410 - if (rc) 411 - return rc; 412 - return xpram_setup_blkdev(); 413 - } 414 - 415 - module_init(xpram_init); 416 - module_exit(xpram_exit);
+4 -3
drivers/s390/char/con3270.c
··· 292 292 * Read tasklet. 293 293 */ 294 294 static void 295 - con3270_read_tasklet(struct raw3270_request *rrq) 295 + con3270_read_tasklet(unsigned long data) 296 296 { 297 297 static char kreset_data = TW_KR; 298 + struct raw3270_request *rrq; 298 299 struct con3270 *cp; 299 300 unsigned long flags; 300 301 int nr_up, deactivate; 301 302 303 + rrq = (struct raw3270_request *)data; 302 304 cp = (struct con3270 *) rrq->view; 303 305 spin_lock_irqsave(&cp->view.lock, flags); 304 306 nr_up = cp->nr_up; ··· 627 625 INIT_LIST_HEAD(&condev->lines); 628 626 INIT_LIST_HEAD(&condev->update); 629 627 timer_setup(&condev->timer, con3270_update, 0); 630 - tasklet_init(&condev->readlet, 631 - (void (*)(unsigned long)) con3270_read_tasklet, 628 + tasklet_init(&condev->readlet, con3270_read_tasklet, 632 629 (unsigned long) condev->read); 633 630 634 631 raw3270_add_view(&condev->view, &con3270_fn, 1, RAW3270_VIEW_LOCK_IRQ);
+6 -5
drivers/s390/char/ctrlchar.c
··· 34 34 35 35 36 36 /** 37 - * Check for special chars at start of input. 37 + * ctrlchar_handle - check for special chars at start of input 38 38 * 39 - * @param buf Console input buffer. 40 - * @param len Length of valid data in buffer. 41 - * @param tty The tty struct for this console. 42 - * @return CTRLCHAR_NONE, if nothing matched, 39 + * @buf: console input buffer 40 + * @len: length of valid data in buffer 41 + * @tty: the tty struct for this console 42 + * 43 + * Return: CTRLCHAR_NONE, if nothing matched, 43 44 * CTRLCHAR_SYSRQ, if sysrq was encountered 44 45 * otherwise char to be inserted logically or'ed 45 46 * with CTRLCHAR_CTRL
+1 -1
drivers/s390/char/hmcdrv_ftp.c
··· 26 26 * struct hmcdrv_ftp_ops - HMC drive FTP operations 27 27 * @startup: startup function 28 28 * @shutdown: shutdown function 29 - * @cmd: FTP transfer function 29 + * @transfer: FTP transfer function 30 30 */ 31 31 struct hmcdrv_ftp_ops { 32 32 int (*startup)(void);
+1 -1
drivers/s390/char/sclp.c
··· 28 28 #define SCLP_HEADER "sclp: " 29 29 30 30 struct sclp_trace_entry { 31 - char id[4]; 31 + char id[4] __nonstring; 32 32 u32 a; 33 33 u64 b; 34 34 };
+4 -1
drivers/s390/cio/blacklist.c
··· 262 262 263 263 if (strcmp("free", parm) == 0) { 264 264 rc = blacklist_parse_parameters(buf, free, 0); 265 - css_schedule_eval_all_unreg(0); 265 + /* There could be subchannels without proper devices connected. 266 + * evaluate all the entries 267 + */ 268 + css_schedule_eval_all(); 266 269 } else if (strcmp("add", parm) == 0) 267 270 rc = blacklist_parse_parameters(buf, add, 0); 268 271 else if (strcmp("purge", parm) == 0)
+4 -17
drivers/s390/cio/device.c
··· 867 867 wake_up(&ccw_device_init_wq); 868 868 } 869 869 870 - static void ccw_device_call_sch_unregister(struct ccw_device *cdev) 871 - { 872 - struct subchannel *sch; 873 - 874 - /* Get subchannel reference for local processing. */ 875 - if (!get_device(cdev->dev.parent)) 876 - return; 877 - sch = to_subchannel(cdev->dev.parent); 878 - css_sch_device_unregister(sch); 879 - /* Release subchannel reference for local processing. */ 880 - put_device(&sch->dev); 881 - } 882 - 883 870 /* 884 871 * subchannel recognition done. Called from the state machine. 885 872 */ ··· 1844 1857 css_schedule_eval(sch->schid); 1845 1858 fallthrough; 1846 1859 case CDEV_TODO_UNREG: 1847 - if (sch_is_pseudo_sch(sch)) 1848 - ccw_device_unregister(cdev); 1849 - else 1850 - ccw_device_call_sch_unregister(cdev); 1860 + spin_lock_irq(sch->lock); 1861 + sch_set_cdev(sch, NULL); 1862 + spin_unlock_irq(sch->lock); 1863 + ccw_device_unregister(cdev); 1851 1864 break; 1852 1865 default: 1853 1866 break;
+1 -1
drivers/s390/cio/device_id.c
··· 91 91 } 92 92 93 93 /** 94 - * diag_get_dev_info - retrieve device information via diag 0x210 94 + * diag210_get_dev_info - retrieve device information via diag 0x210 95 95 * @cdev: ccw device 96 96 * 97 97 * Returns zero on success, non-zero otherwise.
+7 -7
drivers/s390/crypto/zcrypt_api.c
··· 71 71 /* Zcrypt related debug feature stuff. */ 72 72 debug_info_t *zcrypt_dbf_info; 73 73 74 - /** 74 + /* 75 75 * Process a rescan of the transport layer. 76 76 * 77 77 * Returns 1, if the rescan has been processed, otherwise 0. ··· 462 462 463 463 #endif 464 464 465 - /** 465 + /* 466 466 * zcrypt_read (): Not supported beyond zcrypt 1.3.1. 467 467 * 468 468 * This function is not supported beyond zcrypt 1.3.1. ··· 473 473 return -EPERM; 474 474 } 475 475 476 - /** 476 + /* 477 477 * zcrypt_write(): Not allowed. 478 478 * 479 479 * Write is is not allowed ··· 484 484 return -EPERM; 485 485 } 486 486 487 - /** 487 + /* 488 488 * zcrypt_open(): Count number of users. 489 489 * 490 490 * Device open function to count number of users. ··· 512 512 return stream_open(inode, filp); 513 513 } 514 514 515 - /** 515 + /* 516 516 * zcrypt_release(): Count number of users. 517 517 * 518 518 * Device close function to count number of users. ··· 2153 2153 2154 2154 #endif 2155 2155 2156 - /** 2156 + /* 2157 2157 * zcrypt_api_init(): Module initialization. 2158 2158 * 2159 2159 * The module initialization code. ··· 2191 2191 return rc; 2192 2192 } 2193 2193 2194 - /** 2194 + /* 2195 2195 * zcrypt_api_exit(): Module termination. 2196 2196 * 2197 2197 * The module termination code.
+4 -4
drivers/s390/crypto/zcrypt_cex2a.c
··· 65 65 66 66 MODULE_DEVICE_TABLE(ap, zcrypt_cex2a_queue_ids); 67 67 68 - /** 68 + /* 69 69 * Probe function for CEX2A card devices. It always accepts the AP device 70 70 * since the bus_match already checked the card type. 71 71 * @ap_dev: pointer to the AP device. ··· 124 124 return rc; 125 125 } 126 126 127 - /** 127 + /* 128 128 * This is called to remove the CEX2A card driver information 129 129 * if an AP card device is removed. 130 130 */ ··· 142 142 .flags = AP_DRIVER_FLAG_DEFAULT, 143 143 }; 144 144 145 - /** 145 + /* 146 146 * Probe function for CEX2A queue devices. It always accepts the AP device 147 147 * since the bus_match already checked the queue type. 148 148 * @ap_dev: pointer to the AP device. ··· 183 183 return rc; 184 184 } 185 185 186 - /** 186 + /* 187 187 * This is called to remove the CEX2A queue driver information 188 188 * if an AP queue device is removed. 189 189 */
+5 -5
drivers/s390/crypto/zcrypt_cex2c.c
··· 171 171 .attrs = cca_queue_attrs, 172 172 }; 173 173 174 - /** 174 + /* 175 175 * Large random number detection function. Its sends a message to a CEX2C/CEX3C 176 176 * card to find out if large random numbers are supported. 177 177 * @ap_dev: pointer to the AP device. ··· 237 237 return rc; 238 238 } 239 239 240 - /** 240 + /* 241 241 * Probe function for CEX2C/CEX3C card devices. It always accepts the 242 242 * AP device since the bus_match already checked the hardware type. 243 243 * @ap_dev: pointer to the AP card device. ··· 303 303 return rc; 304 304 } 305 305 306 - /** 306 + /* 307 307 * This is called to remove the CEX2C/CEX3C card driver information 308 308 * if an AP card device is removed. 309 309 */ ··· 325 325 .flags = AP_DRIVER_FLAG_DEFAULT, 326 326 }; 327 327 328 - /** 328 + /* 329 329 * Probe function for CEX2C/CEX3C queue devices. It always accepts the 330 330 * AP device since the bus_match already checked the hardware type. 331 331 * @ap_dev: pointer to the AP card device. ··· 376 376 return rc; 377 377 } 378 378 379 - /** 379 + /* 380 380 * This is called to remove the CEX2C/CEX3C queue driver information 381 381 * if an AP queue device is removed. 382 382 */
+4 -4
drivers/s390/crypto/zcrypt_cex4.c
··· 394 394 .attrs = ep11_queue_attrs, 395 395 }; 396 396 397 - /** 397 + /* 398 398 * Probe function for CEX4/CEX5/CEX6/CEX7 card device. It always 399 399 * accepts the AP device since the bus_match already checked 400 400 * the hardware type. ··· 562 562 return rc; 563 563 } 564 564 565 - /** 565 + /* 566 566 * This is called to remove the CEX4/CEX5/CEX6/CEX7 card driver 567 567 * information if an AP card device is removed. 568 568 */ ··· 586 586 .flags = AP_DRIVER_FLAG_DEFAULT, 587 587 }; 588 588 589 - /** 589 + /* 590 590 * Probe function for CEX4/CEX5/CEX6/CEX7 queue device. It always 591 591 * accepts the AP device since the bus_match already checked 592 592 * the hardware type. ··· 652 652 return rc; 653 653 } 654 654 655 - /** 655 + /* 656 656 * This is called to remove the CEX4/CEX5/CEX6/CEX7 queue driver 657 657 * information if an AP queue device is removed. 658 658 */
+9 -9
drivers/s390/crypto/zcrypt_msgtype50.c
··· 39 39 "Copyright IBM Corp. 2001, 2012"); 40 40 MODULE_LICENSE("GPL"); 41 41 42 - /** 42 + /* 43 43 * The type 50 message family is associated with a CEXxA cards. 44 44 * 45 45 * The four members of the family are described below. ··· 136 136 unsigned char message[512]; 137 137 } __packed; 138 138 139 - /** 139 + /* 140 140 * The type 80 response family is associated with a CEXxA cards. 141 141 * 142 142 * Note that all unsigned char arrays are right-justified and left-padded ··· 188 188 return 0; 189 189 } 190 190 191 - /** 191 + /* 192 192 * Convert a ICAMEX message to a type50 MEX message. 193 193 * 194 194 * @zq: crypto queue pointer ··· 255 255 return 0; 256 256 } 257 257 258 - /** 258 + /* 259 259 * Convert a ICACRT message to a type50 CRT message. 260 260 * 261 261 * @zq: crypto queue pointer ··· 346 346 return 0; 347 347 } 348 348 349 - /** 349 + /* 350 350 * Copy results from a type 80 reply message back to user space. 351 351 * 352 352 * @zq: crypto device pointer ··· 418 418 } 419 419 } 420 420 421 - /** 421 + /* 422 422 * This function is called from the AP bus code after a crypto request 423 423 * "msg" has finished with the reply message "reply". 424 424 * It is called from tasklet context. ··· 457 457 458 458 static atomic_t zcrypt_step = ATOMIC_INIT(0); 459 459 460 - /** 460 + /* 461 461 * The request distributor calls this function if it picked the CEXxA 462 462 * device to handle a modexpo request. 463 463 * @zq: pointer to zcrypt_queue structure that identifies the ··· 502 502 return rc; 503 503 } 504 504 505 - /** 505 + /* 506 506 * The request distributor calls this function if it picked the CEXxA 507 507 * device to handle a modexpo_crt request. 508 508 * @zq: pointer to zcrypt_queue structure that identifies the ··· 547 547 return rc; 548 548 } 549 549 550 - /** 550 + /* 551 551 * The crypto operations for message type 50. 552 552 */ 553 553 static struct zcrypt_ops zcrypt_msgtype50_ops = {
+19 -19
drivers/s390/crypto/zcrypt_msgtype6.c
··· 44 44 "Copyright IBM Corp. 2001, 2012"); 45 45 MODULE_LICENSE("GPL"); 46 46 47 - /** 47 + /* 48 48 * CPRB 49 49 * Note that all shorts, ints and longs are little-endian. 50 50 * All pointer fields are 32-bits long, and mean nothing ··· 107 107 unsigned char only_rule[8]; 108 108 } __packed; 109 109 110 - /** 110 + /* 111 111 * The following is used to initialize the CPRBX passed to the CEXxC/CEXxP 112 112 * card in a type6 message. The 3 fields that must be filled in at execution 113 113 * time are req_parml, rpl_parml and usage_domain. ··· 236 236 } 237 237 238 238 239 - /** 239 + /* 240 240 * Convert a ICAMEX message to a type6 MEX message. 241 241 * 242 242 * @zq: crypto device pointer ··· 305 305 return 0; 306 306 } 307 307 308 - /** 308 + /* 309 309 * Convert a ICACRT message to a type6 CRT message. 310 310 * 311 311 * @zq: crypto device pointer ··· 374 374 return 0; 375 375 } 376 376 377 - /** 377 + /* 378 378 * Convert a XCRB message to a type6 CPRB message. 379 379 * 380 380 * @zq: crypto device pointer ··· 571 571 return 0; 572 572 } 573 573 574 - /** 574 + /* 575 575 * Copy results from a type 86 ICA reply message back to user space. 576 576 * 577 577 * @zq: crypto device pointer ··· 697 697 return 0; 698 698 } 699 699 700 - /** 700 + /* 701 701 * Copy results from a type 86 XCRB reply message back to user space. 702 702 * 703 703 * @zq: crypto device pointer ··· 728 728 return 0; 729 729 } 730 730 731 - /** 731 + /* 732 732 * Copy results from a type 86 EP11 XCRB reply message back to user space. 733 733 * 734 734 * @zq: crypto device pointer ··· 911 911 } 912 912 } 913 913 914 - /** 914 + /* 915 915 * This function is called from the AP bus code after a crypto request 916 916 * "msg" has finished with the reply message "reply". 917 917 * It is called from tasklet context. ··· 966 966 complete(&(resp_type->work)); 967 967 } 968 968 969 - /** 969 + /* 970 970 * This function is called from the AP bus code after a crypto request 971 971 * "msg" has finished with the reply message "reply". 972 972 * It is called from tasklet context. ··· 1015 1015 1016 1016 static atomic_t zcrypt_step = ATOMIC_INIT(0); 1017 1017 1018 - /** 1018 + /* 1019 1019 * The request distributor calls this function if it picked the CEXxC 1020 1020 * device to handle a modexpo request. 1021 1021 * @zq: pointer to zcrypt_queue structure that identifies the ··· 1063 1063 return rc; 1064 1064 } 1065 1065 1066 - /** 1066 + /* 1067 1067 * The request distributor calls this function if it picked the CEXxC 1068 1068 * device to handle a modexpo_crt request. 1069 1069 * @zq: pointer to zcrypt_queue structure that identifies the ··· 1112 1112 return rc; 1113 1113 } 1114 1114 1115 - /** 1115 + /* 1116 1116 * Fetch function code from cprb. 1117 1117 * Extracting the fc requires to copy the cprb from userspace. 1118 1118 * So this function allocates memory and needs an ap_msg prepared ··· 1140 1140 return XCRB_msg_to_type6CPRB_msgX(userspace, ap_msg, xcRB, func_code, dom); 1141 1141 } 1142 1142 1143 - /** 1143 + /* 1144 1144 * The request distributor calls this function if it picked the CEXxC 1145 1145 * device to handle a send_cprb request. 1146 1146 * @zq: pointer to zcrypt_queue structure that identifies the ··· 1170 1170 return rc; 1171 1171 } 1172 1172 1173 - /** 1173 + /* 1174 1174 * Fetch function code from ep11 cprb. 1175 1175 * Extracting the fc requires to copy the ep11 cprb from userspace. 1176 1176 * So this function allocates memory and needs an ap_msg prepared ··· 1198 1198 return xcrb_msg_to_type6_ep11cprb_msgx(userspace, ap_msg, xcrb, func_code); 1199 1199 } 1200 1200 1201 - /** 1201 + /* 1202 1202 * The request distributor calls this function if it picked the CEX4P 1203 1203 * device to handle a send_ep11_cprb request. 1204 1204 * @zq: pointer to zcrypt_queue structure that identifies the ··· 1228 1228 } __packed * payload_hdr = NULL; 1229 1229 1230 1230 1231 - /** 1231 + /* 1232 1232 * The target domain field within the cprb body/payload block will be 1233 1233 * replaced by the usage domain for non-management commands only. 1234 1234 * Therefore we check the first bit of the 'flags' parameter for ··· 1299 1299 return 0; 1300 1300 } 1301 1301 1302 - /** 1302 + /* 1303 1303 * The request distributor calls this function if it picked the CEXxC 1304 1304 * device to generate random data. 1305 1305 * @zq: pointer to zcrypt_queue structure that identifies the ··· 1339 1339 return rc; 1340 1340 } 1341 1341 1342 - /** 1342 + /* 1343 1343 * The crypto operations for a CEXxC card. 1344 1344 */ 1345 1345 static struct zcrypt_ops zcrypt_msgtype6_norng_ops = {
+2 -2
drivers/s390/scsi/zfcp_dbf.c
··· 766 766 } 767 767 768 768 /** 769 - * zfcp_adapter_debug_register - registers debug feature for an adapter 769 + * zfcp_dbf_adapter_register - registers debug feature for an adapter 770 770 * @adapter: pointer to adapter for which debug features should be registered 771 771 * return: -ENOMEM on error, 0 otherwise 772 772 */ ··· 824 824 } 825 825 826 826 /** 827 - * zfcp_adapter_debug_unregister - unregisters debug feature for an adapter 827 + * zfcp_dbf_adapter_unregister - unregisters debug feature for an adapter 828 828 * @adapter: pointer to adapter for which debug features should be unregistered 829 829 */ 830 830 void zfcp_dbf_adapter_unregister(struct zfcp_adapter *adapter)
+1 -1
drivers/s390/scsi/zfcp_fsf.c
··· 2275 2275 } 2276 2276 2277 2277 /** 2278 - * zfcp_fsf_close_LUN - close LUN 2278 + * zfcp_fsf_close_lun - close LUN 2279 2279 * @erp_action: pointer to erp_action triggering the "close LUN" 2280 2280 * Returns: 0 on success, error otherwise 2281 2281 */
+1 -1
drivers/s390/scsi/zfcp_qdio.c
··· 384 384 } 385 385 386 386 /** 387 - * zfcp_close_qdio - close qdio queues for an adapter 387 + * zfcp_qdio_close - close qdio queues for an adapter 388 388 * @qdio: pointer to structure zfcp_qdio 389 389 */ 390 390 void zfcp_qdio_close(struct zfcp_qdio *qdio)
+2 -2
drivers/s390/scsi/zfcp_unit.c
··· 111 111 } 112 112 113 113 /** 114 - * zfcp_unit_enqueue - enqueue unit to unit list of a port. 114 + * zfcp_unit_add - add unit to unit list of a port. 115 115 * @port: pointer to port where unit is added 116 - * @fcp_lun: FCP LUN of unit to be enqueued 116 + * @fcp_lun: FCP LUN of unit to be added 117 117 * Returns: 0 success 118 118 * 119 119 * Sets up some unit internal structures and creates sysfs entry.
+1 -2
fs/Kconfig
··· 234 234 235 235 config HUGETLBFS 236 236 bool "HugeTLB file system support" 237 - depends on X86 || IA64 || SPARC64 || (S390 && 64BIT) || \ 238 - ARCH_SUPPORTS_HUGETLBFS || BROKEN 237 + depends on X86 || IA64 || SPARC64 || ARCH_SUPPORTS_HUGETLBFS || BROKEN 239 238 help 240 239 hugetlbfs is a filesystem backing for HugeTLB pages, based on 241 240 ramfs. For architectures that support it, say Y here and read