diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-15 03:51:44 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-04-15 03:51:44 (GMT) |
commit | bdfa54dfd9eea001274dbcd622657a904fe43b81 (patch) | |
tree | ab251ab359e519656d7061bbe8db4c7ab355404b /drivers | |
parent | 2481bc75283ea10e75d5fb1a8b42af363fc4b45c (diff) | |
parent | a1307bba1adcc9b338511180fa94a54b4c3f534b (diff) | |
download | linux-bdfa54dfd9eea001274dbcd622657a904fe43b81.tar.xz |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 updates from Martin Schwidefsky:
"The major change in this merge is the removal of the support for
31-bit kernels. Naturally 31-bit user space will continue to work via
the compat layer.
And then some cleanup, some improvements and bug fixes"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (23 commits)
s390/smp: wait until secondaries are active & online
s390/hibernate: fix save and restore of kernel text section
s390/cacheinfo: add missing facility check
s390/syscalls: simplify syscall_get_arch()
s390/irq: enforce correct irqclass_sub_desc array size
s390: remove "64" suffix from mem64.S and swsusp_asm64.S
s390/ipl: cleanup macro usage
s390/ipl: cleanup shutdown_action attributes
s390/ipl: cleanup bin attr usage
s390/uprobes: fix address space annotation
s390: add missing arch_release_task_struct() declaration
s390: make couple of functions and variables static
s390/maccess: improve s390_kernel_write()
s390/maccess: remove potentially broken probe_kernel_write()
s390/watchdog: support for KVM hypervisors and delete pr_info messages
s390/watchdog: enable KEEPALIVE for /dev/watchdog
s390/dasd: remove setting of scheduler from driver
s390/traps: panic() instead of die() on translation exception
s390: remove test_facility(2) (== z/Architecture mode active) checks
s390/cmpxchg: simplify cmpxchg_double
...
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/s390/block/dasd.c | 13 | ||||
-rw-r--r-- | drivers/s390/block/dasd_diag.h | 42 | ||||
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 6 | ||||
-rw-r--r-- | drivers/s390/block/dasd_fba.c | 2 | ||||
-rw-r--r-- | drivers/s390/char/Kconfig | 2 | ||||
-rw-r--r-- | drivers/s390/char/sclp_sdias.c | 4 | ||||
-rw-r--r-- | drivers/s390/char/zcore.c | 32 | ||||
-rw-r--r-- | drivers/s390/cio/cio.c | 2 | ||||
-rw-r--r-- | drivers/s390/cio/qdio.h | 7 | ||||
-rw-r--r-- | drivers/s390/cio/qdio_setup.c | 3 | ||||
-rw-r--r-- | drivers/s390/crypto/ap_bus.c | 24 | ||||
-rw-r--r-- | drivers/s390/net/ctcm_mpc.c | 12 | ||||
-rw-r--r-- | drivers/watchdog/diag288_wdt.c | 20 |
13 files changed, 9 insertions, 160 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index be34ef4..26a51dc 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -1237,7 +1237,6 @@ EXPORT_SYMBOL(dasd_smalloc_request); */ void dasd_kfree_request(struct dasd_ccw_req *cqr, struct dasd_device *device) { -#ifdef CONFIG_64BIT struct ccw1 *ccw; /* Clear any idals used for the request. */ @@ -1245,7 +1244,6 @@ void dasd_kfree_request(struct dasd_ccw_req *cqr, struct dasd_device *device) do { clear_normalized_cda(ccw); } while (ccw++->flags & (CCW_FLAG_CC | CCW_FLAG_DC)); -#endif kfree(cqr->cpaddr); kfree(cqr->data); kfree(cqr); @@ -2967,8 +2965,6 @@ enum blk_eh_timer_return dasd_times_out(struct request *req) */ static int dasd_alloc_queue(struct dasd_block *block) { - int rc; - block->request_queue = blk_init_queue(do_dasd_request, &block->request_queue_lock); if (block->request_queue == NULL) @@ -2976,14 +2972,7 @@ static int dasd_alloc_queue(struct dasd_block *block) block->request_queue->queuedata = block; - elevator_exit(block->request_queue->elevator); - block->request_queue->elevator = NULL; - mutex_lock(&block->request_queue->sysfs_lock); - rc = elevator_init(block->request_queue, "deadline"); - if (rc) - blk_cleanup_queue(block->request_queue); - mutex_unlock(&block->request_queue->sysfs_lock); - return rc; + return 0; } /* diff --git a/drivers/s390/block/dasd_diag.h b/drivers/s390/block/dasd_diag.h index a803cc7..e84a546 100644 --- a/drivers/s390/block/dasd_diag.h +++ b/drivers/s390/block/dasd_diag.h @@ -38,8 +38,6 @@ struct dasd_diag_characteristics { u8 rdev_features; } __attribute__ ((packed, aligned(4))); - -#ifdef CONFIG_64BIT #define DASD_DIAG_FLAGA_DEFAULT DASD_DIAG_FLAGA_FORMAT_64BIT typedef u64 blocknum_t; @@ -80,43 +78,3 @@ struct dasd_diag_rw_io { struct dasd_diag_bio *bio_list; u8 spare4[8]; } __attribute__ ((packed, aligned(8))); -#else /* CONFIG_64BIT */ -#define DASD_DIAG_FLAGA_DEFAULT 0x0 - -typedef u32 blocknum_t; -typedef s32 sblocknum_t; - -struct dasd_diag_bio { - u8 type; - u8 status; - u16 spare1; - blocknum_t block_number; - u32 alet; - void *buffer; -} __attribute__ ((packed, aligned(8))); - -struct dasd_diag_init_io { - u16 dev_nr; - u8 flaga; - u8 spare1[21]; - u32 block_size; - blocknum_t offset; - sblocknum_t start_block; - blocknum_t end_block; - u8 spare2[24]; -} __attribute__ ((packed, aligned(8))); - -struct dasd_diag_rw_io { - u16 dev_nr; - u8 flaga; - u8 spare1[21]; - u8 key; - u8 flags; - u8 spare2[2]; - u32 block_count; - u32 alet; - struct dasd_diag_bio *bio_list; - u32 interrupt_params; - u8 spare3[20]; -} __attribute__ ((packed, aligned(8))); -#endif /* CONFIG_64BIT */ diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index d47f5b9..49b48a8 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c @@ -1633,7 +1633,6 @@ static void dasd_eckd_kick_validate_server(struct dasd_device *device) static u32 get_fcx_max_data(struct dasd_device *device) { -#if defined(CONFIG_64BIT) int tpm, mdc; int fcx_in_css, fcx_in_gneq, fcx_in_features; struct dasd_eckd_private *private; @@ -1657,9 +1656,6 @@ static u32 get_fcx_max_data(struct dasd_device *device) return 0; } else return mdc * FCX_MAX_DATA_FACTOR; -#else - return 0; -#endif } /* @@ -2615,10 +2611,8 @@ static struct dasd_ccw_req *dasd_eckd_build_cp_cmd_single( /* Eckd can only do full blocks. */ return ERR_PTR(-EINVAL); count += bv.bv_len >> (block->s2b_shift + 9); -#if defined(CONFIG_64BIT) if (idal_is_needed (page_address(bv.bv_page), bv.bv_len)) cidaw += bv.bv_len >> (block->s2b_shift + 9); -#endif } /* Paranoia. */ if (count != last_rec - first_rec + 1) diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c index 2c8e68b..c9262e7 100644 --- a/drivers/s390/block/dasd_fba.c +++ b/drivers/s390/block/dasd_fba.c @@ -287,10 +287,8 @@ static struct dasd_ccw_req *dasd_fba_build_cp(struct dasd_device * memdev, /* Fba can only do full blocks. */ return ERR_PTR(-EINVAL); count += bv.bv_len >> (block->s2b_shift + 9); -#if defined(CONFIG_64BIT) if (idal_is_needed (page_address(bv.bv_page), bv.bv_len)) cidaw += bv.bv_len / blksize; -#endif } /* Paranoia. */ if (count != last_rec - first_rec + 1) diff --git a/drivers/s390/char/Kconfig b/drivers/s390/char/Kconfig index a5c6f7e..eaca3e0 100644 --- a/drivers/s390/char/Kconfig +++ b/drivers/s390/char/Kconfig @@ -115,7 +115,7 @@ config SCLP_ASYNC_ID config HMC_DRV def_tristate m prompt "Support for file transfers from HMC drive CD/DVD-ROM" - depends on S390 && 64BIT + depends on S390 select CRC16 help This option enables support for file transfers from a Hardware diff --git a/drivers/s390/char/sclp_sdias.c b/drivers/s390/char/sclp_sdias.c index 561a041..eb7cb07 100644 --- a/drivers/s390/char/sclp_sdias.c +++ b/drivers/s390/char/sclp_sdias.c @@ -178,11 +178,7 @@ int sclp_sdias_copy(void *dest, int start_blk, int nr_blks) sccb.evbuf.event_qual = SDIAS_EQ_STORE_DATA; sccb.evbuf.data_id = SDIAS_DI_FCP_DUMP; sccb.evbuf.event_id = 4712; -#ifdef CONFIG_64BIT sccb.evbuf.asa_size = SDIAS_ASA_SIZE_64; -#else - sccb.evbuf.asa_size = SDIAS_ASA_SIZE_32; -#endif sccb.evbuf.event_status = 0; sccb.evbuf.blk_cnt = nr_blks; sccb.evbuf.asa = (unsigned long)dest; diff --git a/drivers/s390/char/zcore.c b/drivers/s390/char/zcore.c index efcf484..a68fcfd 100644 --- a/drivers/s390/char/zcore.c +++ b/drivers/s390/char/zcore.c @@ -212,11 +212,7 @@ static struct zcore_header zcore_header = { .dump_level = 0, .page_size = PAGE_SIZE, .mem_start = 0, -#ifdef CONFIG_64BIT .build_arch = DUMP_ARCH_S390X, -#else - .build_arch = DUMP_ARCH_S390, -#endif }; /* @@ -516,23 +512,6 @@ static const struct file_operations zcore_hsa_fops = { .llseek = no_llseek, }; -#ifdef CONFIG_32BIT - -static void __init set_lc_mask(struct save_area *map) -{ - memset(&map->ext_save, 0xff, sizeof(map->ext_save)); - memset(&map->timer, 0xff, sizeof(map->timer)); - memset(&map->clk_cmp, 0xff, sizeof(map->clk_cmp)); - memset(&map->psw, 0xff, sizeof(map->psw)); - memset(&map->pref_reg, 0xff, sizeof(map->pref_reg)); - memset(&map->acc_regs, 0xff, sizeof(map->acc_regs)); - memset(&map->fp_regs, 0xff, sizeof(map->fp_regs)); - memset(&map->gp_regs, 0xff, sizeof(map->gp_regs)); - memset(&map->ctrl_regs, 0xff, sizeof(map->ctrl_regs)); -} - -#else /* CONFIG_32BIT */ - static void __init set_lc_mask(struct save_area *map) { memset(&map->fp_regs, 0xff, sizeof(map->fp_regs)); @@ -547,8 +526,6 @@ static void __init set_lc_mask(struct save_area *map) memset(&map->ctrl_regs, 0xff, sizeof(map->ctrl_regs)); } -#endif /* CONFIG_32BIT */ - /* * Initialize dump globals for a given architecture */ @@ -688,21 +665,12 @@ static int __init zcore_init(void) if (rc) goto fail; -#ifdef CONFIG_64BIT if (arch == ARCH_S390) { pr_alert("The 64-bit dump tool cannot be used for a " "32-bit system\n"); rc = -EINVAL; goto fail; } -#else /* CONFIG_64BIT */ - if (arch == ARCH_S390X) { - pr_alert("The 32-bit dump tool cannot be used for a " - "64-bit system\n"); - rc = -EINVAL; - goto fail; - } -#endif /* CONFIG_64BIT */ rc = get_mem_info(&mem_size, &mem_end); if (rc) diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c index 3578105..07fc5d9 100644 --- a/drivers/s390/cio/cio.c +++ b/drivers/s390/cio/cio.c @@ -143,13 +143,11 @@ cio_start_key (struct subchannel *sch, /* subchannel structure */ orb->cmd.spnd = priv->options.suspend; orb->cmd.ssic = priv->options.suspend && priv->options.inter; orb->cmd.lpm = (lpm != 0) ? lpm : sch->lpm; -#ifdef CONFIG_64BIT /* * for 64 bit we always support 64 bit IDAWs with 4k page size only */ orb->cmd.c64 = 1; orb->cmd.i2k = 0; -#endif orb->cmd.key = key >> 4; /* issue "Start Subchannel" */ orb->cmd.cpa = (__u32) __pa(cpa); diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h index a563e4c..7e70f92 100644 --- a/drivers/s390/cio/qdio.h +++ b/drivers/s390/cio/qdio.h @@ -84,7 +84,6 @@ enum qdio_irq_states { #define QDIO_SIGA_WRITEQ 0x04 #define QDIO_SIGA_QEBSM_FLAG 0x80 -#ifdef CONFIG_64BIT static inline int do_sqbs(u64 token, unsigned char state, int queue, int *start, int *count) { @@ -122,12 +121,6 @@ static inline int do_eqbs(u64 token, unsigned char *state, int queue, return (_ccq >> 32) & 0xff; } -#else -static inline int do_sqbs(u64 token, unsigned char state, int queue, - int *start, int *count) { return 0; } -static inline int do_eqbs(u64 token, unsigned char *state, int queue, - int *start, int *count, int ack) { return 0; } -#endif /* CONFIG_64BIT */ struct qdio_irq; diff --git a/drivers/s390/cio/qdio_setup.c b/drivers/s390/cio/qdio_setup.c index f76bff6..48b3866 100644 --- a/drivers/s390/cio/qdio_setup.c +++ b/drivers/s390/cio/qdio_setup.c @@ -91,10 +91,7 @@ EXPORT_SYMBOL_GPL(qdio_reset_buffers); */ static inline int qebsm_possible(void) { -#ifdef CONFIG_64BIT return css_general_characteristics.qebsm; -#endif - return 0; } /* diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 3d7f19f..f0b9871 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -165,7 +165,7 @@ static inline int ap_instructions_available(void) */ static int ap_interrupts_available(void) { - return test_facility(2) && test_facility(65); + return test_facility(65); } /** @@ -174,12 +174,10 @@ static int ap_interrupts_available(void) * * Returns 1 if AP configuration information is available. */ -#ifdef CONFIG_64BIT static int ap_configuration_available(void) { - return test_facility(2) && test_facility(12); + return test_facility(12); } -#endif /** * ap_test_queue(): Test adjunct processor queue. @@ -239,7 +237,6 @@ static inline struct ap_queue_status ap_reset_queue(ap_qid_t qid) return reg1; } -#ifdef CONFIG_64BIT /** * ap_queue_interruption_control(): Enable interruption for a specific AP. * @qid: The AP queue number @@ -261,9 +258,7 @@ ap_queue_interruption_control(ap_qid_t qid, void *ind) : "cc" ); return reg1_out; } -#endif -#ifdef CONFIG_64BIT static inline struct ap_queue_status __ap_query_functions(ap_qid_t qid, unsigned int *functions) { @@ -282,9 +277,7 @@ __ap_query_functions(ap_qid_t qid, unsigned int *functions) *functions = (unsigned int)(reg2 >> 32); return reg1; } -#endif -#ifdef CONFIG_64BIT static inline int __ap_query_configuration(struct ap_config_info *config) { register unsigned long reg0 asm ("0") = 0x04000000UL; @@ -302,7 +295,6 @@ static inline int __ap_query_configuration(struct ap_config_info *config) return reg1; } -#endif /** * ap_query_functions(): Query supported functions. @@ -317,7 +309,6 @@ static inline int __ap_query_configuration(struct ap_config_info *config) */ static int ap_query_functions(ap_qid_t qid, unsigned int *functions) { -#ifdef CONFIG_64BIT struct ap_queue_status status; int i; status = __ap_query_functions(qid, functions); @@ -348,9 +339,6 @@ static int ap_query_functions(ap_qid_t qid, unsigned int *functions) } } return -EBUSY; -#else - return -EINVAL; -#endif } /** @@ -364,7 +352,6 @@ static int ap_query_functions(ap_qid_t qid, unsigned int *functions) */ static int ap_queue_enable_interruption(ap_qid_t qid, void *ind) { -#ifdef CONFIG_64BIT struct ap_queue_status status; int t_depth, t_device_type, rc, i; @@ -404,9 +391,6 @@ static int ap_queue_enable_interruption(ap_qid_t qid, void *ind) } } return rc; -#else - return -EINVAL; -#endif } /** @@ -1238,7 +1222,6 @@ static struct bus_attribute *const ap_bus_attrs[] = { */ static void ap_query_configuration(void) { -#ifdef CONFIG_64BIT if (ap_configuration_available()) { if (!ap_configuration) ap_configuration = @@ -1248,9 +1231,6 @@ static void ap_query_configuration(void) __ap_query_configuration(ap_configuration); } else ap_configuration = NULL; -#else - ap_configuration = NULL; -#endif } /** diff --git a/drivers/s390/net/ctcm_mpc.c b/drivers/s390/net/ctcm_mpc.c index 2dbc77b..edf16bf 100644 --- a/drivers/s390/net/ctcm_mpc.c +++ b/drivers/s390/net/ctcm_mpc.c @@ -130,11 +130,7 @@ void ctcmpc_dumpit(char *buf, int len) __u32 ct, sw, rm, dup; char *ptr, *rptr; char tbuf[82], tdup[82]; - #ifdef CONFIG_64BIT char addr[22]; - #else - char addr[12]; - #endif char boff[12]; char bhex[82], duphex[82]; char basc[40]; @@ -147,11 +143,7 @@ void ctcmpc_dumpit(char *buf, int len) for (ct = 0; ct < len; ct++, ptr++, rptr++) { if (sw == 0) { - #ifdef CONFIG_64BIT sprintf(addr, "%16.16llx", (__u64)rptr); - #else - sprintf(addr, "%8.8X", (__u32)rptr); - #endif sprintf(boff, "%4.4X", (__u32)ct); bhex[0] = '\0'; @@ -162,11 +154,7 @@ void ctcmpc_dumpit(char *buf, int len) if (sw == 8) strcat(bhex, " "); - #if CONFIG_64BIT sprintf(tbuf, "%2.2llX", (__u64)*ptr); - #else - sprintf(tbuf, "%2.2X", (__u32)*ptr); - #endif tbuf[2] = '\0'; strcat(bhex, tbuf); diff --git a/drivers/watchdog/diag288_wdt.c b/drivers/watchdog/diag288_wdt.c index 429494b..a9a5210 100644 --- a/drivers/watchdog/diag288_wdt.c +++ b/drivers/watchdog/diag288_wdt.c @@ -125,9 +125,7 @@ static int wdt_start(struct watchdog_device *dev) ret = __diag288_vm(func, dev->timeout, ebc_cmd, len); WARN_ON(ret != 0); kfree(ebc_cmd); - } - - if (MACHINE_IS_LPAR) { + } else { ret = __diag288_lpar(WDT_FUNC_INIT, dev->timeout, LPARWDT_RESTART); } @@ -136,7 +134,6 @@ static int wdt_start(struct watchdog_device *dev) pr_err("The watchdog cannot be activated\n"); return ret; } - pr_info("The watchdog was activated\n"); return 0; } @@ -145,7 +142,6 @@ static int wdt_stop(struct watchdog_device *dev) int ret; ret = __diag288(WDT_FUNC_CANCEL, 0, 0, 0); - pr_info("The watchdog was deactivated\n"); return ret; } @@ -177,10 +173,9 @@ static int wdt_ping(struct watchdog_device *dev) ret = __diag288_vm(func, dev->timeout, ebc_cmd, len); WARN_ON(ret != 0); kfree(ebc_cmd); - } - - if (MACHINE_IS_LPAR) + } else { ret = __diag288_lpar(WDT_FUNC_CHANGE, dev->timeout, 0); + } if (ret) pr_err("The watchdog timer cannot be started or reset\n"); @@ -202,7 +197,7 @@ static struct watchdog_ops wdt_ops = { }; static struct watchdog_info wdt_info = { - .options = WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE, + .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE, .firmware_version = 0, .identity = "z Watchdog", }; @@ -273,21 +268,16 @@ static int __init diag288_init(void) watchdog_set_nowayout(&wdt_dev, nowayout_info); if (MACHINE_IS_VM) { - pr_info("The watchdog device driver detected a z/VM environment\n"); if (__diag288_vm(WDT_FUNC_INIT, 15, ebc_begin, sizeof(ebc_begin)) != 0) { pr_err("The watchdog cannot be initialized\n"); return -EINVAL; } - } else if (MACHINE_IS_LPAR) { - pr_info("The watchdog device driver detected an LPAR environment\n"); + } else { if (__diag288_lpar(WDT_FUNC_INIT, 30, LPARWDT_RESTART)) { pr_err("The watchdog cannot be initialized\n"); return -EINVAL; } - } else { - pr_err("Linux runs in an environment that does not support the diag288 watchdog\n"); - return -ENODEV; } if (__diag288_lpar(WDT_FUNC_CANCEL, 0, 0)) { |