[Patch] powerpc/cell: make ptcal more reliable
Jeremy Kerr
jk at ozlabs.org
Tue May 5 10:57:18 EST 2009
Hi Gerhard,
> This is for QS21. The following patch allocates pages only from
> the specified node, moves the ptcal area into the middle of the
> allocated page to avoid potential prefetch problems and prints
> the address of the ptcal area to facilitate diagnostics.
You're seeing prefetches that cross a page boundary?
> - area->pages = alloc_pages_node(area->nid, GFP_KERNEL, area->order);
> + area->pages = alloc_pages_node(area->nid, GFP_KERNEL |
> GFP_THISNODE, area->order);
Best to keep this under 80 cols.
>
> - if (!area->pages)
> + if (!area->pages) {
> + printk(KERN_INFO "%s: no page on node %d\n",
> + __FUNCTION__, area->nid);
> goto out_free_area;
> + }
That could probably be a KERN_ERR, as we don't have ptcal enabled on
that node. Also, I believe __func__ is preferred over __FUNCTION__.
> - addr = __pa(page_address(area->pages));
> + /*
> + * We move the ptcal area to the middle of the allocated
> + * page, in order to avoid prefetches in memcpy and similar
> + * functions stepping on it.
> + */
> + addr = __pa(page_address(area->pages)) + (PAGE_SIZE >> 1);
Minor nitpick, but I think (PAGE_SIZE / 2) better illustrates that
you're putting the addr in the middle of the page. But either should be
fine.
> + printk(KERN_INFO "%s: enabling PTCAL on node %d address=0x%016lx
> PAGE_SIZE>>1=0x%016lx \n",
> + __FUNCTION__, area->nid, addr, PAGE_SIZE>>1);
80 cols again. Can we do this as a pr_debug?
Cheers,
Jeremy
More information about the Linuxppc-dev
mailing list