|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [XEN][PATCH] xen/evtchn: enable build optimization for evtchn_move_pirqs()/send_guest_pirq()
On 17.07.2025 20:55, Grygorii Strashko wrote:
> On 17.07.25 18:33, Jan Beulich wrote:
>> On 17.07.2025 16:41, Grygorii Strashko wrote:
>>> On 17.07.25 16:10, Jan Beulich wrote:
>>>> On 17.07.2025 15:01, Grygorii Strashko wrote:
>>>>> --- a/xen/common/event_channel.c
>>>>> +++ b/xen/common/event_channel.c
>>>>> @@ -975,6 +975,9 @@ void send_guest_pirq(struct domain *d, const struct
>>>>> pirq *pirq)
>>>>> int port;
>>>>> struct evtchn *chn;
>>>>> + if (!IS_ENABLED(CONFIG_HAS_PIRQ))
>>>>> + return;
>>>>> +
>>>>> /*
>>>>> * PV guests: It should not be possible to race with
>>>>> __evtchn_close(). The
>>>>> * caller of this function must synchronise with
>>>>> pirq_guest_unbind().
>>>>
>>>> Isn't this function unreachable on Arm, and hence a Misra rule 2.1
>>>> violation,
>>>> requiring #ifdef around the entire function to address?
>>>
>>> Yes. It's unused on Arm, only x86 is an user.
>>> I can put it under ifdef.
>>>
>>>>
>>>>> @@ -1710,10 +1713,15 @@ void evtchn_destroy_final(struct domain *d)
>>>>> void evtchn_move_pirqs(struct vcpu *v)
>>>>> {
>>>>> struct domain *d = v->domain;
>>>>> - const cpumask_t *mask = cpumask_of(v->processor);
>>>>> + const cpumask_t *mask;
>>>>
>>>> This change shouldn't be necessary; compilers ought to be able to DCE the
>>>> code.
>>>
>>> Unfortunately not, with "-O1" more code is generated as cpumask_of() is
>>> complicated inside.
>>>
>>>>
>>>>> unsigned int port;
>>>>> struct evtchn *chn;
>>>>> + if (!IS_ENABLED(CONFIG_HAS_PIRQ))
>>>>
>>>> Nit (style): Missing blanks (see other nearby if()-s).
>>>>
>>>> I wonder though whether we wouldn't better have x86'es arch_move_irqs()
>>>> invoke this function, and then #ifdef it out here altogether as well.
>>>
>>> Do you mean as in the below diff?
>>
>> Along these lines, yes. I guess personally I wouldn't convert to an
>> out-of-line function. If an inline function fails to compile (and that
>> isn't easily fixable), use a macro instead.
>
> I'd prefer stick to out-of-line function, if you don't mind.
> Inline implementation causes cascade build failure:
>
> adding
> #include <xen/event.h>
> #include <xen/sched.h>
> in irq.h is not enough.
Which is why I suggested using a macro; I kind of expected there to be
#include issues.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |