From 7c3c92e15d210b1c0ccf7383ffb6f4259e5b4fda Mon Sep 17 00:00:00 2001 From: sos Date: Fri, 10 Sep 2004 10:31:37 +0000 Subject: Reduce the amount of memory reported to busdma. This made the requirements for bouncebuffers too big with PAE. Cleanup the way size defines for transfers are implemented. --- sys/dev/ata/ata-chipset.c | 10 ++++++---- sys/dev/ata/ata-dma.c | 8 ++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/sys/dev/ata/ata-chipset.c b/sys/dev/ata/ata-chipset.c index 9abd1d6..637f663 100644 --- a/sys/dev/ata/ata-chipset.c +++ b/sys/dev/ata/ata-chipset.c @@ -546,7 +546,7 @@ ata_cyrix_setmode(struct ata_device *atadev, int mode) int error; atadev->channel->dma->alignment = 16; - atadev->channel->dma->max_iosize = 63 * 1024; + atadev->channel->dma->max_iosize = 126 * DEV_BSIZE; mode = ata_limit_mode(atadev, mode, ATA_UDMA2); @@ -1067,7 +1067,7 @@ ata_national_setmode(struct ata_device *atadev, int mode) int error; atadev->channel->dma->alignment = 16; - atadev->channel->dma->max_iosize = 63 * 1024; + atadev->channel->dma->max_iosize = 126 * DEV_BSIZE; mode = ata_limit_mode(atadev, mode, ATA_UDMA2); @@ -2157,8 +2157,10 @@ ata_sii_allocate(device_t dev, struct ata_channel *ch) if (ctlr->chip->max_dma >= ATA_SA150) ch->flags |= ATA_NO_SLAVE; - if ((ctlr->chip->cfg2 & SIIBUG) && ch->dma) - ch->dma->boundary = 8 * 1024; + if ((ctlr->chip->cfg2 & SIIBUG) && ch->dma) { + ch->dma->boundary = 16 * DEV_BSIZE; + ch->dma->max_iosize = 15 * DEV_BSIZE; + } ata_generic_hw(ch); diff --git a/sys/dev/ata/ata-dma.c b/sys/dev/ata/ata-dma.c index 644755d..051d8c2 100644 --- a/sys/dev/ata/ata-dma.c +++ b/sys/dev/ata/ata-dma.c @@ -75,8 +75,8 @@ ata_dmainit(struct ata_channel *ch) ch->dma->load = ata_dmaload; ch->dma->unload = ata_dmaunload; ch->dma->alignment = 2; - ch->dma->max_iosize = 64 * 1024; - ch->dma->boundary = 64 * 1024; + ch->dma->max_iosize = 128 * DEV_BSIZE; + ch->dma->boundary = 128 * DEV_BSIZE; } } @@ -96,7 +96,7 @@ ata_dmaalloc(struct ata_channel *ch) if (bus_dma_tag_create(NULL, ch->dma->alignment, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, 16*1024*1024, + NULL, NULL, 256 * DEV_BSIZE, ATA_DMA_ENTRIES, ch->dma->max_iosize, BUS_DMA_ALLOCNOW, NULL, NULL, &ch->dma->dmatag)) goto error; @@ -109,7 +109,7 @@ ata_dmaalloc(struct ata_channel *ch) if (bus_dma_tag_create(ch->dma->dmatag,ch->dma->alignment,ch->dma->boundary, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, - NULL, NULL, 16*1024*1024, + NULL, NULL, 256 * DEV_BSIZE, ATA_DMA_ENTRIES, ch->dma->max_iosize, BUS_DMA_ALLOCNOW, NULL, NULL, &ch->dma->ddmatag)) goto error; -- cgit v1.1