From: Shanker Donthineni <shankerd@codeaurora.org>
To: Julien Grall <julien.grall@arm.com>,
Andre Przywara <andre.przywara@arm.com>,
"Jaggi, Manish" <Manish.Jaggi@cavium.com>,
Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org, "Nair,
Jayachandran" <Jayachandran.Nair@cavium.com>,
nd@arm.com, Vijay Kilari <vijay.kilari@gmail.com>,
"Kapoor, Prasun" <Prasun.Kapoor@cavium.com>
Subject: Re: [PATCH 09/28] ARM: GICv3 ITS: map device and LPIs to the ITS on physdev_op hypercall
Date: Wed, 1 Mar 2017 13:42:22 -0600 [thread overview]
Message-ID: <d2a7939c-be0c-08c7-5fbe-b1a0781dc422@codeaurora.org> (raw)
In-Reply-To: <08a15d5e-5bc7-def3-8e13-d15bd5dcf8d7@arm.com>
Hi Julien,
On 02/28/2017 12:29 PM, Julien Grall wrote:
>
>
> On 27/02/17 17:20, Andre Przywara wrote:
>> Hi,
>
> Hi Andre,
>
>> On 24/02/17 19:57, Shanker Donthineni wrote:
>>> Hi Julien,
>>>
>>>
>>> On 01/31/2017 10:18 AM, Julien Grall wrote:
>>>>
>>>>
>>>> On 31/01/17 16:02, Jaggi, Manish wrote:
>>>>>
>>>>>
>>>>> On 1/31/2017 8:47 PM, Julien Grall wrote:
>>>>>>
>>>>>>
>>>>>> On 31/01/17 14:08, Jaggi, Manish wrote:
>>>>>>> Hi Julien,
>>>>>>>
>>>>>>> On 1/31/2017 7:16 PM, Julien Grall wrote:
>>>>>>>> On 31/01/17 13:19, Jaggi, Manish wrote:
>>>>>>>>> On 1/31/2017 6:13 PM, Julien Grall wrote:
>>>>>>>>>> On 31/01/17 10:29, Jaggi, Manish wrote:
>>>>>>> If you please go back to your comment where you wrote "we need to
>>>>>>> find another way to get the DeviceID", I was referring that we
>>>>>>> should add that another way in this series so that correct DeviceID
>>>>>>> is programmed in ITS.
>>>>>>
>>>>>> This is not the first time I am saying this, just saying "we should
>>>>>> add that another way..." is not helpful. You should also provide
>>>>>> some details on what you would do.
>>>>>>
>>>>> Julien, As you suggested we need to find another way, I assumed you
>>>>> had something in mind.
>>>>
>>>> I gave suggestions on my e-mail but you may have missed it...
>>>>
>>>>> Since we both agree that sbdf!=deviceID, the current series of ITS
>>>>> patches will program the incorrect deviceID so there is a need to
>>>>> have a way to map sbdf with deviceID in xen.
>>>>>
>>>>> One option could be to add a new hypercall to supply sbdf and
>>>>> deviceID to xen.
>>>>
>>>> ... as well as the part where I am saying that I am not in favor to
>>>> implement an hypercall temporarily, and against adding a new hypercall
>>>> for only a couple of weeks. As you may know PHYSDEV hypercall are part
>>>> of the stable ABI and once they are added they cannot be removed.
>>>>
>>>> So we need to be sure the hypercall is necessary. In this case, the
>>>> hypercall is not necessary as all the information can be found in the
>>>> firmware tables. However this is not implemented yet and part of the
>>>> discussion on PCI Passthrough (see [1]).
>>>>
>>>> We need a temporary solution that does not involve any commitment
>>>> on the
>>>> ABI until Xen is able to discover PCI.
>>>>
>>>
>>> Why can't we handle ITS device creation whenever a virtual ITS driver
>>> receives the MAPD command from dom0/domU. In case of dom0, it's
>>> straight
>>> forward dom0 always passes the real ITS device through MAPD command.
>>> This way we can support PCIe devices without hard-coded MSI(x) limit
>>> 32,
>>> and platform devices transparently. I used the below code to platform
>>> and PCIe device MSI(x) functionality on QDF2400 server platform.
>>
>> But this breaks our assumption that no ITS commands can ever be
>> propagated at guest's runtime, which is the cornerstone of this series.
>> I agree that this is unfortunate and allowing it would simplify things,
>> but after long discussions we came to the conclusion that it's not
>> feasible to do so:
>> A malicious guest could flood the virtual ITS with MAPD commands. Xen
>> would need to propagate those to the hardware, which relies on the host
>> command queue to have free slots, which we can't guarantee. For
>> technical reasons we can't reschedule the guest (because this is an MMIO
>> trap), also the domain actually triggering the "final" MAPD might not be
>> the culprit, but an actual legitimate user.
>> So we agreed upon issuing all hardware ITS commands before a guest
>> actually starts (DomUs), respectively on hypercalls for Dom0.
>> I think we can do exceptions for Dom0, since it's not supposed to be
>> malicious.
>
> Thank you for summarizing the problem :).
>
Direct VLPI injection feature is included in GICv4 architecture. A new
set of VLPI commands are introduced to map ITS vpend/vprop tables, ITTE
setup, and maintenance operations for VLPIs. In case of direct VLPI
injection, domU/dom0 LPI commands are mapped to VLPI commands. Some of
these commands must be applied to a real ITS hardware whenever XEN
receives the ITS commands during runtime.
Any thought on this, how we are going to support a direct VLPI injection
without prolongating dom0/domU ITS commands to hardware at runtime?
--
Shanker Donthineni
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-03-01 19:42 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-30 18:31 [PATCH 00/28] arm64: Dom0 ITS emulation Andre Przywara
2017-01-30 18:31 ` [PATCH 01/28] ARM: export __flush_dcache_area() Andre Przywara
2017-02-06 11:23 ` Julien Grall
2017-01-30 18:31 ` [PATCH 02/28] ARM: GICv3 ITS: parse and store ITS subnodes from hardware DT Andre Przywara
2017-02-06 12:39 ` Julien Grall
2017-02-16 17:44 ` Andre Przywara
2017-02-16 18:15 ` Julien Grall
2017-02-06 12:58 ` Julien Grall
2017-02-27 11:43 ` Andre Przywara
2017-02-27 12:51 ` Julien Grall
2017-01-30 18:31 ` [PATCH 03/28] ARM: GICv3: allocate LPI pending and property table Andre Przywara
2017-02-06 16:26 ` Julien Grall
2017-02-27 11:34 ` Andre Przywara
2017-02-27 12:48 ` Julien Grall
2017-02-14 0:47 ` Stefano Stabellini
2017-01-30 18:31 ` [PATCH 04/28] ARM: GICv3 ITS: allocate device and collection table Andre Przywara
2017-02-06 17:19 ` Julien Grall
2017-02-14 0:55 ` Stefano Stabellini
2017-02-06 17:36 ` Julien Grall
2017-02-06 17:43 ` Julien Grall
2017-03-23 18:06 ` Andre Przywara
2017-03-23 18:08 ` Julien Grall
2017-02-14 0:54 ` Stefano Stabellini
2017-02-15 18:31 ` Shanker Donthineni
2017-02-16 19:03 ` Shanker Donthineni
2017-02-24 19:29 ` Shanker Donthineni
2017-02-27 10:23 ` Andre Przywara
2017-01-30 18:31 ` [PATCH 05/28] ARM: GICv3 ITS: map ITS command buffer Andre Przywara
2017-02-06 17:43 ` Julien Grall
2017-02-14 0:59 ` Stefano Stabellini
2017-02-14 20:50 ` Julien Grall
2017-02-14 21:00 ` Stefano Stabellini
2017-01-30 18:31 ` [PATCH 06/28] ARM: GICv3 ITS: introduce ITS command handling Andre Przywara
2017-02-06 19:16 ` Julien Grall
2017-02-07 11:44 ` Julien Grall
2017-03-07 18:08 ` Andre Przywara
2017-03-08 15:28 ` Julien Grall
2017-03-08 16:16 ` Andre Przywara
2017-02-07 11:59 ` Julien Grall
2017-01-30 18:31 ` [PATCH 07/28] ARM: GICv3 ITS: introduce device mapping Andre Przywara
2017-02-07 14:05 ` Julien Grall
2017-02-15 16:30 ` Julien Grall
2017-02-22 7:06 ` Vijay Kilari
2017-02-24 19:37 ` Shanker Donthineni
2017-02-22 13:17 ` Julien Grall
2017-01-30 18:31 ` [PATCH 08/28] ARM: GICv3 ITS: introduce host LPI array Andre Przywara
2017-02-07 18:01 ` Julien Grall
2017-02-14 20:05 ` Stefano Stabellini
2017-01-30 18:31 ` [PATCH 09/28] ARM: GICv3 ITS: map device and LPIs to the ITS on physdev_op hypercall Andre Przywara
2017-01-31 10:29 ` Jaggi, Manish
2017-01-31 12:43 ` Julien Grall
2017-01-31 13:19 ` Jaggi, Manish
2017-01-31 13:46 ` Julien Grall
2017-01-31 14:08 ` Jaggi, Manish
2017-01-31 15:17 ` Julien Grall
2017-01-31 16:02 ` Jaggi, Manish
2017-01-31 16:18 ` Julien Grall
2017-02-24 19:57 ` Shanker Donthineni
2017-02-24 20:28 ` Julien Grall
2017-02-27 17:20 ` Andre Przywara
2017-02-28 18:29 ` Julien Grall
2017-03-01 19:42 ` Shanker Donthineni [this message]
2017-03-03 15:53 ` Julien Grall
2017-01-31 13:28 ` Jaggi, Manish
2017-02-14 20:11 ` Stefano Stabellini
2017-01-30 18:31 ` [PATCH 10/28] ARM: GICv3: introduce separate pending_irq structs for LPIs Andre Przywara
2017-02-14 20:39 ` Stefano Stabellini
2017-02-15 17:06 ` Julien Grall
2017-02-15 17:03 ` Julien Grall
2017-01-30 18:31 ` [PATCH 11/28] ARM: GICv3: forward pending LPIs to guests Andre Przywara
2017-02-14 21:00 ` Stefano Stabellini
2017-02-15 17:18 ` Julien Grall
2017-02-15 21:25 ` Stefano Stabellini
2017-03-02 20:56 ` Julien Grall
2017-03-03 7:58 ` Jan Beulich
2017-03-03 14:53 ` Julien Grall
2017-02-15 17:30 ` Julien Grall
2017-01-30 18:31 ` [PATCH 12/28] ARM: GICv3: enable ITS and LPIs on the host Andre Przywara
2017-02-14 22:41 ` Stefano Stabellini
2017-02-15 17:35 ` Julien Grall
2017-01-30 18:31 ` [PATCH 13/28] ARM: vGICv3: handle virtual LPI pending and property tables Andre Przywara
2017-02-14 23:56 ` Stefano Stabellini
2017-02-15 18:44 ` Julien Grall
2017-01-30 18:31 ` [PATCH 14/28] ARM: vGICv3: Handle disabled LPIs Andre Przywara
2017-02-14 23:58 ` Stefano Stabellini
2017-01-30 18:31 ` [PATCH 15/28] ARM: vGICv3: introduce basic ITS emulation bits Andre Przywara
2017-02-15 20:06 ` Shanker Donthineni
2017-01-30 18:31 ` [PATCH 16/28] ARM: vITS: introduce translation table walks Andre Przywara
2017-01-30 18:31 ` [PATCH 17/28] ARM: vITS: handle CLEAR command Andre Przywara
2017-02-15 0:07 ` Stefano Stabellini
2017-01-30 18:31 ` [PATCH 18/28] ARM: vITS: handle INT command Andre Przywara
2017-01-30 18:31 ` [PATCH 19/28] ARM: vITS: handle MAPC command Andre Przywara
2017-01-30 18:31 ` [PATCH 20/28] ARM: vITS: handle MAPD command Andre Przywara
2017-02-15 0:17 ` Stefano Stabellini
2017-01-30 18:31 ` [PATCH 21/28] ARM: vITS: handle MAPTI command Andre Przywara
2017-01-30 18:31 ` [PATCH 22/28] ARM: vITS: handle MOVI command Andre Przywara
2017-01-30 18:31 ` [PATCH 23/28] ARM: vITS: handle DISCARD command Andre Przywara
2017-01-30 18:31 ` [PATCH 24/28] ARM: vITS: handle INV command Andre Przywara
2017-01-30 18:31 ` [PATCH 25/28] ARM: vITS: handle INVALL command Andre Przywara
2017-01-30 18:31 ` [PATCH 26/28] ARM: vITS: create and initialize virtual ITSes for Dom0 Andre Przywara
2017-01-30 18:31 ` [PATCH 27/28] ARM: vITS: create ITS subnodes for Dom0 DT Andre Przywara
2017-01-30 18:31 ` [PATCH 28/28] ARM: vGIC: advertising LPI support Andre Przywara
2017-02-13 13:53 ` [PATCH 00/28] arm64: Dom0 ITS emulation Vijay Kilari
2017-02-14 22:00 ` Stefano Stabellini
2017-02-15 15:59 ` Julien Grall
2017-02-15 17:55 ` Julien Grall
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=d2a7939c-be0c-08c7-5fbe-b1a0781dc422@codeaurora.org \
--to=shankerd@codeaurora.org \
--cc=Jayachandran.Nair@cavium.com \
--cc=Manish.Jaggi@cavium.com \
--cc=Prasun.Kapoor@cavium.com \
--cc=andre.przywara@arm.com \
--cc=julien.grall@arm.com \
--cc=nd@arm.com \
--cc=sstabellini@kernel.org \
--cc=vijay.kilari@gmail.com \
--cc=xen-devel@lists.xenproject.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;
as well as URLs for NNTP newsgroup(s).