The patch titled IB/ipath: use more appropriate gfp flags has been added to the -mm tree. Its filename is ib-ipath-use-more-appropriate-gfp-flags.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: IB/ipath: use more appropriate gfp flags From: "Bryan O'Sullivan" <bos@xxxxxxxxxxxxx> This helps us to survive better when memory is fragmented. Signed-off-by: Dave Olson <dave.olson@xxxxxxxxxx> Signed-off-by: Bryan O'Sullivan <bryan.osullivan@xxxxxxxxxx> Cc: "Michael S. Tsirkin" <mst@xxxxxxxxxxxxxx> Cc: Roland Dreier <rolandd@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/infiniband/hw/ipath/ipath_file_ops.c | 26 +++++++++-------- 1 files changed, 14 insertions(+), 12 deletions(-) diff -puN drivers/infiniband/hw/ipath/ipath_file_ops.c~ib-ipath-use-more-appropriate-gfp-flags drivers/infiniband/hw/ipath/ipath_file_ops.c --- a/drivers/infiniband/hw/ipath/ipath_file_ops.c~ib-ipath-use-more-appropriate-gfp-flags +++ a/drivers/infiniband/hw/ipath/ipath_file_ops.c @@ -705,6 +705,15 @@ static int ipath_create_user_egr(struct unsigned e, egrcnt, alloced, egrperchunk, chunk, egrsize, egroff; size_t size; int ret; + gfp_t gfp_flags; + + /* + * GFP_USER, but without GFP_FS, so buffer cache can be + * coalesced (we hope); otherwise, even at order 4, + * heavy filesystem activity makes these fail, and we can + * use compound pages. + */ + gfp_flags = __GFP_WAIT | __GFP_IO | __GFP_COMP; egrcnt = dd->ipath_rcvegrcnt; /* TID number offset for this port */ @@ -721,10 +730,8 @@ static int ipath_create_user_egr(struct * memory pressure (creating large files and then copying them over * NFS while doing lots of MPI jobs), we hit some allocation * failures, even though we can sleep... (2.6.10) Still get - * failures at 64K. 32K is the lowest we can go without waiting - * more memory again. It seems likely that the coalescing in - * free_pages, etc. still has issues (as it has had previously - * during 2.6.x development). + * failures at 64K. 32K is the lowest we can go without wasting + * additional memory. */ size = 0x8000; alloced = ALIGN(egrsize * egrcnt, size); @@ -745,12 +752,6 @@ static int ipath_create_user_egr(struct goto bail_rcvegrbuf; } for (e = 0; e < pd->port_rcvegrbuf_chunks; e++) { - /* - * GFP_USER, but without GFP_FS, so buffer cache can be - * coalesced (we hope); otherwise, even at order 4, - * heavy filesystem activity makes these fail - */ - gfp_t gfp_flags = __GFP_WAIT | __GFP_IO | __GFP_COMP; pd->port_rcvegrbuf[e] = dma_alloc_coherent( &dd->pcidev->dev, size, &pd->port_rcvegrbuf_phys[e], @@ -1167,9 +1168,10 @@ static int ipath_mmap(struct file *fp, s ureg = dd->ipath_uregbase + dd->ipath_palign * pd->port_port; - ipath_cdbg(MM, "ushare: pgaddr %llx vm_start=%lx, vmlen %lx\n", + ipath_cdbg(MM, "pgaddr %llx vm_start=%lx len %lx port %u:%u\n", (unsigned long long) pgaddr, vma->vm_start, - vma->vm_end - vma->vm_start); + vma->vm_end - vma->vm_start, dd->ipath_unit, + pd->port_port); if (pgaddr == ureg) ret = mmap_ureg(vma, dd, ureg); _ Patches currently in -mm which might be from bos@xxxxxxxxxxxxx are ib-ipath-name-zero-counter-offsets-so-its-clear.patch ib-ipath-update-copyrights-and-other-strings-to.patch ib-ipath-share-more-common-code-between-rc-and-uc.patch ib-ipath-fix-an-indenting-problem.patch ib-ipath-fix-shared-receive-queues-for-rc.patch ib-ipath-allow-diags-on-any-unit.patch ib-ipath-update-some-comments-and-fix-typos.patch ib-ipath-remove-some-duplicate-code.patch ib-ipath-dont-allow-resources-to-be-created-with.patch ib-ipath-fix-some-memory-leaks-on-failure-paths.patch ib-ipath-return-an-error-for-unknown-multicast-gid.patch ib-ipath-report-correct-device-identification.patch ib-ipath-enforce-device-resource-limits.patch ib-ipath-removed-unused-field-ipath_kregvirt-from.patch ib-ipath-print-better-debug-info-when-handling.patch ib-ipath-enable-freeze-mode-when-shutting-down.patch ib-ipath-use-more-appropriate-gfp-flags.patch ib-ipath-use-vmalloc-to-allocate-struct.patch ib-ipath-memory-management-cleanups.patch ib-ipath-reduce-overhead-on-receive-interrupts.patch ib-ipath-fixed-bug-9776.patch ib-ipath-fix-lost-interrupts-on-ht-400.patch ib-ipath-disallow-send-of-invalid-packet-sizes.patch ib-ipath-dont-confuse-the-max-message-size-with.patch ib-ipath-removed-redundant-statements.patch ib-ipath-check-for-valid-lid-and-multicast-lids.patch ib-ipath-fixes-to-performance-get-counters-for-ib.patch ib-ipath-fixes-a-bug-where-our-delay-for-eeprom-no.patch ib-ipath-rc-receive-interrupt-performance-changes.patch ib-ipath-purge-sps_lid-and-sps_mlid-arrays.patch ib-ipath-drop-the-stats-sysfs-attribute-group.patch ib-ipath-support-more-models-of-infinipath-hardware.patch ib-ipath-read-write-correct-sizes-through-diag.patch ib-ipath-fix-a-bug-that-results-in-addresses-near.patch ib-ipath-remove-some-if-0-code-related-to.patch ib-ipath-ignore-receive-queue-size-if-srq-is.patch ib-ipath-namespace-cleanup-replace-ips-with-ipath.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html