Page MenuHomeFreeBSD

Hyperv: Event handling code refactor.
ClosedPublic

Authored by howard0su_gmail.com on Jan 13 2016, 8:39 AM.
Tags
None
Referenced Files
Unknown Object (File)
Feb 17 2024, 9:02 AM
Unknown Object (File)
Feb 13 2024, 7:06 AM
Unknown Object (File)
Feb 13 2024, 2:48 AM
Unknown Object (File)
Feb 12 2024, 9:58 PM
Unknown Object (File)
Dec 25 2023, 7:32 AM
Unknown Object (File)
Dec 25 2023, 7:32 AM
Unknown Object (File)
Dec 25 2023, 7:32 AM
Unknown Object (File)
Dec 25 2023, 7:32 AM
Subscribers

Details

Summary
  1. use taskqueue instead of swi
  2. scan the interrupt flags in filter
  3. disable ringbuffer interrupt mask in filter to ensure no unnecessary interrupts

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

howard0su_gmail.com retitled this revision from to Hyperv: Event handling code refactor..
howard0su_gmail.com updated this object.
howard0su_gmail.com edited the test plan for this revision. (Show Details)
howard0su_gmail.com set the repository for this revision to rS FreeBSD src repository - subversion.

Does this mean, you are going to have at least one taskq, i.e. one thread, per-device? I think its probably too excessive for the already slow VM.

Does this mean, you are going to have at least one taskq, i.e. one thread, per-device? I think its probably too excessive for the already slow VM.

Yes. We can use taskqueue_swi instead creating another queue for each channel. but i noticed most NIC driver is using this approach. so I use the same way here.

Does this mean, you are going to have at least one taskq, i.e. one thread, per-device? I think its probably too excessive for the already slow VM.

Yes. We can use taskqueue_swi instead creating another queue for each channel. but i noticed most NIC driver is using this approach. so I use the same way here.

Well, as I said, I think its an overkill to have a taskq per-channel. How about just replace the swi you removed in this patch w/ a taskq instead.

howard0su_gmail.com edited edge metadata.

Create taskqueue per CPU instead of per channel

Looks good to me

sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
498 ↗(On Diff #12315)

M_WAITOK here? We don't want it to fail

adrian edited edge metadata.
This revision is now accepted and ready to land.Jan 15 2016, 1:36 AM
This revision now requires review to proceed.Jan 15 2016, 7:12 AM
adrian edited edge metadata.
This revision is now accepted and ready to land.Jan 15 2016, 7:13 AM
decui_microsoft.com edited edge metadata.

LGTM

sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
527 ↗(On Diff #12352)

Typo: ahdnle --> handle.

howard0su_gmail.com edited edge metadata.
howard0su_gmail.com marked an inline comment as done.

Fix typo in comment

This revision now requires review to proceed.Jan 17 2016, 1:01 PM

iperf result shows no performance regression after this change.

adrian edited edge metadata.
This revision is now accepted and ready to land.Jan 26 2016, 4:35 AM
This revision was automatically updated to reflect the committed changes.