From: Jacob Pan <jacob.jun.pan@linux.intel.com>
To: "Tian, Kevin" <kevin.tian@intel.com>
Cc: LKML <linux-kernel@vger.kernel.org>, X86 Kernel <x86@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
"iommu@lists.linux.dev" <iommu@lists.linux.dev>,
Thomas Gleixner <tglx@linutronix.de>,
Lu Baolu <baolu.lu@linux.intel.com>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"Hansen, Dave" <dave.hansen@intel.com>,
Joerg Roedel <joro@8bytes.org>, "H. Peter Anvin" <hpa@zytor.com>,
Borislav Petkov <bp@alien8.de>, Ingo Molnar <mingo@redhat.com>,
"Luse, Paul E" <paul.e.luse@intel.com>,
"Williams, Dan J" <dan.j.williams@intel.com>,
Jens Axboe <axboe@kernel.dk>, "Raj, Ashok" <ashok.raj@intel.com>,
"maz@kernel.org" <maz@kernel.org>,
"seanjc@google.com" <seanjc@google.com>,
Robin Murphy <robin.murphy@arm.com>,
"jim.harris@samsung.com" <jim.harris@samsung.com>,
"a.manzanares@samsung.com" <a.manzanares@samsung.com>,
Bjorn Helgaas <helgaas@kernel.org>,
"Zeng, Guang" <guang.zeng@intel.com>,
"robert.hoo.linux@gmail.com" <robert.hoo.linux@gmail.com>,
jacob.jun.pan@linux.intel.com
Subject: Re: [PATCH v2 08/13] x86/irq: Install posted MSI notification handler
Date: Thu, 11 Apr 2024 10:38:47 -0700 [thread overview]
Message-ID: <20240411103847.57f47a48@jacob-builder> (raw)
In-Reply-To: <BN9PR11MB5276C4932F6CFD217CC50AD78C052@BN9PR11MB5276.namprd11.prod.outlook.com>
Hi Kevin,
On Thu, 11 Apr 2024 07:52:28 +0000, "Tian, Kevin" <kevin.tian@intel.com>
wrote:
> > From: Jacob Pan <jacob.jun.pan@linux.intel.com>
> > Sent: Saturday, April 6, 2024 6:31 AM
> >
> > +
> > +/*
> > + * De-multiplexing posted interrupts is on the performance path, the
> > code
> > + * below is written to optimize the cache performance based on the
> > following
> > + * considerations:
> > + * 1.Posted interrupt descriptor (PID) fits in a cache line that is
> > frequently
> > + * accessed by both CPU and IOMMU.
> > + * 2.During posted MSI processing, the CPU needs to do 64-bit read and
> > xchg
> > + * for checking and clearing posted interrupt request (PIR), a 256
> > bit field
> > + * within the PID.
> > + * 3.On the other side, the IOMMU does atomic swaps of the entire PID
> > cache
> > + * line when posting interrupts and setting control bits.
> > + * 4.The CPU can access the cache line a magnitude faster than the
> > IOMMU.
> > + * 5.Each time the IOMMU does interrupt posting to the PIR will evict
> > the PID
> > + * cache line. The cache line states after each operation are as
> > follows:
> > + * CPU IOMMU PID Cache line
> > state
> > + * ---------------------------------------------------------------
> > + *...read64 exclusive
> > + *...lock xchg64 modified
> > + *... post/atomic swap invalid
> > + *...-------------------------------------------------------------
> > + *
>
> According to VT-d spec: 5.2.3 Interrupt-Posting Hardware Operation:
>
> "
> - Read contents of the Posted Interrupt Descriptor, claiming exclusive
> ownership of its hosting cache-line.
> ...
> - Modify the following descriptor field values atomically:
> ...
> - Promote the cache-line to be globally observable, so that the
> modifications are visible to other caching agents. Hardware may
> write-back the cache-line anytime after this step.
> "
>
> sounds that the PID cache line is not evicted after IOMMU posting?
IOMMU follows the same MESI protocol defined in SDM. VT-d spec. also says
"This atomic read-modify-write operation will always snoop processor caches"
So if the PID cache line is in modified state (caused by writing ON bit,
clear PIR, etc.), IOMMU request ownership will evict the cache.
Thanks,
Jacob
next prev parent reply other threads:[~2024-04-11 17:34 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-05 22:30 [PATCH v2 00/13] Coalesced Interrupt Delivery with posted MSI Jacob Pan
2024-04-05 22:30 ` [PATCH v2 01/13] x86/irq: Move posted interrupt descriptor out of vmx code Jacob Pan
2024-04-17 0:34 ` Sean Christopherson
2024-04-17 18:33 ` Jacob Pan
2024-04-05 22:30 ` [PATCH v2 02/13] x86/irq: Unionize PID.PIR for 64bit access w/o casting Jacob Pan
2024-04-05 22:31 ` [PATCH v2 03/13] x86/irq: Remove bitfields in posted interrupt descriptor Jacob Pan
2024-04-17 0:39 ` Sean Christopherson
2024-04-17 18:01 ` Jacob Pan
2024-04-18 17:30 ` Thomas Gleixner
2024-04-18 18:10 ` Jacob Pan
2024-04-05 22:31 ` [PATCH v2 04/13] x86/irq: Add a Kconfig option for posted MSI Jacob Pan
2024-04-05 22:31 ` [PATCH v2 05/13] x86/irq: Reserve a per CPU IDT vector for posted MSIs Jacob Pan
2024-04-11 16:51 ` Thomas Gleixner
2024-04-15 18:53 ` Jacob Pan
2024-04-15 20:43 ` Jacob Pan
2024-04-19 4:00 ` Thomas Gleixner
2024-04-19 20:07 ` Arnaldo Carvalho de Melo
2024-04-22 22:32 ` Jacob Pan
2024-04-12 9:14 ` Tian, Kevin
2024-04-12 14:27 ` Sean Christopherson
2024-04-16 3:45 ` Tian, Kevin
2024-04-05 22:31 ` [PATCH v2 06/13] x86/irq: Set up per host CPU posted interrupt descriptors Jacob Pan
2024-04-12 9:16 ` Tian, Kevin
2024-04-12 17:54 ` Jacob Pan
2024-04-05 22:31 ` [PATCH v2 07/13] x86/irq: Factor out calling ISR from common_interrupt Jacob Pan
2024-04-12 9:21 ` Tian, Kevin
2024-04-12 16:50 ` Jacob Pan
2024-04-05 22:31 ` [PATCH v2 08/13] x86/irq: Install posted MSI notification handler Jacob Pan
2024-04-11 7:52 ` Tian, Kevin
2024-04-11 17:38 ` Jacob Pan [this message]
2024-04-11 16:54 ` Thomas Gleixner
2024-04-11 18:29 ` Jacob Pan
2024-04-05 22:31 ` [PATCH v2 09/13] x86/irq: Factor out common code for checking pending interrupts Jacob Pan
2024-04-05 22:31 ` [PATCH v2 10/13] x86/irq: Extend checks for pending vectors to posted interrupts Jacob Pan
2024-04-12 9:25 ` Tian, Kevin
2024-04-12 18:23 ` Jacob Pan
2024-04-16 3:47 ` Tian, Kevin
2024-04-05 22:31 ` [PATCH v2 11/13] iommu/vt-d: Make posted MSI an opt-in cmdline option Jacob Pan
2024-04-06 4:31 ` Robert Hoo
2024-04-08 23:33 ` Jacob Pan
2024-04-13 10:59 ` Robert Hoo
2024-04-12 9:31 ` Tian, Kevin
2024-04-15 23:20 ` Jacob Pan
2024-04-05 22:31 ` [PATCH v2 12/13] iommu/vt-d: Add an irq_chip for posted MSIs Jacob Pan
2024-04-12 9:36 ` Tian, Kevin
2024-04-16 22:15 ` Jacob Pan
2024-04-05 22:31 ` [PATCH v2 13/13] iommu/vt-d: Enable posted mode for device MSIs Jacob Pan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240411103847.57f47a48@jacob-builder \
--to=jacob.jun.pan@linux.intel.com \
--cc=a.manzanares@samsung.com \
--cc=ashok.raj@intel.com \
--cc=axboe@kernel.dk \
--cc=baolu.lu@linux.intel.com \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@intel.com \
--cc=guang.zeng@intel.com \
--cc=helgaas@kernel.org \
--cc=hpa@zytor.com \
--cc=iommu@lists.linux.dev \
--cc=jim.harris@samsung.com \
--cc=joro@8bytes.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=mingo@redhat.com \
--cc=paul.e.luse@intel.com \
--cc=peterz@infradead.org \
--cc=robert.hoo.linux@gmail.com \
--cc=robin.murphy@arm.com \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox