RE: [PATCH 2/2] Documentation: hyperv: Improve synic and interrupt handling description

Michael Kelley
2024-05-10T18:21:03Z

From: Easwar Hariharan <eahariha@linux.microsoft.com> Sent: Friday, May 10, 2024 10:55 AM
>
> On 5/7/2024 6:16 AM, mhkelley58@gmail.com wrote:
> > From: Michael Kelley <mhklinux@outlook.com>
> >
> > Current documentation does not describe how Linux handles the synthetic
> > interrupt controller (synic) that Hyper-V provides to guest VMs, nor how
> > VMBus or timer interrupts are handled. Add text describing the synic and
> > reorganize existing text to make this more clear.
> >
> > Signed-off-by: Michael Kelley <mhklinux@outlook.com>
> > ---
> > Documentation/virt/hyperv/clocks.rst | 21 +++++---
> > Documentation/virt/hyperv/vmbus.rst | 79 ++++++++++++++++++----------
> > 2 files changed, 66 insertions(+), 34 deletions(-)
> >
> > diff --git a/Documentation/virt/hyperv/clocks.rst b/Documentation/virt/hyperv/clocks.rst
> > index a56f4837d443..919bb92d6d9d 100644
> > --- a/Documentation/virt/hyperv/clocks.rst
> > +++ b/Documentation/virt/hyperv/clocks.rst
> > @@ -62,12 +62,21 @@ shared page with scale and offset values into user space. User
> > space code performs the same algorithm of reading the TSC and
> > applying the scale and offset to get the constant 10 MHz clock.
> >
> > -Linux clockevents are based on Hyper-V synthetic timer 0. While
> > -Hyper-V offers 4 synthetic timers for each CPU, Linux only uses
> > -timer 0. Interrupts from stimer0 are recorded on the "HVS" line in
> > -/proc/interrupts. Clockevents based on the virtualized PIT and
> > -local APIC timer also work, but the Hyper-V synthetic timer is
> > -preferred.
> > +Linux clockevents are based on Hyper-V synthetic timer 0 (stimer0).
> > +While Hyper-V offers 4 synthetic timers for each CPU, Linux only uses
> > +timer 0. In older versions of Hyper-V, an interrupt from stimer0
> > +results in a VMBus control message that is demultiplexed by
> > +vmbus_isr() as described in the VMBus documentation.
>
> Is VMBus documentation here referring to Documentation/virt/hyperv/vmbus.rst?
> If so, could you please add internal links with :ref:? See for example in
> Documentation/process/1.Intro.rst.

You are right. The reference is to vmbus.rst. I'll make it a link, though the
guidelines under "Cross-referencing" in "Using Sphinx for kernel documentation"
prefer just using the path to the documentation file with no special annotation
like :doc: or :ref:. So it would just be "Documentation/virt/hyperv/vmbus.rst".
I'll try this and make sure it comes out right.

Michael

> If referring to Microsoft documentation, please
> provide a permalink. Please do also look for other opportunities to cross-link within
> Documentation or to external resources.
>
> Thanks for the improvements!
>
> Easwar