![]() | |||||||||||||
Messages in this thread |
On Thu, Mar 20, 2008 at 12:39 AM, Ravikiran G Thirumalai
<kiran@scalex86.org> wrote:
> is_vsmp_box() currently does not work on vSMPowered systems, as pci cfg
> space is not read correctly -- This patch fixes it.
>
> Signed-off-by: Ravikiran Thirumalai <kiran@scalex86.org>
>
> Index: linux.git.trees/arch/x86/kernel/vsmp_64.c
> ===================================================================
> --- linux.git.trees.orig/arch/x86/kernel/vsmp_64.c 2008-03-19 13:30:35.116766719 -0700
> +++ linux.git.trees/arch/x86/kernel/vsmp_64.c 2008-03-19 13:39:20.074685590 -0700
> @@ -84,8 +84,10 @@ int is_vsmp_box(void)
> return vsmp;
>
> /* Check if we are running on a ScaleMP vSMP box */
> - if (read_pci_config(0, 0x1f, 0, PCI_VENDOR_ID) ==
> - (PCI_VENDOR_ID_SCALEMP || (PCI_DEVICE_ID_SCALEMP_VSMP_CTL << 16)))
> + if ((read_pci_config_16(0, 0x1f, 0, PCI_VENDOR_ID) ==
> + PCI_VENDOR_ID_SCALEMP) &&
> + (read_pci_config_16(0, 0x1f, 0, PCI_DEVICE_ID) ==
> + PCI_DEVICE_ID_SCALEMP_VSMP_CTL))
> vsmp = 1;
>
> return vsmp;
why read two times
or
(PCI_VENDOR_ID_SCALEMP || (PCI_DEVICE_ID_SCALEMP_VSMP_CTL << 16)))
should be
(PCI_VENDOR_ID_SCALEMP | (PCI_DEVICE_ID_SCALEMP_VSMP_CTL << 16)))
YH
| ||||||||||||
| Last update: 2008-03-20 08:47 [W:0.589 / U:0.020 seconds] ©2003-2008 Jasper Spaans | |||||||||||||