diff options
author | Ashok Raj <ashok.raj@intel.com> | 2005-11-08 21:42:33 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-11-10 16:09:18 -0800 |
commit | b4033c1715cb5aa1dcb1a25bdaf71fea908bb3f1 (patch) | |
tree | cf9ba9ae7999573a507df301faf34170ab08e2c3 /include/asm-x86_64 | |
parent | 48b19148733b4826eeedfd8be9f19b61c8d010b1 (diff) | |
download | kernel_samsung_smdk4412-b4033c1715cb5aa1dcb1a25bdaf71fea908bb3f1.zip kernel_samsung_smdk4412-b4033c1715cb5aa1dcb1a25bdaf71fea908bb3f1.tar.gz kernel_samsung_smdk4412-b4033c1715cb5aa1dcb1a25bdaf71fea908bb3f1.tar.bz2 |
[PATCH] PCI: Change MSI to use physical delivery mode always
MSI hardcoded delivery mode to use logical delivery mode. Recently
x86_64 moved to use physical mode addressing to support physflat mode.
With this mode enabled noticed that my eth with MSI werent working.
msi_address_init() was hardcoded to use logical mode for i386 and x86_64.
So when we switch to use physical mode, things stopped working.
Since anyway we dont use lowest priority delivery with MSI, its always
directed to just a single CPU. Its safe and simpler to use
physical mode always, even when we use logical delivery mode for IPI's
or other ioapic RTE's.
Signed-off-by: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/asm-x86_64')
-rw-r--r-- | include/asm-x86_64/msi.h | 4 | ||||
-rw-r--r-- | include/asm-x86_64/smp.h | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/include/asm-x86_64/msi.h b/include/asm-x86_64/msi.h index 85c427e..356e0e8 100644 --- a/include/asm-x86_64/msi.h +++ b/include/asm-x86_64/msi.h @@ -11,8 +11,6 @@ #include <asm/smp.h> #define LAST_DEVICE_VECTOR 232 -#define MSI_DEST_MODE MSI_LOGICAL_MODE -#define MSI_TARGET_CPU_SHIFT 12 -#define MSI_TARGET_CPU logical_smp_processor_id() +#define MSI_TARGET_CPU_SHIFT 12 #endif /* ASM_MSI_H */ diff --git a/include/asm-x86_64/smp.h b/include/asm-x86_64/smp.h index c57ce40..b9fb217 100644 --- a/include/asm-x86_64/smp.h +++ b/include/asm-x86_64/smp.h @@ -135,5 +135,11 @@ static __inline int logical_smp_processor_id(void) } #endif +#ifdef CONFIG_SMP +#define cpu_physical_id(cpu) x86_cpu_to_apicid[cpu] +#else +#define cpu_physical_id(cpu) boot_cpu_id +#endif + #endif |