xgi_cmdlist_initialize wasn't correctly checking for errors from
xgi_pcie_alloc. Furthermore, xgi_bootstrap, the one caller of
xgi_cmdlist_initialize, wasn't check its return value.
.size = size,
.owner = PCIE_2D,
};
+ int err;
- xgi_pcie_alloc(info, &mem_alloc, 0);
-
- if ((mem_alloc.size == 0) && (mem_alloc.hw_addr == 0)) {
- return -1;
+ err = xgi_pcie_alloc(info, &mem_alloc, 0);
+ if (err) {
+ return err;
}
s_cmdring._cmdRingSize = mem_alloc.size;
s_cmdring._lastBatchStartAddr = 0;
s_cmdring._cmdRingOffset = 0;
- return 1;
+ return 0;
}
static void xgi_submit_cmdlist(struct xgi_info * info,
}
/* Alloc 1M bytes for cmdbuffer which is flush2D batch array */
- xgi_cmdlist_initialize(info, 0x100000);
+ err = xgi_cmdlist_initialize(info, 0x100000);
+ if (err) {
+ DRM_ERROR("xgi_cmdlist_initialize() failed\n");
+ return err;
+ }
info->bootstrap_done = 1;
return 0;