Deleted Added
sdiff udiff text old ( 297635 ) new ( 297908 )
full compact
1/*-
2 * Copyright (c) 2009-2012 Microsoft Corp.
3 * Copyright (c) 2012 NetApp Inc.
4 * Copyright (c) 2012 Citrix Inc.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

--- 291 unchanged lines hidden (view full) ---

300 int rel_id;
301 int maxdword;
302 hv_vmbus_synic_event_flags *event;
303 /* int maxdword = PAGE_SIZE >> 3; */
304
305 KASSERT(cpu <= mp_maxid, ("VMBUS: hv_vmbus_on_events: "
306 "cpu out of range!"));
307
308 if ((hv_vmbus_protocal_version == HV_VMBUS_VERSION_WS2008) ||
309 (hv_vmbus_protocal_version == HV_VMBUS_VERSION_WIN7)) {
310 maxdword = HV_MAX_NUM_CHANNELS_SUPPORTED >> 5;
311 /*
312 * receive size is 1/2 page and divide that by 4 bytes
313 */
314 recv_interrupt_page =
315 hv_vmbus_g_connection.recv_interrupt_page;
316 } else {
317 /*
318 * On Host with Win8 or above, the event page can be
319 * checked directly to get the id of the channel
320 * that has the pending interrupt.
321 */
322 maxdword = HV_EVENT_FLAGS_DWORD_COUNT;
323 page_addr = hv_vmbus_g_context.syn_ic_event_page[cpu];
324 event = (hv_vmbus_synic_event_flags *)
325 page_addr + HV_VMBUS_MESSAGE_SINT;
326 recv_interrupt_page = event->flags32;
327 }
328
329 /*
330 * Check events
331 */
332 if (recv_interrupt_page != NULL) {
333 for (dword = 0; dword < maxdword; dword++) {

--- 81 unchanged lines hidden ---