mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-16 22:39:29 +00:00
DM: add deinit function to virtual keyboard device
old code has no deinit functionality for virtual keyboard device. Which will trigger resource leak when system is reboot. deinit function is added to: 1. deinit low ps2 based keyboard and mouse 2. release memory/io resource of virtual keyboard device NOTE: IRQ resource will be handed in pci irq module Signed-off-by: Yin Fengwei <fengwei.yin@intel.com> Acked-by: Eddie Dong <Eddie.dong@intel.com>
This commit is contained in:
@@ -422,6 +422,7 @@ atkbdc_init(struct vmctx *ctx)
|
||||
assert(base != NULL);
|
||||
|
||||
base->ctx = ctx;
|
||||
ctx->atkbdc_base = base;
|
||||
|
||||
pthread_mutex_init(&base->mtx, NULL);
|
||||
|
||||
@@ -457,6 +458,33 @@ atkbdc_init(struct vmctx *ctx)
|
||||
base->ps2mouse = ps2mouse_init(base);
|
||||
}
|
||||
|
||||
void
|
||||
atkbdc_deinit(struct vmctx *ctx)
|
||||
{
|
||||
struct inout_port iop;
|
||||
struct atkbdc_base *base = ctx->atkbdc_base;
|
||||
|
||||
ps2kbd_deinit(base);
|
||||
base->ps2kbd = NULL;
|
||||
ps2mouse_deinit(base);
|
||||
base->ps2mouse = NULL;
|
||||
|
||||
bzero(&iop, sizeof(struct inout_port));
|
||||
iop.name = "atkdbc";
|
||||
iop.port = KBD_DATA_PORT;
|
||||
iop.size = 1;
|
||||
unregister_inout(&iop);
|
||||
|
||||
bzero(&iop, sizeof(struct inout_port));
|
||||
iop.name = "atkdbc";
|
||||
iop.port = KBD_STS_CTL_PORT;
|
||||
iop.size = 1;
|
||||
unregister_inout(&iop);
|
||||
|
||||
free(base);
|
||||
ctx->atkbdc_base = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
atkbdc_dsdt(void)
|
||||
{
|
||||
|
Reference in New Issue
Block a user