Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1229807 > unrolled thread

Re: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram

Started byScott Wood <scottwood@freescale.com>
First post2015-09-22 00:50 +0200
Last post2015-09-25 07:50 +0200
Articles 6 — 2 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram Scott Wood <scottwood@freescale.com> - 2015-09-22 00:50 +0200
    RE: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram Zhao Qiang <qiang.zhao@freescale.com> - 2015-09-22 10:20 +0200
      RE: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram Zhao Qiang <qiang.zhao@freescale.com> - 2015-09-23 04:30 +0200
        RE: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram Zhao Qiang <qiang.zhao@freescale.com> - 2015-09-23 07:30 +0200
          RE: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram Zhao Qiang <qiang.zhao@freescale.com> - 2015-09-25 05:00 +0200
            RE: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram Zhao Qiang <qiang.zhao@freescale.com> - 2015-09-25 07:50 +0200

#1229807 — Re: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram

FromScott Wood <scottwood@freescale.com>
Date2015-09-22 00:50 +0200
SubjectRe: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram
Message-ID<qbi4i-3BS-3@gated-at.bofh.it>
On Fri, Sep 18, 2015 at 03:15:19PM +0800, Zhao Qiang wrote:
> Use genalloc to manage CPM/QE muram instead of rheap.
> 
> Signed-off-by: Zhao Qiang <qiang.zhao@freescale.com>
> ---
> Changes for v9:
> 	- splitted from patch 3/5, modify cpm muram management functions.
> Changes for v10:
> 	- modify cpm muram first, then move to qe_common
> 	- modify commit.
> 
>  arch/powerpc/platforms/Kconfig   |   1 +
>  arch/powerpc/sysdev/cpm_common.c | 150 +++++++++++++++++++++++++++------------
>  2 files changed, 107 insertions(+), 44 deletions(-)
> 
> diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
> index b7f9c40..01f98a2 100644
> --- a/arch/powerpc/platforms/Kconfig
> +++ b/arch/powerpc/platforms/Kconfig
> @@ -276,6 +276,7 @@ config QUICC_ENGINE
>  	bool "Freescale QUICC Engine (QE) Support"
>  	depends on FSL_SOC && PPC32
>  	select PPC_LIB_RHEAP
> +	select GENERIC_ALLOCATOR
>  	select CRC32
>  	help
>  	  The QUICC Engine (QE) is a new generation of communications
> diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c
> index 4f78695..453d18c 100644
> --- a/arch/powerpc/sysdev/cpm_common.c
> +++ b/arch/powerpc/sysdev/cpm_common.c
> @@ -17,6 +17,7 @@
>   * published by the Free Software Foundation.
>   */
>  
> +#include <linux/genalloc.h>
>  #include <linux/init.h>
>  #include <linux/of_device.h>
>  #include <linux/spinlock.h>
> @@ -27,7 +28,6 @@
>  
>  #include <asm/udbg.h>
>  #include <asm/io.h>
> -#include <asm/rheap.h>
>  #include <asm/cpm.h>
>  
>  #include <mm/mmu_decl.h>
> @@ -65,14 +65,24 @@ void __init udbg_init_cpm(void)
>  }
>  #endif
>  
> +static struct gen_pool *muram_pool;
> +static struct genpool_data_align muram_pool_data;
> +static struct genpool_data_fixed muram_pool_data_fixed;

Why are these global?  If you keep the data local to the caller (and use
gen_pool_alloc_data()) then you probably don't need cpm_muram_lock.

>  static spinlock_t cpm_muram_lock;
> -static rh_block_t cpm_boot_muram_rh_block[16];
> -static rh_info_t cpm_muram_info;
>  static u8 __iomem *muram_vbase;
>  static phys_addr_t muram_pbase;
>  
> -/* Max address size we deal with */
> +struct muram_block {
> +	struct list_head head;
> +	unsigned long start;
> +	int size;
> +};
> +
> +static LIST_HEAD(muram_block_list);
> +
> +/* max address size we deal with */
>  #define OF_MAX_ADDR_CELLS	4
> +#define GENPOOL_OFFSET		4096

Is 4096 bytes the maximum alignment you'll ever need?  Wouldn't it be
safer to use a much larger offset?

>  int cpm_muram_init(void)
>  {
> @@ -86,113 +96,165 @@ int cpm_muram_init(void)
>  	if (muram_pbase)
>  		return 0;
>  
> -	spin_lock_init(&cpm_muram_lock);

Why are you eliminating the lock init, given that you're not getting rid
of the lock?

> -	/* initialize the info header */
> -	rh_init(&cpm_muram_info, 1,
> -	        sizeof(cpm_boot_muram_rh_block) /
> -	        sizeof(cpm_boot_muram_rh_block[0]),
> -	        cpm_boot_muram_rh_block);
> -
>  	np = of_find_compatible_node(NULL, NULL, "fsl,cpm-muram-data");
>  	if (!np) {
>  		/* try legacy bindings */
>  		np = of_find_node_by_name(NULL, "data-only");
>  		if (!np) {
> -			printk(KERN_ERR "Cannot find CPM muram data node");
> +			pr_err("Cannot find CPM muram data node");
>  			ret = -ENODEV;
>  			goto out;
>  		}
>  	}
>  
> +	muram_pool = gen_pool_create(1, -1);

Do we really need byte-granularity?

>  	muram_pbase = of_translate_address(np, zero);
>  	if (muram_pbase == (phys_addr_t)OF_BAD_ADDR) {
> -		printk(KERN_ERR "Cannot translate zero through CPM muram node");
> +		pr_err("Cannot translate zero through CPM muram node");
>  		ret = -ENODEV;
> -		goto out;
> +		goto err;
>  	}
>  
>  	while (of_address_to_resource(np, i++, &r) == 0) {
>  		if (r.end > max)
>  			max = r.end;
> +		ret = gen_pool_add(muram_pool, r.start - muram_pbase +
> +				   GENPOOL_OFFSET, resource_size(&r), -1);
> +		if (ret) {
> +				pr_err("QE: couldn't add muram to pool!\n");
> +				goto err;
> +			}
>  
> -		rh_attach_region(&cpm_muram_info, r.start - muram_pbase,
> -				 resource_size(&r));
>  	}
>  
>  	muram_vbase = ioremap(muram_pbase, max - muram_pbase + 1);
>  	if (!muram_vbase) {
> -		printk(KERN_ERR "Cannot map CPM muram");
> +		pr_err("Cannot map QE muram");
>  		ret = -ENOMEM;
> +		goto err;
>  	}
> -
> +	goto out;
> +err:
> +	gen_pool_destroy(muram_pool);
>  out:
>  	of_node_put(np);
>  	return ret;

Having both "err" and "out" is confusing.  Instead call it "out_pool" or
similar.

>  }
>  
> -/**
> +/*
>   * cpm_muram_alloc - allocate the requested size worth of multi-user ram
>   * @size: number of bytes to allocate
>   * @align: requested alignment, in bytes
>   *
>   * This function returns an offset into the muram area.
> - * Use cpm_dpram_addr() to get the virtual address of the area.
> - * Use cpm_muram_free() to free the allocation.

Why did you remove the comments about how to get a virtual address and
free the allocation?

>   */
>  unsigned long cpm_muram_alloc(unsigned long size, unsigned long align)
>  {
>  	unsigned long start;
>  	unsigned long flags;
> +	struct muram_block *entry;
>  
>  	spin_lock_irqsave(&cpm_muram_lock, flags);
> -	cpm_muram_info.alignment = align;
> -	start = rh_alloc(&cpm_muram_info, size, "commproc");
> +	muram_pool_data.align = align;
> +	gen_pool_set_algo(muram_pool, gen_pool_first_fit_align,
> +			  &muram_pool_data);
> +	start = gen_pool_alloc(muram_pool, size);

Why did you add gen_pool_alloc_data() if you're not going to use it?

>  EXPORT_SYMBOL(cpm_muram_alloc);
>  
> -/**
> - * cpm_muram_free - free a chunk of multi-user ram
> - * @offset: The beginning of the chunk as returned by cpm_muram_alloc().
> +/*
> + * cpm_muram_alloc_fixed - reserve a specific region of multi-user ram
> + * @size: number of bytes to allocate
> + * @offset: offset of allocation start address
> + *
> + * This function returns an offset into the muram area.
>   */
> -int cpm_muram_free(unsigned long offset)
> +unsigned long cpm_muram_alloc_fixed(unsigned long offset, unsigned long size)

Why did you reorder these functions, making the diff harder to read?

>  {
> -	int ret;
> +
> +	unsigned long start;
>  	unsigned long flags;
> +	unsigned long size_alloc = size;
> +	struct muram_block *entry;
> +	int end_bit;
> +	int order = muram_pool->min_alloc_order;
>  
>  	spin_lock_irqsave(&cpm_muram_lock, flags);
> -	ret = rh_free(&cpm_muram_info, offset);
> +	end_bit = (offset >> order) + ((size + (1UL << order) - 1) >> order);
> +	if ((offset + size) > (end_bit << order))
> +		size_alloc = size + (1UL << order);

Why do you need to do all these calculations here?

> +	muram_pool_data_fixed.offset = offset + GENPOOL_OFFSET;
> +	gen_pool_set_algo(muram_pool, gen_pool_fixed_alloc,
> +			  &muram_pool_data_fixed);
> +	start = gen_pool_alloc(muram_pool, size_alloc);
> +	if (!start)
> +		goto out2;
> +	start = start - GENPOOL_OFFSET;
> +	memset(cpm_muram_addr(start), 0, size_alloc);
> +	entry = kmalloc(sizeof(*entry), GFP_KERNEL);
> +	if (!entry)
> +		goto out1;
> +	entry->start = start;
> +	entry->size = size_alloc;
> +	list_add(&entry->head, &muram_block_list);
>  	spin_unlock_irqrestore(&cpm_muram_lock, flags);

Please factor out the common alloc code.

-Scott
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1229972

FromZhao Qiang <qiang.zhao@freescale.com>
Date2015-09-22 10:20 +0200
Message-ID<qbqXV-89s-29@gated-at.bofh.it>
In reply to#1229807
On Tue, Sep 22, 2015 at 06:47 AM +0800, Wood Scott-B07421 wrote:
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Tuesday, September 22, 2015 6:47 AM
> To: Zhao Qiang-B45475
> Cc: linux-kernel@vger.kernel.org; linuxppc-dev@lists.ozlabs.org;
> lauraa@codeaurora.org; Xie Xiaobo-R63061; benh@kernel.crashing.org; Li
> Yang-Leo-R58472; paulus@samba.org
> Subject: Re: [PATCH v10 3/5] CPM/QE: use genalloc to manage CPM/QE muram
> 
> On Fri, Sep 18, 2015 at 03:15:19PM +0800, Zhao Qiang wrote:
> > Use genalloc to manage CPM/QE muram instead of rheap.
> >
> > Signed-off-by: Zhao Qiang <qiang.zhao@freescale.com>
> > ---
> > Changes for v9:
> > 	- splitted from patch 3/5, modify cpm muram management functions.
> > Changes for v10:
> > 	- modify cpm muram first, then move to qe_common
> > 	- modify commit.
> >
> >  arch/powerpc/platforms/Kconfig   |   1 +
> >  arch/powerpc/sysdev/cpm_common.c | 150
> > +++++++++++++++++++++++++++------------
> >  2 files changed, 107 insertions(+), 44 deletions(-)
> >
> > diff --git a/arch/powerpc/platforms/Kconfig
> > b/arch/powerpc/platforms/Kconfig index b7f9c40..01f98a2 100644
> > --- a/arch/powerpc/platforms/Kconfig
> > +++ b/arch/powerpc/platforms/Kconfig
> > @@ -276,6 +276,7 @@ config QUICC_ENGINE
> >  	bool "Freescale QUICC Engine (QE) Support"
> >  	depends on FSL_SOC && PPC32
> >  	select PPC_LIB_RHEAP
> > +	select GENERIC_ALLOCATOR
> >  	select CRC32
> >  	help
> >  	  The QUICC Engine (QE) is a new generation of communications diff
> > --git a/arch/powerpc/sysdev/cpm_common.c
> > b/arch/powerpc/sysdev/cpm_common.c
> > index 4f78695..453d18c 100644
> > --- a/arch/powerpc/sysdev/cpm_common.c
> > +++ b/arch/powerpc/sysdev/cpm_common.c
> > @@ -17,6 +17,7 @@
> >   * published by the Free Software Foundation.
> >   */
> >
> > +#include <linux/genalloc.h>
> >  #include <linux/init.h>
> >  #include <linux/of_device.h>
> >  #include <linux/spinlock.h>
> > @@ -27,7 +28,6 @@
> >
> >  #include <asm/udbg.h>
> >  #include <asm/io.h>
> > -#include <asm/rheap.h>
> >  #include <asm/cpm.h>
> >
> >  #include <mm/mmu_decl.h>
> > @@ -65,14 +65,24 @@ void __init udbg_init_cpm(void)  }  #endif
> >
> > +static struct gen_pool *muram_pool;
> > +static struct genpool_data_align muram_pool_data; static struct
> > +genpool_data_fixed muram_pool_data_fixed;
> 
> Why are these global?  If you keep the data local to the caller (and use
> gen_pool_alloc_data()) then you probably don't need cpm_muram_lock.

Ok

> 
> >  static spinlock_t cpm_muram_lock;
> > -static rh_block_t cpm_boot_muram_rh_block[16]; -static rh_info_t
> > cpm_muram_info;  static u8 __iomem *muram_vbase;  static phys_addr_t
> > muram_pbase;
> >
> > -/* Max address size we deal with */
> > +struct muram_block {
> > +	struct list_head head;
> > +	unsigned long start;
> > +	int size;
> > +};
> > +
> > +static LIST_HEAD(muram_block_list);
> > +
> > +/* max address size we deal with */
> >  #define OF_MAX_ADDR_CELLS	4
> > +#define GENPOOL_OFFSET		4096
> 
> Is 4096 bytes the maximum alignment you'll ever need?  Wouldn't it be
> safer to use a much larger offset?

Yes, 4096 is the maximum alignment I ever need. 

> 
> >  int cpm_muram_init(void)
> >  {
> > @@ -86,113 +96,165 @@ int cpm_muram_init(void)
> >  	if (muram_pbase)
> >  		return 0;
> >
> > -	spin_lock_init(&cpm_muram_lock);
> 
> Why are you eliminating the lock init, given that you're not getting rid
> of the lock?
> 
> > -	/* initialize the info header */
> > -	rh_init(&cpm_muram_info, 1,
> > -	        sizeof(cpm_boot_muram_rh_block) /
> > -	        sizeof(cpm_boot_muram_rh_block[0]),
> > -	        cpm_boot_muram_rh_block);
> > -
> >  	np = of_find_compatible_node(NULL, NULL, "fsl,cpm-muram-data");
> >  	if (!np) {
> >  		/* try legacy bindings */
> >  		np = of_find_node_by_name(NULL, "data-only");
> >  		if (!np) {
> > -			printk(KERN_ERR "Cannot find CPM muram data node");
> > +			pr_err("Cannot find CPM muram data node");
> >  			ret = -ENODEV;
> >  			goto out;
> >  		}
> >  	}
> >
> > +	muram_pool = gen_pool_create(1, -1);
> 
> Do we really need byte-granularity?

It is 2byte-granularity, 4byte-granularity is needed 

> 
> >  	muram_pbase = of_translate_address(np, zero);
> >  	if (muram_pbase == (phys_addr_t)OF_BAD_ADDR) {
> > -		printk(KERN_ERR "Cannot translate zero through CPM muram
> node");
> > +		pr_err("Cannot translate zero through CPM muram node");
> >  		ret = -ENODEV;
> > -		goto out;
> > +		goto err;
> >  	}
> >
> >  	while (of_address_to_resource(np, i++, &r) == 0) {
> >  		if (r.end > max)
> >  			max = r.end;
> > +		ret = gen_pool_add(muram_pool, r.start - muram_pbase +
> > +				   GENPOOL_OFFSET, resource_size(&r), -1);
> > +		if (ret) {
> > +				pr_err("QE: couldn't add muram to pool!\n");
> > +				goto err;
> > +			}
> >
> > -		rh_attach_region(&cpm_muram_info, r.start - muram_pbase,
> > -				 resource_size(&r));
> >  	}
> >
> >  	muram_vbase = ioremap(muram_pbase, max - muram_pbase + 1);
> >  	if (!muram_vbase) {
> > -		printk(KERN_ERR "Cannot map CPM muram");
> > +		pr_err("Cannot map QE muram");
> >  		ret = -ENOMEM;
> > +		goto err;
> >  	}
> > -
> > +	goto out;
> > +err:
> > +	gen_pool_destroy(muram_pool);
> >  out:
> >  	of_node_put(np);
> >  	return ret;
> 
> Having both "err" and "out" is confusing.  Instead call it "out_pool" or
> similar.

Ok

> >  {
> > -	int ret;
> > +
> > +	unsigned long start;
> >  	unsigned long flags;
> > +	unsigned long size_alloc = size;
> > +	struct muram_block *entry;
> > +	int end_bit;
> > +	int order = muram_pool->min_alloc_order;
> >
> >  	spin_lock_irqsave(&cpm_muram_lock, flags);
> > -	ret = rh_free(&cpm_muram_info, offset);
> > +	end_bit = (offset >> order) + ((size + (1UL << order) - 1) >>
> order);
> > +	if ((offset + size) > (end_bit << order))
> > +		size_alloc = size + (1UL << order);
> 
> Why do you need to do all these calculations here?

So do it in gen_pool_fixed_alloc? gen_pool_fixed_alloc just 
Can see numbers of blocks. It can't do calculations in gen_pool_fixed_alloc.

> 
> > +	muram_pool_data_fixed.offset = offset + GENPOOL_OFFSET;
> > +	gen_pool_set_algo(muram_pool, gen_pool_fixed_alloc,
> > +			  &muram_pool_data_fixed);
> > +	start = gen_pool_alloc(muram_pool, size_alloc);
> > +	if (!start)
> > +		goto out2;
> > +	start = start - GENPOOL_OFFSET;
> > +	memset(cpm_muram_addr(start), 0, size_alloc);
> > +	entry = kmalloc(sizeof(*entry), GFP_KERNEL);
> > +	if (!entry)
> > +		goto out1;
> > +	entry->start = start;
> > +	entry->size = size_alloc;
> > +	list_add(&entry->head, &muram_block_list);
> >  	spin_unlock_irqrestore(&cpm_muram_lock, flags);
> 
> Please factor out the common alloc code.

The common code is as below, what's the function name of this common code, cpm_muram_alloc_common?
        gen_pool_set_algo(muram_pool, gen_pool_fixed_alloc,
                          &muram_pool_data_fixed);
        start = gen_pool_alloc(muram_pool, size_alloc);
        if (!start)
                goto out2;
        start = start - GENPOOL_OFFSET;
        memset(cpm_muram_addr(start), 0, size_alloc);
        entry = kmalloc(sizeof(*entry), GFP_KERNEL);
        if (!entry)
                goto out1;
        entry->start = start;
        entry->size = size_alloc;
        list_add(&entry->head, &muram_block_list);
        spin_unlock_irqrestore(&cpm_muram_lock, flags);

        return start;
out1:
        gen_pool_free(muram_pool, start, size_alloc);
out2:
        spin_unlock_irqrestore(&cpm_muram_lock, flags);
        return (unsigned long) -ENOMEM;

-Zhao
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1231109

FromZhao Qiang <qiang.zhao@freescale.com>
Date2015-09-23 04:30 +0200
Message-ID<qbHYJ-7nP-1@gated-at.bofh.it>
In reply to#1229972
T24gV2VuLCBTZXAgMjMsIDIwMTUgYXQgODoxOSBBTSArMDgwMCwgV29vZCBTY290dC1CMDc0MjEg
d3JvdGU6DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290
dC1CMDc0MjENCj4gU2VudDogV2VkbmVzZGF5LCBTZXB0ZW1iZXIgMjMsIDIwMTUgODoxOSBBTQ0K
PiBUbzogWmhhbyBRaWFuZy1CNDU0NzUNCj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v
cmc7IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOw0KPiBsYXVyYWFAY29kZWF1cm9yYS5v
cmc7IFhpZSBYaWFvYm8tUjYzMDYxOyBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc7IExpDQo+IFlh
bmctTGVvLVI1ODQ3MjsgcGF1bHVzQHNhbWJhLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYx
MCAzLzVdIENQTS9RRTogdXNlIGdlbmFsbG9jIHRvIG1hbmFnZSBDUE0vUUUgbXVyYW0NCj4gDQo+
IE9uIFR1ZSwgMjAxNS0wOS0yMiBhdCAwMzoxMCAtMDUwMCwgWmhhbyBRaWFuZy1CNDU0NzUgd3Jv
dGU6DQo+ID4gT24gVHVlLCBTZXAgMjIsIDIwMTUgYXQgMDY6NDcgQU0gKzA4MDAsIFdvb2QgU2Nv
dHQtQjA3NDIxIHdyb3RlOg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+
IEZyb206IFdvb2QgU2NvdHQtQjA3NDIxDQo+ID4gPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1iZXIg
MjIsIDIwMTUgNjo0NyBBTQ0KPiA+ID4gVG86IFpoYW8gUWlhbmctQjQ1NDc1DQo+ID4gPiBDYzog
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5v
cmc7DQo+ID4gPiBsYXVyYWFAY29kZWF1cm9yYS5vcmc7IFhpZSBYaWFvYm8tUjYzMDYxOyBiZW5o
QGtlcm5lbC5jcmFzaGluZy5vcmc7DQo+ID4gPiBMaSBZYW5nLUxlby1SNTg0NzI7IHBhdWx1c0Bz
YW1iYS5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEwIDMvNV0gQ1BNL1FFOiB1c2Ug
Z2VuYWxsb2MgdG8gbWFuYWdlIENQTS9RRQ0KPiA+ID4gbXVyYW0NCj4gPiA+DQo+ID4gPiBPbiBG
cmksIFNlcCAxOCwgMjAxNSBhdCAwMzoxNToxOVBNICswODAwLCBaaGFvIFFpYW5nIHdyb3RlOg0K
PiA+ID4gPiBVc2UgZ2VuYWxsb2MgdG8gbWFuYWdlIENQTS9RRSBtdXJhbSBpbnN0ZWFkIG9mIHJo
ZWFwLg0KPiA+ID4gPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBaaGFvIFFpYW5nIDxxaWFuZy56
aGFvQGZyZWVzY2FsZS5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4gPiBDaGFuZ2VzIGZvciB2OToN
Cj4gPiA+ID4gICAtIHNwbGl0dGVkIGZyb20gcGF0Y2ggMy81LCBtb2RpZnkgY3BtIG11cmFtIG1h
bmFnZW1lbnQgZnVuY3Rpb25zLg0KPiA+ID4gPiBDaGFuZ2VzIGZvciB2MTA6DQo+ID4gPiA+ICAg
LSBtb2RpZnkgY3BtIG11cmFtIGZpcnN0LCB0aGVuIG1vdmUgdG8gcWVfY29tbW9uDQo+ID4gPiA+
ICAgLSBtb2RpZnkgY29tbWl0Lg0KPiA+ID4gPg0KPiA+ID4gPiAgYXJjaC9wb3dlcnBjL3BsYXRm
b3Jtcy9LY29uZmlnICAgfCAgIDEgKw0KPiA+ID4gPiAgYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1f
Y29tbW9uLmMgfCAxNTANCj4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t
LS0tLS0tDQo+ID4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCspLCA0NCBk
ZWxldGlvbnMoLSkNCj4gPiA+ID4NCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9w
bGF0Zm9ybXMvS2NvbmZpZw0KPiA+ID4gPiBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvS2NvbmZp
ZyBpbmRleCBiN2Y5YzQwLi4wMWY5OGEyIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9hcmNoL3Bvd2Vy
cGMvcGxhdGZvcm1zL0tjb25maWcNCj4gPiA+ID4gKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jt
cy9LY29uZmlnDQo+ID4gPiA+IEBAIC0yNzYsNiArMjc2LDcgQEAgY29uZmlnIFFVSUNDX0VOR0lO
RQ0KPiA+ID4gPiAgIGJvb2wgIkZyZWVzY2FsZSBRVUlDQyBFbmdpbmUgKFFFKSBTdXBwb3J0Ig0K
PiA+ID4gPiAgIGRlcGVuZHMgb24gRlNMX1NPQyAmJiBQUEMzMg0KPiA+ID4gPiAgIHNlbGVjdCBQ
UENfTElCX1JIRUFQDQo+ID4gPiA+ICsgc2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SDQo+ID4gPiA+
ICAgc2VsZWN0IENSQzMyDQo+ID4gPiA+ICAgaGVscA0KPiA+ID4gPiAgICAgVGhlIFFVSUNDIEVu
Z2luZSAoUUUpIGlzIGEgbmV3IGdlbmVyYXRpb24gb2YgY29tbXVuaWNhdGlvbnMNCj4gPiA+ID4g
ZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2NvbW1vbi5jDQo+ID4gPiA+IGIv
YXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fY29tbW9uLmMNCj4gPiA+ID4gaW5kZXggNGY3ODY5NS4u
NDUzZDE4YyAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fY29t
bW9uLmMNCj4gPiA+ID4gKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fY29tbW9uLmMNCj4g
PiA+ID4gQEAgLTE3LDYgKzE3LDcgQEANCj4gPiA+ID4gICAqIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KPiA+ID4gPiAgICovDQo+ID4gPiA+DQo+ID4gPiA+ICsj
aW5jbHVkZSA8bGludXgvZ2VuYWxsb2MuaD4NCj4gPiA+ID4gICNpbmNsdWRlIDxsaW51eC9pbml0
Lmg+DQo+ID4gPiA+ICAjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ID4gPiA+ICAjaW5j
bHVkZSA8bGludXgvc3BpbmxvY2suaD4NCj4gPiA+ID4gQEAgLTI3LDcgKzI4LDYgQEANCj4gPiA+
ID4NCj4gPiA+ID4gICNpbmNsdWRlIDxhc20vdWRiZy5oPg0KPiA+ID4gPiAgI2luY2x1ZGUgPGFz
bS9pby5oPg0KPiA+ID4gPiAtI2luY2x1ZGUgPGFzbS9yaGVhcC5oPg0KPiA+ID4gPiAgI2luY2x1
ZGUgPGFzbS9jcG0uaD4NCj4gPiA+ID4NCj4gPiA+ID4gICNpbmNsdWRlIDxtbS9tbXVfZGVjbC5o
Pg0KPiA+ID4gPiBAQCAtNjUsMTQgKzY1LDI0IEBAIHZvaWQgX19pbml0IHVkYmdfaW5pdF9jcG0o
dm9pZCkgIH0gICNlbmRpZg0KPiA+ID4gPg0KPiA+ID4gPiArc3RhdGljIHN0cnVjdCBnZW5fcG9v
bCAqbXVyYW1fcG9vbDsgc3RhdGljIHN0cnVjdA0KPiA+ID4gPiArZ2VucG9vbF9kYXRhX2FsaWdu
IG11cmFtX3Bvb2xfZGF0YTsgc3RhdGljIHN0cnVjdA0KPiA+ID4gPiArZ2VucG9vbF9kYXRhX2Zp
eGVkIG11cmFtX3Bvb2xfZGF0YV9maXhlZDsNCj4gPiA+DQo+ID4gPiBXaHkgYXJlIHRoZXNlIGds
b2JhbD8gIElmIHlvdSBrZWVwIHRoZSBkYXRhIGxvY2FsIHRvIHRoZSBjYWxsZXIgKGFuZA0KPiA+
ID4gdXNlDQo+ID4gPiBnZW5fcG9vbF9hbGxvY19kYXRhKCkpIHRoZW4geW91IHByb2JhYmx5IGRv
bid0IG5lZWQgY3BtX211cmFtX2xvY2suDQo+ID4NCj4gPiBPaw0KPiA+DQo+ID4gPg0KPiA+ID4g
PiAgc3RhdGljIHNwaW5sb2NrX3QgY3BtX211cmFtX2xvY2s7IC1zdGF0aWMgcmhfYmxvY2tfdA0K
PiA+ID4gPiBjcG1fYm9vdF9tdXJhbV9yaF9ibG9ja1sxNl07IC1zdGF0aWMgcmhfaW5mb190IGNw
bV9tdXJhbV9pbmZvOw0KPiA+ID4gPiBzdGF0aWMgdTggX19pb21lbSAqbXVyYW1fdmJhc2U7ICBz
dGF0aWMgcGh5c19hZGRyX3QgbXVyYW1fcGJhc2U7DQo+ID4gPiA+DQo+ID4gPiA+IC0vKiBNYXgg
YWRkcmVzcyBzaXplIHdlIGRlYWwgd2l0aCAqLw0KPiA+ID4gPiArc3RydWN0IG11cmFtX2Jsb2Nr
IHsNCj4gPiA+ID4gKyBzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7DQo+ID4gPiA+ICsgdW5zaWduZWQg
bG9uZyBzdGFydDsNCj4gPiA+ID4gKyBpbnQgc2l6ZTsNCj4gPiA+ID4gK307DQo+ID4gPiA+ICsN
Cj4gPiA+ID4gK3N0YXRpYyBMSVNUX0hFQUQobXVyYW1fYmxvY2tfbGlzdCk7DQo+ID4gPiA+ICsN
Cj4gPiA+ID4gKy8qIG1heCBhZGRyZXNzIHNpemUgd2UgZGVhbCB3aXRoICovDQo+ID4gPiA+ICAj
ZGVmaW5lIE9GX01BWF9BRERSX0NFTExTICAgICAgICA0DQo+ID4gPiA+ICsjZGVmaW5lIEdFTlBP
T0xfT0ZGU0VUICAgICAgICAgICA0MDk2DQo+ID4gPg0KPiA+ID4gSXMgNDA5NiBieXRlcyB0aGUg
bWF4aW11bSBhbGlnbm1lbnQgeW91J2xsIGV2ZXIgbmVlZD8gIFdvdWxkbid0IGl0DQo+ID4gPiBi
ZSBzYWZlciB0byB1c2UgYSBtdWNoIGxhcmdlciBvZmZzZXQ/DQo+ID4NCj4gPiBZZXMsIDQwOTYg
aXMgdGhlIG1heGltdW0gYWxpZ25tZW50IEkgZXZlciBuZWVkLg0KPiANCj4gU3RpbGwsIEknZCBi
ZSBtb3JlIGNvbWZvcnRhYmxlIHdpdGggYSBsYXJnZXIgb2Zmc2V0Lg0KDQpMYXJnZXIgb2Zmc2V0
IGlzIGdvb2QuDQoNCj4gDQo+IEJldHRlciB5ZXQgd291bGQgYmUgdXNpbmcgZ2VuX3Bvb2xfYWRk
X3ZpcnQoKSBhbmQgdXNpbmcgdmlydHVhbCBhZGRyZXNzZXMNCj4gZm9yIHRoZSBhbGxvY2F0aW9u
cywgc2ltaWxhciB0byBodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvNTA0MDAwLw0K
PiANCj4gPiA+ID4gaW50IGNwbV9tdXJhbV9pbml0KHZvaWQpDQo+ID4gPiA+ICB7DQo+ID4gPiA+
IEBAIC04NiwxMTMgKzk2LDE2NSBAQCBpbnQgY3BtX211cmFtX2luaXQodm9pZCkNCj4gPiA+ID4g
ICBpZiAobXVyYW1fcGJhc2UpDQo+ID4gPiA+ICAgICAgICAgICByZXR1cm4gMDsNCj4gPiA+ID4N
Cj4gPiA+ID4gLSBzcGluX2xvY2tfaW5pdCgmY3BtX211cmFtX2xvY2spOw0KPiA+ID4NCj4gPiA+
IFdoeSBhcmUgeW91IGVsaW1pbmF0aW5nIHRoZSBsb2NrIGluaXQsIGdpdmVuIHRoYXQgeW91J3Jl
IG5vdCBnZXR0aW5nDQo+ID4gPiByaWQgb2YgdGhlIGxvY2s/DQo+ID4gPg0KPiA+ID4gPiAtIC8q
IGluaXRpYWxpemUgdGhlIGluZm8gaGVhZGVyICovDQo+ID4gPiA+IC0gcmhfaW5pdCgmY3BtX211
cmFtX2luZm8sIDEsDQo+ID4gPiA+IC0gICAgICAgICBzaXplb2YoY3BtX2Jvb3RfbXVyYW1fcmhf
YmxvY2spIC8NCj4gPiA+ID4gLSAgICAgICAgIHNpemVvZihjcG1fYm9vdF9tdXJhbV9yaF9ibG9j
a1swXSksDQo+ID4gPiA+IC0gICAgICAgICBjcG1fYm9vdF9tdXJhbV9yaF9ibG9jayk7DQo+ID4g
PiA+IC0NCj4gPiA+ID4gICBucCA9IG9mX2ZpbmRfY29tcGF0aWJsZV9ub2RlKE5VTEwsIE5VTEws
ICJmc2wsY3BtLW11cmFtLWRhdGEiKTsNCj4gPiA+ID4gICBpZiAoIW5wKSB7DQo+ID4gPiA+ICAg
ICAgICAgICAvKiB0cnkgbGVnYWN5IGJpbmRpbmdzICovDQo+ID4gPiA+ICAgICAgICAgICBucCA9
IG9mX2ZpbmRfbm9kZV9ieV9uYW1lKE5VTEwsICJkYXRhLW9ubHkiKTsNCj4gPiA+ID4gICAgICAg
ICAgIGlmICghbnApIHsNCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgcHJpbnRrKEtFUk5fRVJS
ICJDYW5ub3QgZmluZCBDUE0gbXVyYW0gZGF0YQ0KPiBub2RlIik7DQo+ID4gPiA+ICsgICAgICAg
ICAgICAgICAgIHByX2VycigiQ2Fubm90IGZpbmQgQ1BNIG11cmFtIGRhdGEgbm9kZSIpOw0KPiA+
ID4gPiAgICAgICAgICAgICAgICAgICByZXQgPSAtRU5PREVWOw0KPiA+ID4gPiAgICAgICAgICAg
ICAgICAgICBnb3RvIG91dDsNCj4gPiA+ID4gICAgICAgICAgIH0NCj4gPiA+ID4gICB9DQo+ID4g
PiA+DQo+ID4gPiA+ICsgbXVyYW1fcG9vbCA9IGdlbl9wb29sX2NyZWF0ZSgxLCAtMSk7DQo+ID4g
Pg0KPiA+ID4gRG8gd2UgcmVhbGx5IG5lZWQgYnl0ZS1ncmFudWxhcml0eT8NCj4gPg0KPiA+IEl0
IGlzIDJieXRlLWdyYW51bGFyaXR5LCA0Ynl0ZS1ncmFudWxhcml0eSBpcyBuZWVkZWQNCj4gPg0K
PiA+ID4NCj4gPiA+ID4gICBtdXJhbV9wYmFzZSA9IG9mX3RyYW5zbGF0ZV9hZGRyZXNzKG5wLCB6
ZXJvKTsNCj4gPiA+ID4gICBpZiAobXVyYW1fcGJhc2UgPT0gKHBoeXNfYWRkcl90KU9GX0JBRF9B
RERSKSB7DQo+ID4gPiA+IC0gICAgICAgICBwcmludGsoS0VSTl9FUlIgIkNhbm5vdCB0cmFuc2xh
dGUgemVybyB0aHJvdWdoIENQTSBtdXJhbQ0KPiA+ID4gbm9kZSIpOw0KPiA+ID4gPiArICAgICAg
ICAgcHJfZXJyKCJDYW5ub3QgdHJhbnNsYXRlIHplcm8gdGhyb3VnaCBDUE0gbXVyYW0gbm9kZSIp
Ow0KPiA+ID4gPiAgICAgICAgICAgcmV0ID0gLUVOT0RFVjsNCj4gPiA+ID4gLSAgICAgICAgIGdv
dG8gb3V0Ow0KPiA+ID4gPiArICAgICAgICAgZ290byBlcnI7DQo+ID4gPiA+ICAgfQ0KPiA+ID4g
Pg0KPiA+ID4gPiAgIHdoaWxlIChvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG5wLCBpKyssICZyKSA9
PSAwKSB7DQo+ID4gPiA+ICAgICAgICAgICBpZiAoci5lbmQgPiBtYXgpDQo+ID4gPiA+ICAgICAg
ICAgICAgICAgICAgIG1heCA9IHIuZW5kOw0KPiA+ID4gPiArICAgICAgICAgcmV0ID0gZ2VuX3Bv
b2xfYWRkKG11cmFtX3Bvb2wsIHIuc3RhcnQgLSBtdXJhbV9wYmFzZSArDQo+ID4gPiA+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0VOUE9PTF9PRkZTRVQsIHJlc291cmNlX3NpemUoJnIp
LCAtMSk7DQo+ID4gPiA+ICsgICAgICAgICBpZiAocmV0KSB7DQo+ID4gPiA+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJfZXJyKCJRRTogY291bGRuJ3QgYWRkIG11cmFtIHRvDQo+IHBvb2wh
XG4iKTsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsNCj4gPiA+
ID4gKyAgICAgICAgICAgICAgICAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAtICAgICAgICAgcmhfYXR0
YWNoX3JlZ2lvbigmY3BtX211cmFtX2luZm8sIHIuc3RhcnQgLSBtdXJhbV9wYmFzZSwNCj4gPiA+
ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2Vfc2l6ZSgmcikpOw0KPiA+ID4g
PiAgIH0NCj4gPiA+ID4NCj4gPiA+ID4gICBtdXJhbV92YmFzZSA9IGlvcmVtYXAobXVyYW1fcGJh
c2UsIG1heCAtIG11cmFtX3BiYXNlICsgMSk7DQo+ID4gPiA+ICAgaWYgKCFtdXJhbV92YmFzZSkg
ew0KPiA+ID4gPiAtICAgICAgICAgcHJpbnRrKEtFUk5fRVJSICJDYW5ub3QgbWFwIENQTSBtdXJh
bSIpOw0KPiA+ID4gPiArICAgICAgICAgcHJfZXJyKCJDYW5ub3QgbWFwIFFFIG11cmFtIik7DQo+
ID4gPiA+ICAgICAgICAgICByZXQgPSAtRU5PTUVNOw0KPiA+ID4gPiArICAgICAgICAgZ290byBl
cnI7DQo+ID4gPiA+ICAgfQ0KPiA+ID4gPiAtDQo+ID4gPiA+ICsgZ290byBvdXQ7DQo+ID4gPiA+
ICtlcnI6DQo+ID4gPiA+ICsgZ2VuX3Bvb2xfZGVzdHJveShtdXJhbV9wb29sKTsNCj4gPiA+ID4g
IG91dDoNCj4gPiA+ID4gICBvZl9ub2RlX3B1dChucCk7DQo+ID4gPiA+ICAgcmV0dXJuIHJldDsN
Cj4gPiA+DQo+ID4gPiBIYXZpbmcgYm90aCAiZXJyIiBhbmQgIm91dCIgaXMgY29uZnVzaW5nLiAg
SW5zdGVhZCBjYWxsIGl0DQo+ID4gPiAib3V0X3Bvb2wiIG9yIHNpbWlsYXIuDQo+ID4NCj4gPiBP
aw0KPiA+DQo+ID4gPiA+ICB7DQo+ID4gPiA+IC0gaW50IHJldDsNCj4gPiA+ID4gKw0KPiA+ID4g
PiArIHVuc2lnbmVkIGxvbmcgc3RhcnQ7DQo+ID4gPiA+ICAgdW5zaWduZWQgbG9uZyBmbGFnczsN
Cj4gPiA+ID4gKyB1bnNpZ25lZCBsb25nIHNpemVfYWxsb2MgPSBzaXplOyBzdHJ1Y3QgbXVyYW1f
YmxvY2sgKmVudHJ5OyBpbnQNCj4gPiA+ID4gKyBlbmRfYml0OyBpbnQgb3JkZXIgPSBtdXJhbV9w
b29sLT5taW5fYWxsb2Nfb3JkZXI7DQo+ID4gPiA+DQo+ID4gPiA+ICAgc3Bpbl9sb2NrX2lycXNh
dmUoJmNwbV9tdXJhbV9sb2NrLCBmbGFncyk7DQo+ID4gPiA+IC0gcmV0ID0gcmhfZnJlZSgmY3Bt
X211cmFtX2luZm8sIG9mZnNldCk7DQo+ID4gPiA+ICsgZW5kX2JpdCA9IChvZmZzZXQgPj4gb3Jk
ZXIpICsgKChzaXplICsgKDFVTCA8PCBvcmRlcikgLSAxKSA+Pg0KPiA+ID4gb3JkZXIpOw0KPiA+
ID4gPiArIGlmICgob2Zmc2V0ICsgc2l6ZSkgPiAoZW5kX2JpdCA8PCBvcmRlcikpDQo+ID4gPiA+
ICsgICAgICAgICBzaXplX2FsbG9jID0gc2l6ZSArICgxVUwgPDwgb3JkZXIpOw0KPiA+ID4NCj4g
PiA+IFdoeSBkbyB5b3UgbmVlZCB0byBkbyBhbGwgdGhlc2UgY2FsY3VsYXRpb25zIGhlcmU/DQo+
ID4NCj4gPiBTbyBkbyBpdCBpbiBnZW5fcG9vbF9maXhlZF9hbGxvYz8NCj4gDQo+IENvdWxkIHlv
dSBleHBsYWluIHdoeSB0aGV5J3JlIG5lZWRlZCBhdCBhbGw/DQoNCldoeSBpdCBkb2VzIHRoZSBj
YWxjdWxhdGlvbnM/IA0KSWYgdGhlIG1pbiBibG9jayBvZiBnZW5fcG9vbCBpcyA4IGJ5dGVzLCBh
bmQgSSB3YW50IHRvIGFsbG9jYXRlIGEgDQpSZWdpb24gd2l0aCBvZmZzZXQ9Nywgc2l6ZT04Ynl0
ZXMsIEkgYWN0dWFsbHkgbmVlZCBibG9jayAwIGFuZCBibG9jayAxLA0KQW5kIHRoZSBhbGxvY2F0
aW9uIHdpbGwgZ2l2ZSBtZSBibG9jayAwLiAgDQoNCj4gDQo+ID4gZ2VuX3Bvb2xfZml4ZWRfYWxs
b2MganVzdA0KPiA+IENhbiBzZWUgbnVtYmVycyBvZiBibG9ja3MuIEl0IGNhbid0IGRvIGNhbGN1
bGF0aW9ucyBpbg0KPiBnZW5fcG9vbF9maXhlZF9hbGxvYy4NCj4gDQo+IEFyZSB5b3Ugc2F5aW5n
IHRoYXQgdGhpczoNCj4gDQo+IHN0cnVjdCBnZW5wb29sX2RhdGFfZml4ZWQgew0KPiAgICAgICAg
dW5zaWduZWQgbG9uZyBvZmZzZXQ7ICAgICAgICAgICAvKiBUaGUgb2Zmc2V0IG9mIHRoZSBzcGVj
aWZpYw0KPiByZWdpb24gKi8NCj4gfTsNCj4gDQo+IHJlZmVycyB0byBibG9ja3MgYW5kIG5vdCBi
eXRlcz8gIEFuZCB5b3UgZGlkbid0IGV2ZW4gbWVudGlvbiB0aGF0IGluIHRoZQ0KPiBjb21tZW50
Pw0KDQpPZmZzZXQgaXMgYnl0ZXMuIA0KDQo+IA0KPiBJdCBzaG91bGQgYmUgYnl0ZXMuICBBY3R1
YWxseSwgaXQgc2hvdWxkIGJlIGFuIGFkZHJlc3MsIG5vdCBhbiBvZmZzZXQuDQo+IEl0IHNob3Vs
ZCBiZSB0aGUgc2FtZSB2YWx1ZSB0aGF0IHlvdSByZWNlaXZlIGJhY2sgZnJvbSB0aGUgYWxsb2Nh
dG9yLg0KPiBBbmQgSSdtIG5vdCBzdXJlIGhvdyB0aGlzIGlzIGdvaW5nIHRvIHdvcmsgd2l0aCBn
ZW5hbGxvYyBjaHVua3MgdGhhdA0KPiBkb24ndCBzdGFydCBhdCB6ZXJvLiAgSSB0aGluayBpdCBy
ZWFsbHkgZG9lcyBuZWVkIHRvIGJlIGEgc2VwYXJhdGUNCj4gdG9wbGV2ZWwgZnVuY3Rpb24sIGFu
ZCBub3QganVzdCBhbiBhbGxvY2F0aW9uIGFsZ29yaXRobSAob3IgZWxzZSB0aGUNCj4gYWxsb2Nh
dGlvbiBhbGdvcml0aG0gaXMgZ29pbmcgdG8gbmVlZCBtb3JlIGNvbnRleHQgb24gd2hhdCBjaHVu
ayBpdCdzDQo+IHdvcmtpbmcgb24pLg0KPiANCj4gU3BlYWtpbmcgb2YgY2h1bmtzIGFuZCB0aGUg
YWxsb2NhdGlvbiBmdW5jdGlvbiwgSSB3b25kZXIgd2hhdCBoYXBwZW5zIGlmDQo+IHlvdSBoaXQg
ImlmIChzdGFydF9iaXQgPj0gZW5kX2JpdCkgY29udGludWU7IiBhbmQgdGhlbiBlbnRlciB0aGUg
bG9vcA0KPiB3aXRoIGEgbmV3IGNodW5rIGFuZCBzdGFydF9iaXQgIT0gMC4uLg0KPiANCj4gLVNj
b3R0DQoNCg==
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1231158

FromZhao Qiang <qiang.zhao@freescale.com>
Date2015-09-23 07:30 +0200
Message-ID<qbKMW-2YL-13@gated-at.bofh.it>
In reply to#1231109
T24gV2VuLCBTZXAgMjMsIDIwMTUgYXQgMTI6MDMgQU0gKzA4MDAsIFdvb2QgU2NvdHQtQjA3NDIx
IHdyb3RlOg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFdvb2QgU2Nv
dHQtQjA3NDIxDQo+IFNlbnQ6IFdlZG5lc2RheSwgU2VwdGVtYmVyIDIzLCAyMDE1IDEyOjAzIFBN
DQo+IFRvOiBaaGFvIFFpYW5nLUI0NTQ3NQ0KPiBDYzogbGludXgta2VybmVsQHZnZXIua2VybmVs
Lm9yZzsgbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7DQo+IGxhdXJhYUBjb2RlYXVyb3Jh
Lm9yZzsgWGllIFhpYW9iby1SNjMwNjE7IGJlbmhAa2VybmVsLmNyYXNoaW5nLm9yZzsgTGkNCj4g
WWFuZy1MZW8tUjU4NDcyOyBwYXVsdXNAc2FtYmEub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0gg
djEwIDMvNV0gQ1BNL1FFOiB1c2UgZ2VuYWxsb2MgdG8gbWFuYWdlIENQTS9RRSBtdXJhbQ0KPiAN
Cj4gT24gVHVlLCAyMDE1LTA5LTIyIGF0IDIxOjIwIC0wNTAwLCBaaGFvIFFpYW5nLUI0NTQ3NSB3
cm90ZToNCj4gPiBPbiBXZW4sIFNlcCAyMywgMjAxNSBhdCA4OjE5IEFNICswODAwLCBXb29kIFNj
b3R0LUIwNzQyMSB3cm90ZToNCj4gPg0KPiA+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+IC0gaW50
IHJldDsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsgdW5zaWduZWQgbG9uZyBzdGFydDsN
Cj4gPiA+ID4gPiA+ICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiA+ID4gPiA+ICsgdW5zaWdu
ZWQgbG9uZyBzaXplX2FsbG9jID0gc2l6ZTsgc3RydWN0IG11cmFtX2Jsb2NrICplbnRyeTsNCj4g
PiA+ID4gPiA+ICsgaW50IGVuZF9iaXQ7IGludCBvcmRlciA9IG11cmFtX3Bvb2wtPm1pbl9hbGxv
Y19vcmRlcjsNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgIHNwaW5fbG9ja19pcnFzYXZlKCZj
cG1fbXVyYW1fbG9jaywgZmxhZ3MpOw0KPiA+ID4gPiA+ID4gLSByZXQgPSByaF9mcmVlKCZjcG1f
bXVyYW1faW5mbywgb2Zmc2V0KTsNCj4gPiA+ID4gPiA+ICsgZW5kX2JpdCA9IChvZmZzZXQgPj4g
b3JkZXIpICsgKChzaXplICsgKDFVTCA8PCBvcmRlcikgLSAxKQ0KPiA+ID4gPiA+ID4gKyA+Pg0K
PiA+ID4gPiA+IG9yZGVyKTsNCj4gPiA+ID4gPiA+ICsgaWYgKChvZmZzZXQgKyBzaXplKSA+IChl
bmRfYml0IDw8IG9yZGVyKSkNCj4gPiA+ID4gPiA+ICsgICAgICAgICBzaXplX2FsbG9jID0gc2l6
ZSArICgxVUwgPDwgb3JkZXIpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gV2h5IGRvIHlvdSBuZWVk
IHRvIGRvIGFsbCB0aGVzZSBjYWxjdWxhdGlvbnMgaGVyZT8NCj4gPiA+ID4NCj4gPiA+ID4gU28g
ZG8gaXQgaW4gZ2VuX3Bvb2xfZml4ZWRfYWxsb2M/DQo+ID4gPg0KPiA+ID4gQ291bGQgeW91IGV4
cGxhaW4gd2h5IHRoZXkncmUgbmVlZGVkIGF0IGFsbD8NCj4gPg0KPiA+IFdoeSBpdCBkb2VzIHRo
ZSBjYWxjdWxhdGlvbnM/DQo+ID4gSWYgdGhlIG1pbiBibG9jayBvZiBnZW5fcG9vbCBpcyA4IGJ5
dGVzLCBhbmQgSSB3YW50IHRvIGFsbG9jYXRlIGENCj4gPiBSZWdpb24gd2l0aCBvZmZzZXQ9Nywg
c2l6ZT04Ynl0ZXMsIEkgYWN0dWFsbHkgbmVlZCBibG9jayAwIGFuZCBibG9jaw0KPiA+IDEsIEFu
ZCB0aGUgYWxsb2NhdGlvbiB3aWxsIGdpdmUgbWUgYmxvY2sgMC4NCj4gDQo+IEhvdyBjYW4geW91
IGhhdmUgb2Zmc2V0IDcgaWYgdGhlIG1pbmltdW0gb3JkZXIgaXMgMiBieXRlcz8NCg0KT2Zmc2V0
IGhhcyBubyByZWxhdGlvbnNoaXAgd2l0aCBtaW5pbXVtIG9yZGVyLCBpdCBpcyBub3QgZGVjaWRl
ZCBieSBtaW5pbXVtIG9yZGVyLg0KSSB3YW50IHRvIGFsbG9jYXRlIGEgc3BlY2lmaWMgcmVnaW9u
IHdpdGggb2Zmc2V0PTcsIHRoZW4gYWxnbyB0byBjYWxjdWxhdGUgdGhlIGJsb2NrIGJpdC4NCkFu
ZCBJIGp1c3QgdGFrZSBpdCBmb3IgZXhhbXBsZSwgaXQgaXMgbm90IEkgcmVhbGx5IG5lZWQgdG8g
cmVnaW9uIG9mZnNldD03Lg0KDQpTbywgbm93IG1pbmltdW0gb3JkZXIgaXMgMiBieXRlcy4gSWYg
b2Zmc2V0PTcsIHNpemU9NGJ5dGVzIG5lZWRlZCwgaXQgYWN0dWFsbHkgYWxsb2NhdGUgNi0xMiB0
byBtZS4NCnNvIEkgbmVlZCB0byBjaGVjayBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gcGx1cyBhIGJs
b2NrKDJieXRlcykgdG8gc2l6ZSBiZWZvcmUgYWxsb2NhdGlvbi4gIA0KDQotWmhhbw0K
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1232542

FromZhao Qiang <qiang.zhao@freescale.com>
Date2015-09-25 05:00 +0200
Message-ID<qcroS-5rS-1@gated-at.bofh.it>
In reply to#1231158
T24gRnJpLCBTZXAgMjUsIDIwMTUgYXQgNzozMCBBTSArMDgwMCwgV29vZCBTY290dC1CMDc0MjEg
d3JvdGU6DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFdvb2QgU2NvdHQt
QjA3NDIxDQo+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDI1LCAyMDE1IDc6MzAgQU0NCj4gVG86
IFpoYW8gUWlhbmctQjQ1NDc1DQo+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBs
aW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZzsNCj4gbGF1cmFhQGNvZGVhdXJvcmEub3JnOyBY
aWUgWGlhb2JvLVI2MzA2MTsgYmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnOyBMaQ0KPiBZYW5nLUxl
by1SNTg0NzI7IHBhdWx1c0BzYW1iYS5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MTAgMy81
XSBDUE0vUUU6IHVzZSBnZW5hbGxvYyB0byBtYW5hZ2UgQ1BNL1FFIG11cmFtDQo+IA0KPiBPbiBX
ZWQsIDIwMTUtMDktMjMgYXQgMDA6MjggLTA1MDAsIFpoYW8gUWlhbmctQjQ1NDc1IHdyb3RlOg0K
PiA+IE9uIFdlbiwgU2VwIDIzLCAyMDE1IGF0IDEyOjAzIEFNICswODAwLCBXb29kIFNjb3R0LUIw
NzQyMSB3cm90ZToNCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+
IEZyb206IFdvb2QgU2NvdHQtQjA3NDIxDQo+ID4gPiBTZW50OiBXZWRuZXNkYXksIFNlcHRlbWJl
ciAyMywgMjAxNSAxMjowMyBQTQ0KPiA+ID4gVG86IFpoYW8gUWlhbmctQjQ1NDc1DQo+ID4gPiBD
YzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbGludXhwcGMtZGV2QGxpc3RzLm96bGFi
cy5vcmc7DQo+ID4gPiBsYXVyYWFAY29kZWF1cm9yYS5vcmc7IFhpZSBYaWFvYm8tUjYzMDYxOyBi
ZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc7DQo+ID4gPiBMaSBZYW5nLUxlby1SNTg0NzI7IHBhdWx1
c0BzYW1iYS5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjEwIDMvNV0gQ1BNL1FFOiB1
c2UgZ2VuYWxsb2MgdG8gbWFuYWdlIENQTS9RRQ0KPiA+ID4gbXVyYW0NCj4gPiA+DQo+ID4gPiBP
biBUdWUsIDIwMTUtMDktMjIgYXQgMjE6MjAgLTA1MDAsIFpoYW8gUWlhbmctQjQ1NDc1IHdyb3Rl
Og0KPiA+ID4gPiBPbiBXZW4sIFNlcCAyMywgMjAxNSBhdCA4OjE5IEFNICswODAwLCBXb29kIFNj
b3R0LUIwNzQyMSB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAgew0KPiA+ID4gPiA+
ID4gPiA+IC0gaW50IHJldDsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gKyB1
bnNpZ25lZCBsb25nIHN0YXJ0Ow0KPiA+ID4gPiA+ID4gPiA+ICAgdW5zaWduZWQgbG9uZyBmbGFn
czsNCj4gPiA+ID4gPiA+ID4gPiArIHVuc2lnbmVkIGxvbmcgc2l6ZV9hbGxvYyA9IHNpemU7IHN0
cnVjdCBtdXJhbV9ibG9jaw0KPiA+ID4gPiA+ID4gPiA+ICsgKmVudHJ5OyBpbnQgZW5kX2JpdDsg
aW50IG9yZGVyID0NCj4gPiA+ID4gPiA+ID4gPiArIG11cmFtX3Bvb2wtPm1pbl9hbGxvY19vcmRl
cjsNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ICAgc3Bpbl9sb2NrX2lycXNhdmUo
JmNwbV9tdXJhbV9sb2NrLCBmbGFncyk7DQo+ID4gPiA+ID4gPiA+ID4gLSByZXQgPSByaF9mcmVl
KCZjcG1fbXVyYW1faW5mbywgb2Zmc2V0KTsNCj4gPiA+ID4gPiA+ID4gPiArIGVuZF9iaXQgPSAo
b2Zmc2V0ID4+IG9yZGVyKSArICgoc2l6ZSArICgxVUwgPDwgb3JkZXIpIC0NCj4gPiA+ID4gPiA+
ID4gPiArIDEpDQo+ID4gPiA+ID4gPiA+ID4gKyA+Pg0KPiA+ID4gPiA+ID4gPiBvcmRlcik7DQo+
ID4gPiA+ID4gPiA+ID4gKyBpZiAoKG9mZnNldCArIHNpemUpID4gKGVuZF9iaXQgPDwgb3JkZXIp
KQ0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICBzaXplX2FsbG9jID0gc2l6ZSArICgxVUwgPDwg
b3JkZXIpOw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBXaHkgZG8geW91IG5lZWQgdG8g
ZG8gYWxsIHRoZXNlIGNhbGN1bGF0aW9ucyBoZXJlPw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+
IFNvIGRvIGl0IGluIGdlbl9wb29sX2ZpeGVkX2FsbG9jPw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g
Q291bGQgeW91IGV4cGxhaW4gd2h5IHRoZXkncmUgbmVlZGVkIGF0IGFsbD8NCj4gPiA+ID4NCj4g
PiA+ID4gV2h5IGl0IGRvZXMgdGhlIGNhbGN1bGF0aW9ucz8NCj4gPiA+ID4gSWYgdGhlIG1pbiBi
bG9jayBvZiBnZW5fcG9vbCBpcyA4IGJ5dGVzLCBhbmQgSSB3YW50IHRvIGFsbG9jYXRlIGENCj4g
PiA+ID4gUmVnaW9uIHdpdGggb2Zmc2V0PTcsIHNpemU9OGJ5dGVzLCBJIGFjdHVhbGx5IG5lZWQg
YmxvY2sgMCBhbmQNCj4gPiA+ID4gYmxvY2sgMSwgQW5kIHRoZSBhbGxvY2F0aW9uIHdpbGwgZ2l2
ZSBtZSBibG9jayAwLg0KPiA+ID4NCj4gPiA+IEhvdyBjYW4geW91IGhhdmUgb2Zmc2V0IDcgaWYg
dGhlIG1pbmltdW0gb3JkZXIgaXMgMiBieXRlcz8NCj4gPg0KPiA+IE9mZnNldCBoYXMgbm8gcmVs
YXRpb25zaGlwIHdpdGggbWluaW11bSBvcmRlciwgaXQgaXMgbm90IGRlY2lkZWQgYnkNCj4gPiBt
aW5pbXVtIG9yZGVyLg0KPiANCj4gQWxsIGFsbG9jYXRpb25zIGJlZ2luIGFuZCBlbmQgb24gYSBt
dWx0aXBsZSBvZiB0aGUgbWluaW11bSBvcmRlci4NCg0KU28gaXQgaXMgdGhlIHByb2JsZW0uIENQ
TSByZXF1aXJlIHRvIGFsbG9jYXRlIGEgc3BlY2lmaWMgcmVnaW9uLA0Kd2hvIGNhbiBlbnN1cmUg
dGhhdCB0aGUgc3BlY2lmaWMgaXMganVzdCB0aGUgYmVnaW4gb2YgbWluaW11bSBvcmRlci4NClNv
IHRoZSBhbGdvIHdpbGwgZmluZCB0aGUgZmlyc3QgYmxvY2sgY292ZXJpbmcgdGhlIHNwZWNpZmlj
IHJlZ2lvbidzIA0KU3RhcnQgYWRkcmVzcywgdGhlbiBiZWNhdXNlIG15IHNwZWNpZmljIHJlZ2lv
bidzIHN0YXJ0IGFkZHJlc3MgaXMgbm90IGVxdWFsDQpUbyB0aGUgYWRkcmVzcyByZXR1cm5lZCBi
eSBhbGdvLCB0aGUgZW5kIGFkZHJlc3MgaXMgbm90IGVxdWFsIHRvIG15IA0Kc3BlY2lmaWMgcmVn
aW9uJ3MgZW5kIGFkZHJlc3MsIHNvIHRoZSBjYWxjdWxhdGlvbiBpcyB0byBrZWVwIHRoZSBlbmQg
DQphZGRyZXNzIGxhcmdlciB0aGFuIHNwZWNpZmljIHJlZ2lvbidzIGVuZCBhZGRyZXNzLg0KDQo+
IA0KPiA+IEkgd2FudCB0byBhbGxvY2F0ZSBhIHNwZWNpZmljIHJlZ2lvbiB3aXRoIG9mZnNldD03
LCB0aGVuIGFsZ28gdG8NCj4gPiBjYWxjdWxhdGUgdGhlIGJsb2NrIGJpdC4NCj4gPiBBbmQgSSBq
dXN0IHRha2UgaXQgZm9yIGV4YW1wbGUsIGl0IGlzIG5vdCBJIHJlYWxseSBuZWVkIHRvIHJlZ2lv
bg0KPiBvZmZzZXQ9Ny4NCj4gDQo+IERvIHlvdSByZWFsbHkgbmVlZCBhbnkgZml4ZWQgYWxsb2Nh
dGlvbnMgdGhhdCBiZWdpbiBvbiBhbiBvZGQgYWRkcmVzcz8NCg0KTWF5YmUgSSBkb27igJl0IG5l
ZWQgYW4gb2RkIGFkZHJlc3MsIGJ1dCB0aGUgY2FsY3VsYXRpb24gaXMgbmVlZGVkIGluIGNhc2Uu
DQoNCj4gDQo+ID4gU28sIG5vdyBtaW5pbXVtIG9yZGVyIGlzIDIgYnl0ZXMuIElmIG9mZnNldD03
LCBzaXplPTRieXRlcyBuZWVkZWQsIGl0DQo+ID4gYWN0dWFsbHkgYWxsb2NhdGUgNi0xMiB0byBt
ZS4NCj4gDQo+IFdoeSA2LTEyIGFuZCBub3QgNi0xMD8NCg0KSXQgaXMganVzdCBhIGV4YW1wbGUN
Cg0KLVpoYW8gDQoNCg==
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [next] | [standalone]


#1232573

FromZhao Qiang <qiang.zhao@freescale.com>
Date2015-09-25 07:50 +0200
Message-ID<qcu3o-MY-7@gated-at.bofh.it>
In reply to#1232542
T24gRnJpLCBTZXAgMjUsIDIwMTUgYXQgMTowOCBQTSArMDgwMCwgV29vZCBTY290dC1CMDc0MjEg
d3JvdGU6DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290
dC1CMDc0MjENCj4gU2VudDogRnJpZGF5LCBTZXB0ZW1iZXIgMjUsIDIwMTUgMTowOCBQTQ0KPiBU
bzogWmhhbyBRaWFuZy1CNDU0NzUNCj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7
IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOw0KPiBsYXVyYWFAY29kZWF1cm9yYS5vcmc7
IFhpZSBYaWFvYm8tUjYzMDYxOyBiZW5oQGtlcm5lbC5jcmFzaGluZy5vcmc7IExpDQo+IFlhbmct
TGVvLVI1ODQ3MjsgcGF1bHVzQHNhbWJhLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYxMCAz
LzVdIENQTS9RRTogdXNlIGdlbmFsbG9jIHRvIG1hbmFnZSBDUE0vUUUgbXVyYW0NCj4gDQo+IE9u
IFRodSwgMjAxNS0wOS0yNCBhdCAyMTo1MCAtMDUwMCwgWmhhbyBRaWFuZy1CNDU0NzUgd3JvdGU6
DQo+ID4gT24gRnJpLCBTZXAgMjUsIDIwMTUgYXQgNzozMCBBTSArMDgwMCwgV29vZCBTY290dC1C
MDc0MjEgd3JvdGU6DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJv
bTogV29vZCBTY290dC1CMDc0MjENCj4gPiA+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDI1LCAy
MDE1IDc6MzAgQU0NCj4gPiA+IFRvOiBaaGFvIFFpYW5nLUI0NTQ3NQ0KPiA+ID4gQ2M6IGxpbnV4
LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOw0K
PiA+ID4gbGF1cmFhQGNvZGVhdXJvcmEub3JnOyBYaWUgWGlhb2JvLVI2MzA2MTsgYmVuaEBrZXJu
ZWwuY3Jhc2hpbmcub3JnOw0KPiA+ID4gTGkgWWFuZy1MZW8tUjU4NDcyOyBwYXVsdXNAc2FtYmEu
b3JnDQo+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYxMCAzLzVdIENQTS9RRTogdXNlIGdlbmFs
bG9jIHRvIG1hbmFnZSBDUE0vUUUNCj4gPiA+IG11cmFtDQo+ID4gPg0KPiA+ID4gT24gV2VkLCAy
MDE1LTA5LTIzIGF0IDAwOjI4IC0wNTAwLCBaaGFvIFFpYW5nLUI0NTQ3NSB3cm90ZToNCj4gPiA+
ID4gT24gV2VuLCBTZXAgMjMsIDIwMTUgYXQgMTI6MDMgQU0gKzA4MDAsIFdvb2QgU2NvdHQtQjA3
NDIxIHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t
DQo+ID4gPiA+ID4gRnJvbTogV29vZCBTY290dC1CMDc0MjENCj4gPiA+ID4gPiBTZW50OiBXZWRu
ZXNkYXksIFNlcHRlbWJlciAyMywgMjAxNSAxMjowMyBQTQ0KPiA+ID4gPiA+IFRvOiBaaGFvIFFp
YW5nLUI0NTQ3NQ0KPiA+ID4gPiA+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBs
aW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZzsNCj4gPiA+ID4gPiBsYXVyYWFAY29kZWF1cm9y
YS5vcmc7IFhpZSBYaWFvYm8tUjYzMDYxOw0KPiA+ID4gPiA+IGJlbmhAa2VybmVsLmNyYXNoaW5n
Lm9yZzsgTGkgWWFuZy1MZW8tUjU4NDcyOyBwYXVsdXNAc2FtYmEub3JnDQo+ID4gPiA+ID4gU3Vi
amVjdDogUmU6IFtQQVRDSCB2MTAgMy81XSBDUE0vUUU6IHVzZSBnZW5hbGxvYyB0byBtYW5hZ2UN
Cj4gPiA+ID4gPiBDUE0vUUUgbXVyYW0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE9uIFR1ZSwgMjAx
NS0wOS0yMiBhdCAyMToyMCAtMDUwMCwgWmhhbyBRaWFuZy1CNDU0NzUgd3JvdGU6DQo+ID4gPiA+
ID4gPiBPbiBXZW4sIFNlcCAyMywgMjAxNSBhdCA4OjE5IEFNICswODAwLCBXb29kIFNjb3R0LUIw
NzQyMSB3cm90ZToNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+
ID4gPiA+ID4gPiA+IC0gaW50IHJldDsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+
ID4gPiA+ID4gPiArIHVuc2lnbmVkIGxvbmcgc3RhcnQ7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAg
dW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyB1bnNpZ25lZCBsb25n
IHNpemVfYWxsb2MgPSBzaXplOyBzdHJ1Y3QgbXVyYW1fYmxvY2sNCj4gPiA+ID4gPiA+ID4gPiA+
ID4gKyAqZW50cnk7IGludCBlbmRfYml0OyBpbnQgb3JkZXIgPQ0KPiA+ID4gPiA+ID4gPiA+ID4g
PiArIG11cmFtX3Bvb2wtPm1pbl9hbGxvY19vcmRlcjsNCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4g
PiA+ID4gPiA+ID4gPiA+ID4gICBzcGluX2xvY2tfaXJxc2F2ZSgmY3BtX211cmFtX2xvY2ssIGZs
YWdzKTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gLSByZXQgPSByaF9mcmVlKCZjcG1fbXVyYW1faW5m
bywgb2Zmc2V0KTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyBlbmRfYml0ID0gKG9mZnNldCA+PiBv
cmRlcikgKyAoKHNpemUgKyAoMVVMIDw8DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgb3JkZXIpIC0N
Cj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAxKQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiArID4+DQo+ID4g
PiA+ID4gPiA+ID4gPiBvcmRlcik7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICsgaWYgKChvZmZzZXQg
KyBzaXplKSA+IChlbmRfYml0IDw8IG9yZGVyKSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gKyAgICAg
ICAgIHNpemVfYWxsb2MgPSBzaXplICsgKDFVTCA8PCBvcmRlcik7DQo+ID4gPiA+ID4gPiA+ID4g
Pg0KPiA+ID4gPiA+ID4gPiA+ID4gV2h5IGRvIHlvdSBuZWVkIHRvIGRvIGFsbCB0aGVzZSBjYWxj
dWxhdGlvbnMgaGVyZT8NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFNvIGRvIGl0
IGluIGdlbl9wb29sX2ZpeGVkX2FsbG9jPw0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBD
b3VsZCB5b3UgZXhwbGFpbiB3aHkgdGhleSdyZSBuZWVkZWQgYXQgYWxsPw0KPiA+ID4gPiA+ID4N
Cj4gPiA+ID4gPiA+IFdoeSBpdCBkb2VzIHRoZSBjYWxjdWxhdGlvbnM/DQo+ID4gPiA+ID4gPiBJ
ZiB0aGUgbWluIGJsb2NrIG9mIGdlbl9wb29sIGlzIDggYnl0ZXMsIGFuZCBJIHdhbnQgdG8NCj4g
PiA+ID4gPiA+IGFsbG9jYXRlIGEgUmVnaW9uIHdpdGggb2Zmc2V0PTcsIHNpemU9OGJ5dGVzLCBJ
IGFjdHVhbGx5IG5lZWQNCj4gPiA+ID4gPiA+IGJsb2NrIDAgYW5kIGJsb2NrIDEsIEFuZCB0aGUg
YWxsb2NhdGlvbiB3aWxsIGdpdmUgbWUgYmxvY2sgMC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhv
dyBjYW4geW91IGhhdmUgb2Zmc2V0IDcgaWYgdGhlIG1pbmltdW0gb3JkZXIgaXMgMiBieXRlcz8N
Cj4gPiA+ID4NCj4gPiA+ID4gT2Zmc2V0IGhhcyBubyByZWxhdGlvbnNoaXAgd2l0aCBtaW5pbXVt
IG9yZGVyLCBpdCBpcyBub3QgZGVjaWRlZA0KPiA+ID4gPiBieSBtaW5pbXVtIG9yZGVyLg0KPiA+
ID4NCj4gPiA+IEFsbCBhbGxvY2F0aW9ucyBiZWdpbiBhbmQgZW5kIG9uIGEgbXVsdGlwbGUgb2Yg
dGhlIG1pbmltdW0gb3JkZXIuDQo+ID4NCj4gPiBTbyBpdCBpcyB0aGUgcHJvYmxlbS4gQ1BNIHJl
cXVpcmUgdG8gYWxsb2NhdGUgYSBzcGVjaWZpYyByZWdpb24sIHdobw0KPiA+IGNhbiBlbnN1cmUg
dGhhdCB0aGUgc3BlY2lmaWMgaXMganVzdCB0aGUgYmVnaW4gb2YgbWluaW11bSBvcmRlci4NCj4g
DQo+IERvIHlvdSBoYXZlIGFueSByZWFzb24gdG8gYmVsaWV2ZSB0aGF0IHRoZXJlIGlzIGFueSBj
YWxsZXIgb2YgdGhpcw0KPiBmdW5jdGlvbiB3aXRoIGFuIG9kZCBhZGRyZXNzPw0KPiANCj4gSWYg
c28sIHNldCB0aGUgbWluaW11bSBvcmRlciB0byB6ZXJvLiAgSWYgbm90LCB3aGF0IGlzIHRoZSBw
cm9ibGVtPw0KDQpTZXR0aW5nIG1pbmltdW0gb3JkZXIgdG8gemVybyBpcyBvay4NCg0KLVpoYW8N
Cg==
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web