Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

doc: add documentation for uio-hv-generic

Update UIO documentation to include basic information about
uio_hv_generic.

Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>

authored by

Stephen Hemminger and committed by
Jonathan Corbet
a164a8a6 5ac9baf4

+62
+62
Documentation/DocBook/uio-howto.tmpl
··· 46 46 47 47 <revhistory> 48 48 <revision> 49 + <revnumber>0.10</revnumber> 50 + <date>2016-10-17</date> 51 + <authorinitials>sch</authorinitials> 52 + <revremark>Added generic hyperv driver 53 + </revremark> 54 + </revision> 55 + <revision> 49 56 <revnumber>0.9</revnumber> 50 57 <date>2009-07-16</date> 51 58 <authorinitials>mst</authorinitials> ··· 1038 1031 </para> 1039 1032 </sect1> 1040 1033 1034 + </chapter> 1035 + 1036 + <chapter id="uio_hv_generic" xreflabel="Using Generic driver for Hyper-V VMBUS"> 1037 + <?dbhtml filename="uio_hv_generic.html"?> 1038 + <title>Generic Hyper-V UIO driver</title> 1039 + <para> 1040 + The generic driver is a kernel module named uio_hv_generic. 1041 + It supports devices on the Hyper-V VMBus similar to uio_pci_generic 1042 + on PCI bus. 1043 + </para> 1044 + 1045 + <sect1 id="uio_hv_generic_binding"> 1046 + <title>Making the driver recognize the device</title> 1047 + <para> 1048 + Since the driver does not declare any device GUID's, it will not get loaded 1049 + automatically and will not automatically bind to any devices, you must load it 1050 + and allocate id to the driver yourself. For example, to use the network device 1051 + GUID: 1052 + <programlisting> 1053 + modprobe uio_hv_generic 1054 + echo &quot;f8615163-df3e-46c5-913f-f2d2f965ed0e&quot; &gt; /sys/bus/vmbus/drivers/uio_hv_generic/new_id 1055 + </programlisting> 1056 + </para> 1057 + <para> 1058 + If there already is a hardware specific kernel driver for the device, the 1059 + generic driver still won't bind to it, in this case if you want to use the 1060 + generic driver (why would you?) you'll have to manually unbind the hardware 1061 + specific driver and bind the generic driver, like this: 1062 + <programlisting> 1063 + echo -n vmbus-ed963694-e847-4b2a-85af-bc9cfc11d6f3 &gt; /sys/bus/vmbus/drivers/hv_netvsc/unbind 1064 + echo -n vmbus-ed963694-e847-4b2a-85af-bc9cfc11d6f3 &gt; /sys/bus/vmbus/drivers/uio_hv_generic/bind 1065 + </programlisting> 1066 + </para> 1067 + <para> 1068 + You can verify that the device has been bound to the driver 1069 + by looking for it in sysfs, for example like the following: 1070 + <programlisting> 1071 + ls -l /sys/bus/vmbus/devices/vmbus-ed963694-e847-4b2a-85af-bc9cfc11d6f3/driver 1072 + </programlisting> 1073 + Which if successful should print 1074 + <programlisting> 1075 + .../vmbus-ed963694-e847-4b2a-85af-bc9cfc11d6f3/driver -&gt; ../../../bus/vmbus/drivers/uio_hv_generic 1076 + </programlisting> 1077 + </para> 1078 + </sect1> 1079 + 1080 + <sect1 id="uio_hv_generic_internals"> 1081 + <title>Things to know about uio_hv_generic</title> 1082 + <para> 1083 + On each interrupt, uio_hv_generic sets the Interrupt Disable bit. 1084 + This prevents the device from generating further interrupts 1085 + until the bit is cleared. The userspace driver should clear this 1086 + bit before blocking and waiting for more interrupts. 1087 + </para> 1088 + </sect1> 1041 1089 </chapter> 1042 1090 1043 1091 <appendix id="app1">