[PATCH 09/19] KVM: PPC: Book3S HV: add a SET_SOURCE control to the XIVE native device
Cédric Le Goater
clg at kaod.org
Wed Feb 6 00:39:28 AEDT 2019
On 2/5/19 6:35 AM, David Gibson wrote:
> On Mon, Feb 04, 2019 at 08:07:20PM +0100, Cédric Le Goater wrote:
>> On 2/4/19 5:57 AM, David Gibson wrote:
>>> On Mon, Jan 07, 2019 at 07:43:21PM +0100, Cédric Le Goater wrote:
> [snip]
>>>> + sb = kvmppc_xive_create_src_block(xive, irq);
>>>> + if (!sb) {
>>>> + pr_err("Failed to create block...\n");
>>>> + return -ENOMEM;
>>>> + }
>>>> + }
>>>> + state = &sb->irq_state[idx];
>>>> +
>>>> + if (get_user(val, ubufp)) {
>>>> + pr_err("fault getting user info !\n");
>>>> + return -EFAULT;
>>>> + }
>>>> +
>>>> + /*
>>>> + * If the source doesn't already have an IPI, allocate
>>>> + * one and get the corresponding data
>>>> + */
>>>> + if (!state->ipi_number) {
>>>> + state->ipi_number = xive_native_alloc_irq();
>>>> + if (state->ipi_number == 0) {
>>>> + pr_err("Failed to allocate IRQ !\n");
>>>> + return -ENOMEM;
>>>> + }
>>>
>>> Am I right in thinking this is the point at which a specific guest irq
>>> number gets bound to a specific host irq number?
>>
>> yes. the XIVE IRQ state caches this information and 'state' should be
>> protected before being assigned, indeed ... The XICS-over-XIVE device
>> also has the same race issue.
>>
>> It's not showing because where initializing the KVM device sequentially
>> from QEMU and only once.
>
> Ok.
>
> So, for the passthrough case, what's the point at which we know that a
> particular guest interrupt needs to be bound to a specific real
> hardware interrupt, rather than a generic IPI?
when the guest driver requests MSIs, VFIO requests a mapping of the
HW irqs in the guest IRQ space. This is very briefly said as VFIO is
a huge framework.
Patch 18 adds some initial support to handle the ESB pages but this
should be done at the QEMU level.
C.
More information about the Linuxppc-dev
mailing list