sync with OpenBSD -current
This commit is contained in:
parent
7a404394cf
commit
1bc98b3538
54 changed files with 733 additions and 467 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: vmm_machdep.c,v 1.10 2023/11/24 21:48:25 dv Exp $ */
|
||||
/* $OpenBSD: vmm_machdep.c,v 1.11 2023/11/26 13:02:44 dv Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2014 Mike Larkin <mlarkin@openbsd.org>
|
||||
*
|
||||
|
@ -4155,7 +4155,7 @@ vcpu_run_vmx(struct vcpu *vcpu, struct vm_run_params *vrp)
|
|||
|
||||
if (vcpu->vc_vmx_vpid_enabled) {
|
||||
/* Invalidate old TLB mappings */
|
||||
vid.vid_vpid = vcpu->vc_parent->vm_id;
|
||||
vid.vid_vpid = vcpu->vc_vpid;
|
||||
vid.vid_addr = 0;
|
||||
invvpid(IA32_VMX_INVVPID_SINGLE_CTX_GLB, &vid);
|
||||
}
|
||||
|
@ -5447,7 +5447,7 @@ vmx_handle_cr0_write(struct vcpu *vcpu, uint64_t r)
|
|||
/* Paging was disabled (prev. enabled) - Flush TLB */
|
||||
if (vmm_softc->mode == VMM_MODE_EPT &&
|
||||
vcpu->vc_vmx_vpid_enabled) {
|
||||
vid.vid_vpid = vcpu->vc_parent->vm_id;
|
||||
vid.vid_vpid = vcpu->vc_vpid;
|
||||
vid.vid_addr = 0;
|
||||
invvpid(IA32_VMX_INVVPID_SINGLE_CTX_GLB, &vid);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: rtkit.c,v 1.12 2023/04/07 09:31:59 jsg Exp $ */
|
||||
/* $OpenBSD: rtkit.c,v 1.13 2023/11/25 18:12:20 kettenis Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2021 Mark Kettenis <kettenis@openbsd.org>
|
||||
*
|
||||
|
@ -77,9 +77,14 @@
|
|||
#define RTKIT_IOREPORT_UNKNOWN2 12
|
||||
|
||||
#define RTKIT_OSLOG_TYPE(x) (((x) >> 56) & 0xff)
|
||||
#define RTKIT_OSLOG_TYPE_SHIFT 56
|
||||
#define RTKIT_OSLOG_INIT 1ULL
|
||||
#define RTKIT_OSLOG_ACK 3ULL
|
||||
#define RTKIT_OSLOG_TYPE_SHIFT (56 - RTKIT_MGMT_TYPE_SHIFT)
|
||||
#define RTKIT_OSLOG_BUFFER_REQUEST 1
|
||||
#define RTKIT_OSLOG_BUFFER_ADDR(x) (((x) >> 0) & 0xfffffffff)
|
||||
#define RTKIT_OSLOG_BUFFER_SIZE(x) (((x) >> 36) & 0xfffff)
|
||||
#define RTKIT_OSLOG_BUFFER_SIZE_SHIFT 36
|
||||
#define RTKIT_OSLOG_UNKNOWN1 3
|
||||
#define RTKIT_OSLOG_UNKNOWN2 4
|
||||
#define RTKIT_OSLOG_UNKNOWN3 5
|
||||
|
||||
/* Versions we support. */
|
||||
#define RTKIT_MINVER 11
|
||||
|
@ -253,7 +258,7 @@ rtkit_handle_mgmt(struct rtkit_state *state, struct aplmbox_msg *msg)
|
|||
default:
|
||||
printf("%s: unhandled management event 0x%016lld\n",
|
||||
__func__, msg->data0);
|
||||
return EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -289,7 +294,7 @@ rtkit_handle_crashlog(struct rtkit_state *state, struct aplmbox_msg *msg)
|
|||
default:
|
||||
printf("%s: unhandled crashlog event 0x%016llx\n",
|
||||
__func__, msg->data0);
|
||||
return EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -333,7 +338,7 @@ rtkit_handle_syslog(struct rtkit_state *state, struct aplmbox_msg *msg)
|
|||
default:
|
||||
printf("%s: unhandled syslog event 0x%016llx\n",
|
||||
__func__, msg->data0);
|
||||
return EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -377,7 +382,7 @@ rtkit_handle_ioreport(struct rtkit_state *state, struct aplmbox_msg *msg)
|
|||
default:
|
||||
printf("%s: unhandled ioreport event 0x%016llx\n",
|
||||
__func__, msg->data0);
|
||||
return EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -387,19 +392,39 @@ int
|
|||
rtkit_handle_oslog(struct rtkit_state *state, struct aplmbox_msg *msg)
|
||||
{
|
||||
struct mbox_channel *mc = state->mc;
|
||||
struct rtkit *rk = state->rk;
|
||||
bus_addr_t addr;
|
||||
bus_size_t size;
|
||||
int error;
|
||||
|
||||
switch (RTKIT_OSLOG_TYPE(msg->data0)) {
|
||||
case RTKIT_OSLOG_INIT:
|
||||
case RTKIT_OSLOG_BUFFER_REQUEST:
|
||||
addr = RTKIT_OSLOG_BUFFER_ADDR(msg->data0) << PAGE_SHIFT;
|
||||
size = RTKIT_OSLOG_BUFFER_SIZE(msg->data0);
|
||||
if (addr)
|
||||
break;
|
||||
|
||||
if (rk) {
|
||||
addr = rtkit_alloc(state, size);
|
||||
if (addr == (bus_addr_t)-1)
|
||||
return ENOMEM;
|
||||
}
|
||||
|
||||
error = rtkit_send(mc, RTKIT_EP_OSLOG,
|
||||
0, RTKIT_OSLOG_ACK << RTKIT_OSLOG_TYPE_SHIFT);
|
||||
(RTKIT_OSLOG_BUFFER_REQUEST << RTKIT_OSLOG_TYPE_SHIFT),
|
||||
(size << RTKIT_OSLOG_BUFFER_SIZE_SHIFT) |
|
||||
(addr >> PAGE_SHIFT));
|
||||
if (error)
|
||||
return error;
|
||||
break;
|
||||
case RTKIT_OSLOG_UNKNOWN1:
|
||||
case RTKIT_OSLOG_UNKNOWN2:
|
||||
case RTKIT_OSLOG_UNKNOWN3:
|
||||
break;
|
||||
default:
|
||||
printf("%s: unhandled oslog event 0x%016llx\n",
|
||||
__func__, msg->data0);
|
||||
return EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -456,7 +481,7 @@ rtkit_poll(struct rtkit_state *state)
|
|||
}
|
||||
|
||||
printf("%s: unhandled endpoint %d\n", __func__, msg.data1);
|
||||
return EIO;
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
@ -549,8 +574,9 @@ rtkit_set_ap_pwrstate(struct rtkit_state *state, uint16_t pwrstate)
|
|||
delay(10);
|
||||
continue;
|
||||
}
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
KASSERT(error == 0);
|
||||
if (state->ap_pwrstate == pwrstate)
|
||||
break;
|
||||
}
|
||||
|
@ -578,8 +604,9 @@ rtkit_set_iop_pwrstate(struct rtkit_state *state, uint16_t pwrstate)
|
|||
delay(10);
|
||||
continue;
|
||||
}
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
KASSERT(error == 0);
|
||||
if (state->iop_pwrstate == pwrstate)
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue