diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-07-05 08:27:42 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-07-05 08:27:42 -0400 |
commit | cf57a308436653f3094590202c77459aab250ff3 (patch) | |
tree | 8a9e7096e494141911147a1f24865c3d79d583c1 /drivers/s390 | |
parent | faac9bd0e3ce7cb0572ec66e0a426cacf6afa970 (diff) | |
parent | ca78f6baca863afe2e6a244a0fe94b3a70211d46 (diff) |
Merge branch 'master'
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/char/sclp.c | 10 | ||||
-rw-r--r-- | drivers/s390/cio/cio.c | 2 | ||||
-rw-r--r-- | drivers/s390/net/qeth_main.c | 6 | ||||
-rw-r--r-- | drivers/s390/s390mach.c | 3 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_erp.c | 8 | ||||
-rw-r--r-- | drivers/s390/scsi/zfcp_qdio.c | 9 |
6 files changed, 25 insertions, 13 deletions
diff --git a/drivers/s390/char/sclp.c b/drivers/s390/char/sclp.c index 4138564402b8..985d1613baaa 100644 --- a/drivers/s390/char/sclp.c +++ b/drivers/s390/char/sclp.c | |||
@@ -383,6 +383,7 @@ void | |||
383 | sclp_sync_wait(void) | 383 | sclp_sync_wait(void) |
384 | { | 384 | { |
385 | unsigned long psw_mask; | 385 | unsigned long psw_mask; |
386 | unsigned long flags; | ||
386 | unsigned long cr0, cr0_sync; | 387 | unsigned long cr0, cr0_sync; |
387 | u64 timeout; | 388 | u64 timeout; |
388 | 389 | ||
@@ -395,9 +396,11 @@ sclp_sync_wait(void) | |||
395 | sclp_tod_from_jiffies(sclp_request_timer.expires - | 396 | sclp_tod_from_jiffies(sclp_request_timer.expires - |
396 | jiffies); | 397 | jiffies); |
397 | } | 398 | } |
399 | local_irq_save(flags); | ||
398 | /* Prevent bottom half from executing once we force interrupts open */ | 400 | /* Prevent bottom half from executing once we force interrupts open */ |
399 | local_bh_disable(); | 401 | local_bh_disable(); |
400 | /* Enable service-signal interruption, disable timer interrupts */ | 402 | /* Enable service-signal interruption, disable timer interrupts */ |
403 | trace_hardirqs_on(); | ||
401 | __ctl_store(cr0, 0, 0); | 404 | __ctl_store(cr0, 0, 0); |
402 | cr0_sync = cr0; | 405 | cr0_sync = cr0; |
403 | cr0_sync |= 0x00000200; | 406 | cr0_sync |= 0x00000200; |
@@ -415,11 +418,10 @@ sclp_sync_wait(void) | |||
415 | barrier(); | 418 | barrier(); |
416 | cpu_relax(); | 419 | cpu_relax(); |
417 | } | 420 | } |
418 | /* Restore interrupt settings */ | 421 | local_irq_disable(); |
419 | asm volatile ("SSM 0(%0)" | ||
420 | : : "a" (&psw_mask) : "memory"); | ||
421 | __ctl_load(cr0, 0, 0); | 422 | __ctl_load(cr0, 0, 0); |
422 | __local_bh_enable(); | 423 | _local_bh_enable(); |
424 | local_irq_restore(flags); | ||
423 | } | 425 | } |
424 | 426 | ||
425 | EXPORT_SYMBOL(sclp_sync_wait); | 427 | EXPORT_SYMBOL(sclp_sync_wait); |
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c index a3423267467f..6fec90eab00e 100644 --- a/drivers/s390/cio/cio.c +++ b/drivers/s390/cio/cio.c | |||
@@ -147,7 +147,7 @@ cio_tpi(void) | |||
147 | sch->driver->irq(&sch->dev); | 147 | sch->driver->irq(&sch->dev); |
148 | spin_unlock(&sch->lock); | 148 | spin_unlock(&sch->lock); |
149 | irq_exit (); | 149 | irq_exit (); |
150 | __local_bh_enable(); | 150 | _local_bh_enable(); |
151 | return 1; | 151 | return 1; |
152 | } | 152 | } |
153 | 153 | ||
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c index 36733b9823c6..8e8963f15731 100644 --- a/drivers/s390/net/qeth_main.c +++ b/drivers/s390/net/qeth_main.c | |||
@@ -84,6 +84,8 @@ static debug_info_t *qeth_dbf_qerr = NULL; | |||
84 | 84 | ||
85 | DEFINE_PER_CPU(char[256], qeth_dbf_txt_buf); | 85 | DEFINE_PER_CPU(char[256], qeth_dbf_txt_buf); |
86 | 86 | ||
87 | static struct lock_class_key qdio_out_skb_queue_key; | ||
88 | |||
87 | /** | 89 | /** |
88 | * some more definitions and declarations | 90 | * some more definitions and declarations |
89 | */ | 91 | */ |
@@ -3229,6 +3231,9 @@ qeth_alloc_qdio_buffers(struct qeth_card *card) | |||
3229 | &card->qdio.out_qs[i]->qdio_bufs[j]; | 3231 | &card->qdio.out_qs[i]->qdio_bufs[j]; |
3230 | skb_queue_head_init(&card->qdio.out_qs[i]->bufs[j]. | 3232 | skb_queue_head_init(&card->qdio.out_qs[i]->bufs[j]. |
3231 | skb_list); | 3233 | skb_list); |
3234 | lockdep_set_class( | ||
3235 | &card->qdio.out_qs[i]->bufs[j].skb_list.lock, | ||
3236 | &qdio_out_skb_queue_key); | ||
3232 | INIT_LIST_HEAD(&card->qdio.out_qs[i]->bufs[j].ctx_list); | 3237 | INIT_LIST_HEAD(&card->qdio.out_qs[i]->bufs[j].ctx_list); |
3233 | } | 3238 | } |
3234 | } | 3239 | } |
@@ -5272,6 +5277,7 @@ qeth_free_vlan_buffer(struct qeth_card *card, struct qeth_qdio_out_buffer *buf, | |||
5272 | struct sk_buff_head tmp_list; | 5277 | struct sk_buff_head tmp_list; |
5273 | 5278 | ||
5274 | skb_queue_head_init(&tmp_list); | 5279 | skb_queue_head_init(&tmp_list); |
5280 | lockdep_set_class(&tmp_list.lock, &qdio_out_skb_queue_key); | ||
5275 | for(i = 0; i < QETH_MAX_BUFFER_ELEMENTS(card); ++i){ | 5281 | for(i = 0; i < QETH_MAX_BUFFER_ELEMENTS(card); ++i){ |
5276 | while ((skb = skb_dequeue(&buf->skb_list))){ | 5282 | while ((skb = skb_dequeue(&buf->skb_list))){ |
5277 | if (vlan_tx_tag_present(skb) && | 5283 | if (vlan_tx_tag_present(skb) && |
diff --git a/drivers/s390/s390mach.c b/drivers/s390/s390mach.c index 432136f96e64..ffb3677e354f 100644 --- a/drivers/s390/s390mach.c +++ b/drivers/s390/s390mach.c | |||
@@ -378,6 +378,8 @@ s390_do_machine_check(struct pt_regs *regs) | |||
378 | struct mcck_struct *mcck; | 378 | struct mcck_struct *mcck; |
379 | int umode; | 379 | int umode; |
380 | 380 | ||
381 | lockdep_off(); | ||
382 | |||
381 | mci = (struct mci *) &S390_lowcore.mcck_interruption_code; | 383 | mci = (struct mci *) &S390_lowcore.mcck_interruption_code; |
382 | mcck = &__get_cpu_var(cpu_mcck); | 384 | mcck = &__get_cpu_var(cpu_mcck); |
383 | umode = user_mode(regs); | 385 | umode = user_mode(regs); |
@@ -482,6 +484,7 @@ s390_do_machine_check(struct pt_regs *regs) | |||
482 | mcck->warning = 1; | 484 | mcck->warning = 1; |
483 | set_thread_flag(TIF_MCCK_PENDING); | 485 | set_thread_flag(TIF_MCCK_PENDING); |
484 | } | 486 | } |
487 | lockdep_on(); | ||
485 | } | 488 | } |
486 | 489 | ||
487 | /* | 490 | /* |
diff --git a/drivers/s390/scsi/zfcp_erp.c b/drivers/s390/scsi/zfcp_erp.c index 909731b99d26..8ec8da0beaa8 100644 --- a/drivers/s390/scsi/zfcp_erp.c +++ b/drivers/s390/scsi/zfcp_erp.c | |||
@@ -2168,9 +2168,9 @@ zfcp_erp_adapter_strategy_open_fsf_xconfig(struct zfcp_erp_action *erp_action) | |||
2168 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT, | 2168 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_HOST_CON_INIT, |
2169 | &adapter->status); | 2169 | &adapter->status); |
2170 | ZFCP_LOG_DEBUG("Doing exchange config data\n"); | 2170 | ZFCP_LOG_DEBUG("Doing exchange config data\n"); |
2171 | write_lock(&adapter->erp_lock); | 2171 | write_lock_irq(&adapter->erp_lock); |
2172 | zfcp_erp_action_to_running(erp_action); | 2172 | zfcp_erp_action_to_running(erp_action); |
2173 | write_unlock(&adapter->erp_lock); | 2173 | write_unlock_irq(&adapter->erp_lock); |
2174 | zfcp_erp_timeout_init(erp_action); | 2174 | zfcp_erp_timeout_init(erp_action); |
2175 | if (zfcp_fsf_exchange_config_data(erp_action)) { | 2175 | if (zfcp_fsf_exchange_config_data(erp_action)) { |
2176 | retval = ZFCP_ERP_FAILED; | 2176 | retval = ZFCP_ERP_FAILED; |
@@ -2236,9 +2236,9 @@ zfcp_erp_adapter_strategy_open_fsf_xport(struct zfcp_erp_action *erp_action) | |||
2236 | adapter = erp_action->adapter; | 2236 | adapter = erp_action->adapter; |
2237 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status); | 2237 | atomic_clear_mask(ZFCP_STATUS_ADAPTER_XPORT_OK, &adapter->status); |
2238 | 2238 | ||
2239 | write_lock(&adapter->erp_lock); | 2239 | write_lock_irq(&adapter->erp_lock); |
2240 | zfcp_erp_action_to_running(erp_action); | 2240 | zfcp_erp_action_to_running(erp_action); |
2241 | write_unlock(&adapter->erp_lock); | 2241 | write_unlock_irq(&adapter->erp_lock); |
2242 | 2242 | ||
2243 | zfcp_erp_timeout_init(erp_action); | 2243 | zfcp_erp_timeout_init(erp_action); |
2244 | ret = zfcp_fsf_exchange_port_data(erp_action, adapter, NULL); | 2244 | ret = zfcp_fsf_exchange_port_data(erp_action, adapter, NULL); |
diff --git a/drivers/s390/scsi/zfcp_qdio.c b/drivers/s390/scsi/zfcp_qdio.c index 345a191926a4..49ea5add4abc 100644 --- a/drivers/s390/scsi/zfcp_qdio.c +++ b/drivers/s390/scsi/zfcp_qdio.c | |||
@@ -427,6 +427,7 @@ int | |||
427 | zfcp_qdio_reqid_check(struct zfcp_adapter *adapter, void *sbale_addr) | 427 | zfcp_qdio_reqid_check(struct zfcp_adapter *adapter, void *sbale_addr) |
428 | { | 428 | { |
429 | struct zfcp_fsf_req *fsf_req; | 429 | struct zfcp_fsf_req *fsf_req; |
430 | unsigned long flags; | ||
430 | 431 | ||
431 | /* invalid (per convention used in this driver) */ | 432 | /* invalid (per convention used in this driver) */ |
432 | if (unlikely(!sbale_addr)) { | 433 | if (unlikely(!sbale_addr)) { |
@@ -438,15 +439,15 @@ zfcp_qdio_reqid_check(struct zfcp_adapter *adapter, void *sbale_addr) | |||
438 | fsf_req = (struct zfcp_fsf_req *) sbale_addr; | 439 | fsf_req = (struct zfcp_fsf_req *) sbale_addr; |
439 | 440 | ||
440 | /* serialize with zfcp_fsf_req_dismiss_all */ | 441 | /* serialize with zfcp_fsf_req_dismiss_all */ |
441 | spin_lock(&adapter->fsf_req_list_lock); | 442 | spin_lock_irqsave(&adapter->fsf_req_list_lock, flags); |
442 | if (list_empty(&adapter->fsf_req_list_head)) { | 443 | if (list_empty(&adapter->fsf_req_list_head)) { |
443 | spin_unlock(&adapter->fsf_req_list_lock); | 444 | spin_unlock_irqrestore(&adapter->fsf_req_list_lock, flags); |
444 | return 0; | 445 | return 0; |
445 | } | 446 | } |
446 | list_del(&fsf_req->list); | 447 | list_del(&fsf_req->list); |
447 | atomic_dec(&adapter->fsf_reqs_active); | 448 | atomic_dec(&adapter->fsf_reqs_active); |
448 | spin_unlock(&adapter->fsf_req_list_lock); | 449 | spin_unlock_irqrestore(&adapter->fsf_req_list_lock, flags); |
449 | 450 | ||
450 | if (unlikely(adapter != fsf_req->adapter)) { | 451 | if (unlikely(adapter != fsf_req->adapter)) { |
451 | ZFCP_LOG_NORMAL("bug: invalid reqid (fsf_req=%p, " | 452 | ZFCP_LOG_NORMAL("bug: invalid reqid (fsf_req=%p, " |
452 | "fsf_req->adapter=%p, adapter=%p)\n", | 453 | "fsf_req->adapter=%p, adapter=%p)\n", |