Hi

Am 12.03.26 um 16:04 schrieb Hardik Phalet:
On Tue Mar 10, 2026 at 6:38 PM IST, Thomas Zimmermann wrote:
Hi,

thanks for the patch. Let's hope there are no conflicts with other
hardware.  IDK if anyone still uses this driver.
Hi Thomas,

Thanks for reviewing this.

Since I currently do not have access to the hardware needed to test the
change properly, I will drop this patch for now. I may revisit it once I
can validate the behavior on real hardware.

Good luck. That's the Hercules framebuffer driver. Finding such ancient hardware that can run modern Linux is nigh impossible.

But we can merge the patch. If it breaks anyone's setup, they will send a bug report.

Helge will pick up the fix if he's ok with it.

Best regards
Thomas


Thanks again for your feedback.

Best regards,
Hardik
Am 10.03.26 um 13:30 schrieb Hardik Phalet:
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 <[email protected]>
Reviewed-by: Thomas Zimmermann <[email protected]>

Best regards
Thomas

---
Changes in v3:
- Used dev_err() to log memory region request, based on another review
    comment by Thomas [2].
Changes in v2:
- Used devm_request_mem_region instead of request_mem_region, based on a
        review comment by Thomas [1].

v1: https://lore.kernel.org/all/[email protected]/
v2: https://lore.kernel.org/all/[email protected]/
[1]: https://lore.kernel.org/all/[email protected]/
[2]: https://lore.kernel.org/all/[email protected]/

   drivers/video/fbdev/hgafb.c | 9 +++++++--
   1 file 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;

--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)



--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)


Reply via email to