All of lore.kernel.org
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: jean.pihet@newoldbits.com, linux-omap@vger.kernel.org
Cc: khilman@deeprootsystems.com,
	linux-arm-kernel@lists.infradead.org,
	Jean Pihet-XID <j-pihet@ti.com>
Subject: RE: [PATCH 1/7] OMAP3: remove unused code from the ASM sleep code
Date: Fri, 17 Dec 2010 16:06:18 +0530	[thread overview]
Message-ID: <b2ac8ad467272d73b6884d42d4c7db1b@mail.gmail.com> (raw)
In-Reply-To: <1292580506-4421-2-git-send-email-j-pihet@ti.com>

> -----Original Message-----
> From: linux-omap-owner@vger.kernel.org [mailto:linux-omap-
> owner@vger.kernel.org] On Behalf Of jean.pihet@newoldbits.com
> Sent: Friday, December 17, 2010 3:38 PM
> To: linux-omap@vger.kernel.org
> Cc: khilman@deeprootsystems.com; linux-arm-kernel@lists.infradead.org;
> Jean Pihet
> Subject: [PATCH 1/7] OMAP3: remove unused code from the ASM sleep code
>
> From: Jean Pihet <j-pihet@ti.com>
>
> Remove unused code:
> - macros,
> - variables,
> - unused semaphore locking API. This API shall be added back
>   when needed,
> - infinite loops for debug.
>
> Tested on N900 and Beagleboard with full RET and OFF modes,
> using cpuidle and suspend.
>
> Signed-off-by: Jean Pihet <j-pihet@ti.com>

Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>

> ---
>  arch/arm/mach-omap2/pm.h        |    1 -
>  arch/arm/mach-omap2/sleep34xx.S |   58
++++------------------------------
> -----
>  2 files changed, 6 insertions(+), 53 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
> index aff39d0..e458b2a 100644
> --- a/arch/arm/mach-omap2/pm.h
> +++ b/arch/arm/mach-omap2/pm.h
> @@ -80,7 +80,6 @@ extern void save_secure_ram_context(u32 *addr);
>  extern void omap3_save_scratchpad_contents(void);
>
>  extern unsigned int omap24xx_idle_loop_suspend_sz;
> -extern unsigned int omap34xx_suspend_sz;
>  extern unsigned int save_secure_ram_context_sz;
>  extern unsigned int omap24xx_cpu_suspend_sz;
>  extern unsigned int omap34xx_cpu_suspend_sz;
> diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-
> omap2/sleep34xx.S
> index d2eda01..2191576 100644
> --- a/arch/arm/mach-omap2/sleep34xx.S
> +++ b/arch/arm/mach-omap2/sleep34xx.S
> @@ -35,11 +35,7 @@
>
>  #define SDRC_SCRATCHPAD_SEM_V	0xfa00291c
>
> -#define PM_PREPWSTST_CORE_V	OMAP34XX_PRM_REGADDR(CORE_MOD, \
> -				OMAP3430_PM_PREPWSTST)
>  #define PM_PREPWSTST_CORE_P	0x48306AE8
> -#define PM_PREPWSTST_MPU_V	OMAP34XX_PRM_REGADDR(MPU_MOD, \
> -				OMAP3430_PM_PREPWSTST)
>  #define PM_PWSTCTRL_MPU_P	OMAP3430_PRM_BASE + MPU_MOD +
> OMAP2_PM_PWSTCTRL
>  #define CM_IDLEST1_CORE_V	OMAP34XX_CM_REGADDR(CORE_MOD, CM_IDLEST1)
>  #define CM_IDLEST_CKGEN_V	OMAP34XX_CM_REGADDR(PLL_MOD, CM_IDLEST)
> @@ -62,36 +58,10 @@
>  #define SDRC_DLLA_STATUS_V	OMAP34XX_SDRC_REGADDR(SDRC_DLLA_STATUS)
>  #define SDRC_DLLA_CTRL_V	OMAP34XX_SDRC_REGADDR(SDRC_DLLA_CTRL)
>
> -        .text
> -/* Function to acquire the semaphore in scratchpad */
> -ENTRY(lock_scratchpad_sem)
> -	stmfd	sp!, {lr}	@ save registers on stack
> -wait_sem:
> -	mov	r0,#1
> -	ldr	r1, sdrc_scratchpad_sem
> -wait_loop:
> -	ldr	r2, [r1]	@ load the lock value
> -	cmp	r2, r0		@ is the lock free ?
> -	beq	wait_loop	@ not free...
> -	swp	r2, r0, [r1]	@ semaphore free so lock it and proceed
> -	cmp	r2, r0		@ did we succeed ?
> -	beq	wait_sem	@ no - try again
> -	ldmfd	sp!, {pc}	@ restore regs and return
> -sdrc_scratchpad_sem:
> -        .word SDRC_SCRATCHPAD_SEM_V
> -ENTRY(lock_scratchpad_sem_sz)
> -        .word   . - lock_scratchpad_sem
> -
> -        .text
> -/* Function to release the scratchpad semaphore */
> -ENTRY(unlock_scratchpad_sem)
> -	stmfd	sp!, {lr}	@ save registers on stack
> -	ldr	r3, sdrc_scratchpad_sem
> -	mov	r2,#0
> -	str	r2,[r3]
> -	ldmfd	sp!, {pc}	@ restore regs and return
> -ENTRY(unlock_scratchpad_sem_sz)
> -        .word   . - unlock_scratchpad_sem
> +
> +/*
> + * API functions
> + */
>
>  	.text
>  /* Function call to get the restore pointer for resume from OFF */
> @@ -178,8 +148,7 @@ ENTRY(es3_sdrc_fix_sz)
>  /* Function to call rom code to save secure ram context */
>  ENTRY(save_secure_ram_context)
>  	stmfd	sp!, {r1-r12, lr}	@ save registers on stack
> -save_secure_ram_debug:
> -	/* b save_secure_ram_debug */	@ enable to debug save code
> +
>  	adr	r3, api_params		@ r3 points to parameters
>  	str	r0, [r3,#0x4]		@ r0 has sdram address
>  	ldr	r12, high_mask
> @@ -219,8 +188,7 @@ ENTRY(save_secure_ram_context_sz)
>   */
>  ENTRY(omap34xx_cpu_suspend)
>  	stmfd	sp!, {r0-r12, lr}		@ save registers on stack
> -loop:
> -	/*b	loop*/	@Enable to debug by stepping through code
> +
>  	/* r0 contains restore pointer in sdram */
>  	/* r1 contains information about saving context */
>  	ldr     r4, sdrc_power          @ read the SDRC_POWER register
> @@ -252,7 +220,6 @@ loop:
>
>  	ldmfd	sp!, {r0-r12, pc}		@ restore regs and return
>  restore_es3:
> -	/*b restore_es3*/		@ Enable to debug restore code
>  	ldr	r5, pm_prepwstst_core_p
>  	ldr	r4, [r5]
>  	and	r4, r4, #0x3
> @@ -272,7 +239,6 @@ copy_to_sram:
>  	b	restore
>
>  restore_3630:
> -	/*b restore_es3630*/		@ Enable to debug restore code
>  	ldr	r1, pm_prepwstst_core_p
>  	ldr	r2, [r1]
>  	and	r2, r2, #0x3
> @@ -284,7 +250,6 @@ restore_3630:
>  	str	r2, [r1]
>  	/* Fall thru for the remaining logic */
>  restore:
> -	/* b restore*/  @ Enable to debug restore code
>          /* Check what was the reason for mpu reset and store the reason
> in r9*/
>          /* 1 - Only L1 and logic lost */
>          /* 2 - Only L2 lost - In this case, we wont be here */
> @@ -493,7 +458,6 @@ usettbr0:
>
>  	ldmfd	sp!, {r0-r12, pc}		@ restore regs and return
>  save_context_wfi:
> -	/*b	save_context_wfi*/	@ enable to debug save code
>  	mov	r8, r0 /* Store SDRAM address in r8 */
>  	mrc	p15, 0, r5, c1, c0, 1	@ Read Auxiliary Control Register
>  	mov	r4, #0x1		@ Number of parameters for restore
call
> @@ -672,12 +636,8 @@ sdrc_dlla_status:
>  	.word	SDRC_DLLA_STATUS_V
>  sdrc_dlla_ctrl:
>  	.word	SDRC_DLLA_CTRL_V
> -pm_prepwstst_core:
> -	.word	PM_PREPWSTST_CORE_V
>  pm_prepwstst_core_p:
>  	.word	PM_PREPWSTST_CORE_P
> -pm_prepwstst_mpu:
> -	.word	PM_PREPWSTST_MPU_V
>  pm_pwstctrl_mpu:
>  	.word	PM_PWSTCTRL_MPU_P
>  scratchpad_base:
> @@ -686,12 +646,6 @@ sram_base:
>  	.word	SRAM_BASE_P + 0x8000
>  sdrc_power:
>  	.word SDRC_POWER_V
> -clk_stabilize_delay:
> -	.word 0x000001FF
> -assoc_mask:
> -	.word	0x3ff
> -numset_mask:
> -	.word	0x7fff
>  ttbrbit_mask:
>  	.word	0xFFFFC000
>  table_index_mask:
> --
> 1.7.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: santosh.shilimkar@ti.com (Santosh Shilimkar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/7] OMAP3: remove unused code from the ASM sleep code
Date: Fri, 17 Dec 2010 16:06:18 +0530	[thread overview]
Message-ID: <b2ac8ad467272d73b6884d42d4c7db1b@mail.gmail.com> (raw)
In-Reply-To: <1292580506-4421-2-git-send-email-j-pihet@ti.com>

> -----Original Message-----
> From: linux-omap-owner at vger.kernel.org [mailto:linux-omap-
> owner at vger.kernel.org] On Behalf Of jean.pihet at newoldbits.com
> Sent: Friday, December 17, 2010 3:38 PM
> To: linux-omap at vger.kernel.org
> Cc: khilman at deeprootsystems.com; linux-arm-kernel at lists.infradead.org;
> Jean Pihet
> Subject: [PATCH 1/7] OMAP3: remove unused code from the ASM sleep code
>
> From: Jean Pihet <j-pihet@ti.com>
>
> Remove unused code:
> - macros,
> - variables,
> - unused semaphore locking API. This API shall be added back
>   when needed,
> - infinite loops for debug.
>
> Tested on N900 and Beagleboard with full RET and OFF modes,
> using cpuidle and suspend.
>
> Signed-off-by: Jean Pihet <j-pihet@ti.com>

Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>

> ---
>  arch/arm/mach-omap2/pm.h        |    1 -
>  arch/arm/mach-omap2/sleep34xx.S |   58
++++------------------------------
> -----
>  2 files changed, 6 insertions(+), 53 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
> index aff39d0..e458b2a 100644
> --- a/arch/arm/mach-omap2/pm.h
> +++ b/arch/arm/mach-omap2/pm.h
> @@ -80,7 +80,6 @@ extern void save_secure_ram_context(u32 *addr);
>  extern void omap3_save_scratchpad_contents(void);
>
>  extern unsigned int omap24xx_idle_loop_suspend_sz;
> -extern unsigned int omap34xx_suspend_sz;
>  extern unsigned int save_secure_ram_context_sz;
>  extern unsigned int omap24xx_cpu_suspend_sz;
>  extern unsigned int omap34xx_cpu_suspend_sz;
> diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-
> omap2/sleep34xx.S
> index d2eda01..2191576 100644
> --- a/arch/arm/mach-omap2/sleep34xx.S
> +++ b/arch/arm/mach-omap2/sleep34xx.S
> @@ -35,11 +35,7 @@
>
>  #define SDRC_SCRATCHPAD_SEM_V	0xfa00291c
>
> -#define PM_PREPWSTST_CORE_V	OMAP34XX_PRM_REGADDR(CORE_MOD, \
> -				OMAP3430_PM_PREPWSTST)
>  #define PM_PREPWSTST_CORE_P	0x48306AE8
> -#define PM_PREPWSTST_MPU_V	OMAP34XX_PRM_REGADDR(MPU_MOD, \
> -				OMAP3430_PM_PREPWSTST)
>  #define PM_PWSTCTRL_MPU_P	OMAP3430_PRM_BASE + MPU_MOD +
> OMAP2_PM_PWSTCTRL
>  #define CM_IDLEST1_CORE_V	OMAP34XX_CM_REGADDR(CORE_MOD, CM_IDLEST1)
>  #define CM_IDLEST_CKGEN_V	OMAP34XX_CM_REGADDR(PLL_MOD, CM_IDLEST)
> @@ -62,36 +58,10 @@
>  #define SDRC_DLLA_STATUS_V	OMAP34XX_SDRC_REGADDR(SDRC_DLLA_STATUS)
>  #define SDRC_DLLA_CTRL_V	OMAP34XX_SDRC_REGADDR(SDRC_DLLA_CTRL)
>
> -        .text
> -/* Function to acquire the semaphore in scratchpad */
> -ENTRY(lock_scratchpad_sem)
> -	stmfd	sp!, {lr}	@ save registers on stack
> -wait_sem:
> -	mov	r0,#1
> -	ldr	r1, sdrc_scratchpad_sem
> -wait_loop:
> -	ldr	r2, [r1]	@ load the lock value
> -	cmp	r2, r0		@ is the lock free ?
> -	beq	wait_loop	@ not free...
> -	swp	r2, r0, [r1]	@ semaphore free so lock it and proceed
> -	cmp	r2, r0		@ did we succeed ?
> -	beq	wait_sem	@ no - try again
> -	ldmfd	sp!, {pc}	@ restore regs and return
> -sdrc_scratchpad_sem:
> -        .word SDRC_SCRATCHPAD_SEM_V
> -ENTRY(lock_scratchpad_sem_sz)
> -        .word   . - lock_scratchpad_sem
> -
> -        .text
> -/* Function to release the scratchpad semaphore */
> -ENTRY(unlock_scratchpad_sem)
> -	stmfd	sp!, {lr}	@ save registers on stack
> -	ldr	r3, sdrc_scratchpad_sem
> -	mov	r2,#0
> -	str	r2,[r3]
> -	ldmfd	sp!, {pc}	@ restore regs and return
> -ENTRY(unlock_scratchpad_sem_sz)
> -        .word   . - unlock_scratchpad_sem
> +
> +/*
> + * API functions
> + */
>
>  	.text
>  /* Function call to get the restore pointer for resume from OFF */
> @@ -178,8 +148,7 @@ ENTRY(es3_sdrc_fix_sz)
>  /* Function to call rom code to save secure ram context */
>  ENTRY(save_secure_ram_context)
>  	stmfd	sp!, {r1-r12, lr}	@ save registers on stack
> -save_secure_ram_debug:
> -	/* b save_secure_ram_debug */	@ enable to debug save code
> +
>  	adr	r3, api_params		@ r3 points to parameters
>  	str	r0, [r3,#0x4]		@ r0 has sdram address
>  	ldr	r12, high_mask
> @@ -219,8 +188,7 @@ ENTRY(save_secure_ram_context_sz)
>   */
>  ENTRY(omap34xx_cpu_suspend)
>  	stmfd	sp!, {r0-r12, lr}		@ save registers on stack
> -loop:
> -	/*b	loop*/	@Enable to debug by stepping through code
> +
>  	/* r0 contains restore pointer in sdram */
>  	/* r1 contains information about saving context */
>  	ldr     r4, sdrc_power          @ read the SDRC_POWER register
> @@ -252,7 +220,6 @@ loop:
>
>  	ldmfd	sp!, {r0-r12, pc}		@ restore regs and return
>  restore_es3:
> -	/*b restore_es3*/		@ Enable to debug restore code
>  	ldr	r5, pm_prepwstst_core_p
>  	ldr	r4, [r5]
>  	and	r4, r4, #0x3
> @@ -272,7 +239,6 @@ copy_to_sram:
>  	b	restore
>
>  restore_3630:
> -	/*b restore_es3630*/		@ Enable to debug restore code
>  	ldr	r1, pm_prepwstst_core_p
>  	ldr	r2, [r1]
>  	and	r2, r2, #0x3
> @@ -284,7 +250,6 @@ restore_3630:
>  	str	r2, [r1]
>  	/* Fall thru for the remaining logic */
>  restore:
> -	/* b restore*/  @ Enable to debug restore code
>          /* Check what was the reason for mpu reset and store the reason
> in r9*/
>          /* 1 - Only L1 and logic lost */
>          /* 2 - Only L2 lost - In this case, we wont be here */
> @@ -493,7 +458,6 @@ usettbr0:
>
>  	ldmfd	sp!, {r0-r12, pc}		@ restore regs and return
>  save_context_wfi:
> -	/*b	save_context_wfi*/	@ enable to debug save code
>  	mov	r8, r0 /* Store SDRAM address in r8 */
>  	mrc	p15, 0, r5, c1, c0, 1	@ Read Auxiliary Control Register
>  	mov	r4, #0x1		@ Number of parameters for restore
call
> @@ -672,12 +636,8 @@ sdrc_dlla_status:
>  	.word	SDRC_DLLA_STATUS_V
>  sdrc_dlla_ctrl:
>  	.word	SDRC_DLLA_CTRL_V
> -pm_prepwstst_core:
> -	.word	PM_PREPWSTST_CORE_V
>  pm_prepwstst_core_p:
>  	.word	PM_PREPWSTST_CORE_P
> -pm_prepwstst_mpu:
> -	.word	PM_PREPWSTST_MPU_V
>  pm_pwstctrl_mpu:
>  	.word	PM_PWSTCTRL_MPU_P
>  scratchpad_base:
> @@ -686,12 +646,6 @@ sram_base:
>  	.word	SRAM_BASE_P + 0x8000
>  sdrc_power:
>  	.word SDRC_POWER_V
> -clk_stabilize_delay:
> -	.word 0x000001FF
> -assoc_mask:
> -	.word	0x3ff
> -numset_mask:
> -	.word	0x7fff
>  ttbrbit_mask:
>  	.word	0xFFFFC000
>  table_index_mask:
> --
> 1.7.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2010-12-17 10:36 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-17 10:08 [PATCH 0/7 v5] OMAP3: clean up ASM sleep code jean.pihet
2010-12-17 10:08 ` jean.pihet at newoldbits.com
2010-12-17 10:08 ` [PATCH 1/7] OMAP3: remove unused code from the " jean.pihet
2010-12-17 10:08   ` jean.pihet at newoldbits.com
2010-12-17 10:36   ` Santosh Shilimkar [this message]
2010-12-17 10:36     ` Santosh Shilimkar
2010-12-17 13:18   ` Nishanth Menon
2010-12-17 13:18     ` Nishanth Menon
2010-12-17 10:08 ` [PATCH 2/7] OMAP2+: use global values for the SRAM PA addresses jean.pihet
2010-12-17 10:08   ` jean.pihet at newoldbits.com
2010-12-17 10:36   ` Santosh Shilimkar
2010-12-17 10:36     ` Santosh Shilimkar
2010-12-17 13:34   ` Nishanth Menon
2010-12-17 13:34     ` Nishanth Menon
2010-12-17 14:59     ` Jean Pihet
2010-12-17 14:59       ` Jean Pihet
2010-12-17 15:00       ` Nishanth Menon
2010-12-17 15:00         ` Nishanth Menon
2010-12-17 10:08 ` [PATCH 3/7] OMAP3: remove hardcoded values from the ASM sleep code jean.pihet
2010-12-17 10:08   ` jean.pihet at newoldbits.com
2010-12-17 10:36   ` Santosh Shilimkar
2010-12-17 10:36     ` Santosh Shilimkar
2010-12-17 13:51   ` Nishanth Menon
2010-12-17 13:51     ` Nishanth Menon
2010-12-17 10:08 ` [PATCH 4/7] OMAP3: re-organize " jean.pihet
2010-12-17 10:08   ` jean.pihet at newoldbits.com
2010-12-17 10:37   ` Santosh Shilimkar
2010-12-17 10:37     ` Santosh Shilimkar
2010-12-17 14:05   ` Nishanth Menon
2010-12-17 14:05     ` Nishanth Menon
2010-12-17 10:08 ` [PATCH 5/7] OMAP3: rework of the ASM sleep code execution paths jean.pihet
2010-12-17 10:08   ` jean.pihet at newoldbits.com
2010-12-17 10:37   ` Santosh Shilimkar
2010-12-17 10:37     ` Santosh Shilimkar
2010-12-17 15:35   ` Nishanth Menon
2010-12-17 15:35     ` Nishanth Menon
2010-12-18 15:54     ` Jean Pihet
2010-12-18 15:54       ` Jean Pihet
2010-12-17 10:08 ` [PATCH 6/7] OMAP3: add comments for low power code errata jean.pihet
2010-12-17 10:08   ` jean.pihet at newoldbits.com
2010-12-17 10:37   ` Santosh Shilimkar
2010-12-17 10:37     ` Santosh Shilimkar
2010-12-17 15:43   ` Nishanth Menon
2010-12-17 15:43     ` Nishanth Menon
2010-12-17 10:08 ` [PATCH 7/7] OMAP3: ASM sleep code format rework jean.pihet
2010-12-17 10:08   ` jean.pihet at newoldbits.com
2010-12-17 10:37   ` Santosh Shilimkar
2010-12-17 10:37     ` Santosh Shilimkar
2010-12-17 15:58   ` Nishanth Menon
2010-12-17 15:58     ` Nishanth Menon
2010-12-18 15:56     ` Jean Pihet
2010-12-18 15:56       ` Jean Pihet
2010-12-17 23:02 ` [PATCH 0/7 v5] OMAP3: clean up ASM sleep code Kevin Hilman
2010-12-17 23:02   ` Kevin Hilman
2010-12-17 23:07   ` Jean Pihet
2010-12-17 23:07     ` Jean Pihet
2010-12-17 23:22     ` Nishanth Menon
2010-12-17 23:22       ` Nishanth Menon
2010-12-18 15:51       ` Jean Pihet
2010-12-18 15:51         ` Jean Pihet
  -- strict thread matches above, loose matches on Subject: below --
2010-12-18 15:44 [PATCH 0/7 v6] " jean.pihet
2010-12-18 15:44 ` [PATCH 1/7] OMAP3: remove unused code from the " jean.pihet
2010-12-18 15:44   ` jean.pihet at newoldbits.com
2010-12-16 17:50 [PATCH 0/7 v4] OMAP3: clean up " jean.pihet
2010-12-16 17:50 ` [PATCH 1/7] OMAP3: remove unused code from the " jean.pihet
2010-12-16 17:50   ` jean.pihet at newoldbits.com

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=b2ac8ad467272d73b6884d42d4c7db1b@mail.gmail.com \
    --to=santosh.shilimkar@ti.com \
    --cc=j-pihet@ti.com \
    --cc=jean.pihet@newoldbits.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.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.