forked from Minki/linux
[S390] memory detection: fix off by one bug.
diag 260 returns the address of the last addressable byte and not the size of memory. Since we want the size we have to add 1 to the return value. Disable diag 260 for non z/Arch mode since it doesn't work there anyway. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
dcc49d460c
commit
257c6e1ce8
@ -141,9 +141,9 @@ static noinline __init void detect_machine_type(void)
|
||||
machine_flags |= 4;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
static noinline __init int memory_fast_detect(void)
|
||||
{
|
||||
|
||||
unsigned long val0 = 0;
|
||||
unsigned long val1 = 0xc;
|
||||
int ret = -ENOSYS;
|
||||
@ -161,9 +161,15 @@ static noinline __init int memory_fast_detect(void)
|
||||
if (ret || val0 != val1)
|
||||
return -ENOSYS;
|
||||
|
||||
memory_chunk[0].size = val0;
|
||||
memory_chunk[0].size = val0 + 1;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static inline int memory_fast_detect(void)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif
|
||||
|
||||
#define ADDR2G (1UL << 31)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user