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.
This commit is contained in:
commit
19f2b8dfea
8 changed files with 23 additions and 19 deletions
|
@ -304,6 +304,7 @@ config ARCH_SPARSEMEM_ENABLE
|
||||||
def_bool y
|
def_bool y
|
||||||
select SPARSEMEM_VMEMMAP_ENABLE
|
select SPARSEMEM_VMEMMAP_ENABLE
|
||||||
select SPARSEMEM_VMEMMAP
|
select SPARSEMEM_VMEMMAP
|
||||||
|
select SPARSEMEM_STATIC if !64BIT
|
||||||
|
|
||||||
config ARCH_SPARSEMEM_DEFAULT
|
config ARCH_SPARSEMEM_DEFAULT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
|
@ -711,7 +711,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
|
||||||
memset(sf, 0, sizeof(struct stack_frame));
|
memset(sf, 0, sizeof(struct stack_frame));
|
||||||
sf->gprs[9] = (unsigned long) sf;
|
sf->gprs[9] = (unsigned long) sf;
|
||||||
cpu_lowcore->save_area[15] = (unsigned long) sf;
|
cpu_lowcore->save_area[15] = (unsigned long) sf;
|
||||||
__ctl_store(cpu_lowcore->cregs_save_area[0], 0, 15);
|
__ctl_store(cpu_lowcore->cregs_save_area, 0, 15);
|
||||||
asm volatile(
|
asm volatile(
|
||||||
" stam 0,15,0(%0)"
|
" stam 0,15,0(%0)"
|
||||||
: : "a" (&cpu_lowcore->access_regs_save_area) : "memory");
|
: : "a" (&cpu_lowcore->access_regs_save_area) : "memory");
|
||||||
|
|
|
@ -236,7 +236,7 @@ static int insert_memory_segment(struct memory_segment *seg)
|
||||||
{
|
{
|
||||||
struct memory_segment *tmp;
|
struct memory_segment *tmp;
|
||||||
|
|
||||||
if (seg->start + seg->size >= VMEM_MAX_PHYS ||
|
if (seg->start + seg->size > VMEM_MAX_PHYS ||
|
||||||
seg->start + seg->size < seg->start)
|
seg->start + seg->size < seg->start)
|
||||||
return -ERANGE;
|
return -ERANGE;
|
||||||
|
|
||||||
|
|
|
@ -773,6 +773,7 @@ sclp_vt220_con_init(void)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
INIT_LIST_HEAD(&sclp_vt220_register.list);
|
||||||
if (!CONSOLE_IS_SCLP)
|
if (!CONSOLE_IS_SCLP)
|
||||||
return 0;
|
return 0;
|
||||||
rc = __sclp_vt220_init();
|
rc = __sclp_vt220_init();
|
||||||
|
|
|
@ -1598,7 +1598,7 @@ tape_3590_setup_device(struct tape_device *device)
|
||||||
rc = tape_3590_read_dev_chars(device, rdc_data);
|
rc = tape_3590_read_dev_chars(device, rdc_data);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
DBF_LH(3, "Read device characteristics failed!\n");
|
DBF_LH(3, "Read device characteristics failed!\n");
|
||||||
goto fail_kmalloc;
|
goto fail_rdc_data;
|
||||||
}
|
}
|
||||||
rc = tape_std_assign(device);
|
rc = tape_std_assign(device);
|
||||||
if (rc)
|
if (rc)
|
||||||
|
|
|
@ -97,8 +97,8 @@ static int pure_hex(char **cp, unsigned int *val, int min_digit,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int parse_busid(char *str, int *cssid, int *ssid, int *devno,
|
static int parse_busid(char *str, unsigned int *cssid, unsigned int *ssid,
|
||||||
int msgtrigger)
|
unsigned int *devno, int msgtrigger)
|
||||||
{
|
{
|
||||||
char *str_work;
|
char *str_work;
|
||||||
int val, rc, ret;
|
int val, rc, ret;
|
||||||
|
@ -148,7 +148,7 @@ out:
|
||||||
static int blacklist_parse_parameters(char *str, range_action action,
|
static int blacklist_parse_parameters(char *str, range_action action,
|
||||||
int msgtrigger)
|
int msgtrigger)
|
||||||
{
|
{
|
||||||
int from_cssid, to_cssid, from_ssid, to_ssid, from, to;
|
unsigned int from_cssid, to_cssid, from_ssid, to_ssid, from, to;
|
||||||
int rc, totalrc;
|
int rc, totalrc;
|
||||||
char *parm;
|
char *parm;
|
||||||
range_action ra;
|
range_action ra;
|
||||||
|
|
|
@ -576,12 +576,14 @@ cio_validate_subchannel (struct subchannel *sch, struct subchannel_id schid)
|
||||||
err = -ENODEV;
|
err = -ENODEV;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (cio_is_console(sch->schid))
|
if (cio_is_console(sch->schid)) {
|
||||||
sch->opm = 0xff;
|
sch->opm = 0xff;
|
||||||
else
|
sch->isc = 1;
|
||||||
|
} else {
|
||||||
sch->opm = chp_get_sch_opm(sch);
|
sch->opm = chp_get_sch_opm(sch);
|
||||||
sch->lpm = sch->schib.pmcw.pam & sch->opm;
|
|
||||||
sch->isc = 3;
|
sch->isc = 3;
|
||||||
|
}
|
||||||
|
sch->lpm = sch->schib.pmcw.pam & sch->opm;
|
||||||
|
|
||||||
CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X "
|
CIO_MSG_EVENT(6, "Detected device %04x on subchannel 0.%x.%04X "
|
||||||
"- PIM = %02X, PAM = %02X, POM = %02X\n",
|
"- PIM = %02X, PAM = %02X, POM = %02X\n",
|
||||||
|
@ -704,9 +706,9 @@ void wait_cons_dev(void)
|
||||||
if (!console_subchannel_in_use)
|
if (!console_subchannel_in_use)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* disable all but isc 7 (console device) */
|
/* disable all but isc 1 (console device) */
|
||||||
__ctl_store (save_cr6, 6, 6);
|
__ctl_store (save_cr6, 6, 6);
|
||||||
cr6 = 0x01000000;
|
cr6 = 0x40000000;
|
||||||
__ctl_load (cr6, 6, 6);
|
__ctl_load (cr6, 6, 6);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -788,11 +790,11 @@ cio_probe_console(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* enable console I/O-interrupt subclass 7
|
* enable console I/O-interrupt subclass 1
|
||||||
*/
|
*/
|
||||||
ctl_set_bit(6, 24);
|
ctl_set_bit(6, 30);
|
||||||
console_subchannel.isc = 7;
|
console_subchannel.isc = 1;
|
||||||
console_subchannel.schib.pmcw.isc = 7;
|
console_subchannel.schib.pmcw.isc = 1;
|
||||||
console_subchannel.schib.pmcw.intparm =
|
console_subchannel.schib.pmcw.intparm =
|
||||||
(u32)(addr_t)&console_subchannel;
|
(u32)(addr_t)&console_subchannel;
|
||||||
ret = cio_modify(&console_subchannel);
|
ret = cio_modify(&console_subchannel);
|
||||||
|
|
|
@ -315,14 +315,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
" lctlg %1,%2,0(%0)\n" \
|
" lctlg %1,%2,0(%0)\n" \
|
||||||
: : "a" (&array), "i" (low), "i" (high), \
|
: : "a" (&array), "i" (low), "i" (high), \
|
||||||
"m" (*(addrtype *)(array))); \
|
"m" (*(addrtype *)(&array))); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define __ctl_store(array, low, high) ({ \
|
#define __ctl_store(array, low, high) ({ \
|
||||||
typedef struct { char _[sizeof(array)]; } addrtype; \
|
typedef struct { char _[sizeof(array)]; } addrtype; \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
" stctg %2,%3,0(%1)\n" \
|
" stctg %2,%3,0(%1)\n" \
|
||||||
: "=m" (*(addrtype *)(array)) \
|
: "=m" (*(addrtype *)(&array)) \
|
||||||
: "a" (&array), "i" (low), "i" (high)); \
|
: "a" (&array), "i" (low), "i" (high)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -333,14 +333,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
" lctl %1,%2,0(%0)\n" \
|
" lctl %1,%2,0(%0)\n" \
|
||||||
: : "a" (&array), "i" (low), "i" (high), \
|
: : "a" (&array), "i" (low), "i" (high), \
|
||||||
"m" (*(addrtype *)(array))); \
|
"m" (*(addrtype *)(&array))); \
|
||||||
})
|
})
|
||||||
|
|
||||||
#define __ctl_store(array, low, high) ({ \
|
#define __ctl_store(array, low, high) ({ \
|
||||||
typedef struct { char _[sizeof(array)]; } addrtype; \
|
typedef struct { char _[sizeof(array)]; } addrtype; \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
" stctl %2,%3,0(%1)\n" \
|
" stctl %2,%3,0(%1)\n" \
|
||||||
: "=m" (*(addrtype *)(array)) \
|
: "=m" (*(addrtype *)(&array)) \
|
||||||
: "a" (&array), "i" (low), "i" (high)); \
|
: "a" (&array), "i" (low), "i" (high)); \
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue