[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