diff options
Diffstat (limited to 'arch/s390/mm')
| -rw-r--r-- | arch/s390/mm/extmem.c | 12 | ||||
| -rw-r--r-- | arch/s390/mm/fault.c | 5 | ||||
| -rw-r--r-- | arch/s390/mm/init.c | 33 | 
3 files changed, 25 insertions, 25 deletions
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c index 5c845712960..6409fd57eb0 100644 --- a/arch/s390/mm/extmem.c +++ b/arch/s390/mm/extmem.c @@ -309,7 +309,7 @@ query_segment_type (struct dcss_segment *seg)  	}  #endif  	if (qout->segcnt > 6) { -		rc = -ENOTSUPP; +		rc = -EOPNOTSUPP;  		goto out_free;  	} @@ -324,11 +324,11 @@ query_segment_type (struct dcss_segment *seg)  		for (i=0; i<qout->segcnt; i++) {  			if (((qout->range[i].start & 0xff) != SEG_TYPE_EW) &&  			    ((qout->range[i].start & 0xff) != SEG_TYPE_EN)) { -				rc = -ENOTSUPP; +				rc = -EOPNOTSUPP;  				goto out_free;  			}  			if (start != qout->range[i].start >> PAGE_SHIFT) { -				rc = -ENOTSUPP; +				rc = -EOPNOTSUPP;  				goto out_free;  			}  			start = (qout->range[i].end >> PAGE_SHIFT) + 1; @@ -357,7 +357,7 @@ query_segment_type (struct dcss_segment *seg)   * -ENOSYS  : we are not running on VM   * -EIO     : could not perform query diagnose   * -ENOENT  : no such segment - * -ENOTSUPP: multi-part segment cannot be used with linux + * -EOPNOTSUPP: multi-part segment cannot be used with linux   * -ENOMEM  : out of memory   * 0 .. 6   : type of segment as defined in include/asm-s390/extmem.h   */ @@ -515,7 +515,7 @@ __segment_load (char *name, int do_nonshared, unsigned long *addr, unsigned long   * -ENOSYS  : we are not running on VM   * -EIO     : could not perform query or load diagnose   * -ENOENT  : no such segment - * -ENOTSUPP: multi-part segment cannot be used with linux + * -EOPNOTSUPP: multi-part segment cannot be used with linux   * -ENOSPC  : segment cannot be used (overlaps with storage)   * -EBUSY   : segment can temporarily not be used (overlaps with dcss)   * -ERANGE  : segment cannot be used (exceeds kernel mapping range) @@ -742,7 +742,7 @@ void segment_warning(int rc, char *seg_name)  		pr_err("Loading or querying DCSS %s resulted in a "  		       "hardware error\n", seg_name);  		break; -	case -ENOTSUPP: +	case -EOPNOTSUPP:  		pr_err("DCSS %s has multiple page ranges and cannot be "  		       "loaded or queried\n", seg_name);  		break; diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index fc102e70d9c..3040d7c78fe 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -30,6 +30,7 @@  #include <linux/kprobes.h>  #include <linux/uaccess.h>  #include <linux/hugetlb.h> +#include <asm/asm-offsets.h>  #include <asm/system.h>  #include <asm/pgtable.h>  #include <asm/s390_ext.h> @@ -59,15 +60,13 @@ static inline int notify_page_fault(struct pt_regs *regs)  {  	int ret = 0; -#ifdef CONFIG_KPROBES  	/* kprobe_running() needs smp_processor_id() */ -	if (!user_mode(regs)) { +	if (kprobes_built_in() && !user_mode(regs)) {  		preempt_disable();  		if (kprobe_running() && kprobe_fault_handler(regs, 14))  			ret = 1;  		preempt_enable();  	} -#endif  	return ret;  } diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index 76564795222..d5865e4024c 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c @@ -143,33 +143,34 @@ void kernel_map_pages(struct page *page, int numpages, int enable)  }  #endif -void free_initmem(void) +void free_init_pages(char *what, unsigned long begin, unsigned long end)  { -        unsigned long addr; +	unsigned long addr = begin; -        addr = (unsigned long)(&__init_begin); -        for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) { +	if (begin >= end) +		return; +	for (; addr < end; addr += PAGE_SIZE) {  		ClearPageReserved(virt_to_page(addr));  		init_page_count(virt_to_page(addr)); -		memset((void *)addr, POISON_FREE_INITMEM, PAGE_SIZE); +		memset((void *)(addr & PAGE_MASK), POISON_FREE_INITMEM, +		       PAGE_SIZE);  		free_page(addr);  		totalram_pages++; -        } -        printk ("Freeing unused kernel memory: %ldk freed\n", -		((unsigned long)&__init_end - (unsigned long)&__init_begin) >> 10); +	} +	printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10); +} + +void free_initmem(void) +{ +	free_init_pages("unused kernel memory", +			(unsigned long)&__init_begin, +			(unsigned long)&__init_end);  }  #ifdef CONFIG_BLK_DEV_INITRD  void free_initrd_mem(unsigned long start, unsigned long end)  { -        if (start < end) -                printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10); -        for (; start < end; start += PAGE_SIZE) { -                ClearPageReserved(virt_to_page(start)); -                init_page_count(virt_to_page(start)); -                free_page(start); -                totalram_pages++; -        } +	free_init_pages("initrd memory", start, end);  }  #endif  |