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


Groups > linux.kernel > #1256464 > unrolled thread

Re: [PATCH 5/5] staging: fsl-mc: Management Complex restool driver

Started byScott Wood <scottwood@freescale.com>
First post2015-10-27 06:20 +0100
Last post2015-10-30 17:50 +0100
Articles 3 — 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 5/5] staging: fsl-mc: Management Complex restool driver Scott Wood <scottwood@freescale.com> - 2015-10-27 06:20 +0100
    RE: [PATCH 5/5] staging: fsl-mc: Management Complex restool driver Lijun Pan <Lijun.Pan@freescale.com> - 2015-10-30 01:00 +0100
    RE: [PATCH 5/5] staging: fsl-mc: Management Complex restool driver Lijun Pan <Lijun.Pan@freescale.com> - 2015-10-30 17:50 +0100

#1256464 — Re: [PATCH 5/5] staging: fsl-mc: Management Complex restool driver

FromScott Wood <scottwood@freescale.com>
Date2015-10-27 06:20 +0100
SubjectRe: [PATCH 5/5] staging: fsl-mc: Management Complex restool driver
Message-ID<qo4PT-18r-11@gated-at.bofh.it>
On Sun, 2015-10-25 at 17:41 -0500, Lijun Pan wrote:
> The kernel support for the restool (a user space resource management
> tool) is a driver for the /dev/dprc.N device file.
> Its purpose is to provide an ioctl interface,
> which the restool uses to interact with the MC bus driver
> and with the MC firmware.
> We allocate a dpmcp at driver initialization,
> and keep that dpmcp until driver exit.
> We use that dpmcp by default.
> If that dpmcp is in use, we create another portal at run time
> and destroy the newly created portal after use.
> The ioctl RESTOOL_SEND_MC_COMMAND sends user space command to fsl-mc
> bus and utilizes the fsl-mc bus to communicate with MC firmware.
> The ioctl RESTOOL_DPRC_SYNC request the mc-bus launch
> objects scan under root dprc.
> In order to support multiple root dprc, we utilize the bus notify
> mechanism to scan fsl_mc_bus_type for the newly added root dprc.
> After discovering the root dprc, it creates a miscdevice
> /dev/dprc.N to associate with this root dprc.
> 
> Signed-off-by: Lijun Pan <Lijun.Pan@freescale.com>
> ---
>  drivers/staging/fsl-mc/bus/Kconfig      |   7 +-
>  drivers/staging/fsl-mc/bus/Makefile     |   3 +
>  drivers/staging/fsl-mc/bus/mc-ioctl.h   |  24 ++
>  drivers/staging/fsl-mc/bus/mc-restool.c | 488 
> ++++++++++++++++++++++++++++++++
>  4 files changed, 521 insertions(+), 1 deletion(-)
>  create mode 100644 drivers/staging/fsl-mc/bus/mc-ioctl.h
>  create mode 100644 drivers/staging/fsl-mc/bus/mc-restool.c
> 
> diff --git a/drivers/staging/fsl-mc/bus/Kconfig b/drivers/staging/fsl-
> mc/bus/Kconfig
> index 0d779d9..39c6ef9 100644
> --- a/drivers/staging/fsl-mc/bus/Kconfig
> +++ b/drivers/staging/fsl-mc/bus/Kconfig
> @@ -21,4 +21,9 @@ config FSL_MC_BUS
>         Only enable this option when building the kernel for
>         Freescale QorQIQ LS2xxxx SoCs.
>  
> -
> +config FSL_MC_RESTOOL
> +        tristate "Freescale Management Complex (MC) restool driver"
> +        depends on FSL_MC_BUS
> +        help
> +          Driver that provides kernel support for the Freescale Management
> +       Complex resource manager user-space tool.
> diff --git a/drivers/staging/fsl-mc/bus/Makefile b/drivers/staging/fsl-
> mc/bus/Makefile
> index 25433a9..28b5fc0 100644
> --- a/drivers/staging/fsl-mc/bus/Makefile
> +++ b/drivers/staging/fsl-mc/bus/Makefile
> @@ -15,3 +15,6 @@ mc-bus-driver-objs := mc-bus.o \
>                     mc-allocator.o \
>                     dpmcp.o \
>                     dpbp.o
> +
> +# MC restool kernel support
> +obj-$(CONFIG_FSL_MC_RESTOOL) += mc-restool.o
> diff --git a/drivers/staging/fsl-mc/bus/mc-ioctl.h b/drivers/staging/fsl-
> mc/bus/mc-ioctl.h
> new file mode 100644
> index 0000000..e52f907
> --- /dev/null
> +++ b/drivers/staging/fsl-mc/bus/mc-ioctl.h
> @@ -0,0 +1,24 @@
> +/*
> + * Freescale Management Complex (MC) ioclt interface

ioctl

> + *
> + * Copyright (C) 2014 Freescale Semiconductor, Inc.
> + * Author: Lijun Pan <Lijun.Pan@freescale.com>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2. This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +#ifndef _FSL_MC_IOCTL_H_
> +#define _FSL_MC_IOCTL_H_
> +
> +#include <linux/ioctl.h>
> +
> +#define RESTOOL_IOCTL_TYPE   'R'
> +
> +#define RESTOOL_DPRC_SYNC \
> +     _IO(RESTOOL_IOCTL_TYPE, 0x2)
> +
> +#define RESTOOL_SEND_MC_COMMAND \
> +     _IOWR(RESTOOL_IOCTL_TYPE, 0x4, struct mc_command)

Look at Documentation/ioctl/ioctl-number.txt and reserve a range within 'R' 
that doesn't conflict.

Add thorough documentation of this API.  

I'm not sure how it's usually handled with staging drivers, but eventually 
this will need to move to an appropriate uapi header.  Is this functionality 
even needed before the driver comes out of staging?  I don't see "userspace 
restool support" in drivers/staging/fsl-mc/TODO.

Don't reference struct mc_command without including the header that defines 
it.

> +#endif /* _FSL_MC_IOCTL_H_ */
> diff --git a/drivers/staging/fsl-mc/bus/mc-restool.c b/drivers/staging/fsl-
> mc/bus/mc-restool.c
> new file mode 100644
> index 0000000..a219172
> --- /dev/null
> +++ b/drivers/staging/fsl-mc/bus/mc-restool.c
> @@ -0,0 +1,488 @@
> +/*
> + * Freescale Management Complex (MC) restool driver
> + *
> + * Copyright (C) 2014 Freescale Semiconductor, Inc.
> + * Author: Lijun Pan <Lijun.Pan@freescale.com>
> + *
> + * This file is licensed under the terms of the GNU General Public
> + * License version 2. This program is licensed "as is" without any
> + * warranty of any kind, whether express or implied.
> + */
> +
> +#include "../include/mc-private.h"
> +#include <linux/module.h>
> +#include <linux/fs.h>
> +#include <linux/miscdevice.h>
> +#include <linux/mm.h>
> +#include <linux/slab.h>
> +#include <linux/uaccess.h>
> +#include <linux/mutex.h>
> +#include <linux/platform_device.h>
> +#include "mc-ioctl.h"
> +#include "../include/mc-sys.h"
> +#include "../include/mc-cmd.h"
> +#include "../include/dpmng.h"
> +
> +/**
> + * Maximum number of DPRCs that can be opened at the same time
> + */
> +#define MAX_DPRC_HANDLES         64
> +
> +/**
> + * restool_misc - information associated with the newly added miscdevice
> + * @misc: newly created miscdevice associated with root dprc
> + * @miscdevt: device id of this miscdevice
> + * @list: a linked list node representing this miscdevcie
> + * @static_mc_io: pointer to the static MC I/O object used by the restool
> + * @dynamic_instance_count: number of dynamically created instances
> + * @static_instance_in_use: static instance is in use or not
> + * @mutex: mutex lock to serialze the operations
> + * @dev: root dprc associated with this miscdevice
> + */
> +struct restool_misc {
> +     struct miscdevice misc;
> +     dev_t miscdevt;
> +     struct list_head list;
> +     struct fsl_mc_io *static_mc_io;
> +     uint32_t dynamic_instance_count;
> +     bool static_instance_in_use;
> +     struct mutex mutex;
> +     struct device *dev;
> +};
> +
> +/*
> + * initialize a global list to link all
> + * the miscdevice nodes (struct restool_misc)
> + */
> +LIST_HEAD(misc_list);

static

> +static int fsl_mc_restool_dev_open(struct inode *inode, struct file *filep)
> +{
> +     struct fsl_mc_device *root_mc_dev;
> +     int error = 0;
> +     struct fsl_mc_io *dynamic_mc_io = NULL;
> +     struct restool_misc *restool_misc;
> +     struct restool_misc *restool_misc_cursor;
> +
> +     pr_debug("%s: inode's dev_t == %u\n", __func__, inode->i_rdev);
> +
> +     list_for_each_entry(restool_misc_cursor, &misc_list, list) {
> +             if (restool_misc_cursor->miscdevt == inode->i_rdev) {
> +                     pr_debug("%s: Found the restool_misc\n", __func__);
> +                     restool_misc = restool_misc_cursor;
> +                     break;
> +             }
> +     }

No synchronization on the list?

> +
> +     if (!restool_misc)
> +             return -EINVAL;
> +
> +     if (WARN_ON(restool_misc->dev == NULL))
> +             return -EINVAL;
> +
> +     mutex_lock(&restool_misc->mutex);
> +
> +     if (!restool_misc->static_instance_in_use) {
> +             restool_misc->static_instance_in_use = true;
> +             filep->private_data = restool_misc->static_mc_io;
> +     } else {
> +             dynamic_mc_io = kzalloc(sizeof(struct fsl_mc_io), GFP_KERNEL);
> +             if (dynamic_mc_io == NULL) {
> +                     error = -ENOMEM;
> +                     goto error;
> +             }
> +
> +             root_mc_dev = to_fsl_mc_device(restool_misc->dev);
> +             error = fsl_mc_portal_allocate(root_mc_dev, 0, &dynamic_mc_io);
> +             if (error < 0) {
> +                     pr_err("Not able to allocate MC portal\n");
> +                     goto error;
> +             }
> +             ++restool_misc->dynamic_instance_count;
> +             filep->private_data = dynamic_mc_io;
> +     }

Why is the first user handled differently from subsequent users?  Does each 
user really need its own portal, or can you just synchronize access?

-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]


#1259130

FromLijun Pan <Lijun.Pan@freescale.com>
Date2015-10-30 01:00 +0100
Message-ID<qp5gR-6PF-3@gated-at.bofh.it>
In reply to#1256464
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVHVlc2RheSwgT2N0b2JlciAyNywgMjAxNSAxMjoxNyBBTQ0KPiBUbzogUGFu
IExpanVuLUI0NDMwNiA8TGlqdW4uUGFuQGZyZWVzY2FsZS5jb20+DQo+IENjOiBncmVna2hAbGlu
dXhmb3VuZGF0aW9uLm9yZzsgYXJuZEBhcm5kYi5kZTsgZGV2ZWxAZHJpdmVyZGV2Lm9zdW9zbC5v
cmc7DQo+IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IFlvZGVyIFN0dWFydC1CMDgyNDgN
Cj4gPHN0dWFydC55b2RlckBmcmVlc2NhbGUuY29tPjsga2F0eiBJdGFpLVJNMDUyMDIgPGl0YWku
a2F0ekBmcmVlc2NhbGUuY29tPjsNCj4gUml2ZXJhIEpvc2UtQjQ2NDgyIDxHZXJtYW4uUml2ZXJh
QGZyZWVzY2FsZS5jb20+OyBMaSBZYW5nLUxlby1SNTg0NzINCj4gPExlb0xpQGZyZWVzY2FsZS5j
b20+OyBhZ3JhZkBzdXNlLmRlOyBIYW1jaXVjIEJvZ2Rhbi1CSEFNQ0lVMQ0KPiA8YmhhbWNpdTFA
ZnJlZXNjYWxlLmNvbT47IE1hcmdpbmVhbiBBbGV4YW5kcnUtUjg5MjQzDQo+IDxSODkyNDNAZnJl
ZXNjYWxlLmNvbT47IFNoYXJtYSBCaHVwZXNoLUI0NTM3MA0KPiA8Ymh1cGVzaC5zaGFybWFAZnJl
ZXNjYWxlLmNvbT47IEVyZXogTmlyLVJNMzA3OTQNCj4gPG5pci5lcmV6QGZyZWVzY2FsZS5jb20+
OyBTY2htaXR0IFJpY2hhcmQtQjQzMDgyDQo+IDxyaWNoYXJkLnNjaG1pdHRAZnJlZXNjYWxlLmNv
bT47IGRhbi5jYXJwZW50ZXJAb3JhY2xlLmNvbQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDUvNV0g
c3RhZ2luZzogZnNsLW1jOiBNYW5hZ2VtZW50IENvbXBsZXggcmVzdG9vbCBkcml2ZXINCj4gDQo+
IE9uIFN1biwgMjAxNS0xMC0yNSBhdCAxNzo0MSAtMDUwMCwgTGlqdW4gUGFuIHdyb3RlOg0KPiA+
IFRoZSBrZXJuZWwgc3VwcG9ydCBmb3IgdGhlIHJlc3Rvb2wgKGEgdXNlciBzcGFjZSByZXNvdXJj
ZSBtYW5hZ2VtZW50DQo+ID4gdG9vbCkgaXMgYSBkcml2ZXIgZm9yIHRoZSAvZGV2L2RwcmMuTiBk
ZXZpY2UgZmlsZS4NCj4gPiBJdHMgcHVycG9zZSBpcyB0byBwcm92aWRlIGFuIGlvY3RsIGludGVy
ZmFjZSwgd2hpY2ggdGhlIHJlc3Rvb2wgdXNlcw0KPiA+IHRvIGludGVyYWN0IHdpdGggdGhlIE1D
IGJ1cyBkcml2ZXIgYW5kIHdpdGggdGhlIE1DIGZpcm13YXJlLg0KPiA+IFdlIGFsbG9jYXRlIGEg
ZHBtY3AgYXQgZHJpdmVyIGluaXRpYWxpemF0aW9uLCBhbmQga2VlcCB0aGF0IGRwbWNwDQo+ID4g
dW50aWwgZHJpdmVyIGV4aXQuDQo+ID4gV2UgdXNlIHRoYXQgZHBtY3AgYnkgZGVmYXVsdC4NCj4g
PiBJZiB0aGF0IGRwbWNwIGlzIGluIHVzZSwgd2UgY3JlYXRlIGFub3RoZXIgcG9ydGFsIGF0IHJ1
biB0aW1lIGFuZA0KPiA+IGRlc3Ryb3kgdGhlIG5ld2x5IGNyZWF0ZWQgcG9ydGFsIGFmdGVyIHVz
ZS4NCj4gPiBUaGUgaW9jdGwgUkVTVE9PTF9TRU5EX01DX0NPTU1BTkQgc2VuZHMgdXNlciBzcGFj
ZSBjb21tYW5kIHRvIGZzbC0NCj4gbWMNCj4gPiBidXMgYW5kIHV0aWxpemVzIHRoZSBmc2wtbWMg
YnVzIHRvIGNvbW11bmljYXRlIHdpdGggTUMgZmlybXdhcmUuDQo+ID4gVGhlIGlvY3RsIFJFU1RP
T0xfRFBSQ19TWU5DIHJlcXVlc3QgdGhlIG1jLWJ1cyBsYXVuY2ggb2JqZWN0cyBzY2FuDQo+ID4g
dW5kZXIgcm9vdCBkcHJjLg0KPiA+IEluIG9yZGVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgcm9vdCBk
cHJjLCB3ZSB1dGlsaXplIHRoZSBidXMgbm90aWZ5DQo+ID4gbWVjaGFuaXNtIHRvIHNjYW4gZnNs
X21jX2J1c190eXBlIGZvciB0aGUgbmV3bHkgYWRkZWQgcm9vdCBkcHJjLg0KPiA+IEFmdGVyIGRp
c2NvdmVyaW5nIHRoZSByb290IGRwcmMsIGl0IGNyZWF0ZXMgYSBtaXNjZGV2aWNlIC9kZXYvZHBy
Yy5ODQo+ID4gdG8gYXNzb2NpYXRlIHdpdGggdGhpcyByb290IGRwcmMuDQo+ID4NCj4gPiBTaWdu
ZWQtb2ZmLWJ5OiBMaWp1biBQYW4gPExpanVuLlBhbkBmcmVlc2NhbGUuY29tPg0KPiA+IC0tLQ0K
PiA+ICBkcml2ZXJzL3N0YWdpbmcvZnNsLW1jL2J1cy9LY29uZmlnICAgICAgfCAgIDcgKy0NCj4g
PiAgZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvTWFrZWZpbGUgICAgIHwgICAzICsNCj4gPiAg
ZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvbWMtaW9jdGwuaCAgIHwgIDI0ICsrDQo+ID4gIGRy
aXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL21jLXJlc3Rvb2wuYyB8IDQ4OA0KPiA+ICsrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNTIxIGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb24oLSkgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IGRyaXZlcnMv
c3RhZ2luZy9mc2wtbWMvYnVzL21jLWlvY3RsLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy
aXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL21jLXJlc3Rvb2wuYw0KPiA+DQo+ID4gZGlmZiAtLWdp
dCBhL2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL0tjb25maWcgYi9kcml2ZXJzL3N0YWdpbmcv
ZnNsLQ0KPiA+IG1jL2J1cy9LY29uZmlnIGluZGV4IDBkNzc5ZDkuLjM5YzZlZjkgMTAwNjQ0DQo+
ID4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvS2NvbmZpZw0KPiA+ICsrKyBiL2Ry
aXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL0tjb25maWcNCj4gPiBAQCAtMjEsNCArMjEsOSBAQCBj
b25maWcgRlNMX01DX0JVUw0KPiA+ICAgICAgICAgT25seSBlbmFibGUgdGhpcyBvcHRpb24gd2hl
biBidWlsZGluZyB0aGUga2VybmVsIGZvcg0KPiA+ICAgICAgICAgRnJlZXNjYWxlIFFvclFJUSBM
UzJ4eHh4IFNvQ3MuDQo+ID4NCj4gPiAtDQo+ID4gK2NvbmZpZyBGU0xfTUNfUkVTVE9PTA0KPiA+
ICsgICAgICAgIHRyaXN0YXRlICJGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChNQykgcmVz
dG9vbCBkcml2ZXIiDQo+ID4gKyAgICAgICAgZGVwZW5kcyBvbiBGU0xfTUNfQlVTDQo+ID4gKyAg
ICAgICAgaGVscA0KPiA+ICsgICAgICAgICAgRHJpdmVyIHRoYXQgcHJvdmlkZXMga2VybmVsIHN1
cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgTWFuYWdlbWVudA0KPiA+ICsgICAgICAgQ29tcGxleCBy
ZXNvdXJjZSBtYW5hZ2VyIHVzZXItc3BhY2UgdG9vbC4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy
cy9zdGFnaW5nL2ZzbC1tYy9idXMvTWFrZWZpbGUNCj4gPiBiL2RyaXZlcnMvc3RhZ2luZy9mc2wt
IG1jL2J1cy9NYWtlZmlsZSBpbmRleCAyNTQzM2E5Li4yOGI1ZmMwIDEwMDY0NA0KPiA+IC0tLSBh
L2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL01ha2VmaWxlDQo+ID4gKysrIGIvZHJpdmVycy9z
dGFnaW5nL2ZzbC1tYy9idXMvTWFrZWZpbGUNCj4gPiBAQCAtMTUsMyArMTUsNiBAQCBtYy1idXMt
ZHJpdmVyLW9ianMgOj0gbWMtYnVzLm8gXA0KPiA+ICAgICAgICAgICAgICAgICAgICAgbWMtYWxs
b2NhdG9yLm8gXA0KPiA+ICAgICAgICAgICAgICAgICAgICAgZHBtY3AubyBcDQo+ID4gICAgICAg
ICAgICAgICAgICAgICBkcGJwLm8NCj4gPiArDQo+ID4gKyMgTUMgcmVzdG9vbCBrZXJuZWwgc3Vw
cG9ydA0KPiA+ICtvYmotJChDT05GSUdfRlNMX01DX1JFU1RPT0wpICs9IG1jLXJlc3Rvb2wubw0K
PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnNsLW1jL2J1cy9tYy1pb2N0bC5oDQo+
ID4gYi9kcml2ZXJzL3N0YWdpbmcvZnNsLSBtYy9idXMvbWMtaW9jdGwuaCBuZXcgZmlsZSBtb2Rl
IDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAuLmU1MmY5MDcNCj4gPiAtLS0gL2Rldi9udWxsDQo+
ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvbWMtaW9jdGwuaA0KPiA+IEBAIC0w
LDAgKzEsMjQgQEANCj4gPiArLyoNCj4gPiArICogRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxl
eCAoTUMpIGlvY2x0IGludGVyZmFjZQ0KPiANCj4gaW9jdGwNCj4gDQo+ID4gKyAqDQo+ID4gKyAq
IENvcHlyaWdodCAoQykgMjAxNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLg0KPiA+ICsg
KiBBdXRob3I6IExpanVuIFBhbiA8TGlqdW4uUGFuQGZyZWVzY2FsZS5jb20+DQo+ID4gKyAqDQo+
ID4gKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYw0KPiA+ICsgKiBMaWNlbnNlIHZlcnNpb24gMi4gVGhpcyBwcm9ncmFtIGlz
IGxpY2Vuc2VkICJhcyBpcyIgd2l0aG91dCBhbnkNCj4gPiArICogd2FycmFudHkgb2YgYW55IGtp
bmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KPiA+ICsgKi8NCj4gPiArI2lmbmRlZiBf
RlNMX01DX0lPQ1RMX0hfDQo+ID4gKyNkZWZpbmUgX0ZTTF9NQ19JT0NUTF9IXw0KPiA+ICsNCj4g
PiArI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIFJFU1RPT0xf
SU9DVExfVFlQRSAgICdSJw0KPiA+ICsNCj4gPiArI2RlZmluZSBSRVNUT09MX0RQUkNfU1lOQyBc
DQo+ID4gKyAgICAgX0lPKFJFU1RPT0xfSU9DVExfVFlQRSwgMHgyKQ0KPiA+ICsNCj4gPiArI2Rl
ZmluZSBSRVNUT09MX1NFTkRfTUNfQ09NTUFORCBcDQo+ID4gKyAgICAgX0lPV1IoUkVTVE9PTF9J
T0NUTF9UWVBFLCAweDQsIHN0cnVjdCBtY19jb21tYW5kKQ0KPiANCj4gTG9vayBhdCBEb2N1bWVu
dGF0aW9uL2lvY3RsL2lvY3RsLW51bWJlci50eHQgYW5kIHJlc2VydmUgYSByYW5nZSB3aXRoaW4g
J1InDQo+IHRoYXQgZG9lc24ndCBjb25mbGljdC4NCj4gDQo+IEFkZCB0aG9yb3VnaCBkb2N1bWVu
dGF0aW9uIG9mIHRoaXMgQVBJLg0KDQpXaGF0IHBhdGggZG8geW91IHJlY29tbWVuZCBtZSB0byBw
dXQgZG9jdW1lbnRhdGlvbiBvZiB0aGlzIEFQST8NCg0KPiANCj4gSSdtIG5vdCBzdXJlIGhvdyBp
dCdzIHVzdWFsbHkgaGFuZGxlZCB3aXRoIHN0YWdpbmcgZHJpdmVycywgYnV0IGV2ZW50dWFsbHkg
dGhpcw0KPiB3aWxsIG5lZWQgdG8gbW92ZSB0byBhbiBhcHByb3ByaWF0ZSB1YXBpIGhlYWRlci4g
IElzIHRoaXMgZnVuY3Rpb25hbGl0eSBldmVuDQo+IG5lZWRlZCBiZWZvcmUgdGhlIGRyaXZlciBj
b21lcyBvdXQgb2Ygc3RhZ2luZz8gIEkgZG9uJ3Qgc2VlICJ1c2Vyc3BhY2UgcmVzdG9vbA0KPiBz
dXBwb3J0IiBpbiBkcml2ZXJzL3N0YWdpbmcvZnNsLW1jL1RPRE8uDQo+IA0KPiBEb24ndCByZWZl
cmVuY2Ugc3RydWN0IG1jX2NvbW1hbmQgd2l0aG91dCBpbmNsdWRpbmcgdGhlIGhlYWRlciB0aGF0
IGRlZmluZXMNCj4gaXQuDQo+IA0KPiA+ICsjZW5kaWYgLyogX0ZTTF9NQ19JT0NUTF9IXyAqLw0K
PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnNsLW1jL2J1cy9tYy1yZXN0b29sLmMN
Cj4gPiBiL2RyaXZlcnMvc3RhZ2luZy9mc2wtIG1jL2J1cy9tYy1yZXN0b29sLmMgbmV3IGZpbGUg
bW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwLi5hMjE5MTcyDQo+ID4gLS0tIC9kZXYvbnVs
bA0KPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL21jLXJlc3Rvb2wuYw0KPiA+
IEBAIC0wLDAgKzEsNDg4IEBADQo+ID4gKy8qDQo+ID4gKyAqIEZyZWVzY2FsZSBNYW5hZ2VtZW50
IENvbXBsZXggKE1DKSByZXN0b29sIGRyaXZlcg0KPiA+ICsgKg0KPiA+ICsgKiBDb3B5cmlnaHQg
KEMpIDIwMTQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4NCj4gPiArICogQXV0aG9yOiBM
aWp1biBQYW4gPExpanVuLlBhbkBmcmVlc2NhbGUuY29tPg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlz
IGZpbGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs
aWMNCj4gPiArICogTGljZW5zZSB2ZXJzaW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAi
YXMgaXMiIHdpdGhvdXQgYW55DQo+ID4gKyAqIHdhcnJhbnR5IG9mIGFueSBraW5kLCB3aGV0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSAiLi4v
aW5jbHVkZS9tYy1wcml2YXRlLmgiDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4g
PiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9taXNjZGV2aWNl
Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tbS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvc2xh
Yi5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu
dXgvbXV0ZXguaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiA+
ICsjaW5jbHVkZSAibWMtaW9jdGwuaCINCj4gPiArI2luY2x1ZGUgIi4uL2luY2x1ZGUvbWMtc3lz
LmgiDQo+ID4gKyNpbmNsdWRlICIuLi9pbmNsdWRlL21jLWNtZC5oIg0KPiA+ICsjaW5jbHVkZSAi
Li4vaW5jbHVkZS9kcG1uZy5oIg0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIE1heGltdW0gbnVt
YmVyIG9mIERQUkNzIHRoYXQgY2FuIGJlIG9wZW5lZCBhdCB0aGUgc2FtZSB0aW1lICAqLw0KPiA+
ICsjZGVmaW5lIE1BWF9EUFJDX0hBTkRMRVMgICAgICAgICA2NA0KPiA+ICsNCj4gPiArLyoqDQo+
ID4gKyAqIHJlc3Rvb2xfbWlzYyAtIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmV3
bHkgYWRkZWQNCj4gPiArbWlzY2RldmljZQ0KPiA+ICsgKiBAbWlzYzogbmV3bHkgY3JlYXRlZCBt
aXNjZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCByb290IGRwcmMNCj4gPiArICogQG1pc2NkZXZ0OiBk
ZXZpY2UgaWQgb2YgdGhpcyBtaXNjZGV2aWNlDQo+ID4gKyAqIEBsaXN0OiBhIGxpbmtlZCBsaXN0
IG5vZGUgcmVwcmVzZW50aW5nIHRoaXMgbWlzY2RldmNpZQ0KPiA+ICsgKiBAc3RhdGljX21jX2lv
OiBwb2ludGVyIHRvIHRoZSBzdGF0aWMgTUMgSS9PIG9iamVjdCB1c2VkIGJ5IHRoZQ0KPiA+ICty
ZXN0b29sDQo+ID4gKyAqIEBkeW5hbWljX2luc3RhbmNlX2NvdW50OiBudW1iZXIgb2YgZHluYW1p
Y2FsbHkgY3JlYXRlZCBpbnN0YW5jZXMNCj4gPiArICogQHN0YXRpY19pbnN0YW5jZV9pbl91c2U6
IHN0YXRpYyBpbnN0YW5jZSBpcyBpbiB1c2Ugb3Igbm90DQo+ID4gKyAqIEBtdXRleDogbXV0ZXgg
bG9jayB0byBzZXJpYWx6ZSB0aGUgb3BlcmF0aW9ucw0KPiA+ICsgKiBAZGV2OiByb290IGRwcmMg
YXNzb2NpYXRlZCB3aXRoIHRoaXMgbWlzY2RldmljZSAgKi8gc3RydWN0DQo+ID4gK3Jlc3Rvb2xf
bWlzYyB7DQo+ID4gKyAgICAgc3RydWN0IG1pc2NkZXZpY2UgbWlzYzsNCj4gPiArICAgICBkZXZf
dCBtaXNjZGV2dDsNCj4gPiArICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7DQo+ID4gKyAgICAg
c3RydWN0IGZzbF9tY19pbyAqc3RhdGljX21jX2lvOw0KPiA+ICsgICAgIHVpbnQzMl90IGR5bmFt
aWNfaW5zdGFuY2VfY291bnQ7DQo+ID4gKyAgICAgYm9vbCBzdGF0aWNfaW5zdGFuY2VfaW5fdXNl
Ow0KPiA+ICsgICAgIHN0cnVjdCBtdXRleCBtdXRleDsNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNl
ICpkZXY7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKg0KPiA+ICsgKiBpbml0aWFsaXplIGEgZ2xv
YmFsIGxpc3QgdG8gbGluayBhbGwNCj4gPiArICogdGhlIG1pc2NkZXZpY2Ugbm9kZXMgKHN0cnVj
dCByZXN0b29sX21pc2MpICAqLw0KPiA+ICtMSVNUX0hFQUQobWlzY19saXN0KTsNCj4gDQo+IHN0
YXRpYw0KPiANCj4gPiArc3RhdGljIGludCBmc2xfbWNfcmVzdG9vbF9kZXZfb3BlbihzdHJ1Y3Qg
aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZQ0KPiA+ICsqZmlsZXApIHsNCj4gPiArICAgICBzdHJ1
Y3QgZnNsX21jX2RldmljZSAqcm9vdF9tY19kZXY7DQo+ID4gKyAgICAgaW50IGVycm9yID0gMDsN
Cj4gPiArICAgICBzdHJ1Y3QgZnNsX21jX2lvICpkeW5hbWljX21jX2lvID0gTlVMTDsNCj4gPiAr
ICAgICBzdHJ1Y3QgcmVzdG9vbF9taXNjICpyZXN0b29sX21pc2M7DQo+ID4gKyAgICAgc3RydWN0
IHJlc3Rvb2xfbWlzYyAqcmVzdG9vbF9taXNjX2N1cnNvcjsNCj4gPiArDQo+ID4gKyAgICAgcHJf
ZGVidWcoIiVzOiBpbm9kZSdzIGRldl90ID09ICV1XG4iLCBfX2Z1bmNfXywgaW5vZGUtPmlfcmRl
dik7DQo+ID4gKw0KPiA+ICsgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkocmVzdG9vbF9taXNjX2N1
cnNvciwgJm1pc2NfbGlzdCwgbGlzdCkgew0KPiA+ICsgICAgICAgICAgICAgaWYgKHJlc3Rvb2xf
bWlzY19jdXJzb3ItPm1pc2NkZXZ0ID09IGlub2RlLT5pX3JkZXYpIHsNCj4gPiArICAgICAgICAg
ICAgICAgICAgICAgcHJfZGVidWcoIiVzOiBGb3VuZCB0aGUgcmVzdG9vbF9taXNjXG4iLCBfX2Z1
bmNfXyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJlc3Rvb2xfbWlzYyA9IHJlc3Rvb2xf
bWlzY19jdXJzb3I7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAg
ICAgICAgICAgfQ0KPiA+ICsgICAgIH0NCj4gDQo+IE5vIHN5bmNocm9uaXphdGlvbiBvbiB0aGUg
bGlzdD8NCj4gDQo+ID4gKw0KPiA+ICsgICAgIGlmICghcmVzdG9vbF9taXNjKQ0KPiA+ICsgICAg
ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsgICAgIGlmIChXQVJOX09OKHJl
c3Rvb2xfbWlzYy0+ZGV2ID09IE5VTEwpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5W
QUw7DQo+ID4gKw0KPiA+ICsgICAgIG11dGV4X2xvY2soJnJlc3Rvb2xfbWlzYy0+bXV0ZXgpOw0K
PiA+ICsNCj4gPiArICAgICBpZiAoIXJlc3Rvb2xfbWlzYy0+c3RhdGljX2luc3RhbmNlX2luX3Vz
ZSkgew0KPiA+ICsgICAgICAgICAgICAgcmVzdG9vbF9taXNjLT5zdGF0aWNfaW5zdGFuY2VfaW5f
dXNlID0gdHJ1ZTsNCj4gPiArICAgICAgICAgICAgIGZpbGVwLT5wcml2YXRlX2RhdGEgPSByZXN0
b29sX21pc2MtPnN0YXRpY19tY19pbzsNCj4gPiArICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAg
ICAgICAgZHluYW1pY19tY19pbyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBmc2xfbWNfaW8pLCBH
RlBfS0VSTkVMKTsNCj4gPiArICAgICAgICAgICAgIGlmIChkeW5hbWljX21jX2lvID09IE5VTEwp
IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAtRU5PTUVNOw0KPiA+ICsgICAg
ICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsN
Cj4gPiArICAgICAgICAgICAgIHJvb3RfbWNfZGV2ID0gdG9fZnNsX21jX2RldmljZShyZXN0b29s
X21pc2MtPmRldik7DQo+ID4gKyAgICAgICAgICAgICBlcnJvciA9IGZzbF9tY19wb3J0YWxfYWxs
b2NhdGUocm9vdF9tY19kZXYsIDAsICZkeW5hbWljX21jX2lvKTsNCj4gPiArICAgICAgICAgICAg
IGlmIChlcnJvciA8IDApIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcHJfZXJyKCJOb3Qg
YWJsZSB0byBhbGxvY2F0ZSBNQyBwb3J0YWxcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg
ICBnb3RvIGVycm9yOw0KPiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgKyty
ZXN0b29sX21pc2MtPmR5bmFtaWNfaW5zdGFuY2VfY291bnQ7DQo+ID4gKyAgICAgICAgICAgICBm
aWxlcC0+cHJpdmF0ZV9kYXRhID0gZHluYW1pY19tY19pbzsNCj4gPiArICAgICB9DQo+IA0KPiBX
aHkgaXMgdGhlIGZpcnN0IHVzZXIgaGFuZGxlZCBkaWZmZXJlbnRseSBmcm9tIHN1YnNlcXVlbnQg
dXNlcnM/ICBEb2VzIGVhY2gNCj4gdXNlciByZWFsbHkgbmVlZCBpdHMgb3duIHBvcnRhbCwgb3Ig
Y2FuIHlvdSBqdXN0IHN5bmNocm9uaXplIGFjY2Vzcz8NCg0KRmlyc3QgdXNlciBnZXQgdGhlIHN0
YXRpY2FsbHkgYWxsb2NhdGVkIHBvcnRhbC4NClNlY29uZCB1c2VyIG5lZWQgdG8gZHluYW1pY2Fs
bHkgYWxsb2NhdGUgb25lLg0KU29tZSBvcGVyYXRpb25zIG1heSB0YWtlIGEgbG9uZyB0aW1lIChz
YXkgMSBzZWNvbmQpIGluIE1DIG9iamVjdCBjcmVhdGlvbi4NCkluIG9yZGVyIHRvIHN1cHBvcnQg
YXN5bmNocm9ub3VzIHBvcnRhbCBvcGVyYXRpb24sIA0KV2UgYWxsb2NhdGUgcG9ydGFsIGZvciBl
YWNoIHVzZXIuDQoNCkxpanVuDQoNCj4gDQo+IC1TY290dA0KDQo=
--
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]


#1259619

FromLijun Pan <Lijun.Pan@freescale.com>
Date2015-10-30 17:50 +0100
Message-ID<qpl2i-8b8-19@gated-at.bofh.it>
In reply to#1256464
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGFuIExpanVuLUI0NDMw
Ng0KPiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAyOSwgMjAxNSA2OjU1IFBNDQo+IFRvOiBXb29k
IFNjb3R0LUIwNzQyMSA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+DQo+IENjOiBncmVna2hAbGlu
dXhmb3VuZGF0aW9uLm9yZzsgYXJuZEBhcm5kYi5kZTsgZGV2ZWxAZHJpdmVyZGV2Lm9zdW9zbC5v
cmc7DQo+IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IFlvZGVyIFN0dWFydC1CMDgyNDgN
Cj4gPHN0dWFydC55b2RlckBmcmVlc2NhbGUuY29tPjsga2F0eiBJdGFpLVJNMDUyMDIgPGl0YWku
a2F0ekBmcmVlc2NhbGUuY29tPjsNCj4gUml2ZXJhIEpvc2UtQjQ2NDgyIDxHZXJtYW4uUml2ZXJh
QGZyZWVzY2FsZS5jb20+OyBMaSBZYW5nLUxlby1SNTg0NzINCj4gPExlb0xpQGZyZWVzY2FsZS5j
b20+OyBhZ3JhZkBzdXNlLmRlOyBIYW1jaXVjIEJvZ2Rhbi1CSEFNQ0lVMQ0KPiA8YmhhbWNpdTFA
ZnJlZXNjYWxlLmNvbT47IE1hcmdpbmVhbiBBbGV4YW5kcnUtUjg5MjQzDQo+IDxSODkyNDNAZnJl
ZXNjYWxlLmNvbT47IFNoYXJtYSBCaHVwZXNoLUI0NTM3MA0KPiA8Ymh1cGVzaC5zaGFybWFAZnJl
ZXNjYWxlLmNvbT47IEVyZXogTmlyLVJNMzA3OTQNCj4gPG5pci5lcmV6QGZyZWVzY2FsZS5jb20+
OyBTY2htaXR0IFJpY2hhcmQtQjQzMDgyDQo+IDxyaWNoYXJkLnNjaG1pdHRAZnJlZXNjYWxlLmNv
bT47IGRhbi5jYXJwZW50ZXJAb3JhY2xlLmNvbQ0KPiBTdWJqZWN0OiBSRTogW1BBVENIIDUvNV0g
c3RhZ2luZzogZnNsLW1jOiBNYW5hZ2VtZW50IENvbXBsZXggcmVzdG9vbCBkcml2ZXINCj4gDQo+
IA0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFdvb2QgU2Nv
dHQtQjA3NDIxDQo+ID4gU2VudDogVHVlc2RheSwgT2N0b2JlciAyNywgMjAxNSAxMjoxNyBBTQ0K
PiA+IFRvOiBQYW4gTGlqdW4tQjQ0MzA2IDxMaWp1bi5QYW5AZnJlZXNjYWxlLmNvbT4NCj4gPiBD
YzogZ3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc7IGFybmRAYXJuZGIuZGU7DQo+ID4gZGV2ZWxA
ZHJpdmVyZGV2Lm9zdW9zbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IFlvZGVy
DQo+ID4gU3R1YXJ0LUIwODI0OCA8c3R1YXJ0LnlvZGVyQGZyZWVzY2FsZS5jb20+OyBrYXR6IEl0
YWktUk0wNTIwMg0KPiA+IDxpdGFpLmthdHpAZnJlZXNjYWxlLmNvbT47IFJpdmVyYSBKb3NlLUI0
NjQ4Mg0KPiA+IDxHZXJtYW4uUml2ZXJhQGZyZWVzY2FsZS5jb20+OyBMaSBZYW5nLUxlby1SNTg0
NzINCj4gPiA8TGVvTGlAZnJlZXNjYWxlLmNvbT47IGFncmFmQHN1c2UuZGU7IEhhbWNpdWMgQm9n
ZGFuLUJIQU1DSVUxDQo+ID4gPGJoYW1jaXUxQGZyZWVzY2FsZS5jb20+OyBNYXJnaW5lYW4gQWxl
eGFuZHJ1LVI4OTI0Mw0KPiA+IDxSODkyNDNAZnJlZXNjYWxlLmNvbT47IFNoYXJtYSBCaHVwZXNo
LUI0NTM3MA0KPiA+IDxiaHVwZXNoLnNoYXJtYUBmcmVlc2NhbGUuY29tPjsgRXJleiBOaXItUk0z
MDc5NA0KPiA+IDxuaXIuZXJlekBmcmVlc2NhbGUuY29tPjsgU2NobWl0dCBSaWNoYXJkLUI0MzA4
Mg0KPiA+IDxyaWNoYXJkLnNjaG1pdHRAZnJlZXNjYWxlLmNvbT47IGRhbi5jYXJwZW50ZXJAb3Jh
Y2xlLmNvbQ0KPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggNS81XSBzdGFnaW5nOiBmc2wtbWM6IE1h
bmFnZW1lbnQgQ29tcGxleCByZXN0b29sDQo+ID4gZHJpdmVyDQo+ID4NCj4gPiBPbiBTdW4sIDIw
MTUtMTAtMjUgYXQgMTc6NDEgLTA1MDAsIExpanVuIFBhbiB3cm90ZToNCj4gPiA+IFRoZSBrZXJu
ZWwgc3VwcG9ydCBmb3IgdGhlIHJlc3Rvb2wgKGEgdXNlciBzcGFjZSByZXNvdXJjZSBtYW5hZ2Vt
ZW50DQo+ID4gPiB0b29sKSBpcyBhIGRyaXZlciBmb3IgdGhlIC9kZXYvZHByYy5OIGRldmljZSBm
aWxlLg0KPiA+ID4gSXRzIHB1cnBvc2UgaXMgdG8gcHJvdmlkZSBhbiBpb2N0bCBpbnRlcmZhY2Us
IHdoaWNoIHRoZSByZXN0b29sIHVzZXMNCj4gPiA+IHRvIGludGVyYWN0IHdpdGggdGhlIE1DIGJ1
cyBkcml2ZXIgYW5kIHdpdGggdGhlIE1DIGZpcm13YXJlLg0KPiA+ID4gV2UgYWxsb2NhdGUgYSBk
cG1jcCBhdCBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIGFuZCBrZWVwIHRoYXQgZHBtY3ANCj4gPiA+
IHVudGlsIGRyaXZlciBleGl0Lg0KPiA+ID4gV2UgdXNlIHRoYXQgZHBtY3AgYnkgZGVmYXVsdC4N
Cj4gPiA+IElmIHRoYXQgZHBtY3AgaXMgaW4gdXNlLCB3ZSBjcmVhdGUgYW5vdGhlciBwb3J0YWwg
YXQgcnVuIHRpbWUgYW5kDQo+ID4gPiBkZXN0cm95IHRoZSBuZXdseSBjcmVhdGVkIHBvcnRhbCBh
ZnRlciB1c2UuDQo+ID4gPiBUaGUgaW9jdGwgUkVTVE9PTF9TRU5EX01DX0NPTU1BTkQgc2VuZHMg
dXNlciBzcGFjZSBjb21tYW5kIHRvDQo+IGZzbC0NCj4gPiBtYw0KPiA+ID4gYnVzIGFuZCB1dGls
aXplcyB0aGUgZnNsLW1jIGJ1cyB0byBjb21tdW5pY2F0ZSB3aXRoIE1DIGZpcm13YXJlLg0KPiA+
ID4gVGhlIGlvY3RsIFJFU1RPT0xfRFBSQ19TWU5DIHJlcXVlc3QgdGhlIG1jLWJ1cyBsYXVuY2gg
b2JqZWN0cyBzY2FuDQo+ID4gPiB1bmRlciByb290IGRwcmMuDQo+ID4gPiBJbiBvcmRlciB0byBz
dXBwb3J0IG11bHRpcGxlIHJvb3QgZHByYywgd2UgdXRpbGl6ZSB0aGUgYnVzIG5vdGlmeQ0KPiA+
ID4gbWVjaGFuaXNtIHRvIHNjYW4gZnNsX21jX2J1c190eXBlIGZvciB0aGUgbmV3bHkgYWRkZWQg
cm9vdCBkcHJjLg0KPiA+ID4gQWZ0ZXIgZGlzY292ZXJpbmcgdGhlIHJvb3QgZHByYywgaXQgY3Jl
YXRlcyBhIG1pc2NkZXZpY2UgL2Rldi9kcHJjLk4NCj4gPiA+IHRvIGFzc29jaWF0ZSB3aXRoIHRo
aXMgcm9vdCBkcHJjLg0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IExpanVuIFBhbiA8TGlq
dW4uUGFuQGZyZWVzY2FsZS5jb20+DQo+ID4gPiAtLS0NCj4gPiA+ICBkcml2ZXJzL3N0YWdpbmcv
ZnNsLW1jL2J1cy9LY29uZmlnICAgICAgfCAgIDcgKy0NCj4gPiA+ICBkcml2ZXJzL3N0YWdpbmcv
ZnNsLW1jL2J1cy9NYWtlZmlsZSAgICAgfCAgIDMgKw0KPiA+ID4gIGRyaXZlcnMvc3RhZ2luZy9m
c2wtbWMvYnVzL21jLWlvY3RsLmggICB8ICAyNCArKw0KPiA+ID4gIGRyaXZlcnMvc3RhZ2luZy9m
c2wtbWMvYnVzL21jLXJlc3Rvb2wuYyB8IDQ4OA0KPiA+ID4gKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysNCj4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDUyMSBpbnNlcnRpb25zKCspLCAx
IGRlbGV0aW9uKC0pICBjcmVhdGUgbW9kZQ0KPiA+ID4gMTAwNjQ0IGRyaXZlcnMvc3RhZ2luZy9m
c2wtbWMvYnVzL21jLWlvY3RsLmgNCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9z
dGFnaW5nL2ZzbC1tYy9idXMvbWMtcmVzdG9vbC5jDQo+ID4gPg0KPiA+ID4gZGlmZiAtLWdpdCBh
L2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL0tjb25maWcNCj4gPiA+IGIvZHJpdmVycy9zdGFn
aW5nL2ZzbC0gbWMvYnVzL0tjb25maWcgaW5kZXggMGQ3NzlkOS4uMzljNmVmOSAxMDA2NDQNCj4g
PiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL0tjb25maWcNCj4gPiA+ICsrKyBi
L2RyaXZlcnMvc3RhZ2luZy9mc2wtbWMvYnVzL0tjb25maWcNCj4gPiA+IEBAIC0yMSw0ICsyMSw5
IEBAIGNvbmZpZyBGU0xfTUNfQlVTDQo+ID4gPiAgICAgICAgIE9ubHkgZW5hYmxlIHRoaXMgb3B0
aW9uIHdoZW4gYnVpbGRpbmcgdGhlIGtlcm5lbCBmb3INCj4gPiA+ICAgICAgICAgRnJlZXNjYWxl
IFFvclFJUSBMUzJ4eHh4IFNvQ3MuDQo+ID4gPg0KPiA+ID4gLQ0KPiA+ID4gK2NvbmZpZyBGU0xf
TUNfUkVTVE9PTA0KPiA+ID4gKyAgICAgICAgdHJpc3RhdGUgIkZyZWVzY2FsZSBNYW5hZ2VtZW50
IENvbXBsZXggKE1DKSByZXN0b29sIGRyaXZlciINCj4gPiA+ICsgICAgICAgIGRlcGVuZHMgb24g
RlNMX01DX0JVUw0KPiA+ID4gKyAgICAgICAgaGVscA0KPiA+ID4gKyAgICAgICAgICBEcml2ZXIg
dGhhdCBwcm92aWRlcyBrZXJuZWwgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBNYW5hZ2VtZW50
DQo+ID4gPiArICAgICAgIENvbXBsZXggcmVzb3VyY2UgbWFuYWdlciB1c2VyLXNwYWNlIHRvb2wu
DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvTWFrZWZpbGUN
Cj4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL2ZzbC0gbWMvYnVzL01ha2VmaWxlIGluZGV4IDI1NDMz
YTkuLjI4YjVmYzAgMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnNsLW1jL2J1
cy9NYWtlZmlsZQ0KPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvTWFrZWZp
bGUNCj4gPiA+IEBAIC0xNSwzICsxNSw2IEBAIG1jLWJ1cy1kcml2ZXItb2JqcyA6PSBtYy1idXMu
byBcDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgIG1jLWFsbG9jYXRvci5vIFwNCj4gPiA+ICAg
ICAgICAgICAgICAgICAgICAgZHBtY3AubyBcDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgIGRw
YnAubw0KPiA+ID4gKw0KPiA+ID4gKyMgTUMgcmVzdG9vbCBrZXJuZWwgc3VwcG9ydA0KPiA+ID4g
K29iai0kKENPTkZJR19GU0xfTUNfUkVTVE9PTCkgKz0gbWMtcmVzdG9vbC5vDQo+ID4gPiBkaWZm
IC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvbWMtaW9jdGwuaA0KPiA+ID4gYi9k
cml2ZXJzL3N0YWdpbmcvZnNsLSBtYy9idXMvbWMtaW9jdGwuaCBuZXcgZmlsZSBtb2RlIDEwMDY0
NCBpbmRleA0KPiA+ID4gMDAwMDAwMC4uZTUyZjkwNw0KPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+
ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvbWMtaW9jdGwuaA0KPiA+ID4gQEAg
LTAsMCArMSwyNCBAQA0KPiA+ID4gKy8qDQo+ID4gPiArICogRnJlZXNjYWxlIE1hbmFnZW1lbnQg
Q29tcGxleCAoTUMpIGlvY2x0IGludGVyZmFjZQ0KPiA+DQo+ID4gaW9jdGwNCj4gPg0KPiA+ID4g
KyAqDQo+ID4gPiArICogQ29weXJpZ2h0IChDKSAyMDE0IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9y
LCBJbmMuDQo+ID4gPiArICogQXV0aG9yOiBMaWp1biBQYW4gPExpanVuLlBhbkBmcmVlc2NhbGUu
Y29tPg0KPiA+ID4gKyAqDQo+ID4gPiArICogVGhpcyBmaWxlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQo+ID4gPiArICogTGljZW5zZSB2ZXJz
aW9uIDIuIFRoaXMgcHJvZ3JhbSBpcyBsaWNlbnNlZCAiYXMgaXMiIHdpdGhvdXQgYW55DQo+ID4g
PiArICogd2FycmFudHkgb2YgYW55IGtpbmQsIHdoZXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0K
PiA+ID4gKyAqLw0KPiA+ID4gKyNpZm5kZWYgX0ZTTF9NQ19JT0NUTF9IXw0KPiA+ID4gKyNkZWZp
bmUgX0ZTTF9NQ19JT0NUTF9IXw0KPiA+ID4gKw0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9pb2N0
bC5oPg0KPiA+ID4gKw0KPiA+ID4gKyNkZWZpbmUgUkVTVE9PTF9JT0NUTF9UWVBFICAgJ1InDQo+
ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRVNUT09MX0RQUkNfU1lOQyBcDQo+ID4gPiArICAgICBf
SU8oUkVTVE9PTF9JT0NUTF9UWVBFLCAweDIpDQo+ID4gPiArDQo+ID4gPiArI2RlZmluZSBSRVNU
T09MX1NFTkRfTUNfQ09NTUFORCBcDQo+ID4gPiArICAgICBfSU9XUihSRVNUT09MX0lPQ1RMX1RZ
UEUsIDB4NCwgc3RydWN0IG1jX2NvbW1hbmQpDQo+ID4NCj4gPiBMb29rIGF0IERvY3VtZW50YXRp
b24vaW9jdGwvaW9jdGwtbnVtYmVyLnR4dCBhbmQgcmVzZXJ2ZSBhIHJhbmdlIHdpdGhpbiAnUicN
Cj4gPiB0aGF0IGRvZXNuJ3QgY29uZmxpY3QuDQo+ID4NCj4gPiBBZGQgdGhvcm91Z2ggZG9jdW1l
bnRhdGlvbiBvZiB0aGlzIEFQSS4NCj4gDQo+IFdoYXQgcGF0aCBkbyB5b3UgcmVjb21tZW5kIG1l
IHRvIHB1dCBkb2N1bWVudGF0aW9uIG9mIHRoaXMgQVBJPw0KDQpJcyBEb2N1bWVudGF0aW9uL21p
c2MtZGV2aWNlcy9tYy1yZXN0b29sLnR4dCB0aGUgY29ycmVjdCBsb2NhdGlvbj8gDQoNCj4gPg0K
PiA+IEknbSBub3Qgc3VyZSBob3cgaXQncyB1c3VhbGx5IGhhbmRsZWQgd2l0aCBzdGFnaW5nIGRy
aXZlcnMsIGJ1dA0KPiA+IGV2ZW50dWFsbHkgdGhpcyB3aWxsIG5lZWQgdG8gbW92ZSB0byBhbiBh
cHByb3ByaWF0ZSB1YXBpIGhlYWRlci4gIElzDQo+ID4gdGhpcyBmdW5jdGlvbmFsaXR5IGV2ZW4g
bmVlZGVkIGJlZm9yZSB0aGUgZHJpdmVyIGNvbWVzIG91dCBvZiBzdGFnaW5nPw0KPiA+IEkgZG9u
J3Qgc2VlICJ1c2Vyc3BhY2UgcmVzdG9vbCBzdXBwb3J0IiBpbiBkcml2ZXJzL3N0YWdpbmcvZnNs
LW1jL1RPRE8uDQo+ID4NCj4gPiBEb24ndCByZWZlcmVuY2Ugc3RydWN0IG1jX2NvbW1hbmQgd2l0
aG91dCBpbmNsdWRpbmcgdGhlIGhlYWRlciB0aGF0DQo+ID4gZGVmaW5lcyBpdC4NCj4gPg0KPiA+
ID4gKyNlbmRpZiAvKiBfRlNMX01DX0lPQ1RMX0hfICovDQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp
dmVycy9zdGFnaW5nL2ZzbC1tYy9idXMvbWMtcmVzdG9vbC5jDQo+ID4gPiBiL2RyaXZlcnMvc3Rh
Z2luZy9mc2wtIG1jL2J1cy9tYy1yZXN0b29sLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiA+
IGluZGV4DQo+ID4gPiAwMDAwMDAwLi5hMjE5MTcyDQo+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4g
PiArKysgYi9kcml2ZXJzL3N0YWdpbmcvZnNsLW1jL2J1cy9tYy1yZXN0b29sLmMNCj4gPiA+IEBA
IC0wLDAgKzEsNDg4IEBADQo+ID4gPiArLyoNCj4gPiA+ICsgKiBGcmVlc2NhbGUgTWFuYWdlbWVu
dCBDb21wbGV4IChNQykgcmVzdG9vbCBkcml2ZXINCj4gPiA+ICsgKg0KPiA+ID4gKyAqIENvcHly
aWdodCAoQykgMjAxNCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLg0KPiA+ID4gKyAqIEF1
dGhvcjogTGlqdW4gUGFuIDxMaWp1bi5QYW5AZnJlZXNjYWxlLmNvbT4NCj4gPiA+ICsgKg0KPiA+
ID4gKyAqIFRoaXMgZmlsZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYw0KPiA+ID4gKyAqIExpY2Vuc2UgdmVyc2lvbiAyLiBUaGlzIHByb2dyYW0g
aXMgbGljZW5zZWQgImFzIGlzIiB3aXRob3V0IGFueQ0KPiA+ID4gKyAqIHdhcnJhbnR5IG9mIGFu
eSBraW5kLCB3aGV0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCj4gPiA+ICsgKi8NCj4gPiA+ICsN
Cj4gPiA+ICsjaW5jbHVkZSAiLi4vaW5jbHVkZS9tYy1wcml2YXRlLmgiDQo+ID4gPiArI2luY2x1
ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPg0KPiA+ID4g
KyNpbmNsdWRlIDxsaW51eC9taXNjZGV2aWNlLmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L21t
Lmg+DQo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCj4gPiA+ICsjaW5jbHVkZSA8bGlu
dXgvdWFjY2Vzcy5oPg0KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPg0KPiA+ID4gKyNp
bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4gPiA+ICsjaW5jbHVkZSAibWMtaW9j
dGwuaCINCj4gPiA+ICsjaW5jbHVkZSAiLi4vaW5jbHVkZS9tYy1zeXMuaCINCj4gPiA+ICsjaW5j
bHVkZSAiLi4vaW5jbHVkZS9tYy1jbWQuaCINCj4gPiA+ICsjaW5jbHVkZSAiLi4vaW5jbHVkZS9k
cG1uZy5oIg0KPiA+ID4gKw0KPiA+ID4gKy8qKg0KPiA+ID4gKyAqIE1heGltdW0gbnVtYmVyIG9m
IERQUkNzIHRoYXQgY2FuIGJlIG9wZW5lZCBhdCB0aGUgc2FtZSB0aW1lICAqLw0KPiA+ID4gKyNk
ZWZpbmUgTUFYX0RQUkNfSEFORExFUyAgICAgICAgIDY0DQo+ID4gPiArDQo+ID4gPiArLyoqDQo+
ID4gPiArICogcmVzdG9vbF9taXNjIC0gaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBu
ZXdseSBhZGRlZA0KPiA+ID4gK21pc2NkZXZpY2UNCj4gPiA+ICsgKiBAbWlzYzogbmV3bHkgY3Jl
YXRlZCBtaXNjZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCByb290IGRwcmMNCj4gPiA+ICsgKiBAbWlz
Y2RldnQ6IGRldmljZSBpZCBvZiB0aGlzIG1pc2NkZXZpY2UNCj4gPiA+ICsgKiBAbGlzdDogYSBs
aW5rZWQgbGlzdCBub2RlIHJlcHJlc2VudGluZyB0aGlzIG1pc2NkZXZjaWUNCj4gPiA+ICsgKiBA
c3RhdGljX21jX2lvOiBwb2ludGVyIHRvIHRoZSBzdGF0aWMgTUMgSS9PIG9iamVjdCB1c2VkIGJ5
IHRoZQ0KPiA+ID4gK3Jlc3Rvb2wNCj4gPiA+ICsgKiBAZHluYW1pY19pbnN0YW5jZV9jb3VudDog
bnVtYmVyIG9mIGR5bmFtaWNhbGx5IGNyZWF0ZWQgaW5zdGFuY2VzDQo+ID4gPiArICogQHN0YXRp
Y19pbnN0YW5jZV9pbl91c2U6IHN0YXRpYyBpbnN0YW5jZSBpcyBpbiB1c2Ugb3Igbm90DQo+ID4g
PiArICogQG11dGV4OiBtdXRleCBsb2NrIHRvIHNlcmlhbHplIHRoZSBvcGVyYXRpb25zDQo+ID4g
PiArICogQGRldjogcm9vdCBkcHJjIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG1pc2NkZXZpY2UgICov
IHN0cnVjdA0KPiA+ID4gK3Jlc3Rvb2xfbWlzYyB7DQo+ID4gPiArICAgICBzdHJ1Y3QgbWlzY2Rl
dmljZSBtaXNjOw0KPiA+ID4gKyAgICAgZGV2X3QgbWlzY2RldnQ7DQo+ID4gPiArICAgICBzdHJ1
Y3QgbGlzdF9oZWFkIGxpc3Q7DQo+ID4gPiArICAgICBzdHJ1Y3QgZnNsX21jX2lvICpzdGF0aWNf
bWNfaW87DQo+ID4gPiArICAgICB1aW50MzJfdCBkeW5hbWljX2luc3RhbmNlX2NvdW50Ow0KPiA+
ID4gKyAgICAgYm9vbCBzdGF0aWNfaW5zdGFuY2VfaW5fdXNlOw0KPiA+ID4gKyAgICAgc3RydWN0
IG11dGV4IG11dGV4Ow0KPiA+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2Ow0KPiA+ID4gK307
DQo+ID4gPiArDQo+ID4gPiArLyoNCj4gPiA+ICsgKiBpbml0aWFsaXplIGEgZ2xvYmFsIGxpc3Qg
dG8gbGluayBhbGwNCj4gPiA+ICsgKiB0aGUgbWlzY2RldmljZSBub2RlcyAoc3RydWN0IHJlc3Rv
b2xfbWlzYykgICovDQo+ID4gPiArTElTVF9IRUFEKG1pc2NfbGlzdCk7DQo+ID4NCj4gPiBzdGF0
aWMNCj4gPg0KPiA+ID4gK3N0YXRpYyBpbnQgZnNsX21jX3Jlc3Rvb2xfZGV2X29wZW4oc3RydWN0
IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUNCj4gPiA+ICsqZmlsZXApIHsNCj4gPiA+ICsgICAg
IHN0cnVjdCBmc2xfbWNfZGV2aWNlICpyb290X21jX2RldjsNCj4gPiA+ICsgICAgIGludCBlcnJv
ciA9IDA7DQo+ID4gPiArICAgICBzdHJ1Y3QgZnNsX21jX2lvICpkeW5hbWljX21jX2lvID0gTlVM
TDsNCj4gPiA+ICsgICAgIHN0cnVjdCByZXN0b29sX21pc2MgKnJlc3Rvb2xfbWlzYzsNCj4gPiA+
ICsgICAgIHN0cnVjdCByZXN0b29sX21pc2MgKnJlc3Rvb2xfbWlzY19jdXJzb3I7DQo+ID4gPiAr
DQo+ID4gPiArICAgICBwcl9kZWJ1ZygiJXM6IGlub2RlJ3MgZGV2X3QgPT0gJXVcbiIsIF9fZnVu
Y19fLA0KPiA+ID4gKyBpbm9kZS0+aV9yZGV2KTsNCj4gPiA+ICsNCj4gPiA+ICsgICAgIGxpc3Rf
Zm9yX2VhY2hfZW50cnkocmVzdG9vbF9taXNjX2N1cnNvciwgJm1pc2NfbGlzdCwgbGlzdCkgew0K
PiA+ID4gKyAgICAgICAgICAgICBpZiAocmVzdG9vbF9taXNjX2N1cnNvci0+bWlzY2RldnQgPT0g
aW5vZGUtPmlfcmRldikgew0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHByX2RlYnVnKCIl
czogRm91bmQgdGhlIHJlc3Rvb2xfbWlzY1xuIiwgX19mdW5jX18pOw0KPiA+ID4gKyAgICAgICAg
ICAgICAgICAgICAgIHJlc3Rvb2xfbWlzYyA9IHJlc3Rvb2xfbWlzY19jdXJzb3I7DQo+ID4gPiAr
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gPiArICAgICAgICAgICAgIH0NCj4gPiA+
ICsgICAgIH0NCj4gPg0KPiA+IE5vIHN5bmNocm9uaXphdGlvbiBvbiB0aGUgbGlzdD8NCj4gPg0K
PiA+ID4gKw0KPiA+ID4gKyAgICAgaWYgKCFyZXN0b29sX21pc2MpDQo+ID4gPiArICAgICAgICAg
ICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgaWYgKFdBUk5fT04ocmVz
dG9vbF9taXNjLT5kZXYgPT0gTlVMTCkpDQo+ID4gPiArICAgICAgICAgICAgIHJldHVybiAtRUlO
VkFMOw0KPiA+ID4gKw0KPiA+ID4gKyAgICAgbXV0ZXhfbG9jaygmcmVzdG9vbF9taXNjLT5tdXRl
eCk7DQo+ID4gPiArDQo+ID4gPiArICAgICBpZiAoIXJlc3Rvb2xfbWlzYy0+c3RhdGljX2luc3Rh
bmNlX2luX3VzZSkgew0KPiA+ID4gKyAgICAgICAgICAgICByZXN0b29sX21pc2MtPnN0YXRpY19p
bnN0YW5jZV9pbl91c2UgPSB0cnVlOw0KPiA+ID4gKyAgICAgICAgICAgICBmaWxlcC0+cHJpdmF0
ZV9kYXRhID0gcmVzdG9vbF9taXNjLT5zdGF0aWNfbWNfaW87DQo+ID4gPiArICAgICB9IGVsc2Ug
ew0KPiA+ID4gKyAgICAgICAgICAgICBkeW5hbWljX21jX2lvID0ga3phbGxvYyhzaXplb2Yoc3Ry
dWN0IGZzbF9tY19pbyksIEdGUF9LRVJORUwpOw0KPiA+ID4gKyAgICAgICAgICAgICBpZiAoZHlu
YW1pY19tY19pbyA9PSBOVUxMKSB7DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgZXJyb3Ig
PSAtRU5PTUVNOw0KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7DQo+ID4g
PiArICAgICAgICAgICAgIH0NCj4gPiA+ICsNCj4gPiA+ICsgICAgICAgICAgICAgcm9vdF9tY19k
ZXYgPSB0b19mc2xfbWNfZGV2aWNlKHJlc3Rvb2xfbWlzYy0+ZGV2KTsNCj4gPiA+ICsgICAgICAg
ICAgICAgZXJyb3IgPSBmc2xfbWNfcG9ydGFsX2FsbG9jYXRlKHJvb3RfbWNfZGV2LCAwLCAmZHlu
YW1pY19tY19pbyk7DQo+ID4gPiArICAgICAgICAgICAgIGlmIChlcnJvciA8IDApIHsNCj4gPiA+
ICsgICAgICAgICAgICAgICAgICAgICBwcl9lcnIoIk5vdCBhYmxlIHRvIGFsbG9jYXRlIE1DIHBv
cnRhbFxuIik7DQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCj4gPiA+
ICsgICAgICAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgICAgICArK3Jlc3Rvb2xfbWlzYy0+ZHlu
YW1pY19pbnN0YW5jZV9jb3VudDsNCj4gPiA+ICsgICAgICAgICAgICAgZmlsZXAtPnByaXZhdGVf
ZGF0YSA9IGR5bmFtaWNfbWNfaW87DQo+ID4gPiArICAgICB9DQo+ID4NCj4gPiBXaHkgaXMgdGhl
IGZpcnN0IHVzZXIgaGFuZGxlZCBkaWZmZXJlbnRseSBmcm9tIHN1YnNlcXVlbnQgdXNlcnM/ICBE
b2VzDQo+ID4gZWFjaCB1c2VyIHJlYWxseSBuZWVkIGl0cyBvd24gcG9ydGFsLCBvciBjYW4geW91
IGp1c3Qgc3luY2hyb25pemUgYWNjZXNzPw0KPiANCj4gRmlyc3QgdXNlciBnZXQgdGhlIHN0YXRp
Y2FsbHkgYWxsb2NhdGVkIHBvcnRhbC4NCj4gU2Vjb25kIHVzZXIgbmVlZCB0byBkeW5hbWljYWxs
eSBhbGxvY2F0ZSBvbmUuDQo+IFNvbWUgb3BlcmF0aW9ucyBtYXkgdGFrZSBhIGxvbmcgdGltZSAo
c2F5IDEgc2Vjb25kKSBpbiBNQyBvYmplY3QgY3JlYXRpb24uDQo+IEluIG9yZGVyIHRvIHN1cHBv
cnQgYXN5bmNocm9ub3VzIHBvcnRhbCBvcGVyYXRpb24sIFdlIGFsbG9jYXRlIHBvcnRhbCBmb3Ig
ZWFjaA0KPiB1c2VyLg0KPiANCj4gTGlqdW4NCj4gDQo+ID4NCj4gPiAtU2NvdHQNCg0K
--
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