dm: vga: remove all the assertion.

To avoid assertions in devicemodel, remove all the assert() in vga.c,
use print error message to check errors.

Tracked-On: #8125
Signed-off-by: Sun Peng <peng.p.sun@linux.intel.com>
Reviewed-by: Huang, Yonghua <yonghua.huang@intel.com>
Acked-by: Wang, Yu1 <yu1.wang@intel.com>
This commit is contained in:
Sun Peng 2022-08-25 09:30:41 +08:00 committed by acrnsi-robot
parent 669ebd0fd7
commit 7a13807abe

View File

@ -8,7 +8,6 @@
#include <sys/param.h>
#include <stdint.h>
#include <assert.h>
#include <pthread.h>
#include <stdbool.h>
#include <stdio.h>
@ -339,7 +338,8 @@ vga_mem_rd_handler(struct vmctx *ctx, uint64_t addr, void *arg1)
/*
* monochrome text mode: base 0xb0000 size 32kb
*/
assert(0);
pr_err("VGA: doesn't support monichrome text mode.\n");
return 0;
case 0x3:
/*
* color text mode and CGA: base 0xb8000 size 32kb
@ -357,7 +357,8 @@ vga_mem_rd_handler(struct vmctx *ctx, uint64_t addr, void *arg1)
if (vd->vga_gc.gc_mode_rm) {
/* read mode 1 */
assert(0);
pr_err("VGA GC: doesn't support read mode 1.\n");
return 0;
}
map_sel = vd->vga_gc.gc_read_map_sel;
@ -403,7 +404,8 @@ vga_mem_wr_handler(struct vmctx *ctx, uint64_t addr, uint8_t val, void *arg1)
/*
* monochrome text mode: base 0xb0000 size 32kb
*/
assert(0);
pr_err("VGA: doesn't support monichrome text mode.\n");
return;
case 0x3:
/*
* color text mode and CGA: base 0xb8000 size 32kb
@ -778,8 +780,7 @@ vga_port_in_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
default:
pr_err("VGA CRTC: port 0x%04x at index %d\n", port, vd->vga_crtc.crtc_index);
assert(0);
break;
return (-1);
}
break;
case ATC_IDX_PORT:
@ -807,8 +808,7 @@ vga_port_in_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
default:
pr_err("VGA ATC inb 0x%04x at index %d\n", port , vd->vga_atc.atc_index);
assert(0);
break;
return (-1);
}
break;
case SEQ_IDX_PORT:
@ -833,8 +833,7 @@ vga_port_in_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
default:
pr_err("VGA SEQ: inb 0x%04x at index %d\n", port, vd->vga_seq.seq_index);
assert(0);
break;
return (-1);
}
break;
case DAC_DATA_PORT:
@ -880,16 +879,15 @@ vga_port_in_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
default:
pr_err("VGA GC: inb 0x%04x at index %d\n", port, vd->vga_crtc.crtc_index);
assert(0);
break;
return (-1);
}
break;
case GEN_MISC_OUTPUT_PORT:
*val = vd->vga_misc;
break;
case GEN_INPUT_STS0_PORT:
assert(0);
break;
pr_err("VGA: doesn't support Status #0.\n");
return (-1);
case GEN_INPUT_STS1_MONO_PORT:
case GEN_INPUT_STS1_COLOR_PORT:
vd->vga_atc.atc_flipflop = 0;
@ -899,15 +897,13 @@ vga_port_in_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
case GEN_FEATURE_CTRL_PORT:
// OpenBvd calls this with bytes = 1
//assert(0);
*val = 0;
break;
case 0x3c3:
*val = 0;
break;
default:
printf("vga_port_in_handler() unhandled port 0x%x\n", port);
//assert(0);
pr_err("%s: unhandled port 0x%x\n", __func__, port);
return (-1);
}
@ -1014,14 +1010,15 @@ vga_port_out_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
default:
pr_err("VGA CRTC: outb 0x%04x, 0x%02x at index %d\n", port, val, vd->vga_crtc.crtc_index);
assert(0);
break;
return (-1);
}
break;
case ATC_IDX_PORT:
if (vd->vga_atc.atc_flipflop == 0) {
if (vd->vga_atc.atc_index & 0x20)
assert(0);
if (vd->vga_atc.atc_index & 0x20) {
pr_err("VGA ATC: invalid index.\n");
return (-1);
}
vd->vga_atc.atc_index = val & ATC_IDX_MASK;
} else {
switch (vd->vga_atc.atc_index) {
@ -1049,8 +1046,7 @@ vga_port_out_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
default:
pr_err("VGA ATC: outb 0x%04x, 0x%02x at index %d\n", port, val, vd->vga_atc.atc_index);
assert(0);
break;
return (-1);
}
}
vd->vga_atc.atc_flipflop ^= 1;
@ -1081,12 +1077,10 @@ vga_port_out_handler(struct vmctx *ctx, int in, int port, int bytes,
case SEQ_MEMORY_MODE:
vd->vga_seq.seq_mm = val;
/* Windows queries Chain4 */
//assert((vd->vga_seq.seq_mm & SEQ_MM_C4) == 0);
break;
default:
pr_err("VGA SEQ: outb 0x%04x, 0x%02x at index %d\n", port, val, vd->vga_seq.seq_index);
assert(0);
break;
return (-1);
}
break;
case DAC_MASK:
@ -1143,7 +1137,6 @@ vga_port_out_handler(struct vmctx *ctx, int in, int port, int bytes,
case GC_MODE:
vd->vga_gc.gc_mode = val;
vd->vga_gc.gc_mode_c4 = (val & GC_MODE_C4) != 0;
assert(!vd->vga_gc.gc_mode_c4);
vd->vga_gc.gc_mode_oe = (val & GC_MODE_OE) != 0;
vd->vga_gc.gc_mode_rm = (val >> 3) & 0x1;
vd->vga_gc.gc_mode_wm = val & 0x3;
@ -1165,8 +1158,7 @@ vga_port_out_handler(struct vmctx *ctx, int in, int port, int bytes,
break;
default:
pr_err("VGA GC: outb 0x%04x, 0x%02x at index %d\n", port, val, vd->vga_gc.gc_index);
assert(0);
break;
return (-1);
}
break;
case GEN_INPUT_STS0_PORT:
@ -1181,7 +1173,6 @@ vga_port_out_handler(struct vmctx *ctx, int in, int port, int bytes,
// break;
default:
pr_dbg("vga_port_out_handler() unhandled port 0x%x, val 0x%x\n", port, val);
//assert(0);
return (-1);
}
return (0);
@ -1232,7 +1223,6 @@ vga_port_handler(struct vmctx *ctx, int vcpu, int in, int port, int bytes,
}
break;
default:
assert(0);
return (-1);
}
@ -1258,7 +1248,10 @@ vga_init(struct gfx_ctx *gc, int io_only)
iop.arg = vd;
error = register_inout(&iop);
assert(error == 0);
if (error == -1) {
pr_err("%s: failed to register inout port.\n", __func__);
return NULL;
}
}
vd->gc_image = gc->gc_image;
@ -1274,7 +1267,10 @@ vga_init(struct gfx_ctx *gc, int io_only)
vd->mr.handler = vga_mem_handler;
vd->mr.arg1 = vd;
error = register_mem_fallback(&vd->mr);
assert(error == 0);
if (error == -1) {
pr_err("%s: failed to regitster mem fallback.\n", __func__);
return NULL;
}
vd->vga_ram = malloc(256 * KB);
memset(vd->vga_ram, 0, 256 * KB);
@ -1367,7 +1363,7 @@ vga_vbe_write(struct vmctx *ctx, int vcpu, struct vga *vga,
break;
default:
pr_err("%s: write unknown size %d\n", __func__, size);
break;
return;
}
switch (offset) {
@ -1443,8 +1439,6 @@ void vga_deinit(struct vga *vga)
iop.arg = NULL;
unregister_inout(&iop);
//error = unregister_inout(&iop);
//assert(error == 0);
}
unregister_mem_fallback(&vd->mr);