Skip to content

Commit 448aaf5

Browse files
Hardik Phalethdeller
authored andcommitted
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>
1 parent a40c0e8 commit 448aaf5

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

drivers/video/fbdev/hgafb.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,14 +276,19 @@ static void hga_blank(int blank_mode)
276276
spin_unlock_irqrestore(&hga_reg_lock, flags);
277277
}
278278

279-
static int hga_card_detect(void)
279+
static int hga_card_detect(struct platform_device *pdev)
280280
{
281281
int count = 0;
282282
void __iomem *p, *q;
283283
unsigned short p_save, q_save;
284284

285285
hga_vram_len = 0x08000;
286286

287+
if (!devm_request_mem_region(&pdev->dev, 0xb0000, hga_vram_len, "hgafb")) {
288+
dev_err(&pdev->dev, "cannot reserve video memory at 0xb0000\n");
289+
return -EBUSY;
290+
}
291+
287292
hga_vram = ioremap(0xb0000, hga_vram_len);
288293
if (!hga_vram)
289294
return -ENOMEM;
@@ -568,7 +573,7 @@ static int hgafb_probe(struct platform_device *pdev)
568573
struct fb_info *info;
569574
int ret;
570575

571-
ret = hga_card_detect();
576+
ret = hga_card_detect(pdev);
572577
if (ret)
573578
return ret;
574579

0 commit comments

Comments
 (0)