From d8873b3136f0985c9e33ff8801644e1b4253b36c Mon Sep 17 00:00:00 2001 From: Joyce McIntosh Date: Tue, 7 Aug 2018 12:13:16 +0300 Subject: [PATCH] 9695 Slow crash dumps, significantly slower than live core Reviewed by: Dan Fields Reviewed by: Yuri Pankov Reviewed by: Rick McNeal Reviewed by: Sanjay Nadkarni Reviewed by: Toomas Soome Reviewed by: Robert Mustacchi Approved by: Richard Lowe --- usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c | 6 +++--- usr/src/uts/common/io/sata/adapters/ahci/ahci.c | 17 +++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c b/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c index fd8d417884..0018a13457 100644 --- a/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c +++ b/usr/src/uts/common/io/mr_sas/mr_sas_tbolt.c @@ -16,7 +16,7 @@ */ /* - * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + * Copyright 2018 Nexenta Systems, Inc. * Copyright 2015, 2017 Citrus IT Limited. All rights reserved. * Copyright 2015 Garrett D'Amore */ @@ -52,7 +52,7 @@ extern uint32_t mrsas_tbolt_max_cap_maxxfer; extern struct ddi_device_acc_attr endian_attr; extern int debug_level_g; extern unsigned int enable_fp; -volatile int dump_io_wait_time = 90; +volatile int dump_io_wait_time = 900; extern volatile int debug_timeout_g; extern int mrsas_issue_pending_cmds(struct mrsas_instance *); extern int mrsas_complete_pending_cmds(struct mrsas_instance *instance); @@ -1108,7 +1108,7 @@ wait_for_outstanding_poll_io(struct mrsas_instance *instance) if (instance->fw_outstanding <= 2) { break; } - drv_usecwait(10*MILLISEC); + drv_usecwait(MILLISEC); /* complete commands from reply queue */ (void) mr_sas_tbolt_process_outstanding_cmd(instance); } diff --git a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c index d9e083a10b..10e71db3b9 100644 --- a/usr/src/uts/common/io/sata/adapters/ahci/ahci.c +++ b/usr/src/uts/common/io/sata/adapters/ahci/ahci.c @@ -21,7 +21,7 @@ /* * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. - * Copyright 2013 Nexenta Systems, Inc. All rights reserved. + * Copyright 2018 Nexenta Systems, Inc. All rights reserved. */ /* @@ -1143,7 +1143,7 @@ ahci_detach(dev_info_t *dip, ddi_detach_cmd_t cmd) */ static int ahci_getinfo(dev_info_t *dip, ddi_info_cmd_t infocmd, - void *arg, void **result) + void *arg, void **result) { #ifndef __lock_lint _NOTE(ARGUNUSED(dip)) @@ -1815,15 +1815,19 @@ ahci_do_sync_start(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp, drv_usectohz((clock_t)spkt->satapkt_time * 1000000); while (spkt->satapkt_reason == SATA_PKT_BUSY) { - mutex_exit(&ahci_portp->ahciport_mutex); - /* Simulate the interrupt */ + mutex_exit(&ahci_portp->ahciport_mutex); ahci_port_intr(ahci_ctlp, ahci_portp, port); + mutex_enter(&ahci_portp->ahciport_mutex); - drv_usecwait(AHCI_10MS_USECS); + if (spkt->satapkt_reason != SATA_PKT_BUSY) + break; + mutex_exit(&ahci_portp->ahciport_mutex); + drv_usecwait(AHCI_1MS_USECS); mutex_enter(&ahci_portp->ahciport_mutex); - pkt_timeout_ticks -= AHCI_10MS_TICKS; + + pkt_timeout_ticks -= AHCI_1MS_TICKS; if (pkt_timeout_ticks < 0) { cmn_err(CE_WARN, "!ahci%d: ahci_do_sync_start " "port %d satapkt 0x%p timed out\n", @@ -1835,6 +1839,7 @@ ahci_do_sync_start(ahci_ctl_t *ahci_ctlp, ahci_port_t *ahci_portp, mutex_enter(&ahci_portp->ahciport_mutex); } } + ahci_portp->ahciport_flags &= ~AHCI_PORT_FLAG_POLLING; return (AHCI_SUCCESS); -- 2.11.4.GIT