Commit d60d61f3 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux

Pull s390 fixes from Martin Schwidefsky:

 - a missing -msoft-float for the compile of the kexec purgatory

 - a fix for the dasd driver to avoid the double use of a field in the
   'struct request'

[ That latter one is being discussed, and Christoph asked for something
  cleaner, but for now it's a fix ]

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  s390/dasd: use blk_mq_rq_from_pdu for per request data
  s390/purgatory: Fix endless interrupt loop
parents 0044cdeb f0f59a2f
...@@ -21,7 +21,7 @@ LDFLAGS_purgatory.ro += -z nodefaultlib ...@@ -21,7 +21,7 @@ LDFLAGS_purgatory.ro += -z nodefaultlib
KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes KBUILD_CFLAGS := -fno-strict-aliasing -Wall -Wstrict-prototypes
KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare KBUILD_CFLAGS += -Wno-pointer-sign -Wno-sign-compare
KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding KBUILD_CFLAGS += -fno-zero-initialized-in-bss -fno-builtin -ffreestanding
KBUILD_CFLAGS += -c -MD -Os -m64 KBUILD_CFLAGS += -c -MD -Os -m64 -msoft-float
KBUILD_CFLAGS += $(call cc-option,-fno-PIE) KBUILD_CFLAGS += $(call cc-option,-fno-PIE)
$(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE $(obj)/purgatory.ro: $(PURGATORY_OBJS) FORCE
......
...@@ -3034,7 +3034,8 @@ static blk_status_t do_dasd_request(struct blk_mq_hw_ctx *hctx, ...@@ -3034,7 +3034,8 @@ static blk_status_t do_dasd_request(struct blk_mq_hw_ctx *hctx,
cqr->callback_data = req; cqr->callback_data = req;
cqr->status = DASD_CQR_FILLED; cqr->status = DASD_CQR_FILLED;
cqr->dq = dq; cqr->dq = dq;
req->completion_data = cqr; *((struct dasd_ccw_req **) blk_mq_rq_to_pdu(req)) = cqr;
blk_mq_start_request(req); blk_mq_start_request(req);
spin_lock(&block->queue_lock); spin_lock(&block->queue_lock);
list_add_tail(&cqr->blocklist, &block->ccw_queue); list_add_tail(&cqr->blocklist, &block->ccw_queue);
...@@ -3058,12 +3059,13 @@ static blk_status_t do_dasd_request(struct blk_mq_hw_ctx *hctx, ...@@ -3058,12 +3059,13 @@ static blk_status_t do_dasd_request(struct blk_mq_hw_ctx *hctx,
*/ */
enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved) enum blk_eh_timer_return dasd_times_out(struct request *req, bool reserved)
{ {
struct dasd_ccw_req *cqr = req->completion_data;
struct dasd_block *block = req->q->queuedata; struct dasd_block *block = req->q->queuedata;
struct dasd_device *device; struct dasd_device *device;
struct dasd_ccw_req *cqr;
unsigned long flags; unsigned long flags;
int rc = 0; int rc = 0;
cqr = *((struct dasd_ccw_req **) blk_mq_rq_to_pdu(req));
if (!cqr) if (!cqr)
return BLK_EH_NOT_HANDLED; return BLK_EH_NOT_HANDLED;
...@@ -3169,6 +3171,7 @@ static int dasd_alloc_queue(struct dasd_block *block) ...@@ -3169,6 +3171,7 @@ static int dasd_alloc_queue(struct dasd_block *block)
int rc; int rc;
block->tag_set.ops = &dasd_mq_ops; block->tag_set.ops = &dasd_mq_ops;
block->tag_set.cmd_size = sizeof(struct dasd_ccw_req *);
block->tag_set.nr_hw_queues = DASD_NR_HW_QUEUES; block->tag_set.nr_hw_queues = DASD_NR_HW_QUEUES;
block->tag_set.queue_depth = DASD_MAX_LCU_DEV * DASD_REQ_PER_DEV; block->tag_set.queue_depth = DASD_MAX_LCU_DEV * DASD_REQ_PER_DEV;
block->tag_set.flags = BLK_MQ_F_SHOULD_MERGE; block->tag_set.flags = BLK_MQ_F_SHOULD_MERGE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment