diff options
author | Stefan Weinhuber <wein@de.ibm.com> | 2009-06-12 04:26:36 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-06-12 04:27:35 -0400 |
commit | 45b44d76d373e66d08e0c745dc82ff9123103588 (patch) | |
tree | 5a871000e9174f6be94a457625bcf1413b3386ea /drivers/s390/block/dasd_eckd.c | |
parent | d0591485e15ccd908f91058f7da134248dcdbbb3 (diff) |
[S390] dasd: no High Performance FICON in 31-bit mode
The High Performance FICON feature is not supported in 31-bit mode,
no matter what the various flags say. So we need to check for the
CONFIG_64BIT option as well.
Signed-off-by: Stefan Weinhuber <wein@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block/dasd_eckd.c')
-rw-r--r-- | drivers/s390/block/dasd_eckd.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/s390/block/dasd_eckd.c b/drivers/s390/block/dasd_eckd.c index a41c94053e64..81f8819eaf19 100644 --- a/drivers/s390/block/dasd_eckd.c +++ b/drivers/s390/block/dasd_eckd.c | |||
@@ -2336,9 +2336,10 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev, | |||
2336 | { | 2336 | { |
2337 | int tpm, cmdrtd, cmdwtd; | 2337 | int tpm, cmdrtd, cmdwtd; |
2338 | int use_prefix; | 2338 | int use_prefix; |
2339 | 2339 | #if defined(CONFIG_64BIT) | |
2340 | struct dasd_eckd_private *private; | ||
2341 | int fcx_in_css, fcx_in_gneq, fcx_in_features; | 2340 | int fcx_in_css, fcx_in_gneq, fcx_in_features; |
2341 | #endif | ||
2342 | struct dasd_eckd_private *private; | ||
2342 | struct dasd_device *basedev; | 2343 | struct dasd_device *basedev; |
2343 | sector_t first_rec, last_rec; | 2344 | sector_t first_rec, last_rec; |
2344 | sector_t first_trk, last_trk; | 2345 | sector_t first_trk, last_trk; |
@@ -2361,11 +2362,15 @@ static struct dasd_ccw_req *dasd_eckd_build_cp(struct dasd_device *startdev, | |||
2361 | last_offs = sector_div(last_trk, blk_per_trk); | 2362 | last_offs = sector_div(last_trk, blk_per_trk); |
2362 | cdlspecial = (private->uses_cdl && first_rec < 2*blk_per_trk); | 2363 | cdlspecial = (private->uses_cdl && first_rec < 2*blk_per_trk); |
2363 | 2364 | ||
2364 | /* is transport mode supported ? */ | 2365 | /* is transport mode supported? */ |
2366 | #if defined(CONFIG_64BIT) | ||
2365 | fcx_in_css = css_general_characteristics.fcx; | 2367 | fcx_in_css = css_general_characteristics.fcx; |
2366 | fcx_in_gneq = private->gneq->reserved2[7] & 0x04; | 2368 | fcx_in_gneq = private->gneq->reserved2[7] & 0x04; |
2367 | fcx_in_features = private->features.feature[40] & 0x80; | 2369 | fcx_in_features = private->features.feature[40] & 0x80; |
2368 | tpm = fcx_in_css && fcx_in_gneq && fcx_in_features; | 2370 | tpm = fcx_in_css && fcx_in_gneq && fcx_in_features; |
2371 | #else | ||
2372 | tpm = 0; | ||
2373 | #endif | ||
2369 | 2374 | ||
2370 | /* is read track data and write track data in command mode supported? */ | 2375 | /* is read track data and write track data in command mode supported? */ |
2371 | cmdrtd = private->features.feature[9] & 0x20; | 2376 | cmdrtd = private->features.feature[9] & 0x20; |