aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/hypfs/inode.c6
-rw-r--r--arch/s390/include/asm/jump_label.h2
-rw-r--r--arch/s390/include/asm/perf_event.h1
-rw-r--r--arch/s390/include/asm/qeth.h7
-rw-r--r--arch/s390/include/asm/socket.h4
-rw-r--r--arch/s390/kernel/irq.c9
-rw-r--r--arch/s390/kernel/process.c4
-rw-r--r--arch/s390/kernel/smp.c6
8 files changed, 16 insertions, 23 deletions
diff --git a/arch/s390/hypfs/inode.c b/arch/s390/hypfs/inode.c
index 8a2a887478cc..6a2cb560e968 100644
--- a/arch/s390/hypfs/inode.c
+++ b/arch/s390/hypfs/inode.c
@@ -293,11 +293,9 @@ static int hypfs_fill_super(struct super_block *sb, void *data, int silent)
293 return -ENOMEM; 293 return -ENOMEM;
294 root_inode->i_op = &simple_dir_inode_operations; 294 root_inode->i_op = &simple_dir_inode_operations;
295 root_inode->i_fop = &simple_dir_operations; 295 root_inode->i_fop = &simple_dir_operations;
296 sb->s_root = root_dentry = d_alloc_root(root_inode); 296 sb->s_root = root_dentry = d_make_root(root_inode);
297 if (!root_dentry) { 297 if (!root_dentry)
298 iput(root_inode);
299 return -ENOMEM; 298 return -ENOMEM;
300 }
301 if (MACHINE_IS_VM) 299 if (MACHINE_IS_VM)
302 rc = hypfs_vm_create_files(sb, root_dentry); 300 rc = hypfs_vm_create_files(sb, root_dentry);
303 else 301 else
diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h
index 95a6cf2b5b67..6c32190dc73e 100644
--- a/arch/s390/include/asm/jump_label.h
+++ b/arch/s390/include/asm/jump_label.h
@@ -13,7 +13,7 @@
13#define ASM_ALIGN ".balign 4" 13#define ASM_ALIGN ".balign 4"
14#endif 14#endif
15 15
16static __always_inline bool arch_static_branch(struct jump_label_key *key) 16static __always_inline bool arch_static_branch(struct static_key *key)
17{ 17{
18 asm goto("0: brcl 0,0\n" 18 asm goto("0: brcl 0,0\n"
19 ".pushsection __jump_table, \"aw\"\n" 19 ".pushsection __jump_table, \"aw\"\n"
diff --git a/arch/s390/include/asm/perf_event.h b/arch/s390/include/asm/perf_event.h
index a75f168d2718..4eb444edbe49 100644
--- a/arch/s390/include/asm/perf_event.h
+++ b/arch/s390/include/asm/perf_event.h
@@ -6,4 +6,3 @@
6 6
7/* Empty, just to avoid compiling error */ 7/* Empty, just to avoid compiling error */
8 8
9#define PERF_EVENT_INDEX_OFFSET 0
diff --git a/arch/s390/include/asm/qeth.h b/arch/s390/include/asm/qeth.h
index 90efda0b137d..2c7c898c03e4 100644
--- a/arch/s390/include/asm/qeth.h
+++ b/arch/s390/include/asm/qeth.h
@@ -20,6 +20,7 @@
20#define SIOC_QETH_ARP_FLUSH_CACHE (SIOCDEVPRIVATE + 4) 20#define SIOC_QETH_ARP_FLUSH_CACHE (SIOCDEVPRIVATE + 4)
21#define SIOC_QETH_ADP_SET_SNMP_CONTROL (SIOCDEVPRIVATE + 5) 21#define SIOC_QETH_ADP_SET_SNMP_CONTROL (SIOCDEVPRIVATE + 5)
22#define SIOC_QETH_GET_CARD_TYPE (SIOCDEVPRIVATE + 6) 22#define SIOC_QETH_GET_CARD_TYPE (SIOCDEVPRIVATE + 6)
23#define SIOC_QETH_QUERY_OAT (SIOCDEVPRIVATE + 7)
23 24
24struct qeth_arp_cache_entry { 25struct qeth_arp_cache_entry {
25 __u8 macaddr[6]; 26 __u8 macaddr[6];
@@ -107,4 +108,10 @@ struct qeth_arp_query_user_data {
107 char *entries; 108 char *entries;
108} __attribute__((packed)); 109} __attribute__((packed));
109 110
111struct qeth_query_oat_data {
112 __u32 command;
113 __u32 buffer_len;
114 __u32 response_len;
115 __u64 ptr;
116};
110#endif /* __ASM_S390_QETH_IOCTL_H__ */ 117#endif /* __ASM_S390_QETH_IOCTL_H__ */
diff --git a/arch/s390/include/asm/socket.h b/arch/s390/include/asm/socket.h
index 67b5c1b14b51..c91b720965c0 100644
--- a/arch/s390/include/asm/socket.h
+++ b/arch/s390/include/asm/socket.h
@@ -72,5 +72,9 @@
72 72
73#define SO_WIFI_STATUS 41 73#define SO_WIFI_STATUS 41
74#define SCM_WIFI_STATUS SO_WIFI_STATUS 74#define SCM_WIFI_STATUS SO_WIFI_STATUS
75#define SO_PEEK_OFF 42
76
77/* Instruct lower device to use last 4-bytes of skb data as FCS */
78#define SO_NOFCS 43
75 79
76#endif /* _ASM_SOCKET_H */ 80#endif /* _ASM_SOCKET_H */
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c
index 7a97d57f7073..2429ecd68872 100644
--- a/arch/s390/kernel/irq.c
+++ b/arch/s390/kernel/irq.c
@@ -165,13 +165,6 @@ static inline int ext_hash(u16 code)
165 return (code + (code >> 9)) & 0xff; 165 return (code + (code >> 9)) & 0xff;
166} 166}
167 167
168static void ext_int_hash_update(struct rcu_head *head)
169{
170 struct ext_int_info *p = container_of(head, struct ext_int_info, rcu);
171
172 kfree(p);
173}
174
175int register_external_interrupt(u16 code, ext_int_handler_t handler) 168int register_external_interrupt(u16 code, ext_int_handler_t handler)
176{ 169{
177 struct ext_int_info *p; 170 struct ext_int_info *p;
@@ -202,7 +195,7 @@ int unregister_external_interrupt(u16 code, ext_int_handler_t handler)
202 list_for_each_entry_rcu(p, &ext_int_hash[index], entry) 195 list_for_each_entry_rcu(p, &ext_int_hash[index], entry)
203 if (p->code == code && p->handler == handler) { 196 if (p->code == code && p->handler == handler) {
204 list_del_rcu(&p->entry); 197 list_del_rcu(&p->entry);
205 call_rcu(&p->rcu, ext_int_hash_update); 198 kfree_rcu(p, rcu);
206 } 199 }
207 spin_unlock_irqrestore(&ext_int_hash_lock, flags); 200 spin_unlock_irqrestore(&ext_int_hash_lock, flags);
208 return 0; 201 return 0;
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 78b3c149b8b6..3732e4c09cbe 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -92,9 +92,7 @@ void cpu_idle(void)
92 tick_nohz_idle_exit(); 92 tick_nohz_idle_exit();
93 if (test_thread_flag(TIF_MCCK_PENDING)) 93 if (test_thread_flag(TIF_MCCK_PENDING))
94 s390_handle_mcck(); 94 s390_handle_mcck();
95 preempt_enable_no_resched(); 95 schedule_preempt_disabled();
96 schedule();
97 preempt_disable();
98 } 96 }
99} 97}
100 98
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 64ebbcbb31ea..a8bf9994b086 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -714,12 +714,6 @@ static void __cpuinit smp_start_secondary(void *cpuvoid)
714 ipi_call_lock(); 714 ipi_call_lock();
715 set_cpu_online(smp_processor_id(), true); 715 set_cpu_online(smp_processor_id(), true);
716 ipi_call_unlock(); 716 ipi_call_unlock();
717 /*
718 * Wait until the cpu which brought this one up marked it
719 * active before enabling interrupts.
720 */
721 while (!cpumask_test_cpu(smp_processor_id(), cpu_active_mask))
722 cpu_relax();
723 local_irq_enable(); 717 local_irq_enable();
724 /* cpu_idle will call schedule for us */ 718 /* cpu_idle will call schedule for us */
725 cpu_idle(); 719 cpu_idle();