Commit c4b4d704 authored by Saurabh Sengar's avatar Saurabh Sengar Committed by Helge Deller

video: fbdev: hyperv_fb: Allow resolutions with size > 64 MB for Gen1

This patch fixes a bug where GEN1 VMs doesn't allow resolutions greater
than 64 MB size (eg 7680x4320). Unnecessary PCI check limits Gen1 VRAM
to legacy PCI BAR size only (ie 64MB). Thus any, resolution requesting
greater then 64MB (eg 7680x4320) would fail. MMIO region assigning this
memory shouldn't be limited by PCI bar size.
Signed-off-by: default avatarSaurabh Sengar <ssengar@linux.microsoft.com>
Reviewed-by: default avatarDexuan Cui <decui@microsoft.com>
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 42226c98
...@@ -1009,7 +1009,6 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info) ...@@ -1009,7 +1009,6 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
struct pci_dev *pdev = NULL; struct pci_dev *pdev = NULL;
void __iomem *fb_virt; void __iomem *fb_virt;
int gen2vm = efi_enabled(EFI_BOOT); int gen2vm = efi_enabled(EFI_BOOT);
resource_size_t pot_start, pot_end;
phys_addr_t paddr; phys_addr_t paddr;
int ret; int ret;
...@@ -1060,23 +1059,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info) ...@@ -1060,23 +1059,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
dio_fb_size = dio_fb_size =
screen_width * screen_height * screen_depth / 8; screen_width * screen_height * screen_depth / 8;
if (gen2vm) { ret = vmbus_allocate_mmio(&par->mem, hdev, 0, -1,
pot_start = 0;
pot_end = -1;
} else {
if (!(pci_resource_flags(pdev, 0) & IORESOURCE_MEM) ||
pci_resource_len(pdev, 0) < screen_fb_size) {
pr_err("Resource not available or (0x%lx < 0x%lx)\n",
(unsigned long) pci_resource_len(pdev, 0),
(unsigned long) screen_fb_size);
goto err1;
}
pot_end = pci_resource_end(pdev, 0);
pot_start = pot_end - screen_fb_size + 1;
}
ret = vmbus_allocate_mmio(&par->mem, hdev, pot_start, pot_end,
screen_fb_size, 0x100000, true); screen_fb_size, 0x100000, true);
if (ret != 0) { if (ret != 0) {
pr_err("Unable to allocate framebuffer memory\n"); pr_err("Unable to allocate framebuffer memory\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment