When the BIOS does not hide the P2SB device, it is expected to be visible from userspace. However, the P2SB device disappears since the commit 5913320eb0b3 ("platform/x86: p2sb: Allow p2sb_bar() calls during PCI device probe") [1]. This series addresses the problem. The first three patches are preliminary refactoring for the fix. The last patch resolves the issue by caching the P2SB device resources only if the BIOS hides the P2SB device. [1] https://lore.kernel.org/lkml/ZzTI+biIUTvFT6NC@goliath/ Changes from v3: * 4th patch: Added the missing ret=0 initialization in p2sb_cache_resources() * Added Reviewed-by tags * Link to v3: https://lore.kernel.org/platform-driver-x86/20241127060055.357498-1-shinichiro.kawasaki@xxxxxxx/ Changes from v2: * Renamed the global flag from p2sb_hidden to p2sb_hidden_by_bios * Moved P2SB hide and unhide code to p2sb_scan_and_cache() * Introduced two helper functions which are called from p2sb_bar() * Separated the preliminary refactoring work to 3 new patches * Link to v2: https://lore.kernel.org/platform-driver-x86/20241125042326.304780-1-shinichiro.kawasaki@xxxxxxx/ Changes from v1: * Put back P2SBC_HIDE flag reference code in the rescan_remove lock region * Do not cache resources when the P2SB device is not hidden * Added the Reported-by tag * Link to v1: https://lore.kernel.org/platform-driver-x86/20241120064055.245969-1-shinichiro.kawasaki@xxxxxxx/ Shin'ichiro Kawasaki (4): p2sb: Factor out p2sb_read_from_cache() p2sb: Introduce the global flag p2sb_hidden_by_bios p2sb: Move P2SB hide and unhide code to p2sb_scan_and_cache() p2sb: Do not scan and remove the P2SB device when it is unhidden drivers/platform/x86/p2sb.c | 79 ++++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 23 deletions(-) -- 2.47.0