Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Jul 2009 06:00:21 +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: r195439 - head/sys/dev/ata/chipsets
Message-ID:  <200907080600.n6860L9D040261@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Wed Jul  8 06:00:21 2009
New Revision: 195439
URL: http://svn.freebsd.org/changeset/base/195439

Log:
  Fix kernel panic, when ataahci driver is used on system with increased
  MAXPHYS. Current ataahci driver memory allocation scheme includes only
  64 items in DMA S/G table, and so not guarantied to support transactions
  with more then 252K data.
  
  Approved by:    re (kensmith)
  MFC after:      2 weeks

Modified:
  head/sys/dev/ata/chipsets/ata-ahci.c

Modified: head/sys/dev/ata/chipsets/ata-ahci.c
==============================================================================
--- head/sys/dev/ata/chipsets/ata-ahci.c	Wed Jul  8 06:00:18 2009	(r195438)
+++ head/sys/dev/ata/chipsets/ata-ahci.c	Wed Jul  8 06:00:21 2009	(r195439)
@@ -914,7 +914,7 @@ ata_ahci_dmainit(device_t dev)
     ata_dmainit(dev);
     /* note start and stop are not used here */
     ch->dma.setprd = ata_ahci_dmasetprd;
-    ch->dma.max_iosize = 8192 * DEV_BSIZE;
+    ch->dma.max_iosize = (ATA_AHCI_DMA_ENTRIES - 1) * PAGE_SIZE;
     if (ATA_INL(ctlr->r_res2, ATA_AHCI_CAP) & ATA_AHCI_CAP_64BIT)
 	ch->dma.max_address = BUS_SPACE_MAXADDR;
 }



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