Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Nov 2016 16:23:32 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r309251 - head/sys/dev/ahci
Message-ID:  <201611281623.uASGNWoA056995@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Mon Nov 28 16:23:32 2016
New Revision: 309251
URL: https://svnweb.freebsd.org/changeset/base/309251

Log:
  Process port interrupt even is PxIS register is zero.
  
  ASMedia ASM1062 AHCI chips with some fancy firmware handling PMP inside
  seems sometimes forgeting to set bits in PxIS, causing command timeouts.
  Removal of this check fixes the issue by the theoretical cost of slightly
  higher CPU usage in some odd cases, but this is what Linux does too.
  
  MFC after:	1 month

Modified:
  head/sys/dev/ahci/ahci.c

Modified: head/sys/dev/ahci/ahci.c
==============================================================================
--- head/sys/dev/ahci/ahci.c	Mon Nov 28 15:14:31 2016	(r309250)
+++ head/sys/dev/ahci/ahci.c	Mon Nov 28 16:23:32 2016	(r309251)
@@ -1169,8 +1169,6 @@ ahci_ch_intr(void *arg)
 
 	/* Read interrupt statuses. */
 	istatus = ATA_INL(ch->r_mem, AHCI_P_IS);
-	if (istatus == 0)
-		return;
 
 	mtx_lock(&ch->mtx);
 	ahci_ch_intr_main(ch, istatus);
@@ -1187,8 +1185,6 @@ ahci_ch_intr_direct(void *arg)
 
 	/* Read interrupt statuses. */
 	istatus = ATA_INL(ch->r_mem, AHCI_P_IS);
-	if (istatus == 0)
-		return;
 
 	mtx_lock(&ch->mtx);
 	ch->batch = 1;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201611281623.uASGNWoA056995>