Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] tape_3590.c: introduce missing kfree
[S390] Fix __ctl_load/__ctl_store inline assembly constraints
[S390] Fix build failure in __cpu_up()
[S390] vt220 console, initialize list head before use
[S390] cio: Fix inverted isc priorities.
[S390] vmemmap: fix off-by-one bug.
[S390] cio: Fix sparse warnings in blacklist.c.
[S390] sparsemem: use SPARSEMEM_STATIC if !64BIT.

+23 -19
+1
arch/s390/Kconfig
··· 304 304 def_bool y 305 305 select SPARSEMEM_VMEMMAP_ENABLE 306 306 select SPARSEMEM_VMEMMAP 307 + select SPARSEMEM_STATIC if !64BIT 307 308 308 309 config ARCH_SPARSEMEM_DEFAULT 309 310 def_bool y
+1 -1
arch/s390/kernel/smp.c
··· 711 711 memset(sf, 0, sizeof(struct stack_frame)); 712 712 sf->gprs[9] = (unsigned long) sf; 713 713 cpu_lowcore->save_area[15] = (unsigned long) sf; 714 - __ctl_store(cpu_lowcore->cregs_save_area[0], 0, 15); 714 + __ctl_store(cpu_lowcore->cregs_save_area, 0, 15); 715 715 asm volatile( 716 716 " stam 0,15,0(%0)" 717 717 : : "a" (&cpu_lowcore->access_regs_save_area) : "memory");
+1 -1
arch/s390/mm/vmem.c
··· 236 236 { 237 237 struct memory_segment *tmp; 238 238 239 - if (seg->start + seg->size >= VMEM_MAX_PHYS || 239 + if (seg->start + seg->size > VMEM_MAX_PHYS || 240 240 seg->start + seg->size < seg->start) 241 241 return -ERANGE; 242 242
+1
drivers/s390/char/sclp_vt220.c
··· 773 773 { 774 774 int rc; 775 775 776 + INIT_LIST_HEAD(&sclp_vt220_register.list); 776 777 if (!CONSOLE_IS_SCLP) 777 778 return 0; 778 779 rc = __sclp_vt220_init();
+1 -1
drivers/s390/char/tape_3590.c
··· 1598 1598 rc = tape_3590_read_dev_chars(device, rdc_data); 1599 1599 if (rc) { 1600 1600 DBF_LH(3, "Read device characteristics failed!\n"); 1601 - goto fail_kmalloc; 1601 + goto fail_rdc_data; 1602 1602 } 1603 1603 rc = tape_std_assign(device); 1604 1604 if (rc)
+3 -3
drivers/s390/cio/blacklist.c
··· 97 97 return 0; 98 98 } 99 99 100 - static int parse_busid(char *str, int *cssid, int *ssid, int *devno, 101 - int msgtrigger) 100 + static int parse_busid(char *str, unsigned int *cssid, unsigned int *ssid, 101 + unsigned int *devno, int msgtrigger) 102 102 { 103 103 char *str_work; 104 104 int val, rc, ret; ··· 148 148 static int blacklist_parse_parameters(char *str, range_action action, 149 149 int msgtrigger) 150 150 { 151 - int from_cssid, to_cssid, from_ssid, to_ssid, from, to; 151 + unsigned int from_cssid, to_cssid, from_ssid, to_ssid, from, to; 152 152 int rc, totalrc; 153 153 char *parm; 154 154 range_action ra;
+11 -9
drivers/s390/cio/cio.c
··· 576 576 err = -ENODEV; 577 577 goto out; 578 578 } 579 - if (cio_is_console(sch->schid)) 579 + if (cio_is_console(sch->schid)) { 580 580 sch->opm = 0xff; 581 - else 581 + sch->isc = 1; 582 + } else { 582 583 sch->opm = chp_get_sch_opm(sch); 584 + sch->isc = 3; 585 + } 583 586 sch->lpm = sch->schib.pmcw.pam & sch->opm; 584 - sch->isc = 3; 585 587 586 588 CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X " 587 589 "- PIM = %02X, PAM = %02X, POM = %02X\n", ··· 706 704 if (!console_subchannel_in_use) 707 705 return; 708 706 709 - /* disable all but isc 7 (console device) */ 707 + /* disable all but isc 1 (console device) */ 710 708 __ctl_store (save_cr6, 6, 6); 711 - cr6 = 0x01000000; 709 + cr6 = 0x40000000; 712 710 __ctl_load (cr6, 6, 6); 713 711 714 712 do { ··· 790 788 } 791 789 792 790 /* 793 - * enable console I/O-interrupt subclass 7 791 + * enable console I/O-interrupt subclass 1 794 792 */ 795 - ctl_set_bit(6, 24); 796 - console_subchannel.isc = 7; 797 - console_subchannel.schib.pmcw.isc = 7; 793 + ctl_set_bit(6, 30); 794 + console_subchannel.isc = 1; 795 + console_subchannel.schib.pmcw.isc = 1; 798 796 console_subchannel.schib.pmcw.intparm = 799 797 (u32)(addr_t)&console_subchannel; 800 798 ret = cio_modify(&console_subchannel);
+4 -4
include/asm-s390/system.h
··· 315 315 asm volatile( \ 316 316 " lctlg %1,%2,0(%0)\n" \ 317 317 : : "a" (&array), "i" (low), "i" (high), \ 318 - "m" (*(addrtype *)(array))); \ 318 + "m" (*(addrtype *)(&array))); \ 319 319 }) 320 320 321 321 #define __ctl_store(array, low, high) ({ \ 322 322 typedef struct { char _[sizeof(array)]; } addrtype; \ 323 323 asm volatile( \ 324 324 " stctg %2,%3,0(%1)\n" \ 325 - : "=m" (*(addrtype *)(array)) \ 325 + : "=m" (*(addrtype *)(&array)) \ 326 326 : "a" (&array), "i" (low), "i" (high)); \ 327 327 }) 328 328 ··· 333 333 asm volatile( \ 334 334 " lctl %1,%2,0(%0)\n" \ 335 335 : : "a" (&array), "i" (low), "i" (high), \ 336 - "m" (*(addrtype *)(array))); \ 336 + "m" (*(addrtype *)(&array))); \ 337 337 }) 338 338 339 339 #define __ctl_store(array, low, high) ({ \ 340 340 typedef struct { char _[sizeof(array)]; } addrtype; \ 341 341 asm volatile( \ 342 342 " stctl %2,%3,0(%1)\n" \ 343 - : "=m" (*(addrtype *)(array)) \ 343 + : "=m" (*(addrtype *)(&array)) \ 344 344 : "a" (&array), "i" (low), "i" (high)); \ 345 345 }) 346 346