2007-08-20 20:36:38

by Shannon Nelson

[permalink] [raw]
Subject: [PATCH -mm] IOAT: fix for UP use of cpu_physical_id()

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"


2007-08-20 22:27:23

by H. Peter Anvin

[permalink] [raw]
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.

-hpa

2007-08-20 23:22:01

by Shannon Nelson

[permalink] [raw]
Subject: RE: [PATCH -mm] IOAT: fix for UP use of cpu_physical_id()

>-----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.