Re: [PATCH] Use wbinvd() macro instead of raw inline assembly in .c files

From: Andi Kleen
Date: Fri Jul 20 2007 - 07:44:19 EST


On Friday 20 July 2007 00:55:40 Glauber de Oliveira Costa wrote:
> This patch uses the already-existant wbinvd() macro to replace
> raw assembly to perform this very same task in some .c files
>
> Signed-off-by: Glauber de Oliveira Costa <gcosta@xxxxxxxxxx>
>
> diff --git a/arch/x86_64/kernel/tce.c b/arch/x86_64/kernel/tce.c
> index f61fb8e..afbb951 100644
> --- a/arch/x86_64/kernel/tce.c
> +++ b/arch/x86_64/kernel/tce.c
> @@ -42,7 +42,7 @@ static inline void flush_tce(void* tceaddr)
> if (cpu_has_clflush)
> asm volatile("clflush (%0)" :: "r" (tceaddr));
> else
> - asm volatile("wbinvd":::"memory");
> + wbinvd();

I guess it can be just removed there. I don' think there are any calgary
machines without clflush

> }
>
> void tce_build(struct iommu_table *tbl, unsigned long index,
> diff --git a/arch/x86_64/mm/pageattr.c b/arch/x86_64/mm/pageattr.c
> index 9148f4a..0a75790 100644
> --- a/arch/x86_64/mm/pageattr.c
> +++ b/arch/x86_64/mm/pageattr.c
> @@ -77,7 +77,7 @@ static void flush_kernel_map(void *arg)
> much cheaper than WBINVD. Disable clflush for now because
> the high level code is not ready yet */
> if (1 || !cpu_has_clflush)
> - asm volatile("wbinvd" ::: "memory");
> + wbinvd();
> else list_for_each_entry(pg, l, lru) {
> void *adr = page_address(pg);
> if (cpu_has_clflush)
>

This code has changed recently in the queue. Please resubmit later.

-Andi


>


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/