Re: [PATCH v4 07/10] x86/mm: add vmtrace_buf resource type
On Tue, Jun 30, 2020 at 02:33:50PM +0200, Michał Leszczyński wrote: > From: Michal Leszczynski > > Allow to map processor trace buffer using > acquire_resource(). > > Signed-off-by: Michal Leszczynski > --- > xen/arch/x86/mm.c | 25 + > xen/include/public/memory.h | 1 + > 2 files changed, 26 insertions(+) > > diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c > index e376fc7e8f..bb781bd90c 100644 > --- a/xen/arch/x86/mm.c > +++ b/xen/arch/x86/mm.c > @@ -4624,6 +4624,31 @@ int arch_acquire_resource(struct domain *d, unsigned > int type, > } > break; > } > + > +case XENMEM_resource_vmtrace_buf: > +{ > +mfn_t mfn; > +unsigned int i; > +struct vcpu *v = domain_vcpu(d, id); Missing blank newline between variable definitions and code. > +rc = -EINVAL; > + > +if ( !v ) > +break; > + > +if ( !v->arch.vmtrace.pt_buf ) > +break; > + > +mfn = page_to_mfn(v->arch.vmtrace.pt_buf); > + > +if ( frame + nr_frames > (v->domain->vmtrace_pt_size >> PAGE_SHIFT) ) > +break; You can place all the checks done above in a single if. Thanks, Roger.
[PATCH v4 07/10] x86/mm: add vmtrace_buf resource type
From: Michal Leszczynski Allow to map processor trace buffer using acquire_resource(). Signed-off-by: Michal Leszczynski --- xen/arch/x86/mm.c | 25 + xen/include/public/memory.h | 1 + 2 files changed, 26 insertions(+) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index e376fc7e8f..bb781bd90c 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -4624,6 +4624,31 @@ int arch_acquire_resource(struct domain *d, unsigned int type, } break; } + +case XENMEM_resource_vmtrace_buf: +{ +mfn_t mfn; +unsigned int i; +struct vcpu *v = domain_vcpu(d, id); +rc = -EINVAL; + +if ( !v ) +break; + +if ( !v->arch.vmtrace.pt_buf ) +break; + +mfn = page_to_mfn(v->arch.vmtrace.pt_buf); + +if ( frame + nr_frames > (v->domain->vmtrace_pt_size >> PAGE_SHIFT) ) +break; + +rc = 0; +for ( i = 0; i < nr_frames; i++ ) +mfn_list[i] = mfn_x(mfn_add(mfn, frame + i)); + +break; +} #endif default: diff --git a/xen/include/public/memory.h b/xen/include/public/memory.h index dbd35305df..f823c784c3 100644 --- a/xen/include/public/memory.h +++ b/xen/include/public/memory.h @@ -620,6 +620,7 @@ struct xen_mem_acquire_resource { #define XENMEM_resource_ioreq_server 0 #define XENMEM_resource_grant_table 1 +#define XENMEM_resource_vmtrace_buf 2 /* * IN - a type-specific resource identifier, which must be zero -- 2.20.1