• Qiuxu Zhuo's avatar
    i2c: i801: Restore the presence state of P2SB PCI device after reading BAR · bfd4473b
    Qiuxu Zhuo authored
    Sun, Yunying reported the following failure on Denverton micro-server:
    
     EDAC DEBUG: pnd2_init:
     EDAC DEBUG: pnd2_probe:
     EDAC DEBUG: dnv_rd_reg: Read b_cr_tolud_pci=00000000_80000000
     EDAC DEBUG: dnv_rd_reg: Read b_cr_touud_lo_pci=00000000_80000000
     EDAC DEBUG: dnv_rd_reg: Read b_cr_touud_hi_pci=00000000_00000004
     EDAC DEBUG: dnv_rd_reg: Read b_cr_asym_mem_region0_mchbar=00000000_00000000
     EDAC DEBUG: dnv_rd_reg: Read b_cr_asym_mem_region1_mchbar=00000000_00000000
     EDAC DEBUG: dnv_rd_reg: Read b_cr_mot_out_base_mchbar=00000000_00000000
     EDAC DEBUG: dnv_rd_reg: Read b_cr_mot_out_mask_mchbar=00000000_00000000
     EDAC pnd2: Failed to register device with error -19.
    
    On Denverton micro-server, the presence of the P2SB bridge PCI device is
    enabled or disabled by the item 'RelaxSecConf' in BIOS setup menu. When
    'RelaxSecConf' is enabled, the P2SB PCI device is present and the pnd2_edac
    EDAC driver also uses it to get BAR. Hiding the P2SB PCI device caused the
    pnd2_edac EDAC driver failed to get BAR then reported the above failure.
    
    Therefor, store the presence state of P2SB PCI device before unhiding it
    for reading BAR and restore the presence state after reading BAR.
    Signed-off-by: default avatarQiuxu Zhuo <qiuxu.zhuo@intel.com>
    Reported-by: default avatarYunying Sun <yunying.sun@intel.com>
    Tested-by: default avatarYunying Sun <yunying.sun@intel.com>
    Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    bfd4473b
i2c-i801.c 50.6 KB