All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Radim Krčmář" <rkrcmar@redhat.com>
To: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
Cc: joro@8bytes.org, pbonzini@redhat.com, alex.williamson@redhat.com,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	sherry.hurwitz@amd.com
Subject: Re: [PART2 PATCH v6 12/12] svm: Implements update_pi_irte hook to setup posted interrupt
Date: Mon, 22 Aug 2016 17:16:51 +0200	[thread overview]
Message-ID: <20160822151651.GA27608@potion> (raw)
In-Reply-To: <57BACF73.8020401@amd.com>

2016-08-22 17:09+0700, Suravee Suthikulpanit:
> On 08/22/2016 04:19 PM, Suravee Suthikulpanit wrote:
>> > he problem with wrappers is that we don't know what list we should
>> > remove the "struct amd_ir_data" from;  we would need to add another
>> > tracking structure or go through all VCPUs.
>> > 
>> > Having "struct list_head" in "struct amd_ir_data" would allow us to know
>> > the current list and remove it from there:
>> > One "struct amd_ir_data" should never be used by more than one caller of
>> > amd_iommu_update_ga(), because they would have to be cooperating anyway,
>> > which would mean a single mediator, so we can add a "struct list_head"
>> > into "struct amd_ir_data".
>> > 
>> >    Minor design note:
>> >    To make the usage of "struct amd_ir_data" safer, we could pass "struct
>> >    list_head" into irq_set_vcpu_affinity(), instead of returning "struct
>> >    amd_ir_data *".
>> > 
>> >    irq_set_vcpu_affinity() would add "struct amd_ir_data" to the list
>> > only
>> >    if ir_data was not already in some list and report whether the list
>> >    was modified.
>> > 
>> > I think that adding "struct list_head" into "struct amd_ir_data" is
>> > nicer than having wrappers.
>> > 
>> > Joerg, Paolo, what do you think?
>> > 
>> 
>> I think modifying irq_set_vcpu_affinity() to also pass struct list_head
>> seems a bit redundant since it is currently design to allow passing in
>> void *, which leaves the other option where we might just need to pass
>> in a wrapper (e.g. going back to the previous design where we pass in
>> struct amd_iommu_pi_data) and also add a pointer to the ir_list in the
>> wrapper as well. Then, IOMMU is responsible for adding/deleting ir_data
>> to/from this list instead of SVM. This should be fine since we only need
>> to coordinate b/w SVM and AMD-IOMMU.
> 
> Actually, thinking about this again, going back to keeping the per-vcpu list
> of struct amd_iommu_pi_data is probably the simplest here.
> 
> * We avoid having to expose the amd_ir_data to SVM.
> * We can match using amd_ir_data * when traversing the list.
> * We can easily add the code to manage the list in the SVM. We can make sure
> that the struct amd_iommu_pi_data is not already mapped before adding it to
> a new per-vcpu list. If it is currently mapped, we can simply unmapped it.

Sounds good.
A new SVM-specific wrapper for amd_ir_data instead of reusing
amd_iommu_pi_data would be nicer, IMO -- we could change it without
touching the IOMMU interface and also allocate in svm_pi_list_add.

Updating lists would become O(N^2), but updates should not occur often
(and N small) so I think it's still worth the saving on every
sched_in/out.

> Doing this from IOMMU would be more complicate and require lots of parameter
> passing.

Yeah, doing more than returning amd_ir_data from IOMMU doesn't make
sense and not adding list_head for SVm to amd_ir_data is more
acceptable.

Thanks.

  reply	other threads:[~2016-08-22 15:16 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-18 19:42 [PART2 PATCH v6 00/12] iommu/AMD: Introduce IOMMU AVIC support Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 01/12] iommu/amd: Detect and enable guest vAPIC support Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 02/12] iommu/amd: Move and introduce new IRTE-related unions and structures Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 03/12] iommu/amd: Introduce interrupt remapping ops structure Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 04/12] iommu/amd: Add support for multiple IRTE formats Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 05/12] iommu/amd: Detect and initialize guest vAPIC log Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 06/12] iommu/amd: Adding GALOG interrupt handler Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 07/12] iommu/amd: Introduce amd_iommu_update_ga() Suravee Suthikulpanit
2016-08-22  5:50   ` kbuild test robot
2016-08-18 19:42 ` [PART2 PATCH v6 08/12] iommu/amd: Implements irq_set_vcpu_affinity() hook to setup vapic mode for pass-through devices Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 09/12] iommu/amd: Enable vAPIC interrupt remapping mode by default Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 10/12] svm: Introduces AVIC per-VM ID Suravee Suthikulpanit
2016-08-19 13:26   ` Radim Krčmář
2016-08-18 19:42 ` [PART2 PATCH v6 11/12] svm: Introduce AMD IOMMU avic_ga_log_notifier Suravee Suthikulpanit
2016-08-18 19:42 ` [PART2 PATCH v6 12/12] svm: Implements update_pi_irte hook to setup posted interrupt Suravee Suthikulpanit
2016-08-19 14:49   ` Radim Krčmář
2016-08-19 15:04     ` Radim Krčmář
2016-08-22  9:19     ` Suravee Suthikulpanit
2016-08-22 10:09       ` Suravee Suthikulpanit
2016-08-22 15:16         ` Radim Krčmář [this message]
2016-08-23 10:51   ` kbuild test robot

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=20160822151651.GA27608@potion \
    --to=rkrcmar@redhat.com \
    --cc=Suravee.Suthikulpanit@amd.com \
    --cc=alex.williamson@redhat.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=sherry.hurwitz@amd.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.