Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1256464 > unrolled thread
| Started by | Scott Wood <scottwood@freescale.com> |
|---|---|
| First post | 2015-10-27 06:20 +0100 |
| Last post | 2015-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.
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
| From | Scott Wood <scottwood@freescale.com> |
|---|---|
| Date | 2015-10-27 06:20 +0100 |
| Subject | Re: [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]
| From | Lijun Pan <Lijun.Pan@freescale.com> |
|---|---|
| Date | 2015-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]
| From | Lijun Pan <Lijun.Pan@freescale.com> |
|---|---|
| Date | 2015-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