x86: vSMP: Fix is_vsmp_box()
authorRavikiran G Thirumalai <kiran@scalex86.org>
Thu, 20 Mar 2008 07:39:02 +0000 (00:39 -0700)
committerIngo Molnar <mingo@elte.hu>
Thu, 17 Apr 2008 15:41:08 +0000 (17:41 +0200)
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>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/vsmp_64.c

index a00961d42e75000a6de85a4b4cb57c1da61246ed..eb25584c54c3b4cc6a43c5f3bc8711443ea8b7c5 100644 (file)
@@ -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;