From: Julien Grall <julien.grall@arm.com>
To: Andre Przywara <andre.przywara@arm.com>,
Stefano Stabellini <sstabellini@kernel.org>
Cc: xen-devel@lists.xenproject.org,
Vijaya Kumar K <Vijaya.Kumar@caviumnetworks.com>,
Vijay Kilari <vijay.kilari@gmail.com>,
Shanker Donthineni <shankerd@codeaurora.org>,
Manish Jaggi <mjaggi@caviumnetworks.com>
Subject: Re: [PATCH v11 10/34] ARM: GIC: export and extend vgic_init_pending_irq()
Date: Wed, 14 Jun 2017 17:33:21 +0100 [thread overview]
Message-ID: <3fc0bd21-805e-171d-0e05-9600b0e1a3fa@arm.com> (raw)
In-Reply-To: <195814d1-d817-c284-7eea-56139f56e87f@arm.com>
Hi Andre,
On 06/14/2017 04:54 PM, Andre Przywara wrote:
> Hi,
>
> On 12/06/17 16:36, Julien Grall wrote:
>> Hi Andre,
>>
>> On 09/06/17 18:41, Andre Przywara wrote:
>>> For LPIs we later want to dynamically allocate struct pending_irqs.
>>> So beside needing to initialize the struct from there we also need
>>> to clean it up and re-initialize it later on.
>>> Export vgic_init_pending_irq() and extend it to be reusable.
>>>
>>> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
>>> ---
>>> xen/arch/arm/vgic.c | 4 +++-
>>> xen/include/asm-arm/vgic.h | 1 +
>>> 2 files changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
>>> index 2e4820f..7e8dba6 100644
>>> --- a/xen/arch/arm/vgic.c
>>> +++ b/xen/arch/arm/vgic.c
>>> @@ -60,8 +60,10 @@ struct vgic_irq_rank *vgic_rank_irq(struct vcpu *v,
>>> unsigned int irq)
>>> return vgic_get_rank(v, rank);
>>> }
>>>
>>> -static void vgic_init_pending_irq(struct pending_irq *p, unsigned int
>>> virq)
>>> +void vgic_init_pending_irq(struct pending_irq *p, unsigned int virq)
>>> {
>>> + memset(p, 0, sizeof(*p));
>>
>> So for initialization, we will clear the memory twice which looks rather
>> pointless (see the current caller).
>>
>> We probably to drop the memset or replace xzalloc by xalloc in the
>> caller. I would be ok to see this change in a follow-up patch. Assuming
>> you will sent a patch:
>
> So I checked the callers and now moved the memset from here to
> its_discard_event(), just before the call to vgic_init_pending_irq().
> That should be safe, because:
> 1) For the existing code (initialising SGIs/PPIs and SPIs) we always
> zero pending_irq anyway, either by xzalloc or by an explicit memset.
> 2) The call in its_discard_event() has now an explicit memset before the
> call.
> 3) Allocating struct pending_irqs for LPI upon mapping a device already
> uses xzalloc, so they are initially zeroed. Before we re-use a struct,
> we call its_discard_event(), which zeroes it as described in 2)
The place I am the most concerned is in the MAPTI. Because you would
call vgic_init_pending_irq assuming this would have already been zeroed.
It is not straight-forward when looking at the code who did that.
I would prefer to keep the memset in vgic_init_pending_irq and avoid it
in the caller. This is more future proof.
> So I merged the change (remove memset here, put it in
> its_discard_event()) into the new series.
> Please tell me if that is too dangerous and I can back it out again.
Let's look for a follow-up patch and not in this series. I don't want to
delay the series just for that.
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
next prev parent reply other threads:[~2017-06-14 16:33 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-09 17:41 [PATCH v11 00/34] arm64: Dom0 ITS emulation Andre Przywara
2017-06-09 17:41 ` [PATCH v11 01/34] ARM: vGIC: avoid rank lock when reading priority Andre Przywara
2017-06-12 14:49 ` Julien Grall
2017-06-12 22:34 ` Stefano Stabellini
2017-06-13 9:01 ` Julien Grall
2017-06-13 22:19 ` Stefano Stabellini
2017-06-14 8:55 ` Julien Grall
2017-06-14 11:22 ` Andre Przywara
2017-06-14 11:27 ` Julien Grall
2017-06-14 17:32 ` Stefano Stabellini
2017-06-14 17:44 ` Julien Grall
2017-06-14 18:15 ` Stefano Stabellini
2017-06-14 18:32 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 02/34] ARM: GICv3: enable ITS on the host Andre Przywara
2017-06-12 14:51 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 03/34] ARM: GICv3: enable LPIs " Andre Przywara
2017-06-09 17:41 ` [PATCH v11 04/34] ARM: GICv3: setup number of LPI bits for a GICv3 guest Andre Przywara
2017-06-12 15:03 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 05/34] ARM: vGIC: rework gic_remove_from_queues() Andre Przywara
2017-06-12 15:15 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 06/34] ARM: vGIC: move irq_to_pending() calls under the VGIC VCPU lock Andre Przywara
2017-06-12 15:22 ` Julien Grall
2017-06-12 22:43 ` Stefano Stabellini
2017-06-09 17:41 ` [PATCH v11 07/34] ARM: vGIC: introduce gic_remove_irq() Andre Przywara
2017-06-12 15:28 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 08/34] ARM: GIC: Add checks for NULL pointer pending_irq's Andre Przywara
2017-06-12 15:30 ` Julien Grall
2017-06-12 22:44 ` Stefano Stabellini
2017-06-09 17:41 ` [PATCH v11 09/34] ARM: GICv3: introduce separate pending_irq structs for LPIs Andre Przywara
2017-06-09 17:41 ` [PATCH v11 10/34] ARM: GIC: export and extend vgic_init_pending_irq() Andre Przywara
2017-06-12 15:36 ` Julien Grall
2017-06-14 15:54 ` Andre Przywara
2017-06-14 16:33 ` Julien Grall [this message]
2017-06-09 17:41 ` [PATCH v11 11/34] ARM: vGIC: cache virtual LPI priority in struct pending_irq Andre Przywara
2017-06-12 15:39 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 12/34] ARM: vGIC: add LPI VCPU ID to " Andre Przywara
2017-06-12 15:46 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 13/34] ARM: GIC: ITS: remove no longer needed VCPU ID in host LPI entry Andre Przywara
2017-06-12 15:47 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 14/34] ARM: GICv3: forward pending LPIs to guests Andre Przywara
2017-06-12 15:53 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 15/34] ARM: vGICv3: handle virtual LPI pending and property tables Andre Przywara
2017-06-09 17:41 ` [PATCH v11 16/34] ARM: introduce vgic_access_guest_memory() Andre Przywara
2017-06-09 17:41 ` [PATCH v11 17/34] ARM: vGICv3: re-use vgic_reg64_check_access Andre Przywara
2017-06-09 17:41 ` [PATCH v11 18/34] ARM: vGIC: advertise LPI support Andre Przywara
2017-06-12 16:02 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 19/34] ARM: vITS: add command handling stub and MMIO emulation Andre Przywara
2017-06-12 16:04 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 20/34] ARM: vITS: introduce translation table walks Andre Przywara
2017-06-12 16:07 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 21/34] ARM: vITS: provide access to struct pending_irq Andre Przywara
2017-06-09 17:41 ` [PATCH v11 22/34] ARM: vITS: handle INT command Andre Przywara
2017-06-09 17:41 ` [PATCH v11 23/34] ARM: vITS: handle MAPC command Andre Przywara
2017-06-09 17:41 ` [PATCH v11 24/34] ARM: vITS: handle CLEAR command Andre Przywara
2017-06-12 16:19 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 25/34] ARM: vITS: handle MAPD command Andre Przywara
2017-06-13 22:02 ` Stefano Stabellini
2017-06-09 17:41 ` [PATCH v11 26/34] ARM: GICv3: handle unmapped LPIs Andre Przywara
2017-06-12 16:30 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 27/34] ARM: vITS: handle MAPTI/MAPI command Andre Przywara
2017-06-12 16:36 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 28/34] ARM: vITS: handle MOVI command Andre Przywara
2017-06-12 16:37 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 29/34] ARM: vITS: handle DISCARD command Andre Przywara
2017-06-09 17:41 ` [PATCH v11 30/34] ARM: vITS: handle INV command Andre Przywara
2017-06-09 17:41 ` [PATCH v11 31/34] ARM: vITS: handle INVALL command Andre Przywara
2017-06-12 16:41 ` Julien Grall
2017-06-09 17:41 ` [PATCH v11 32/34] ARM: vITS: increase mmio_count for each ITS Andre Przywara
2017-06-09 17:41 ` [PATCH v11 33/34] ARM: vITS: create and initialize virtual ITSes for Dom0 Andre Przywara
2017-06-09 17:41 ` [PATCH v11 34/34] ARM: vITS: create ITS subnodes for Dom0 DT Andre Przywara
2017-06-12 5:04 ` [PATCH v11 00/34] arm64: Dom0 ITS emulation Manish Jaggi
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=3fc0bd21-805e-171d-0e05-9600b0e1a3fa@arm.com \
--to=julien.grall@arm.com \
--cc=Vijaya.Kumar@caviumnetworks.com \
--cc=andre.przywara@arm.com \
--cc=mjaggi@caviumnetworks.com \
--cc=shankerd@codeaurora.org \
--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).