Make sure we can use cpu_physical_id() even when compiled for
uni-processor.
Cc: "Luck, Tony" <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Chris Leech <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Shannon Nelson <[email protected]>
---
drivers/dma/ioat_dca.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/drivers/dma/ioat_dca.c b/drivers/dma/ioat_dca.c
index c3a500b..b1af49c 100644
--- a/drivers/dma/ioat_dca.c
+++ b/drivers/dma/ioat_dca.c
@@ -25,6 +25,14 @@
#include <linux/smp.h>
#include <linux/interrupt.h>
#include <linux/dca.h>
+
+// either a kernel change is needed, or we need something like this in kernel
+#ifndef CONFIG_SMP
+#include <asm/smp.h>
+#undef cpu_physical_id
+#define cpu_physical_id(cpu) (cpuid_ebx(1) >> 24)
+#endif
+
#include "ioatdma.h"
#include "ioatdma_registers.h"
Shannon Nelson wrote:
> Make sure we can use cpu_physical_id() even when compiled for
> uni-processor.
>
> diff --git a/drivers/dma/ioat_dca.c b/drivers/dma/ioat_dca.c
> index c3a500b..b1af49c 100644
> --- a/drivers/dma/ioat_dca.c
> +++ b/drivers/dma/ioat_dca.c
> @@ -25,6 +25,14 @@
> #include <linux/smp.h>
> #include <linux/interrupt.h>
> #include <linux/dca.h>
> +
> +// either a kernel change is needed, or we need something like this in kernel
> +#ifndef CONFIG_SMP
> +#include <asm/smp.h>
> +#undef cpu_physical_id
> +#define cpu_physical_id(cpu) (cpuid_ebx(1) >> 24)
> +#endif
> +
This value should probably be cached. Executing cpuid to get a static
value seems like a bad idea.
-hpa
>-----Original Message-----
>From: H. Peter Anvin [mailto:[email protected]]
>Sent: Monday, August 20, 2007 3:27 PM
>To: Nelson, Shannon
>Cc: [email protected]; [email protected];
>[email protected]; [email protected]; Luck, Tony
>Subject: Re: [PATCH -mm] IOAT: fix for UP use of cpu_physical_id()
>
>Shannon Nelson wrote:
>> Make sure we can use cpu_physical_id() even when compiled for
>> uni-processor.
>>
>> diff --git a/drivers/dma/ioat_dca.c b/drivers/dma/ioat_dca.c
>> index c3a500b..b1af49c 100644
>> --- a/drivers/dma/ioat_dca.c
>> +++ b/drivers/dma/ioat_dca.c
>> @@ -25,6 +25,14 @@
>> #include <linux/smp.h>
>> #include <linux/interrupt.h>
>> #include <linux/dca.h>
>> +
>> +// either a kernel change is needed, or we need something
>like this in kernel
>> +#ifndef CONFIG_SMP
>> +#include <asm/smp.h>
>> +#undef cpu_physical_id
>> +#define cpu_physical_id(cpu) (cpuid_ebx(1) >> 24)
>> +#endif
>> +
>
>This value should probably be cached. Executing cpuid to get a static
>value seems like a bad idea.
Yeah, this whole cpu_physical_id() gizmo needs to be fixed so it is
actually usable for non-SMP configurations. Unfortunately, I'm not the
guy to do it.
sln
--
======================================================================
Mr. Shannon Nelson LAN Access Division, Intel Corp.
[email protected] I don't speak for Intel
(503) 712-7659 Parents can't afford to be squeamish.