From patchwork Tue Dec 17 02:15:54 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marc Carino X-Patchwork-Id: 301980 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 80EF22C00AA for ; Tue, 17 Dec 2013 13:16:23 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752377Ab3LQCQX (ORCPT ); Mon, 16 Dec 2013 21:16:23 -0500 Received: from mail-ob0-f172.google.com ([209.85.214.172]:34317 "EHLO mail-ob0-f172.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751941Ab3LQCQW (ORCPT ); Mon, 16 Dec 2013 21:16:22 -0500 Received: by mail-ob0-f172.google.com with SMTP id gq1so5749121obb.31 for ; Mon, 16 Dec 2013 18:16:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=E3k5D4M9Pk9TVR357kLkpoSx1eTOp8ogLPLsDQ3Jdtw=; b=FDuTaZKpQ3lFffQQ5zNdp7l43HkPGd7yDnTN9R/06tGHifV9j6e/MjGGUrwKdCRwFr 8lUevMW2BetfwlW5B4wCHJkgnqgKTg35qMycNkegegc0m0hCM/yo+kDwcrhj9cWH2JHD NVHQcp943pyBzesvUGT8+xlzM00RcPXy9UZYolabSc9/4MlJ4Yaw8C23A+4sWgF1CcGp 0gW0CMbI3lJxaeyGpTfAA52oZJ0mn5B7gQtjlYCxfdesgcHY+Fufezeht2og8BPoUY/X inKv7tNi38BuRuIbipIXCT7NCEgvehq8OKB1Bai6tghFh5YJzmnCCULCRZ8mdKkELrLl I6sw== X-Received: by 10.60.135.130 with SMTP id ps2mr14252459oeb.46.1387246582196; Mon, 16 Dec 2013 18:16:22 -0800 (PST) Received: from ld-irv-0116.broadcom.com (5520-maca-inet1-outside.broadcom.com. [216.31.211.11]) by mx.google.com with ESMTPSA id m7sm24003431obo.7.2013.12.16.18.16.20 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 16 Dec 2013 18:16:21 -0800 (PST) From: Marc Carino To: linux-ide@vger.kernel.org, tj@kernel.org Cc: marc.ceeeee@gmail.com, mykola.dvornik@gmail.com Subject: [PATCH 2/2] libata: disable queued TRIMs for Micron M500 SSDs Date: Mon, 16 Dec 2013 18:15:54 -0800 Message-Id: <1387246554-7311-3-git-send-email-marc.ceeeee@gmail.com> X-Mailer: git-send-email 1.8.4.4 In-Reply-To: <1387246554-7311-1-git-send-email-marc.ceeeee@gmail.com> References: <1387246554-7311-1-git-send-email-marc.ceeeee@gmail.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org The Micron/Crucial M500 SSDs exhibit incorrect protocol behavior when issuing queued TRIM commands, which could lead to silent data corruption. Disable issuance of queued TRIM commands for the affected drives. Signed-off-by: Marc Carino --- drivers/ata/libata-core.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index ff01584..715ba06 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -2152,6 +2152,13 @@ static int ata_dev_config_ncq(struct ata_device *dev, dev->flags |= ATA_DFLAG_NCQ_SEND_RECV; memcpy(dev->ncq_send_recv_cmds, ap->sector_buf, ATA_LOG_NCQ_SEND_RECV_SIZE); + + if (dev->horkage & ATA_HORKAGE_BROKEN_QUEUED_TRIM) { + ata_dev_dbg(dev, + "disabling queued TRIM support\n"); + dev->ncq_send_recv_cmds[ATA_LOG_NCQ_SEND_RECV_DSM_OFFSET] + &= ~ATA_LOG_NCQ_SEND_RECV_DSM_TRIM; + } } } @@ -4205,6 +4212,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { { "PIONEER DVD-RW DVR-212D", NULL, ATA_HORKAGE_NOSETXFER }, { "PIONEER DVD-RW DVR-216D", NULL, ATA_HORKAGE_NOSETXFER }, + /* Devices that don't properly handle queued TRIM commands */ + { "Micron_M500*", NULL, ATA_HORKAGE_BROKEN_QUEUED_TRIM, }, + { "Crucial_CT???M500SSD1", NULL, ATA_HORKAGE_BROKEN_QUEUED_TRIM, }, + /* End Marker */ { } };