cell->id = get_free_cell_id();
if (cpu_set_size > PAGE_SIZE)
- return -EINVAL;
+ return trace_error(-EINVAL);
if (cpu_set_size > sizeof(cell->small_cpu_set.bitmap)) {
cpu_set = page_alloc(&mem_pool, 1);
if (!cpu_set)
if (mem->phys_start & ~PAGE_MASK ||
mem->virt_start & ~PAGE_MASK ||
mem->size & ~PAGE_MASK ||
- mem->flags & ~JAILHOUSE_MEM_VALID_FLAGS) {
- printk("FATAL: Invalid memory bar (%p, %p, %p, %x)\n",
- mem->phys_start, mem->virt_start, mem->size,
- mem->flags);
- return -EINVAL;
- }
+ mem->flags & ~JAILHOUSE_MEM_VALID_FLAGS)
+ return trace_error(-EINVAL);
}
return 0;
}
cfg_total_size = jailhouse_cell_config_size(cfg);
cfg_pages = PAGES(cfg_page_offs + cfg_total_size);
if (cfg_pages > NUM_TEMPORARY_PAGES) {
- err = -E2BIG;
+ err = trace_error(-E2BIG);
goto err_resume;
}
/* don't assign the CPU we are currently running on */
if (cell_owns_cpu(cell, cpu_data->cpu_id)) {
- err = -EBUSY;
+ err = trace_error(-EBUSY);
goto err_free_cpu_set;
}
/* the root cell's cpu set must be super-set of new cell's set */
for_each_cpu(cpu, cell->cpu_set)
if (!cell_owns_cpu(&root_cell, cpu)) {
- err = -EBUSY;
+ err = trace_error(-EBUSY);
goto err_free_cpu_set;
}
if (system_config->debug_uart.flags & JAILHOUSE_MEM_IO) {
vaddr = (unsigned long)hypervisor_header.debug_uart_base;
+ /* check if UART overlaps remapping region */
if (vaddr + system_config->debug_uart.size >= REMAP_BASE &&
- vaddr < REMAP_BASE + remap_pool.pages * PAGE_SIZE) {
- printk("FATAL: UART overlaps remapping region\n");
- return -EINVAL;
- }
+ vaddr < REMAP_BASE + remap_pool.pages * PAGE_SIZE)
+ return trace_error(-EINVAL);
+
err = paging_create(&hv_paging_structs,
system_config->debug_uart.phys_start,
system_config->debug_uart.size, vaddr,
pci_space = page_alloc(&remap_pool, mmcfg_size / PAGE_SIZE);
if (!pci_space)
- return -ENOMEM;
+ return trace_error(-ENOMEM);
return paging_create(&hv_paging_structs, mmcfg_start, mmcfg_size,
(unsigned long)pci_space,
if (!err && device->info->msix_address) {
device->msix_table = page_alloc(&remap_pool, size / PAGE_SIZE);
if (!device->msix_table) {
- err = -ENOMEM;
+ err = trace_error(-ENOMEM);
goto error_remove_dev;
}
*/
for (ndev = 0; ndev < cell->config->num_pci_devices; ndev++) {
if (dev_infos[ndev].num_msix_vectors > PCI_MAX_MSIX_VECTORS) {
- err = -ERANGE;
+ err = trace_error(-ERANGE);
goto error;
}
struct pci_device *dev0;
if (dev->info->num_msix_vectors != 1)
- return -EINVAL;
+ return trace_error(-EINVAL);
if (dev->info->shmem_region >= cell->config->num_memory_regions)
- return -EINVAL;
+ return trace_error(-EINVAL);
mem = jailhouse_cell_mem_regions(cell->config)
+ dev->info->shmem_region;
if ((mem0->phys_start == mem->phys_start) &&
(mem0->size == mem->size)) {
if ((*ivp)->eps[1].device)
- return -EBUSY;
+ return trace_error(-EBUSY);
ivshmem_connect_cell(*ivp, dev, mem, 1);
printk("Virtual PCI connection established "
"\"%s\" <--> \"%s\"\n",