diff options
| -rw-r--r-- | drivers/s390/char/con3215.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/s390/char/con3215.c b/drivers/s390/char/con3215.c index 1c1dae0deea3..33b7141a182f 100644 --- a/drivers/s390/char/con3215.c +++ b/drivers/s390/char/con3215.c | |||
| @@ -44,6 +44,7 @@ | |||
| 44 | #define RAW3215_NR_CCWS 3 | 44 | #define RAW3215_NR_CCWS 3 |
| 45 | #define RAW3215_TIMEOUT HZ/10 /* time for delayed output */ | 45 | #define RAW3215_TIMEOUT HZ/10 /* time for delayed output */ |
| 46 | 46 | ||
| 47 | #define RAW3215_FIXED 1 /* 3215 console device is not be freed */ | ||
| 47 | #define RAW3215_WORKING 4 /* set if a request is being worked on */ | 48 | #define RAW3215_WORKING 4 /* set if a request is being worked on */ |
| 48 | #define RAW3215_THROTTLED 8 /* set if reading is disabled */ | 49 | #define RAW3215_THROTTLED 8 /* set if reading is disabled */ |
| 49 | #define RAW3215_STOPPED 16 /* set if writing is disabled */ | 50 | #define RAW3215_STOPPED 16 /* set if writing is disabled */ |
| @@ -630,7 +631,8 @@ static void raw3215_shutdown(struct raw3215_info *raw) | |||
| 630 | DECLARE_WAITQUEUE(wait, current); | 631 | DECLARE_WAITQUEUE(wait, current); |
| 631 | unsigned long flags; | 632 | unsigned long flags; |
| 632 | 633 | ||
| 633 | if (!(raw->port.flags & ASYNC_INITIALIZED)) | 634 | if (!(raw->port.flags & ASYNC_INITIALIZED) || |
| 635 | (raw->flags & RAW3215_FIXED)) | ||
| 634 | return; | 636 | return; |
| 635 | /* Wait for outstanding requests, then free irq */ | 637 | /* Wait for outstanding requests, then free irq */ |
| 636 | spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags); | 638 | spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags); |
| @@ -927,6 +929,8 @@ static int __init con3215_init(void) | |||
| 927 | dev_set_drvdata(&cdev->dev, raw); | 929 | dev_set_drvdata(&cdev->dev, raw); |
| 928 | cdev->handler = raw3215_irq; | 930 | cdev->handler = raw3215_irq; |
| 929 | 931 | ||
| 932 | raw->flags |= RAW3215_FIXED; | ||
| 933 | |||
| 930 | /* Request the console irq */ | 934 | /* Request the console irq */ |
| 931 | if (raw3215_startup(raw) != 0) { | 935 | if (raw3215_startup(raw) != 0) { |
| 932 | raw3215_free_info(raw); | 936 | raw3215_free_info(raw); |
