Messages in this thread | | | Date | Wed, 1 Mar 2006 15:18:49 +0100 | From | Jens Axboe <> | Subject | Re: adding swap workarounds oom - was: Re: Out of Memory: Killed process 16498 (java). |
| |
On Wed, Mar 01 2006, Andi Kleen wrote: > On Wednesday 01 March 2006 14:41, Jens Axboe wrote: > > On Wed, Mar 01 2006, Andy Chittenden wrote: > > > with revised patch that does: > > > > > > printk("sg%d: dma=%llx, dma_len=%u/%u, pfn=%lu\n", i, > > > (unsigned long long) sg->dma_address, sg->dma_length, sg->offset, > > > page_to_pfn(sg->page)); > > > > That is correct, thanks! > > > > > hda: DMA table too small > > > ide dma table, 255 entries, bounce pfn 1310720 > > > sg0: dma=81c8800, dma_len=4096/0, pfn=1296369 > > > > Still the same badness here, it's 2kb into a page so straddles two pages > > for one entry. > > That's normal if it was in the IOMMU and a merged entry. > > You can try iommu=nomerge. > > Or maybe the higher layers are passing in physically continuous pages > that get merged? Not too unlikely at boot.
But that would have to be 1kb or 512b io going in, I would expect 4kb to be the base entries for any normal type of setup (with a 4kb fs). The 8kb could be one such merged entry, I agree.
> > Andi, any idea what is going on here? Why is this throwing up all of a > > sudden?? > > What is throwing up exactly? > > There was a change recently in the merging algorithm, but it shouldn't > cause any bad side effects for correct users of *_map_sg()
That the request we end up passing to blk_rq_map_sg() and then to pci_map_sg() ends up with more entries than the driver advertised. So far I think only Andy reported this, and then only with your blk_queue_bounce_limit() patch applied.
-- Jens Axboe
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |