mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 09:44:18 +08:00
drm/i915/gvt: fix high-order allocation failure on late load
If the module happens to be loaded later at runtime there is a chance memory is already fragmented enough to fail allocation of firmware blob storage and consequently GVT init. Since it doesn't seem to be necessary to have the blob contiguous, use vmalloc() instead to avoid the issue. Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1579723824-25711-1-git-send-email-igor.druzhinin@citrix.com
This commit is contained in:
parent
5e822e44ce
commit
c216f12bed
@ -146,7 +146,7 @@ void intel_gvt_free_firmware(struct intel_gvt *gvt)
|
||||
clean_firmware_sysfs(gvt);
|
||||
|
||||
kfree(gvt->firmware.cfg_space);
|
||||
kfree(gvt->firmware.mmio);
|
||||
vfree(gvt->firmware.mmio);
|
||||
}
|
||||
|
||||
static int verify_firmware(struct intel_gvt *gvt,
|
||||
@ -229,7 +229,7 @@ int intel_gvt_load_firmware(struct intel_gvt *gvt)
|
||||
|
||||
firmware->cfg_space = mem;
|
||||
|
||||
mem = kmalloc(info->mmio_size, GFP_KERNEL);
|
||||
mem = vmalloc(info->mmio_size);
|
||||
if (!mem) {
|
||||
kfree(path);
|
||||
kfree(firmware->cfg_space);
|
||||
|
Loading…
Reference in New Issue
Block a user