diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2008-04-17 01:46:31 -0400 |
---|---|---|
committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2008-04-17 01:47:07 -0400 |
commit | ca68305bf3c76c4a7cd1c77d5423219f39164df8 (patch) | |
tree | dc73a7d9eb53a47d16690e8106a097aa8f601866 /arch/s390/mm | |
parent | 9e74a6b8983c2653dd2a6f51e634efa281e95d59 (diff) |
[S390] Remove code duplication from monreader / dcssblk.
Move the function that prints the segment warning messages found in the
monreader driver and the dcssblk driver to the extmem base code.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'arch/s390/mm')
-rw-r--r-- | arch/s390/mm/extmem.c | 67 |
1 files changed, 52 insertions, 15 deletions
diff --git a/arch/s390/mm/extmem.c b/arch/s390/mm/extmem.c index 880b0ebf894b..ed2af0a3303b 100644 --- a/arch/s390/mm/extmem.c +++ b/arch/s390/mm/extmem.c | |||
@@ -289,22 +289,8 @@ __segment_load (char *name, int do_nonshared, unsigned long *addr, unsigned long | |||
289 | 289 | ||
290 | rc = add_shared_memory(seg->start_addr, seg->end - seg->start_addr + 1); | 290 | rc = add_shared_memory(seg->start_addr, seg->end - seg->start_addr + 1); |
291 | 291 | ||
292 | switch (rc) { | 292 | if (rc) |
293 | case 0: | ||
294 | break; | ||
295 | case -ENOSPC: | ||
296 | PRINT_WARN("segment_load: not loading segment %s - overlaps " | ||
297 | "storage/segment\n", name); | ||
298 | goto out_free; | ||
299 | case -ERANGE: | ||
300 | PRINT_WARN("segment_load: not loading segment %s - exceeds " | ||
301 | "kernel mapping range\n", name); | ||
302 | goto out_free; | ||
303 | default: | ||
304 | PRINT_WARN("segment_load: not loading segment %s (rc: %d)\n", | ||
305 | name, rc); | ||
306 | goto out_free; | 293 | goto out_free; |
307 | } | ||
308 | 294 | ||
309 | seg->res = kzalloc(sizeof(struct resource), GFP_KERNEL); | 295 | seg->res = kzalloc(sizeof(struct resource), GFP_KERNEL); |
310 | if (seg->res == NULL) { | 296 | if (seg->res == NULL) { |
@@ -582,8 +568,59 @@ out: | |||
582 | mutex_unlock(&dcss_lock); | 568 | mutex_unlock(&dcss_lock); |
583 | } | 569 | } |
584 | 570 | ||
571 | /* | ||
572 | * print appropriate error message for segment_load()/segment_type() | ||
573 | * return code | ||
574 | */ | ||
575 | void segment_warning(int rc, char *seg_name) | ||
576 | { | ||
577 | switch (rc) { | ||
578 | case -ENOENT: | ||
579 | PRINT_WARN("cannot load/query segment %s, " | ||
580 | "does not exist\n", seg_name); | ||
581 | break; | ||
582 | case -ENOSYS: | ||
583 | PRINT_WARN("cannot load/query segment %s, " | ||
584 | "not running on VM\n", seg_name); | ||
585 | break; | ||
586 | case -EIO: | ||
587 | PRINT_WARN("cannot load/query segment %s, " | ||
588 | "hardware error\n", seg_name); | ||
589 | break; | ||
590 | case -ENOTSUPP: | ||
591 | PRINT_WARN("cannot load/query segment %s, " | ||
592 | "is a multi-part segment\n", seg_name); | ||
593 | break; | ||
594 | case -ENOSPC: | ||
595 | PRINT_WARN("cannot load/query segment %s, " | ||
596 | "overlaps with storage\n", seg_name); | ||
597 | break; | ||
598 | case -EBUSY: | ||
599 | PRINT_WARN("cannot load/query segment %s, " | ||
600 | "overlaps with already loaded dcss\n", seg_name); | ||
601 | break; | ||
602 | case -EPERM: | ||
603 | PRINT_WARN("cannot load/query segment %s, " | ||
604 | "already loaded in incompatible mode\n", seg_name); | ||
605 | break; | ||
606 | case -ENOMEM: | ||
607 | PRINT_WARN("cannot load/query segment %s, " | ||
608 | "out of memory\n", seg_name); | ||
609 | break; | ||
610 | case -ERANGE: | ||
611 | PRINT_WARN("cannot load/query segment %s, " | ||
612 | "exceeds kernel mapping range\n", seg_name); | ||
613 | break; | ||
614 | default: | ||
615 | PRINT_WARN("cannot load/query segment %s, " | ||
616 | "return value %i\n", seg_name, rc); | ||
617 | break; | ||
618 | } | ||
619 | } | ||
620 | |||
585 | EXPORT_SYMBOL(segment_load); | 621 | EXPORT_SYMBOL(segment_load); |
586 | EXPORT_SYMBOL(segment_unload); | 622 | EXPORT_SYMBOL(segment_unload); |
587 | EXPORT_SYMBOL(segment_save); | 623 | EXPORT_SYMBOL(segment_save); |
588 | EXPORT_SYMBOL(segment_type); | 624 | EXPORT_SYMBOL(segment_type); |
589 | EXPORT_SYMBOL(segment_modify_shared); | 625 | EXPORT_SYMBOL(segment_modify_shared); |
626 | EXPORT_SYMBOL(segment_warning); | ||