diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2008-01-26 14:11:05 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2008-01-26 14:11:15 +0100 |
commit | 48483b3290988952a593c6e66ca354c19f1a4350 (patch) | |
tree | b2b11f14a2ca1a49fe61752064c8897d478536fb /drivers/s390/char | |
parent | 519580fc179be6d06a40edd918747bd5f0e1b899 (diff) |
[S390] Get rid of additional_cpus kernel parameter.
It caused only a lot of confusion. From now on cpu hotplug of up to
NR_CPUS will work by default. If somebody wants to limit that then
the possible_cpus parameter can be used.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/char')
-rw-r--r-- | drivers/s390/char/sclp_cmd.c | 46 |
1 files changed, 2 insertions, 44 deletions
diff --git a/drivers/s390/char/sclp_cmd.c b/drivers/s390/char/sclp_cmd.c index d7e6f4d65b7..b5c23396f8f 100644 --- a/drivers/s390/char/sclp_cmd.c +++ b/drivers/s390/char/sclp_cmd.c @@ -191,9 +191,6 @@ struct read_cpu_info_sccb { u8 reserved[4096 - 16]; } __attribute__((packed, aligned(PAGE_SIZE))); -static struct read_cpu_info_sccb __initdata early_read_cpu_info_sccb; -static struct sclp_cpu_info __initdata sclp_cpu_info; - static void sclp_fill_cpu_info(struct sclp_cpu_info *info, struct read_cpu_info_sccb *sccb) { @@ -208,48 +205,16 @@ static void sclp_fill_cpu_info(struct sclp_cpu_info *info, info->combined * sizeof(struct sclp_cpu_entry)); } -void __init sclp_read_cpu_info_early(void) -{ - int rc; - struct read_cpu_info_sccb *sccb; - - if (!SCLP_HAS_CPU_INFO) - return; - - sccb = &early_read_cpu_info_sccb; - do { - memset(sccb, 0, sizeof(*sccb)); - sccb->header.length = sizeof(*sccb); - rc = sclp_cmd_sync_early(SCLP_CMDW_READ_CPU_INFO, sccb); - } while (rc == -EBUSY); - - if (rc) - return; - if (sccb->header.response_code != 0x10) - return; - sclp_fill_cpu_info(&sclp_cpu_info, sccb); -} - -static int __init sclp_get_cpu_info_early(struct sclp_cpu_info *info) -{ - if (!SCLP_HAS_CPU_INFO) - return -EOPNOTSUPP; - *info = sclp_cpu_info; - return 0; -} - -static int sclp_get_cpu_info_late(struct sclp_cpu_info *info) +int sclp_get_cpu_info(struct sclp_cpu_info *info) { int rc; struct read_cpu_info_sccb *sccb; if (!SCLP_HAS_CPU_INFO) return -EOPNOTSUPP; - sccb = (struct read_cpu_info_sccb *) __get_free_page(GFP_KERNEL - | GFP_DMA); + sccb = (void *) get_zeroed_page(GFP_KERNEL | GFP_DMA); if (!sccb) return -ENOMEM; - memset(sccb, 0, sizeof(*sccb)); sccb->header.length = sizeof(*sccb); rc = do_sync_request(SCLP_CMDW_READ_CPU_INFO, sccb); if (rc) @@ -266,13 +231,6 @@ out: return rc; } -int __init_refok sclp_get_cpu_info(struct sclp_cpu_info *info) -{ - if (slab_is_available()) - return sclp_get_cpu_info_late(info); - return sclp_get_cpu_info_early(info); -} - struct cpu_configure_sccb { struct sccb_header header; } __attribute__((packed, aligned(8))); |