All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Mihai Caraman <mihai.caraman@freescale.com>, kvm-ppc@vger.kernel.org
Cc: kvm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v5 3/5] KVM: PPC: Book3s: Remove kvmppc_read_inst() function
Date: Thu, 17 Jul 2014 13:56:36 +0000	[thread overview]
Message-ID: <53C7D614.6010907@suse.de> (raw)
In-Reply-To: <1405596148-1507-4-git-send-email-mihai.caraman@freescale.com>


On 17.07.14 13:22, Mihai Caraman wrote:
> In the context of replacing kvmppc_ld() function calls with a version of
> kvmppc_get_last_inst() which allow to fail, Alex Graf suggested this:
>
> "If we get EMULATE_AGAIN, we just have to make sure we go back into the guest.
> No need to inject an ISI into  the guest - it'll do that all by itself.
> With an error returning kvmppc_get_last_inst we can just use completely
> get rid of kvmppc_read_inst() and only use kvmppc_get_last_inst() instead."
>
> As a intermediate step get rid of kvmppc_read_inst() and only use kvmppc_ld()
> instead.
>
> Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
> ---
> v5:
>   - make paired single emulation the unusual
>
> v4:
>   - new patch
>
>   arch/powerpc/kvm/book3s_pr.c | 91 ++++++++++++++++++--------------------------
>   1 file changed, 37 insertions(+), 54 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
> index e40765f..02a983e 100644
> --- a/arch/powerpc/kvm/book3s_pr.c
> +++ b/arch/powerpc/kvm/book3s_pr.c
> @@ -710,42 +710,6 @@ static void kvmppc_giveup_fac(struct kvm_vcpu *vcpu, ulong fac)
>   #endif
>   }
>   
> -static int kvmppc_read_inst(struct kvm_vcpu *vcpu)
> -{
> -	ulong srr0 = kvmppc_get_pc(vcpu);
> -	u32 last_inst = kvmppc_get_last_inst(vcpu);
> -	int ret;
> -
> -	ret = kvmppc_ld(vcpu, &srr0, sizeof(u32), &last_inst, false);
> -	if (ret = -ENOENT) {
> -		ulong msr = kvmppc_get_msr(vcpu);
> -
> -		msr = kvmppc_set_field(msr, 33, 33, 1);
> -		msr = kvmppc_set_field(msr, 34, 36, 0);
> -		msr = kvmppc_set_field(msr, 42, 47, 0);
> -		kvmppc_set_msr_fast(vcpu, msr);
> -		kvmppc_book3s_queue_irqprio(vcpu, BOOK3S_INTERRUPT_INST_STORAGE);
> -		return EMULATE_AGAIN;
> -	}
> -
> -	return EMULATE_DONE;
> -}
> -
> -static int kvmppc_check_ext(struct kvm_vcpu *vcpu, unsigned int exit_nr)
> -{
> -
> -	/* Need to do paired single emulation? */
> -	if (!(vcpu->arch.hflags & BOOK3S_HFLAG_PAIRED_SINGLE))
> -		return EMULATE_DONE;
> -
> -	/* Read out the instruction */
> -	if (kvmppc_read_inst(vcpu) = EMULATE_DONE)
> -		/* Need to emulate */
> -		return EMULATE_FAIL;
> -
> -	return EMULATE_AGAIN;
> -}
> -
>   /* Handle external providers (FPU, Altivec, VSX) */
>   static int kvmppc_handle_ext(struct kvm_vcpu *vcpu, unsigned int exit_nr,
>   			     ulong msr)
> @@ -1149,31 +1113,49 @@ program_interrupt:
>   	case BOOK3S_INTERRUPT_VSX:
>   	{
>   		int ext_msr = 0;
> +		int emul;
> +		ulong pc;
> +		u32 last_inst;
> +
> +		if (vcpu->arch.hflags & BOOK3S_HFLAG_PAIRED_SINGLE) {
> +			/* Emulate the instruction */

If the flag is set we do paired single instruction emulation.

> +
> +			pc = kvmppc_get_pc(vcpu);
> +			last_inst = kvmppc_get_last_inst(vcpu);
> +			emul = kvmppc_ld(vcpu, &pc, sizeof(u32), &last_inst,
> +					 false);
> +			if (emul = EMULATE_DONE)
> +				goto program_interrupt;
> +			else
> +				r = RESUME_GUEST;
> +		} else {
> +			/* Do paired single emulation */

otherwise we deflect the interrupt into our guest.


Alex

>   
> -		switch (exit_nr) {
> -		case BOOK3S_INTERRUPT_FP_UNAVAIL: ext_msr = MSR_FP;  break;
> -		case BOOK3S_INTERRUPT_ALTIVEC:    ext_msr = MSR_VEC; break;
> -		case BOOK3S_INTERRUPT_VSX:        ext_msr = MSR_VSX; break;
> -		}
> +			switch (exit_nr) {
> +			case BOOK3S_INTERRUPT_FP_UNAVAIL:
> +				ext_msr = MSR_FP;
> +				break;
> +
> +			case BOOK3S_INTERRUPT_ALTIVEC:
> +				ext_msr = MSR_VEC;
> +				break;
> +
> +			case BOOK3S_INTERRUPT_VSX:
> +				ext_msr = MSR_VSX;
> +				break;
> +			}
>   
> -		switch (kvmppc_check_ext(vcpu, exit_nr)) {
> -		case EMULATE_DONE:
> -			/* everything ok - let's enable the ext */
>   			r = kvmppc_handle_ext(vcpu, exit_nr, ext_msr);
> -			break;
> -		case EMULATE_FAIL:
> -			/* we need to emulate this instruction */
> -			goto program_interrupt;
> -			break;
> -		default:
> -			/* nothing to worry about - go again */
> -			break;
>   		}
>   		break;
>   	}
>   	case BOOK3S_INTERRUPT_ALIGNMENT:
> -		if (kvmppc_read_inst(vcpu) = EMULATE_DONE) {
> -			u32 last_inst = kvmppc_get_last_inst(vcpu);
> +	{
> +		ulong pc = kvmppc_get_pc(vcpu);
> +		u32 last_inst = kvmppc_get_last_inst(vcpu);
> +		int emul = kvmppc_ld(vcpu, &pc, sizeof(u32), &last_inst, false);
> +
> +		if (emul = EMULATE_DONE) {
>   			u32 dsisr;
>   			u64 dar;
>   
> @@ -1187,6 +1169,7 @@ program_interrupt:
>   		}
>   		r = RESUME_GUEST;
>   		break;
> +	}
>   #ifdef CONFIG_PPC_BOOK3S_64
>   	case BOOK3S_INTERRUPT_FAC_UNAVAIL:
>   		kvmppc_handle_fac(vcpu, vcpu->arch.shadow_fscr >> 56);


WARNING: multiple messages have this Message-ID (diff)
From: Alexander Graf <agraf@suse.de>
To: Mihai Caraman <mihai.caraman@freescale.com>, kvm-ppc@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org
Subject: Re: [PATCH v5 3/5] KVM: PPC: Book3s: Remove kvmppc_read_inst() function
Date: Thu, 17 Jul 2014 15:56:36 +0200	[thread overview]
Message-ID: <53C7D614.6010907@suse.de> (raw)
In-Reply-To: <1405596148-1507-4-git-send-email-mihai.caraman@freescale.com>


On 17.07.14 13:22, Mihai Caraman wrote:
> In the context of replacing kvmppc_ld() function calls with a version of
> kvmppc_get_last_inst() which allow to fail, Alex Graf suggested this:
>
> "If we get EMULATE_AGAIN, we just have to make sure we go back into the guest.
> No need to inject an ISI into  the guest - it'll do that all by itself.
> With an error returning kvmppc_get_last_inst we can just use completely
> get rid of kvmppc_read_inst() and only use kvmppc_get_last_inst() instead."
>
> As a intermediate step get rid of kvmppc_read_inst() and only use kvmppc_ld()
> instead.
>
> Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
> ---
> v5:
>   - make paired single emulation the unusual
>
> v4:
>   - new patch
>
>   arch/powerpc/kvm/book3s_pr.c | 91 ++++++++++++++++++--------------------------
>   1 file changed, 37 insertions(+), 54 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
> index e40765f..02a983e 100644
> --- a/arch/powerpc/kvm/book3s_pr.c
> +++ b/arch/powerpc/kvm/book3s_pr.c
> @@ -710,42 +710,6 @@ static void kvmppc_giveup_fac(struct kvm_vcpu *vcpu, ulong fac)
>   #endif
>   }
>   
> -static int kvmppc_read_inst(struct kvm_vcpu *vcpu)
> -{
> -	ulong srr0 = kvmppc_get_pc(vcpu);
> -	u32 last_inst = kvmppc_get_last_inst(vcpu);
> -	int ret;
> -
> -	ret = kvmppc_ld(vcpu, &srr0, sizeof(u32), &last_inst, false);
> -	if (ret == -ENOENT) {
> -		ulong msr = kvmppc_get_msr(vcpu);
> -
> -		msr = kvmppc_set_field(msr, 33, 33, 1);
> -		msr = kvmppc_set_field(msr, 34, 36, 0);
> -		msr = kvmppc_set_field(msr, 42, 47, 0);
> -		kvmppc_set_msr_fast(vcpu, msr);
> -		kvmppc_book3s_queue_irqprio(vcpu, BOOK3S_INTERRUPT_INST_STORAGE);
> -		return EMULATE_AGAIN;
> -	}
> -
> -	return EMULATE_DONE;
> -}
> -
> -static int kvmppc_check_ext(struct kvm_vcpu *vcpu, unsigned int exit_nr)
> -{
> -
> -	/* Need to do paired single emulation? */
> -	if (!(vcpu->arch.hflags & BOOK3S_HFLAG_PAIRED_SINGLE))
> -		return EMULATE_DONE;
> -
> -	/* Read out the instruction */
> -	if (kvmppc_read_inst(vcpu) == EMULATE_DONE)
> -		/* Need to emulate */
> -		return EMULATE_FAIL;
> -
> -	return EMULATE_AGAIN;
> -}
> -
>   /* Handle external providers (FPU, Altivec, VSX) */
>   static int kvmppc_handle_ext(struct kvm_vcpu *vcpu, unsigned int exit_nr,
>   			     ulong msr)
> @@ -1149,31 +1113,49 @@ program_interrupt:
>   	case BOOK3S_INTERRUPT_VSX:
>   	{
>   		int ext_msr = 0;
> +		int emul;
> +		ulong pc;
> +		u32 last_inst;
> +
> +		if (vcpu->arch.hflags & BOOK3S_HFLAG_PAIRED_SINGLE) {
> +			/* Emulate the instruction */

If the flag is set we do paired single instruction emulation.

> +
> +			pc = kvmppc_get_pc(vcpu);
> +			last_inst = kvmppc_get_last_inst(vcpu);
> +			emul = kvmppc_ld(vcpu, &pc, sizeof(u32), &last_inst,
> +					 false);
> +			if (emul == EMULATE_DONE)
> +				goto program_interrupt;
> +			else
> +				r = RESUME_GUEST;
> +		} else {
> +			/* Do paired single emulation */

otherwise we deflect the interrupt into our guest.


Alex

>   
> -		switch (exit_nr) {
> -		case BOOK3S_INTERRUPT_FP_UNAVAIL: ext_msr = MSR_FP;  break;
> -		case BOOK3S_INTERRUPT_ALTIVEC:    ext_msr = MSR_VEC; break;
> -		case BOOK3S_INTERRUPT_VSX:        ext_msr = MSR_VSX; break;
> -		}
> +			switch (exit_nr) {
> +			case BOOK3S_INTERRUPT_FP_UNAVAIL:
> +				ext_msr = MSR_FP;
> +				break;
> +
> +			case BOOK3S_INTERRUPT_ALTIVEC:
> +				ext_msr = MSR_VEC;
> +				break;
> +
> +			case BOOK3S_INTERRUPT_VSX:
> +				ext_msr = MSR_VSX;
> +				break;
> +			}
>   
> -		switch (kvmppc_check_ext(vcpu, exit_nr)) {
> -		case EMULATE_DONE:
> -			/* everything ok - let's enable the ext */
>   			r = kvmppc_handle_ext(vcpu, exit_nr, ext_msr);
> -			break;
> -		case EMULATE_FAIL:
> -			/* we need to emulate this instruction */
> -			goto program_interrupt;
> -			break;
> -		default:
> -			/* nothing to worry about - go again */
> -			break;
>   		}
>   		break;
>   	}
>   	case BOOK3S_INTERRUPT_ALIGNMENT:
> -		if (kvmppc_read_inst(vcpu) == EMULATE_DONE) {
> -			u32 last_inst = kvmppc_get_last_inst(vcpu);
> +	{
> +		ulong pc = kvmppc_get_pc(vcpu);
> +		u32 last_inst = kvmppc_get_last_inst(vcpu);
> +		int emul = kvmppc_ld(vcpu, &pc, sizeof(u32), &last_inst, false);
> +
> +		if (emul == EMULATE_DONE) {
>   			u32 dsisr;
>   			u64 dar;
>   
> @@ -1187,6 +1169,7 @@ program_interrupt:
>   		}
>   		r = RESUME_GUEST;
>   		break;
> +	}
>   #ifdef CONFIG_PPC_BOOK3S_64
>   	case BOOK3S_INTERRUPT_FAC_UNAVAIL:
>   		kvmppc_handle_fac(vcpu, vcpu->arch.shadow_fscr >> 56);

WARNING: multiple messages have this Message-ID (diff)
From: Alexander Graf <agraf@suse.de>
To: Mihai Caraman <mihai.caraman@freescale.com>, kvm-ppc@vger.kernel.org
Cc: kvm@vger.kernel.org, linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v5 3/5] KVM: PPC: Book3s: Remove kvmppc_read_inst() function
Date: Thu, 17 Jul 2014 15:56:36 +0200	[thread overview]
Message-ID: <53C7D614.6010907@suse.de> (raw)
In-Reply-To: <1405596148-1507-4-git-send-email-mihai.caraman@freescale.com>


On 17.07.14 13:22, Mihai Caraman wrote:
> In the context of replacing kvmppc_ld() function calls with a version of
> kvmppc_get_last_inst() which allow to fail, Alex Graf suggested this:
>
> "If we get EMULATE_AGAIN, we just have to make sure we go back into the guest.
> No need to inject an ISI into  the guest - it'll do that all by itself.
> With an error returning kvmppc_get_last_inst we can just use completely
> get rid of kvmppc_read_inst() and only use kvmppc_get_last_inst() instead."
>
> As a intermediate step get rid of kvmppc_read_inst() and only use kvmppc_ld()
> instead.
>
> Signed-off-by: Mihai Caraman <mihai.caraman@freescale.com>
> ---
> v5:
>   - make paired single emulation the unusual
>
> v4:
>   - new patch
>
>   arch/powerpc/kvm/book3s_pr.c | 91 ++++++++++++++++++--------------------------
>   1 file changed, 37 insertions(+), 54 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_pr.c b/arch/powerpc/kvm/book3s_pr.c
> index e40765f..02a983e 100644
> --- a/arch/powerpc/kvm/book3s_pr.c
> +++ b/arch/powerpc/kvm/book3s_pr.c
> @@ -710,42 +710,6 @@ static void kvmppc_giveup_fac(struct kvm_vcpu *vcpu, ulong fac)
>   #endif
>   }
>   
> -static int kvmppc_read_inst(struct kvm_vcpu *vcpu)
> -{
> -	ulong srr0 = kvmppc_get_pc(vcpu);
> -	u32 last_inst = kvmppc_get_last_inst(vcpu);
> -	int ret;
> -
> -	ret = kvmppc_ld(vcpu, &srr0, sizeof(u32), &last_inst, false);
> -	if (ret == -ENOENT) {
> -		ulong msr = kvmppc_get_msr(vcpu);
> -
> -		msr = kvmppc_set_field(msr, 33, 33, 1);
> -		msr = kvmppc_set_field(msr, 34, 36, 0);
> -		msr = kvmppc_set_field(msr, 42, 47, 0);
> -		kvmppc_set_msr_fast(vcpu, msr);
> -		kvmppc_book3s_queue_irqprio(vcpu, BOOK3S_INTERRUPT_INST_STORAGE);
> -		return EMULATE_AGAIN;
> -	}
> -
> -	return EMULATE_DONE;
> -}
> -
> -static int kvmppc_check_ext(struct kvm_vcpu *vcpu, unsigned int exit_nr)
> -{
> -
> -	/* Need to do paired single emulation? */
> -	if (!(vcpu->arch.hflags & BOOK3S_HFLAG_PAIRED_SINGLE))
> -		return EMULATE_DONE;
> -
> -	/* Read out the instruction */
> -	if (kvmppc_read_inst(vcpu) == EMULATE_DONE)
> -		/* Need to emulate */
> -		return EMULATE_FAIL;
> -
> -	return EMULATE_AGAIN;
> -}
> -
>   /* Handle external providers (FPU, Altivec, VSX) */
>   static int kvmppc_handle_ext(struct kvm_vcpu *vcpu, unsigned int exit_nr,
>   			     ulong msr)
> @@ -1149,31 +1113,49 @@ program_interrupt:
>   	case BOOK3S_INTERRUPT_VSX:
>   	{
>   		int ext_msr = 0;
> +		int emul;
> +		ulong pc;
> +		u32 last_inst;
> +
> +		if (vcpu->arch.hflags & BOOK3S_HFLAG_PAIRED_SINGLE) {
> +			/* Emulate the instruction */

If the flag is set we do paired single instruction emulation.

> +
> +			pc = kvmppc_get_pc(vcpu);
> +			last_inst = kvmppc_get_last_inst(vcpu);
> +			emul = kvmppc_ld(vcpu, &pc, sizeof(u32), &last_inst,
> +					 false);
> +			if (emul == EMULATE_DONE)
> +				goto program_interrupt;
> +			else
> +				r = RESUME_GUEST;
> +		} else {
> +			/* Do paired single emulation */

otherwise we deflect the interrupt into our guest.


Alex

>   
> -		switch (exit_nr) {
> -		case BOOK3S_INTERRUPT_FP_UNAVAIL: ext_msr = MSR_FP;  break;
> -		case BOOK3S_INTERRUPT_ALTIVEC:    ext_msr = MSR_VEC; break;
> -		case BOOK3S_INTERRUPT_VSX:        ext_msr = MSR_VSX; break;
> -		}
> +			switch (exit_nr) {
> +			case BOOK3S_INTERRUPT_FP_UNAVAIL:
> +				ext_msr = MSR_FP;
> +				break;
> +
> +			case BOOK3S_INTERRUPT_ALTIVEC:
> +				ext_msr = MSR_VEC;
> +				break;
> +
> +			case BOOK3S_INTERRUPT_VSX:
> +				ext_msr = MSR_VSX;
> +				break;
> +			}
>   
> -		switch (kvmppc_check_ext(vcpu, exit_nr)) {
> -		case EMULATE_DONE:
> -			/* everything ok - let's enable the ext */
>   			r = kvmppc_handle_ext(vcpu, exit_nr, ext_msr);
> -			break;
> -		case EMULATE_FAIL:
> -			/* we need to emulate this instruction */
> -			goto program_interrupt;
> -			break;
> -		default:
> -			/* nothing to worry about - go again */
> -			break;
>   		}
>   		break;
>   	}
>   	case BOOK3S_INTERRUPT_ALIGNMENT:
> -		if (kvmppc_read_inst(vcpu) == EMULATE_DONE) {
> -			u32 last_inst = kvmppc_get_last_inst(vcpu);
> +	{
> +		ulong pc = kvmppc_get_pc(vcpu);
> +		u32 last_inst = kvmppc_get_last_inst(vcpu);
> +		int emul = kvmppc_ld(vcpu, &pc, sizeof(u32), &last_inst, false);
> +
> +		if (emul == EMULATE_DONE) {
>   			u32 dsisr;
>   			u64 dar;
>   
> @@ -1187,6 +1169,7 @@ program_interrupt:
>   		}
>   		r = RESUME_GUEST;
>   		break;
> +	}
>   #ifdef CONFIG_PPC_BOOK3S_64
>   	case BOOK3S_INTERRUPT_FAC_UNAVAIL:
>   		kvmppc_handle_fac(vcpu, vcpu->arch.shadow_fscr >> 56);


  reply	other threads:[~2014-07-17 13:56 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-17 11:22 [PATCH v5 0/5] Read guest last instruction from kvmppc_get_last_inst() Mihai Caraman
2014-07-17 11:22 ` Mihai Caraman
2014-07-17 11:22 ` Mihai Caraman
2014-07-17 11:22 ` [PATCH v5 1/5] KVM: PPC: e500mc: Revert "add load inst fixup" Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 11:22 ` [PATCH v5 2/5] KVM: PPC: Book3e: Add TLBSEL/TSIZE defines for MAS0/1 Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 11:22 ` [PATCH v5 3/5] KVM: PPC: Book3s: Remove kvmppc_read_inst() function Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 13:56   ` Alexander Graf [this message]
2014-07-17 13:56     ` Alexander Graf
2014-07-17 13:56     ` Alexander Graf
2014-07-17 11:22 ` [PATCH v5 4/5] KVM: PPC: Alow kvmppc_get_last_inst() to fail Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 14:20   ` Alexander Graf
2014-07-17 14:20     ` Alexander Graf
2014-07-17 14:20     ` Alexander Graf
2014-07-18  9:05     ` mihai.caraman
2014-07-18  9:05       ` mihai.caraman
2014-07-18  9:05       ` mihai.caraman
2014-07-21  9:59       ` mihai.caraman
2014-07-21  9:59         ` mihai.caraman
2014-07-21  9:59         ` mihai.caraman
2014-07-22 21:21         ` Alexander Graf
2014-07-22 21:21           ` Alexander Graf
2014-07-22 21:21           ` Alexander Graf
2014-07-23  8:24           ` mihai.caraman
2014-07-23  8:24             ` mihai.caraman
2014-07-23  8:24             ` mihai.caraman
2014-07-23  8:39             ` Alexander Graf
2014-07-23  8:39               ` Alexander Graf
2014-07-23  8:39               ` Alexander Graf
2014-07-23 10:06               ` mihai.caraman
2014-07-23 10:06                 ` mihai.caraman
2014-07-17 11:22 ` [PATCH v5 5/5] KVM: PPC: Bookehv: Get vcpu's last instruction for emulation Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 11:22   ` Mihai Caraman
2014-07-17 14:25 ` [PATCH v5 0/5] Read guest last instruction from kvmppc_get_last_inst() Alexander Graf
2014-07-17 14:25   ` Alexander Graf
2014-07-17 14:25   ` Alexander Graf

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=53C7D614.6010907@suse.de \
    --to=agraf@suse.de \
    --cc=kvm-ppc@vger.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mihai.caraman@freescale.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.