diff options
Diffstat (limited to 'drivers/mmc')
| -rw-r--r-- | drivers/mmc/core/block.c | 37 | ||||
| -rw-r--r-- | drivers/mmc/core/queue.c | 3 | ||||
| -rw-r--r-- | drivers/mmc/host/sdhci-pci-core.c | 9 | 
3 files changed, 26 insertions, 23 deletions
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 8273b078686d..6ff94a948a4b 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -1184,9 +1184,10 @@ static void mmc_blk_issue_discard_rq(struct mmc_queue *mq, struct request *req)  	struct mmc_card *card = md->queue.card;  	unsigned int from, nr, arg;  	int err = 0, type = MMC_BLK_DISCARD; +	blk_status_t status = BLK_STS_OK;  	if (!mmc_can_erase(card)) { -		err = -EOPNOTSUPP; +		status = BLK_STS_NOTSUPP;  		goto fail;  	} @@ -1212,10 +1213,12 @@ static void mmc_blk_issue_discard_rq(struct mmc_queue *mq, struct request *req)  		if (!err)  			err = mmc_erase(card, from, nr, arg);  	} while (err == -EIO && !mmc_blk_reset(md, card->host, type)); -	if (!err) +	if (err) +		status = BLK_STS_IOERR; +	else  		mmc_blk_reset_success(md, type);  fail: -	blk_end_request(req, err, blk_rq_bytes(req)); +	blk_end_request(req, status, blk_rq_bytes(req));  }  static void mmc_blk_issue_secdiscard_rq(struct mmc_queue *mq, @@ -1225,9 +1228,10 @@ static void mmc_blk_issue_secdiscard_rq(struct mmc_queue *mq,  	struct mmc_card *card = md->queue.card;  	unsigned int from, nr, arg;  	int err = 0, type = MMC_BLK_SECDISCARD; +	blk_status_t status = BLK_STS_OK;  	if (!(mmc_can_secure_erase_trim(card))) { -		err = -EOPNOTSUPP; +		status = BLK_STS_NOTSUPP;  		goto out;  	} @@ -1254,8 +1258,10 @@ retry:  	err = mmc_erase(card, from, nr, arg);  	if (err == -EIO)  		goto out_retry; -	if (err) +	if (err) { +		status = BLK_STS_IOERR;  		goto out; +	}  	if (arg == MMC_SECURE_TRIM1_ARG) {  		if (card->quirks & MMC_QUIRK_INAND_CMD38) { @@ -1270,8 +1276,10 @@ retry:  		err = mmc_erase(card, from, nr, MMC_SECURE_TRIM2_ARG);  		if (err == -EIO)  			goto out_retry; -		if (err) +		if (err) { +			status = BLK_STS_IOERR;  			goto out; +		}  	}  out_retry: @@ -1280,7 +1288,7 @@ out_retry:  	if (!err)  		mmc_blk_reset_success(md, type);  out: -	blk_end_request(req, err, blk_rq_bytes(req)); +	blk_end_request(req, status, blk_rq_bytes(req));  }  static void mmc_blk_issue_flush(struct mmc_queue *mq, struct request *req) @@ -1290,10 +1298,7 @@ static void mmc_blk_issue_flush(struct mmc_queue *mq, struct request *req)  	int ret = 0;  	ret = mmc_flush_cache(card); -	if (ret) -		ret = -EIO; - -	blk_end_request_all(req, ret); +	blk_end_request_all(req, ret ? BLK_STS_IOERR : BLK_STS_OK);  }  /* @@ -1641,7 +1646,7 @@ static void mmc_blk_rw_cmd_abort(struct mmc_queue *mq, struct mmc_card *card,  {  	if (mmc_card_removed(card))  		req->rq_flags |= RQF_QUIET; -	while (blk_end_request(req, -EIO, blk_rq_cur_bytes(req))); +	while (blk_end_request(req, BLK_STS_IOERR, blk_rq_cur_bytes(req)));  	mmc_queue_req_free(mq, mqrq);  } @@ -1661,7 +1666,7 @@ static void mmc_blk_rw_try_restart(struct mmc_queue *mq, struct request *req,  	 */  	if (mmc_card_removed(mq->card)) {  		req->rq_flags |= RQF_QUIET; -		blk_end_request_all(req, -EIO); +		blk_end_request_all(req, BLK_STS_IOERR);  		mmc_queue_req_free(mq, mqrq);  		return;  	} @@ -1743,7 +1748,7 @@ static void mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *new_req)  			 */  			mmc_blk_reset_success(md, type); -			req_pending = blk_end_request(old_req, 0, +			req_pending = blk_end_request(old_req, BLK_STS_OK,  						      brq->data.bytes_xfered);  			/*  			 * If the blk_end_request function returns non-zero even @@ -1811,7 +1816,7 @@ static void mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *new_req)  			 * time, so we only reach here after trying to  			 * read a single sector.  			 */ -			req_pending = blk_end_request(old_req, -EIO, +			req_pending = blk_end_request(old_req, BLK_STS_IOERR,  						      brq->data.blksz);  			if (!req_pending) {  				mmc_queue_req_free(mq, mq_rq); @@ -1860,7 +1865,7 @@ void mmc_blk_issue_rq(struct mmc_queue *mq, struct request *req)  	ret = mmc_blk_part_switch(card, md);  	if (ret) {  		if (req) { -			blk_end_request_all(req, -EIO); +			blk_end_request_all(req, BLK_STS_IOERR);  		}  		goto out;  	} diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index 5c37b6be3e7b..b659a28c8018 100644 --- a/drivers/mmc/core/queue.c +++ b/drivers/mmc/core/queue.c @@ -133,7 +133,7 @@ static void mmc_request_fn(struct request_queue *q)  	if (!mq) {  		while ((req = blk_fetch_request(q)) != NULL) {  			req->rq_flags |= RQF_QUIET; -			__blk_end_request_all(req, -EIO); +			__blk_end_request_all(req, BLK_STS_IOERR);  		}  		return;  	} @@ -388,7 +388,6 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card,  		mmc_queue_setup_discard(mq->queue, card);  	if (card->bouncesz) { -		blk_queue_bounce_limit(mq->queue, BLK_BOUNCE_ANY);  		blk_queue_max_hw_sectors(mq->queue, card->bouncesz / 512);  		blk_queue_max_segments(mq->queue, card->bouncesz / 512);  		blk_queue_max_segment_size(mq->queue, card->bouncesz); diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c index 92fc3f7c538d..18957fea82ff 100644 --- a/drivers/mmc/host/sdhci-pci-core.c +++ b/drivers/mmc/host/sdhci-pci-core.c @@ -404,10 +404,9 @@ struct intel_host {  	bool	d3_retune;  }; -const u8 intel_dsm_uuid[] = { -	0xA5, 0x3E, 0xC1, 0xF6, 0xCD, 0x65, 0x1F, 0x46, -	0xAB, 0x7A, 0x29, 0xF7, 0xE8, 0xD5, 0xBD, 0x61, -}; +static const guid_t intel_dsm_guid = +	GUID_INIT(0xF6C13EA5, 0x65CD, 0x461F, +		  0xAB, 0x7A, 0x29, 0xF7, 0xE8, 0xD5, 0xBD, 0x61);  static int __intel_dsm(struct intel_host *intel_host, struct device *dev,  		       unsigned int fn, u32 *result) @@ -416,7 +415,7 @@ static int __intel_dsm(struct intel_host *intel_host, struct device *dev,  	int err = 0;  	size_t len; -	obj = acpi_evaluate_dsm(ACPI_HANDLE(dev), intel_dsm_uuid, 0, fn, NULL); +	obj = acpi_evaluate_dsm(ACPI_HANDLE(dev), &intel_dsm_guid, 0, fn, NULL);  	if (!obj)  		return -EOPNOTSUPP;  |