Re: [Xen-devel] [PATCH v6 00/31] Add ITS support

2015-09-14 Thread Vijay Kilari
On Mon, Sep 14, 2015 at 4:39 PM, Julien Grall  wrote:
> Hi Vijay,
>
> On 14/09/15 12:00, Vijay Kilari wrote:
>> I will take care of A & B in next revision.
>>
>> Is there any further comments on this series?. I have not received
>> any comments on last few patches (patch #25 to patch#30).
>
> I haven't commented the rest of the series because I'm expecting to see
> the remaining patches change after the comment related the LPI property
> table in patch #24.
>
> Actually, even in patch #24 I had some comments but I'm delaying them
> until the main one is fixed.

Ok. Expecting no further review on v6, I will send next revision.

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v6 00/31] Add ITS support

2015-09-14 Thread Vijay Kilari
On Wed, Sep 9, 2015 at 8:59 PM, Ian Campbell  wrote:
> On Mon, 2015-08-31 at 16:36 +0530, vijay.kil...@gmail.com wrote:
>>  Some Major TODOs:
>>1) Avoid making vits_process_cmd() static in later point of time
>>2) How to handle LPI that does not have LPI config table entry.
>>3) Enable/disable ITS to Dom0
>
> I'm not quite sure what any of these 3 are, can you expand upon them
> please.
>
> Major TODOs I can think of (which may overlap those above which I don't
> understand):
>
>A. Ensuring that no aspect of the vITS is exposed to domains other than
>   dom0, so no mapping, no GICR registers relating to LPIs or ITS etc.
>B. A bug fat warning in the code vits_map_translation_space about the
>   issues with exposing this to dom0.
>C. The issue regarding what to do with physical LPIs which arrive before
>   the guest has mapped the corresponding event in the vits or which is
>   masked
>
> Have I missed anything?
>
> I think A and B are pretty straight forward to fix.
>
> C I think is a bit thornier, and IIRC we do not currently have a plan for
> how we can address this in a generic way. I think we might have some ideas
> which work only for PCI devices (or maybe only PCI-e devices?).
>
> Ian.

I will take care of A & B in next revision.

Is there any further comments on this series?. I have not received
any comments on last few patches (patch #25 to patch#30).

>
>
>>
>> Changes in v5:
>>   - Added following new patches
>>   0001-xen-arm-Return-success-if-dt-node-does-not-have-irq-.patch
>>   0004-xen-arm-Set-nr_cpu_ids-to-available-number-of-cpus.patch
>>   0009-xen-arm-ITS-Export-ITS-info-to-Virtual-ITS.patch
>>   0013-xen-arm-ITS-Implement-gic_is_lpi-helper-function.patch
>>   - Split patch #12 into two patches #14 & #16
>>   0014-xen-arm-ITS-Allocate-irq-descriptors-for-LPIs.patch
>>   0016-xen-arm-ITS-Route-LPIs.patch
>>   - Introduce new API to route LPI (route_lpi_to_guest() )
>>   - Moved patch #8 in v4 as patch #19
>>   - irq_descritors for LPIs are allocated dynamically
>>   - Removed RB-tree for managing vitual its devices. Will be
>> introduced when pci-passthrough is implemented
>>   - its_add_device() api now takes nr_ites and DT its node as parameters
>>   - some function are kept as non-static when introduced in a patch for
>> compilation purpose and eventually made static when used.
>>   - Tested compilation for arm32
>>
>> Changes in v4:
>>   - Patch for rate limiting of error message is removed.
>>   - Patch #4 and #5 in v3 is merged
>>   - Merged #13 and #16 as one patch
>>   - hw_irq_controller is implemented for LPIs
>>   - GITS and GICR emulation for LPIs in separate patches
>>   - Removed build functions for ITS command in physical ITS driver
>>   - Added new patch to add and assign devices from platform file
>>   - Enable compilation of vits and pits driver in separate patch
>>   - Replace msi-parent property in all pci dt nodes to single
>> ITS node generated by Xen for Dom0
>>
>> Vijaya Kumar K (31):
>>   xen/dt: Handle correctly node with interrupt-map in
>> dt_for_each_irq_map
>>   xen/arm: Add bitmap_find_next_zero_area helper function
>>   xen: Add log2 functionality
>>   xen/arm: Set nr_cpu_ids to available number of cpus
>>   xen/arm: Rename NR_IRQs and vgic_num_irqs helper function
>>   xen/arm: ITS: Port ITS driver to Xen
>>   xen/arm: ITS: Add helper functions to manage its_devices
>>   xen/arm: ITS: Introduce msi_desc for LPIs
>>   xen/arm: ITS: Add APIs to add and assign device
>>   xen/arm: ITS: Introduce gic_is_lpi helper function
>>   xen/arm: ITS: Enable compilation of physical ITS driver
>>   xen/arm: Move vgic locking inside get_irq_priority callback
>>   xen/arm: ITS: implement hw_irq_controller for LPIs
>>   xen/arm: ITS: Initialize physical ITS and export lpi support
>>   xen/arm: ITS: Add virtual ITS driver
>>   xen/arm: ITS: Add virtual ITS commands support
>>   xen/arm: ITS: Store LPIs allocated and IRQ ID bits per domain
>>   xen/arm: ITS: Enable virtual ITS driver
>>   xen/arm: ITS: Export ITS info to Virtual ITS
>>   xen/arm: ITS: Introduce helper to get number of event IDs
>>   xen/arm: ITS: Add GITS registers emulation
>>   xen/arm: ITS: Add virtual ITS availability check helper
>>   xen/arm: ITS: Add 32-bit access to GICR_TYPER
>>   xen/arm: ITS: Add GICR register emulation
>>   xen/arm: ITS: Allocate irq descriptors for LPIs
>>   xen/arm: ITS: Allocate pending_lpi descriptors for LPIs
>>   xen/arm: ITS: Route LPIs
>>   xen/arm: ITS: Add domain specific ITS initialization
>>   xen/arm: ITS: Map ITS translation space
>>   xen/arm: ITS: Generate ITS node for Dom0
>>   xen/arm: ITS: Add pci devices in ThunderX
>>
>>  xen/arch/arm/Makefile |2 +
>>  xen/arch/arm/domain_build.c   |   11 +
>>  xen/arch/arm/gic-hip04.c  |   19 +-
>>  xen/arch/arm/gic-v2.c |   19 +-
>>  xen/arch/arm/gic-v3-its.c | 1594
>> 

Re: [Xen-devel] [PATCH v6 00/31] Add ITS support

2015-09-14 Thread Julien Grall
Hi Vijay,

On 14/09/15 12:00, Vijay Kilari wrote:
> I will take care of A & B in next revision.
> 
> Is there any further comments on this series?. I have not received
> any comments on last few patches (patch #25 to patch#30).

I haven't commented the rest of the series because I'm expecting to see
the remaining patches change after the comment related the LPI property
table in patch #24.

Actually, even in patch #24 I had some comments but I'm delaying them
until the main one is fixed.

Regards,

-- 
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v6 00/31] Add ITS support

2015-09-09 Thread Ian Campbell
On Mon, 2015-08-31 at 16:36 +0530, vijay.kil...@gmail.com wrote:
>  Some Major TODOs:
>1) Avoid making vits_process_cmd() static in later point of time
>2) How to handle LPI that does not have LPI config table entry.
>3) Enable/disable ITS to Dom0

I'm not quite sure what any of these 3 are, can you expand upon them
please.

Major TODOs I can think of (which may overlap those above which I don't
understand):

   A. Ensuring that no aspect of the vITS is exposed to domains other than
  dom0, so no mapping, no GICR registers relating to LPIs or ITS etc.
   B. A bug fat warning in the code vits_map_translation_space about the
  issues with exposing this to dom0.
   C. The issue regarding what to do with physical LPIs which arrive before
  the guest has mapped the corresponding event in the vits or which is
  masked

Have I missed anything?

I think A and B are pretty straight forward to fix.

C I think is a bit thornier, and IIRC we do not currently have a plan for
how we can address this in a generic way. I think we might have some ideas
which work only for PCI devices (or maybe only PCI-e devices?).

Ian.


> 
> Changes in v5:
>   - Added following new patches
>   0001-xen-arm-Return-success-if-dt-node-does-not-have-irq-.patch
>   0004-xen-arm-Set-nr_cpu_ids-to-available-number-of-cpus.patch
>   0009-xen-arm-ITS-Export-ITS-info-to-Virtual-ITS.patch
>   0013-xen-arm-ITS-Implement-gic_is_lpi-helper-function.patch
>   - Split patch #12 into two patches #14 & #16
>   0014-xen-arm-ITS-Allocate-irq-descriptors-for-LPIs.patch
>   0016-xen-arm-ITS-Route-LPIs.patch
>   - Introduce new API to route LPI (route_lpi_to_guest() )
>   - Moved patch #8 in v4 as patch #19
>   - irq_descritors for LPIs are allocated dynamically
>   - Removed RB-tree for managing vitual its devices. Will be
> introduced when pci-passthrough is implemented
>   - its_add_device() api now takes nr_ites and DT its node as parameters
>   - some function are kept as non-static when introduced in a patch for
> compilation purpose and eventually made static when used.
>   - Tested compilation for arm32
> 
> Changes in v4:
>   - Patch for rate limiting of error message is removed.
>   - Patch #4 and #5 in v3 is merged
>   - Merged #13 and #16 as one patch
>   - hw_irq_controller is implemented for LPIs
>   - GITS and GICR emulation for LPIs in separate patches
>   - Removed build functions for ITS command in physical ITS driver
>   - Added new patch to add and assign devices from platform file
>   - Enable compilation of vits and pits driver in separate patch
>   - Replace msi-parent property in all pci dt nodes to single
> ITS node generated by Xen for Dom0
> 
> Vijaya Kumar K (31):
>   xen/dt: Handle correctly node with interrupt-map in
> dt_for_each_irq_map
>   xen/arm: Add bitmap_find_next_zero_area helper function
>   xen: Add log2 functionality
>   xen/arm: Set nr_cpu_ids to available number of cpus
>   xen/arm: Rename NR_IRQs and vgic_num_irqs helper function
>   xen/arm: ITS: Port ITS driver to Xen
>   xen/arm: ITS: Add helper functions to manage its_devices
>   xen/arm: ITS: Introduce msi_desc for LPIs
>   xen/arm: ITS: Add APIs to add and assign device
>   xen/arm: ITS: Introduce gic_is_lpi helper function
>   xen/arm: ITS: Enable compilation of physical ITS driver
>   xen/arm: Move vgic locking inside get_irq_priority callback
>   xen/arm: ITS: implement hw_irq_controller for LPIs
>   xen/arm: ITS: Initialize physical ITS and export lpi support
>   xen/arm: ITS: Add virtual ITS driver
>   xen/arm: ITS: Add virtual ITS commands support
>   xen/arm: ITS: Store LPIs allocated and IRQ ID bits per domain
>   xen/arm: ITS: Enable virtual ITS driver
>   xen/arm: ITS: Export ITS info to Virtual ITS
>   xen/arm: ITS: Introduce helper to get number of event IDs
>   xen/arm: ITS: Add GITS registers emulation
>   xen/arm: ITS: Add virtual ITS availability check helper
>   xen/arm: ITS: Add 32-bit access to GICR_TYPER
>   xen/arm: ITS: Add GICR register emulation
>   xen/arm: ITS: Allocate irq descriptors for LPIs
>   xen/arm: ITS: Allocate pending_lpi descriptors for LPIs
>   xen/arm: ITS: Route LPIs
>   xen/arm: ITS: Add domain specific ITS initialization
>   xen/arm: ITS: Map ITS translation space
>   xen/arm: ITS: Generate ITS node for Dom0
>   xen/arm: ITS: Add pci devices in ThunderX
> 
>  xen/arch/arm/Makefile |2 +
>  xen/arch/arm/domain_build.c   |   11 +
>  xen/arch/arm/gic-hip04.c  |   19 +-
>  xen/arch/arm/gic-v2.c |   19 +-
>  xen/arch/arm/gic-v3-its.c | 1594
> +
>  xen/arch/arm/gic-v3.c |  102 ++-
>  xen/arch/arm/gic.c|   73 +-
>  xen/arch/arm/irq.c|  176 +++-
>  xen/arch/arm/platforms/Makefile   |1 +
>  xen/arch/arm/platforms/thunderx.c |  151 
>  xen/arch/arm/setup.c  |2 +
>  xen/arch/arm/vgic-v2.c|9 +-
>  

Re: [Xen-devel] [PATCH v6 00/31] Add ITS support

2015-09-03 Thread Julien Grall
Hi Vijay,

On 31/08/15 12:06, vijay.kil...@gmail.com wrote:
> From: Vijaya Kumar K 
> 
> This is based on DraftG version
> http://xenbits.xen.org/people/ianc/vits/draftG.pdf
> 
> Following major features are supported
>  - GICv3 ITS support for arm64 platform
>  - Only Dom0 is supported. For DomU pci passthrough feature
>is required.
> 
> Patches shared @ https://github.com/vijaykilari/its_v6.git

Thank you for the repo.

FYI, you could have re-used the git repo you've used for v2 and create a
new branch called its-v6 ;). It's easier than creating a new repo for
every version.

Regards,

-- 
Julien Grall

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v6 00/31] Add ITS support

2015-09-02 Thread Ian Campbell
On Wed, 2015-09-02 at 16:38 +0100, Ian Campbell wrote:
> > 
> > Changes in v6:
> > 
> >  - Rebased to latest staging branch.
> >  - Compiled all the patches individually for both arm32 and arm64
> >  - Split the patch "xen/arm: ITS: Allocate irq descriptors for LPIs" 
> > into 
> > two.
> >One for allocating LPI irq_desc and other patch for allocating 
> > pending_irq desc
> >for LPIs
> >  - Following new patches are introduced
> >  1) xen/arm: Rename NR_IRQs and vgic_num_irqs helper function
> >  2) xen/arm: ITS: Introduce msi_desc for LPIs
> >  3) xen/arm: Move vgic locking inside get_irq_priority callback
> >  4) xen/arm: ITS: Store LPIs allocated and IRQ ID bits per domain
> >  5) xen/arm: ITS: Introduce helper to get number of event IDs
> >  6) xen/arm: ITS: Add virtual ITS availability check helper
> >  7) xen/arm: ITS: Add 32-bit access to GICR_TYPER) 
> >  8) xen/arm: ITS: Allocate pending_lpi descriptors for LPIs
> > 
> >  - Based on below patch set
> >  http://lists.xen.org/archives/html/xen-devel/2015-08/msg00168.html
> > 
> >  Some Major TODOs:
> >1) Avoid making vits_process_cmd() static in later point of time
> >2) How to handle LPI that does not have LPI config table entry.
> >3) Enable/disable ITS to Dom0
> 
> http://article.gmane.org/gmane.comp.emulators.xen.devel/258198 doesn't 
> seem
> to be reflected here as either a change/new-patch or a Major TODO, and it
> is pretty Major I think.

I was reminded by Julien's response to patch #29 that this is only really a
problem once we are exposing the ITS to domU, and I concur with his request
for a big fat warning comment (the existing ASSERT I think is sufficient to
avoid runtime problems).

Ian.

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


Re: [Xen-devel] [PATCH v6 00/31] Add ITS support

2015-09-02 Thread Ian Campbell
> Changes in v6:
> 
>  - Rebased to latest staging branch.
>  - Compiled all the patches individually for both arm32 and arm64
>  - Split the patch "xen/arm: ITS: Allocate irq descriptors for LPIs" into 
> two.
>One for allocating LPI irq_desc and other patch for allocating 
> pending_irq desc
>for LPIs
>  - Following new patches are introduced
>  1) xen/arm: Rename NR_IRQs and vgic_num_irqs helper function
>  2) xen/arm: ITS: Introduce msi_desc for LPIs
>  3) xen/arm: Move vgic locking inside get_irq_priority callback
>  4) xen/arm: ITS: Store LPIs allocated and IRQ ID bits per domain
>  5) xen/arm: ITS: Introduce helper to get number of event IDs
>  6) xen/arm: ITS: Add virtual ITS availability check helper
>  7) xen/arm: ITS: Add 32-bit access to GICR_TYPER) 
>  8) xen/arm: ITS: Allocate pending_lpi descriptors for LPIs
> 
>  - Based on below patch set
>  http://lists.xen.org/archives/html/xen-devel/2015-08/msg00168.html
> 
>  Some Major TODOs:
>1) Avoid making vits_process_cmd() static in later point of time
>2) How to handle LPI that does not have LPI config table entry.
>3) Enable/disable ITS to Dom0

http://article.gmane.org/gmane.comp.emulators.xen.devel/258198 doesn't seem
to be reflected here as either a change/new-patch or a Major TODO, and it
is pretty Major I think.

Ian.

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


[Xen-devel] [PATCH v6 00/31] Add ITS support

2015-08-31 Thread vijay . kilari
From: Vijaya Kumar K 

This is based on DraftG version
http://xenbits.xen.org/people/ianc/vits/draftG.pdf

Following major features are supported
 - GICv3 ITS support for arm64 platform
 - Only Dom0 is supported. For DomU pci passthrough feature
   is required.

Patches shared @ https://github.com/vijaykilari/its_v6.git

Changes in v6:

 - Rebased to latest staging branch.
 - Compiled all the patches individually for both arm32 and arm64
 - Split the patch "xen/arm: ITS: Allocate irq descriptors for LPIs" into two.
   One for allocating LPI irq_desc and other patch for allocating pending_irq 
desc
   for LPIs
 - Following new patches are introduced
 1) xen/arm: Rename NR_IRQs and vgic_num_irqs helper function
 2) xen/arm: ITS: Introduce msi_desc for LPIs
 3) xen/arm: Move vgic locking inside get_irq_priority callback
 4) xen/arm: ITS: Store LPIs allocated and IRQ ID bits per domain
 5) xen/arm: ITS: Introduce helper to get number of event IDs
 6) xen/arm: ITS: Add virtual ITS availability check helper
 7) xen/arm: ITS: Add 32-bit access to GICR_TYPER) 
 8) xen/arm: ITS: Allocate pending_lpi descriptors for LPIs

 - Based on below patch set
 http://lists.xen.org/archives/html/xen-devel/2015-08/msg00168.html

 Some Major TODOs:
   1) Avoid making vits_process_cmd() static in later point of time
   2) How to handle LPI that does not have LPI config table entry.
   3) Enable/disable ITS to Dom0

Changes in v5:
  - Added following new patches
  0001-xen-arm-Return-success-if-dt-node-does-not-have-irq-.patch
  0004-xen-arm-Set-nr_cpu_ids-to-available-number-of-cpus.patch
  0009-xen-arm-ITS-Export-ITS-info-to-Virtual-ITS.patch
  0013-xen-arm-ITS-Implement-gic_is_lpi-helper-function.patch
  - Split patch #12 into two patches #14 & #16
  0014-xen-arm-ITS-Allocate-irq-descriptors-for-LPIs.patch
  0016-xen-arm-ITS-Route-LPIs.patch
  - Introduce new API to route LPI (route_lpi_to_guest() )
  - Moved patch #8 in v4 as patch #19
  - irq_descritors for LPIs are allocated dynamically
  - Removed RB-tree for managing vitual its devices. Will be
introduced when pci-passthrough is implemented
  - its_add_device() api now takes nr_ites and DT its node as parameters
  - some function are kept as non-static when introduced in a patch for
compilation purpose and eventually made static when used.
  - Tested compilation for arm32

Changes in v4:
  - Patch for rate limiting of error message is removed.
  - Patch #4 and #5 in v3 is merged
  - Merged #13 and #16 as one patch
  - hw_irq_controller is implemented for LPIs
  - GITS and GICR emulation for LPIs in separate patches
  - Removed build functions for ITS command in physical ITS driver
  - Added new patch to add and assign devices from platform file
  - Enable compilation of vits and pits driver in separate patch
  - Replace msi-parent property in all pci dt nodes to single
ITS node generated by Xen for Dom0

Vijaya Kumar K (31):
  xen/dt: Handle correctly node with interrupt-map in
dt_for_each_irq_map
  xen/arm: Add bitmap_find_next_zero_area helper function
  xen: Add log2 functionality
  xen/arm: Set nr_cpu_ids to available number of cpus
  xen/arm: Rename NR_IRQs and vgic_num_irqs helper function
  xen/arm: ITS: Port ITS driver to Xen
  xen/arm: ITS: Add helper functions to manage its_devices
  xen/arm: ITS: Introduce msi_desc for LPIs
  xen/arm: ITS: Add APIs to add and assign device
  xen/arm: ITS: Introduce gic_is_lpi helper function
  xen/arm: ITS: Enable compilation of physical ITS driver
  xen/arm: Move vgic locking inside get_irq_priority callback
  xen/arm: ITS: implement hw_irq_controller for LPIs
  xen/arm: ITS: Initialize physical ITS and export lpi support
  xen/arm: ITS: Add virtual ITS driver
  xen/arm: ITS: Add virtual ITS commands support
  xen/arm: ITS: Store LPIs allocated and IRQ ID bits per domain
  xen/arm: ITS: Enable virtual ITS driver
  xen/arm: ITS: Export ITS info to Virtual ITS
  xen/arm: ITS: Introduce helper to get number of event IDs
  xen/arm: ITS: Add GITS registers emulation
  xen/arm: ITS: Add virtual ITS availability check helper
  xen/arm: ITS: Add 32-bit access to GICR_TYPER
  xen/arm: ITS: Add GICR register emulation
  xen/arm: ITS: Allocate irq descriptors for LPIs
  xen/arm: ITS: Allocate pending_lpi descriptors for LPIs
  xen/arm: ITS: Route LPIs
  xen/arm: ITS: Add domain specific ITS initialization
  xen/arm: ITS: Map ITS translation space
  xen/arm: ITS: Generate ITS node for Dom0
  xen/arm: ITS: Add pci devices in ThunderX

 xen/arch/arm/Makefile |2 +
 xen/arch/arm/domain_build.c   |   11 +
 xen/arch/arm/gic-hip04.c  |   19 +-
 xen/arch/arm/gic-v2.c |   19 +-
 xen/arch/arm/gic-v3-its.c | 1594 +
 xen/arch/arm/gic-v3.c |  102 ++-
 xen/arch/arm/gic.c|   73 +-
 xen/arch/arm/irq.c|  176 +++-