>>> On 23.09.14 at 16:04, <tamas.lengyel@zentific.com> wrote:
> On Tue, Sep 23, 2014 at 3:28 PM, Jan Beulich <JBeulich@suse.com> wrote:
>> >>> On 23.09.14 at 15:14, <tklengyel@sec.in.tum.de> wrote:
No - d can simply be had from v->domain.>> > +void p2m_mem_event_emulate_check(struct domain *d, const mem_event_response_t *rsp)
>> > +{
>> > + /* Mark vcpu for skipping one instruction upon rescheduling. */
>> > + if ( rsp->flags & MEM_EVENT_FLAG_EMULATE )
>> > + {
>> > + struct vcpu *v = current;
>>
>> Compare this with ...
>>
>> > -void p2m_mem_access_resume(struct domain *d)
>> > -{
>> > - mem_event_response_t rsp;
>> > -
>> > - /* Pull all responses off the ring */
>> > - while( mem_event_get_response(d, &d->mem_event->access, &rsp) )
>> > - {
>> > - struct vcpu *v;
>> > -
>> > - if ( rsp.flags & MEM_EVENT_FLAG_DUMMY )
>> > - continue;
>> > -
>> > - /* Validate the vcpu_id in the response. */
>> > - if ( (rsp.vcpu_id >= d->max_vcpus) || !d->vcpu[rsp.vcpu_id] )
>> > - continue;
>> > -
>> > - v = d->vcpu[rsp.vcpu_id];
>>
>> ... the original code. I.e. you should pass v instead of d into
>> p2m_mem_event_emulate_check().
>>
>
> Ah good point, but I think passing d is better (as it is also required
> further down), I just have to make v = d->vcpu[rsp.vcpu_id] instead of
> current.
Jan