|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/4] xen/arm: gic: Ensure we have an ISB between ack and do_IRQ()
On 10/27/18 1:14 PM, Andrii Anisov wrote: Hello Julien, On 10/27/2018 12:55 AM, Julien Grall wrote:The functions below does not exist in latest Xen. So are you sure this based on mainline?Yep, I've put a wrong diff into the email, it is for XEN 4.10. Please find the patch for XEN 4.12-unstable on my github [1].How many domain do you have run at that time?Only one domain. In my setup I'm running a BSP release under XEN as Dom0.Under no specific conditions. During the system boot, during console operations, during glmark2 [2] running.Under which condition this is hapenning? So the glmark2 is running in Dom0, am I correct? `dom0_mem=1G console=dtuart dtuart=serial0 dom0_max_vcpus=4 bootscrub=0 loglvl=all cpufreq=none`Also, what is your Xen command line?I assume you didn't disable serrors, right? So we should have plenty of dsb(sy) and isb() in the path to there.I didn't disable serrors.So I would rule out a missing barrier here.Right you are, gic_clear_lrs(), in 4.10 codebase, rewrites LRs. But it does not change PENDING to INVALID under no circumstances from one hand. From another hand, all changes to LRs are made through gic specific operations gic_hw_ops->... which are tracked by me. You can see, in the code above, that I copy all updates to the physical LR issued by hypervisor into the stored LRs. So it not the case. But I'll check on Monday.Those prints I treat as LR content change (state PENDING->INVALID) without exiting from hyp to guest. Unfortunately, I did not find a kind of explanation to this effect in ARM IHI 0048B.b document. I have GICv2 on the die.I appreciate you find some time to look at this and express your opinion. Ah, I missed the part where you updated the LRs.While the interrupt exception path does not re-enable interrupts early. Other traps may do it.
On those trap, you would have the following path:
1) Save GP registers
2) Enable interrupts
3) Store lrs
It is possible to receive an interrupts right after 2) and before 3).
Because the current vGIC is touching the LRs directly (not the case on
the new one). You may then end up with the information of the previous
store.
Could you investigate how the guest has exited (i.e sync vs interrupt)? Cheers, -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |