All of lore.kernel.org
 help / color / mirror / Atom feed
From: Julien Grall <julien.grall@linaro.org>
To: vijay.kilari@gmail.com, Ian.Campbell@citrix.com,
	stefano.stabellini@eu.citrix.com, stefano.stabellini@citrix.com,
	tim@xen.org, xen-devel@lists.xen.org
Cc: Prasun.Kapoor@caviumnetworks.com, vijaya.kumar@caviumnetworks.com
Subject: Re: [PATCH v7a 13/14] xen/arm: split vgic driver into generic and vgic-v2 driver
Date: Tue, 01 Jul 2014 14:08:41 +0100	[thread overview]
Message-ID: <53B2B2D9.8000906@linaro.org> (raw)
In-Reply-To: <1404196882-23473-14-git-send-email-vijay.kilari@gmail.com>

Hi Vijay,

You continue to ignore my comments on this patch... Please explain why
you don't want to make those changes. Sending 3 times the same patch
without any change is a waste of time for both of us.

On 07/01/2014 07:41 AM, vijay.kilari@gmail.com wrote:
> From: Vijaya Kumar K <Vijaya.Kumar@caviumnetworks.com>
> 
> Existing vGIC driver has both generic code and hw specific
> code. Segregate vGIC low level driver into vgic-v2.c and
> keep generic code in existing vgic.c file

Missing "." at the end?

> some static generic functions in vgic.c is made as non-static

Uppercase for the first letter of the first word.

s/is/are/

[..]

> +const struct mmio_handler_ops vgic_v2_distr_mmio_handler = {

There was a static on the previous location. You should keep it.

[..]

> +const static struct vgic_ops vgic_v2_ops = {
> +    .vcpu_init   = vgic_v2_vcpu_init,
> +    .domain_init = vgic_v2_domain_init,
> +    .send_sgi    = vgic_v2_to_sgi,
> +};

static const.

[..]

> diff --git a/xen/arch/arm/vgic.c b/xen/arch/arm/vgic.c
> index 78004b0..9f18347 100644
> --- a/xen/arch/arm/vgic.c
> +++ b/xen/arch/arm/vgic.c

[..]

>  int domain_vgic_init(struct domain *d)
>  {
>      int i;
> @@ -75,6 +67,15 @@ int domain_vgic_init(struct domain *d)
>      else
>          d->arch.vgic.nr_lines = 0; /* We don't need SPIs for the guest */
>  
> +    switch ( gic_hw_version() )
> +    {
> +    case GIC_V2:
> +        vgic_v2_init(d);

vgic_v2_init is returning an int to indicate if the initialization has
succeeded or not. Please check the return to see if an error occurred.

> -static int vgic_to_sgi(struct vcpu *v, register_t sgir)
> +/* TODO: unsigned long is used to fit vcpu_mask. Change to cpu_mask */
> +int vgic_to_sgi(struct vcpu *v, register_t sgir, enum gic_sgi_mode irqmode, int virq,
> +                unsigned long vcpu_mask)


[..]

> +    case SGI_TARGET_OTHERS:

[..]

> +        break;
> +    case SGI_TARGET_SELF:
> +        set_bit(current->vcpu_id, &vcpu_mask);

I already said it on V4, V5 and now V6a and don't see any change or
comment from you side.

For SGI_TARGET_{OTHERS,SELF}, you can't assume that vcpu_mask will be
equal to 0...

It comes directly guest write to GICD_SIGR. Please make sure to handle
it correctly or the guest could send SGI to the wrong VCPUs.

[..]

> +struct vgic_ops {
> +    /* Initialize vGIC */
> +    int (*vcpu_init)(struct vcpu *v);
> +    /* Domain specific initialization of vGIC */
> +    int (*domain_init)(struct domain *d);
> +    /* SGI handler of vGIC */
> +    int (*send_sgi)(struct vcpu *v, register_t sgir);

You've introduced vgic_send_sgi here, I'm not sure to understand why...
Can you give more input?

> +};
> +
>  /* Number of ranks of interrupt registers for a domain */
>  #define DOMAIN_NR_RANKS(d) (((d)->arch.vgic.nr_lines+31)/32)
>  
> @@ -133,6 +142,8 @@ static inline void vgic_byte_write(uint32_t *reg, uint32_t var, int offset)
>      *reg |= var;
>  }
>  
> +extern enum gic_sgi_mode irqmode;
> +

Hu? What is used for?

Regards,

-- 
Julien Grall

  reply	other threads:[~2014-07-01 13:08 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-01  6:41 [PATCH v7a 00/14] GIC and VGIC code refactoring vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 01/14] xen/arm: make sgi handling generic vijay.kilari
2014-07-01 11:13   ` Julien Grall
2014-07-02 10:51     ` Ian Campbell
2014-07-01  6:41 ` [PATCH v7a 02/14] xen/arm: use ioremap to map gic-v2 registers vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 03/14] xen/arm: segregate and split GIC low level functionality vijay.kilari
2014-07-01 11:32   ` Julien Grall
2014-07-01  6:41 ` [PATCH v7a 04/14] xen/arm: move GIC context data structure to gic driver vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 05/14] xen/arm: use device api to detect GIC version vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 06/14] xen/arm: switch to dynamic allocation of vgic rank vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 07/14] xen/arm: prefix byte_read and byte_write functions with vgic vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 08/14] xen/arm: move vgic defines to vgic header file vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 09/14] xen/arm: move and rename is_vcpu_running function to sched.h vijay.kilari
2014-07-01  7:55   ` Jan Beulich
2014-07-01  9:32     ` George Dunlap
2014-07-02 11:19     ` Ian Campbell
2014-07-02 13:03       ` Vijay Kilari
2014-07-01  6:41 ` [PATCH v7a 10/14] xen/arm: move pending_irq structure to vgic header file vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 11/14] xen/arm: calculate vgic irq rank based on register size vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 12/14] xen/arm: Remove REG macro in vgic driver vijay.kilari
2014-07-01  6:41 ` [PATCH v7a 13/14] xen/arm: split vgic driver into generic and vgic-v2 driver vijay.kilari
2014-07-01 13:08   ` Julien Grall [this message]
2014-07-02  6:39     ` Vijay Kilari
2014-07-02  9:01       ` Julien Grall
2014-07-01  6:41 ` [PATCH v7a 14/14] xen/arm: Restrict saving of gic register for idle domain vijay.kilari
2014-07-04 14:25   ` Stefano Stabellini
2014-07-01 11:06 ` [PATCH v7a 00/14] GIC and VGIC code refactoring Julien Grall
2014-07-02 11:41 ` Ian Campbell

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=53B2B2D9.8000906@linaro.org \
    --to=julien.grall@linaro.org \
    --cc=Ian.Campbell@citrix.com \
    --cc=Prasun.Kapoor@caviumnetworks.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=tim@xen.org \
    --cc=vijay.kilari@gmail.com \
    --cc=vijaya.kumar@caviumnetworks.com \
    --cc=xen-devel@lists.xen.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 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.