Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp577420pxu; Thu, 15 Oct 2020 10:59:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzAEL6m60qErh/NkwFJrU8XRkbppegjKrq466he5bL4A5oImetv523XVssxxRhQ7vl2x4gZ X-Received: by 2002:a05:6402:74f:: with SMTP id p15mr5796754edy.69.1602784758158; Thu, 15 Oct 2020 10:59:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602784758; cv=none; d=google.com; s=arc-20160816; b=i0V2an8lcrLGMQDzxk+okqfkhEEh1L6nJgzG1MSP0aNrHR7bIj9yAWWsahuw23vMHH 9xD+XUjspCEMQoUe6Axtpl1ERu/I+VNPxTfilX5vOn7rrzK/rC3W8jxd5Rrq4WBY7vJA ENhbuxt/VPiOAXIovCvj2Z9qHdvoOKO2//3N0SjiOjWc3lzMUFul7K7HeqDWAGVNnLAb 2Wl14vrDSHdbOw9hy2Tt1RJ8N92i0ntB3ZF/duFoL2ibp0gQ9i4vPbzsvpvIAhw8KclT hroAHxPCwQ9264AzBd2IAzTAqu73/xeIiig57QQwdWQRYDx8CbDKD++sd6co8l95yIWZ GFPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version:date:to :from:subject:message-id:dkim-signature; bh=+SMSmOjqLeOGTKKum05qnKuvd7Q9+0WPozSVKp+7TKk=; b=YTJalQUc7qjIBfnkF+RlEPrSNRJxdi3jzG83xrxEJFdYQ5L0gM7x1x44XIuWHF7AbG YJrTCYTYuqyKE8o8vLovIDP08RLt3ke1Pg5KsjyymGSQl/wzUaC7CiwRz4WPCkueuoOm aqf6xhqBdHZ645q9F1uG2jouhCBIHejpAOKeYuznqJ9goXCo1uOIUdBPwm7ZDivBqFXE vXx02Q/JYjZbNtuza94188wXyPfK6+p8sWqv1ogX9K3WC553PsktV5LIgWnroPohx1bj VbcKe9vKJOm9mnGa2P4PoSwX3ByFW+tspbok03WQIbdlSmf0Ffw4nmbvigD5OYW6Bs5M P3oA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@areca-com-tw.20150623.gappssmtp.com header.s=20150623 header.b=OEogEsYE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v27si2405534edx.414.2020.10.15.10.58.49; Thu, 15 Oct 2020 10:59:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@areca-com-tw.20150623.gappssmtp.com header.s=20150623 header.b=OEogEsYE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728098AbgJOLYn (ORCPT + 99 others); Thu, 15 Oct 2020 07:24:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728033AbgJOLYY (ORCPT ); Thu, 15 Oct 2020 07:24:24 -0400 Received: from mail-pf1-x442.google.com (mail-pf1-x442.google.com [IPv6:2607:f8b0:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D5D61C061755 for ; Thu, 15 Oct 2020 04:24:22 -0700 (PDT) Received: by mail-pf1-x442.google.com with SMTP id 10so1849084pfp.5 for ; Thu, 15 Oct 2020 04:24:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=areca-com-tw.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:date:mime-version :content-transfer-encoding; bh=+SMSmOjqLeOGTKKum05qnKuvd7Q9+0WPozSVKp+7TKk=; b=OEogEsYEm8fIVHz/dIQwcLZvAQlX+f/oQj6IUPviGjL3Vf16AO4AfmB4EBMZ0bQkw8 wl3ZAaAUrtpdB2TiFlqflES4lddYyG3opakwYOxWbMNW964Vq7xroj0G7hLBsDrF3y5j 1LAOk6YZag+Irs7ycSmB99iyBRjvx/a/wLF/HXSPg4wnLK52oh0jJUr0j7Jv5CYkYAGa SSqd6BVq+7fuaGEi4LColhNlmox4aYgZo8B2t2+W1L3z+R5tzhuOIPNQYNTiq3IgPMsV lCAQl6KQUuYV7SFArFNyedH/E3SY+FtBwsxBceaF6mcETWJyVr5x0M5SUBBW0aKZsTip oTpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:date:mime-version :content-transfer-encoding; bh=+SMSmOjqLeOGTKKum05qnKuvd7Q9+0WPozSVKp+7TKk=; b=aa2afKTl+/HQdPzYKZ+X81zfQZE0A5n0fPpbLqNVSWvovbjZdnYmQCVk54t8NTe51S 9asaLID+N0u99E2pqtB0QQcpQPiV6pLKa8IZYMnH1r2yoNiXqnOEQU5ZImc50R0XAp+n UT0tvt+I0e4/gobR0Se2msnzVbv0aaejQjKbgjr04gEU1eF9lhEPThLQWiG5UvnnjMK0 4BXlODmnsDjkAEdVul/BD+UJGGaol9S2Ow5HlTI7WeZg0Ukd3seUK9Rq2oBVPvzCl7KV j7VWxf8dCETnFCZaDnHcpuL3RhPZxS2Z98IRgqEDBiYDiDqwMOPd2ZsvNz2TtKqbG1nV Nm5A== X-Gm-Message-State: AOAM5309BeyFQ10VrYjb0kRY9k59EjxG2922Bb92Q83H7Su6v5r8a5ij ftVlorGWLu0WHaVqRafIWYlYSA== X-Received: by 2002:a62:870a:0:b029:156:641e:c6c7 with SMTP id i10-20020a62870a0000b0290156641ec6c7mr3761187pfe.78.1602761062429; Thu, 15 Oct 2020 04:24:22 -0700 (PDT) Received: from centos78 (60-248-88-209.HINET-IP.hinet.net. [60.248.88.209]) by smtp.gmail.com with ESMTPSA id j37sm2955201pgi.20.2020.10.15.04.24.21 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Oct 2020 04:24:21 -0700 (PDT) Message-ID: <06ee8b1a3c14f855c6dc2a2c0dc996d33ca41f50.camel@areca.com.tw> Subject: [PATCH 1/1] scsi: arcmsr: Configure the default SCSI device command timeout value From: ching Huang To: martin.petersen@oracle.com, James.Bottomley@HansenPartnership.com, linux-scsi@vger.kernel.org, Linux Kernel Mailing List Date: Fri, 16 Oct 2020 03:24:22 +0800 Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.28.5 (3.28.5-8.el7) Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: ching Huang Configure the default SCSI device command timeout value. Signed-off-by: ching Huang --- diff --git a/drivers/scsi/arcmsr/arcmsr.h b/drivers/scsi/arcmsr/arcmsr.h index 5d054d5..0f6abd2 100644 --- a/drivers/scsi/arcmsr/arcmsr.h +++ b/drivers/scsi/arcmsr/arcmsr.h @@ -83,6 +83,7 @@ struct device_attribute; #define PCI_DEVICE_ID_ARECA_1886 0x188A #define ARCMSR_HOURS (1000 * 60 * 60 * 4) #define ARCMSR_MINUTES (1000 * 60 * 60) +#define ARCMSR_DEFAULT_TIMEOUT 90 /* ********************************************************************************** ** diff --git a/drivers/scsi/arcmsr/arcmsr_hba.c b/drivers/scsi/arcmsr/arcmsr_hba.c index 1e358d9..555f55f 100644 --- a/drivers/scsi/arcmsr/arcmsr_hba.c +++ b/drivers/scsi/arcmsr/arcmsr_hba.c @@ -99,6 +99,10 @@ static int set_date_time = 0; module_param(set_date_time, int, S_IRUGO); MODULE_PARM_DESC(set_date_time, " send date, time to iop(0 ~ 1), set_date_time=1(enable), default(=0) is disable"); +static int cmd_timeout = ARCMSR_DEFAULT_TIMEOUT; +module_param(cmd_timeout, int, S_IRUGO); +MODULE_PARM_DESC(cmd_timeout, " scsi cmd timeout(0 ~ 120 sec.), default is 90"); + #define ARCMSR_SLEEPTIME 10 #define ARCMSR_RETRYCOUNT 12 @@ -140,6 +144,7 @@ static irqreturn_t arcmsr_interrupt(struct AdapterControlBlock *acb); static void arcmsr_free_irq(struct pci_dev *, struct AdapterControlBlock *); static void arcmsr_wait_firmware_ready(struct AdapterControlBlock *acb); static void arcmsr_set_iop_datetime(struct timer_list *); +static int arcmsr_slave_config(struct scsi_device *sdev); static int arcmsr_adjust_disk_queue_depth(struct scsi_device *sdev, int queue_depth) { if (queue_depth > ARCMSR_MAX_CMD_PERLUN) @@ -155,6 +160,7 @@ static struct scsi_host_template arcmsr_scsi_host_template = { .eh_abort_handler = arcmsr_abort, .eh_bus_reset_handler = arcmsr_bus_reset, .bios_param = arcmsr_bios_param, + .slave_configure = arcmsr_slave_config, .change_queue_depth = arcmsr_adjust_disk_queue_depth, .can_queue = ARCMSR_DEFAULT_OUTSTANDING_CMD, .this_id = ARCMSR_SCSI_INITIATOR_ID, @@ -3156,10 +3162,12 @@ message_out: static struct CommandControlBlock *arcmsr_get_freeccb(struct AdapterControlBlock *acb) { - struct list_head *head = &acb->ccb_free_list; + struct list_head *head; struct CommandControlBlock *ccb = NULL; unsigned long flags; + spin_lock_irqsave(&acb->ccblist_lock, flags); + head = &acb->ccb_free_list; if (!list_empty(head)) { ccb = list_entry(head->next, struct CommandControlBlock, list); list_del_init(&ccb->list); @@ -3256,6 +3264,16 @@ static int arcmsr_queue_command_lck(struct scsi_cmnd *cmd, static DEF_SCSI_QCMD(arcmsr_queue_command) +static int arcmsr_slave_config(struct scsi_device *sdev) +{ + unsigned int dev_timeout; + + dev_timeout = sdev->request_queue->rq_timeout; + if ((cmd_timeout > 0) && ((cmd_timeout * HZ) > dev_timeout)) + blk_queue_rq_timeout(sdev->request_queue, cmd_timeout * HZ); + return 0; +} + static void arcmsr_get_adapter_config(struct AdapterControlBlock *pACB, uint32_t *rwbuffer) { int count;