summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorHardik Phalet <hardik.phalet@pm.me>2026-03-10 12:30:27 +0000
committerHelge Deller <deller@gmx.de>2026-04-22 17:02:55 +0200
commit448aaf54d3ae1b73dfcf723c9f8a02c2116f3358 (patch)
treee0ace39e534842ce3b422467bb5505e79a384512 /drivers/video/fbdev
parenta40c0e815962b1f691d7ea12f7ddd42063c49f08 (diff)
downloadlwn-448aaf54d3ae1b73dfcf723c9f8a02c2116f3358.tar.gz
lwn-448aaf54d3ae1b73dfcf723c9f8a02c2116f3358.zip
fbdev: hgafb: Request memory region before ioremap
The driver calls ioremap() on the HGA video memory at 0xb0000 without first reserving the physical address range. This leaves the kernel resource tree incomplete and can cause silent conflicts with other drivers claiming the same range. Add a devm_request_mem_region() call before ioremap() in hga_card_detect() to reserve the memory region. Signed-off-by: Hardik Phalet <hardik.phalet@pm.me> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/hgafb.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/video/fbdev/hgafb.c b/drivers/video/fbdev/hgafb.c
index 14418aa3791a..d32fd1c5217c 100644
--- a/drivers/video/fbdev/hgafb.c
+++ b/drivers/video/fbdev/hgafb.c
@@ -276,7 +276,7 @@ static void hga_blank(int blank_mode)
spin_unlock_irqrestore(&hga_reg_lock, flags);
}
-static int hga_card_detect(void)
+static int hga_card_detect(struct platform_device *pdev)
{
int count = 0;
void __iomem *p, *q;
@@ -284,6 +284,11 @@ static int hga_card_detect(void)
hga_vram_len = 0x08000;
+ if (!devm_request_mem_region(&pdev->dev, 0xb0000, hga_vram_len, "hgafb")) {
+ dev_err(&pdev->dev, "cannot reserve video memory at 0xb0000\n");
+ return -EBUSY;
+ }
+
hga_vram = ioremap(0xb0000, hga_vram_len);
if (!hga_vram)
return -ENOMEM;
@@ -568,7 +573,7 @@ static int hgafb_probe(struct platform_device *pdev)
struct fb_info *info;
int ret;
- ret = hga_card_detect();
+ ret = hga_card_detect(pdev);
if (ret)
return ret;