]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
fbdev: atyfb: Check if pll_ops->init_pll failed
authorDaniel Palmer <daniel@0x0f.com>
Fri, 24 Oct 2025 09:37:15 +0000 (18:37 +0900)
committerHelge Deller <deller@gmx.de>
Tue, 28 Oct 2025 21:59:19 +0000 (22:59 +0100)
Actually check the return value from pll_ops->init_pll()
as it can return an error.

If the card's BIOS didn't run because it's not the primary VGA card
the fact that the xclk source is unsupported is printed as shown
below but the driver continues on regardless and on my machine causes
a hard lock up.

[   61.470088] atyfb 0000:03:05.0: enabling device (0080 -> 0083)
[   61.476191] atyfb: using auxiliary register aperture
[   61.481239] atyfb: 3D RAGE XL (Mach64 GR, PCI-33) [0x4752 rev 0x27]
[   61.487569] atyfb: 512K SGRAM (1:1), 14.31818 MHz XTAL, 230 MHz PLL, 83 Mhz MCLK, 63 MHz XCLK
[   61.496112] atyfb: Unsupported xclk source:  5.

Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Daniel Palmer <daniel@0x0f.com>
Signed-off-by: Helge Deller <deller@gmx.de>
Cc: stable@vger.kernel.org
drivers/video/fbdev/aty/atyfb_base.c

index 210fd3ac18a4802b356c6fd2282fee48e45fd871..56ef1d88e003a0ee12af0bdff980a901529bd27d 100644 (file)
@@ -2614,8 +2614,12 @@ static int aty_init(struct fb_info *info)
                pr_cont("\n");
        }
 #endif
-       if (par->pll_ops->init_pll)
-               par->pll_ops->init_pll(info, &par->pll);
+       if (par->pll_ops->init_pll) {
+               ret = par->pll_ops->init_pll(info, &par->pll);
+               if (ret)
+                       return ret;
+       }
+
        if (par->pll_ops->resume_pll)
                par->pll_ops->resume_pll(info, &par->pll);