Page MenuHomeFreeBSD

D6446.id.diff
No OneTemporary

D6446.id.diff

Index: head/sys/dev/hyperv/vmbus/hv_connection.c
===================================================================
--- head/sys/dev/hyperv/vmbus/hv_connection.c
+++ head/sys/dev/hyperv/vmbus/hv_connection.c
@@ -333,8 +333,8 @@
{
hv_vmbus_synic_event_flags *event;
- event = ((hv_vmbus_synic_event_flags *)
- hv_vmbus_g_context.syn_ic_event_page[cpu]) + HV_VMBUS_MESSAGE_SINT;
+ event = hv_vmbus_g_context.syn_ic_event_page[cpu] +
+ HV_VMBUS_MESSAGE_SINT;
/*
* On Host with Win8 or above, the event page can be checked directly
@@ -349,8 +349,8 @@
{
hv_vmbus_synic_event_flags *event;
- event = ((hv_vmbus_synic_event_flags *)
- hv_vmbus_g_context.syn_ic_event_page[cpu]) + HV_VMBUS_MESSAGE_SINT;
+ event = hv_vmbus_g_context.syn_ic_event_page[cpu] +
+ HV_VMBUS_MESSAGE_SINT;
if (atomic_testandclear_int(&event->flags32[0], 0)) {
vmbus_event_flags_proc(
Index: head/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
===================================================================
--- head/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
+++ head/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
@@ -79,8 +79,9 @@
{
hv_vmbus_message *msg;
- msg = ((hv_vmbus_message *)hv_vmbus_g_context.syn_ic_msg_page[curcpu]) +
+ msg = hv_vmbus_g_context.syn_ic_msg_page[curcpu] +
HV_VMBUS_MESSAGE_SINT;
+
for (;;) {
const hv_vmbus_channel_msg_table_entry *entry;
hv_vmbus_channel_msg_header *hdr;
@@ -134,9 +135,8 @@
hv_vmbus_isr(struct trapframe *frame)
{
struct vmbus_softc *sc = vmbus_get_softc();
+ hv_vmbus_message *msg, *msg_base;
int cpu = curcpu;
- hv_vmbus_message *msg;
- void *page_addr;
/*
* The Windows team has advised that we check for events
@@ -146,8 +146,8 @@
sc->vmbus_event_proc(sc, cpu);
/* Check if there are actual msgs to be process */
- page_addr = hv_vmbus_g_context.syn_ic_msg_page[cpu];
- msg = ((hv_vmbus_message *)page_addr) + HV_VMBUS_TIMER_SINT;
+ msg_base = hv_vmbus_g_context.syn_ic_msg_page[cpu];
+ msg = msg_base + HV_VMBUS_TIMER_SINT;
/* we call eventtimer process the message */
if (msg->header.message_type == HV_MESSAGE_TIMER_EXPIRED) {
@@ -178,7 +178,7 @@
}
}
- msg = ((hv_vmbus_message *)page_addr) + HV_VMBUS_MESSAGE_SINT;
+ msg = msg_base + HV_VMBUS_MESSAGE_SINT;
if (msg->header.message_type != HV_MESSAGE_TYPE_NONE) {
taskqueue_enqueue(hv_vmbus_g_context.hv_msg_tq[cpu],
&hv_vmbus_g_context.hv_msg_task[cpu]);
Index: head/sys/dev/hyperv/vmbus/hv_vmbus_priv.h
===================================================================
--- head/sys/dev/hyperv/vmbus/hv_vmbus_priv.h
+++ head/sys/dev/hyperv/vmbus/hv_vmbus_priv.h
@@ -197,11 +197,14 @@
#define HV_HYPERCALL_PARAM_ALIGN sizeof(uint64_t)
+struct vmbus_message;
+union vmbus_event_flags;
+
typedef struct {
hv_bool_uint8_t syn_ic_initialized;
- hv_vmbus_handle syn_ic_msg_page[MAXCPU];
- hv_vmbus_handle syn_ic_event_page[MAXCPU];
+ struct vmbus_message *syn_ic_msg_page[MAXCPU];
+ union vmbus_event_flags *syn_ic_event_page[MAXCPU];
/*
* For FreeBSD cpuid to Hyper-V vcpuid mapping.
*/
@@ -303,7 +306,7 @@
/*
* Define synthetic interrupt controller message format
*/
-typedef struct {
+typedef struct vmbus_message {
hv_vmbus_msg_header header;
union {
uint64_t payload[HV_MESSAGE_PAYLOAD_QWORD_COUNT];
@@ -578,7 +581,7 @@
/*
* Define the synthetic interrupt controller event flags format
*/
-typedef union {
+typedef union vmbus_event_flags {
uint8_t flags8[HV_EVENT_FLAGS_BYTE_COUNT];
uint32_t flags32[HV_EVENT_FLAGS_DWORD_COUNT];
unsigned long flagsul[HV_EVENT_FLAGS_ULONG_COUNT];

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 25, 4:02 AM (2 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30297972
Default Alt Text
D6446.id.diff (3 KB)

Event Timeline