Messages in this thread | | | Date | Thu, 20 Mar 2008 11:40:46 -0700 | From | Ravikiran G Thirumalai <> | Subject | Re: [patch 1/4] x86: vSMP: Fix is_vsmp_box() |
| |
On Thu, Mar 20, 2008 at 12:44:37AM -0700, Yinghai Lu wrote: >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 >
Well, the pci cfg space read happens just _once_ during the boot, as the result is cached in a static flag. The above code is better readable. So readability is better than micro-optimization here.
Thanks, Kiran
| |