From owner-freebsd-scsi@FreeBSD.ORG Sun Apr 3 17:06:43 2011 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 326C41065680 for ; Sun, 3 Apr 2011 17:06:43 +0000 (UTC) (envelope-from mi+thun@aldan.algebra.com) Received: from smtp02.lnh.mail.rcn.net (smtp02.lnh.mail.rcn.net [207.172.157.102]) by mx1.freebsd.org (Postfix) with ESMTP id D32DA8FC12 for ; Sun, 3 Apr 2011 17:06:42 +0000 (UTC) Received: from mr16.lnh.mail.rcn.net ([207.172.157.36]) by smtp02.lnh.mail.rcn.net with ESMTP; 03 Apr 2011 12:37:05 -0400 Received: from smtp01.lnh.mail.rcn.net (smtp01.lnh.mail.rcn.net [207.172.4.11]) by mr16.lnh.mail.rcn.net (MOS 4.2.3-GA) with ESMTP id AZO10986; Sun, 3 Apr 2011 12:37:03 -0400 Received-SPF: None identity=pra; client-ip=209.6.61.133; receiver=smtp01.lnh.mail.rcn.net; envelope-from="mi+thun@aldan.algebra.com"; x-sender="mi+thun@aldan.algebra.com"; x-conformance=sidf_compatible Received-SPF: None identity=mailfrom; client-ip=209.6.61.133; receiver=smtp01.lnh.mail.rcn.net; envelope-from="mi+thun@aldan.algebra.com"; x-sender="mi+thun@aldan.algebra.com"; x-conformance=sidf_compatible Received-SPF: None identity=helo; client-ip=209.6.61.133; receiver=smtp01.lnh.mail.rcn.net; envelope-from="mi+thun@aldan.algebra.com"; x-sender="postmaster@[192.168.1.8]"; x-conformance=sidf_compatible X-Auth-ID: anat Received: from 209-6-61-133.c3-0.sbo-ubr1.sbo.ma.cable.rcn.com (HELO [192.168.1.8]) ([209.6.61.133]) by smtp01.lnh.mail.rcn.net with ESMTP; 03 Apr 2011 12:37:04 -0400 Message-ID: <4D98A247.4040701@aldan.algebra.com> Date: Sun, 03 Apr 2011 12:37:27 -0400 From: "Mikhail T." User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; uk-UA; rv:1.9.2.12) Gecko/20101114 Thunderbird/3.1.6 To: Scott Long References: <4CFD62A5.9050704@aldan.algebra.com> <3ADB1D0B-93EB-47EF-B244-2AE4163B893B@samsco.org> <4CFD6BB8.4070802@aldan.algebra.com> <2039479B-63E5-4747-8DF9-AF7D9086168C@samsco.org> <4CFD9F90.3050308@aldan.algebra.com> <245884FC-3FF8-41F2-AE6F-E220CD6EFB6C@samsco.org> <4CFDA430.1000003@aldan.algebra.com> <2C011CE1-7C4F-488A-9501-4A17ED4C7910@samsco.org> <4CFDAD84.2090001@aldan.algebra.com> <4CFDD7DD.8020205@aldan.algebra.com> <4CFDDBA9.1040309@aldan.algebra.com> <4CFF9ACE.9030102@aldan.algebra.com> <286B185F-9A69-463F-970A-FDAA28351A91@samsco.org> <4D003FA0.80802@aldan.algebra.com> <4D0076B5.9040506@aldan.algebra.com> <7A9A31AD-31E5-4147-A6C5-C128EA0201D3@samsco.org> <4D00D2E0.4060602@aldan.algebra.com> In-Reply-To: Content-Transfer-Encoding: 7bit X-Mailman-Approved-At: Sun, 03 Apr 2011 17:26:54 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-scsi@FreeBSD.org Subject: LSI SAS3082E-R -- BRI0i LSI SAS Raid Controller? X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 Apr 2011 17:06:43 -0000 Would [1]this one work with mpt or any other FreeBSD driver? I'd like to add more drives to my PowerEdge 2900 server, but the SAS5/i controller I have supports only 4... Thanks! Yours, -mi References 1. http://cgi.ebay.com/Server-Raid-BRI0i-LSI-SAS-Raid-Controller-/250797164386?pt=LH_DefaultDomain_0&hash=item3a64ad0762 From owner-freebsd-scsi@FreeBSD.ORG Mon Apr 4 11:07:08 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24B0D1065687 for ; Mon, 4 Apr 2011 11:07:08 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 106878FC1E for ; Mon, 4 Apr 2011 11:07:08 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p34B77sK028718 for ; Mon, 4 Apr 2011 11:07:07 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p34B77FA028716 for freebsd-scsi@FreeBSD.org; Mon, 4 Apr 2011 11:07:07 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 4 Apr 2011 11:07:07 GMT Message-Id: <201104041107.p34B77FA028716@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-scsi@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-scsi@FreeBSD.org X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Apr 2011 11:07:08 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o kern/154432 scsi [xpt] run_interrupt_driven_hooks: still waiting after o kern/153361 scsi [ciss] Smart Array 5300 boot/detect drive problem o kern/152250 scsi [ciss] [patch] Kernel panic when hw.ciss.expose_hidden o kern/151564 scsi [ciss] ciss(4) should increase CISS_MAX_LOGICAL to 10 o docs/151336 scsi Missing documentation of scsi_ and ata_ functions in c s kern/149927 scsi [cam] hard drive not stopped before removing power dur o kern/148083 scsi [aac] Strange device reporting o kern/147704 scsi [mpt] sys/dev/mpt: new chip revision, partially unsupp o kern/146287 scsi [ciss] ciss(4) cannot see more than one SmartArray con o kern/145768 scsi [mpt] can't perform I/O on SAS based SAN disk in freeb o kern/144648 scsi [aac] Strange values of speed and bus width in dmesg o kern/144301 scsi [ciss] [hang] HP proliant server locks when using ciss o kern/142351 scsi [mpt] LSILogic driver performance problems o kern/141934 scsi [cam] [patch] add support for SEAGATE DAT Scopion 130 o kern/134488 scsi [mpt] MPT SCSI driver probes max. 8 LUNs per device o kern/132250 scsi [ciss] ciss driver does not support more then 15 drive o kern/132206 scsi [mpt] system panics on boot when mirroring and 2nd dri o kern/130621 scsi [mpt] tranfer rate is inscrutable slow when use lsi213 o kern/129602 scsi [ahd] ahd(4) gets confused and wedges SCSI bus o kern/128452 scsi [sa] [panic] Accessing SCSI tape drive randomly crashe o kern/128245 scsi [scsi] "inquiry data fails comparison at DV1 step" [re o kern/127927 scsi [isp] isp(4) target driver crashes kernel when set up o kern/127717 scsi [ata] [patch] [request] - support write cache toggling o kern/124667 scsi [amd] [panic] FreeBSD-7 kernel page faults at amd-scsi o kern/123674 scsi [ahc] ahc driver dumping o kern/123520 scsi [ahd] unable to boot from net while using ahd o sparc/121676 scsi [iscsi] iscontrol do not connect iscsi-target on sparc o kern/120487 scsi [sg] scsi_sg incompatible with scanners o kern/120247 scsi [mpt] FreeBSD 6.3 and LSI Logic 1030 = only 3.300MB/s o kern/114597 scsi [sym] System hangs at SCSI bus reset with dual HBAs o kern/110847 scsi [ahd] Tyan U320 onboard problem with more than 3 disks o kern/99954 scsi [ahc] reading from DVD failes on 6.x [regression] f kern/94838 scsi Kernel panic while mounting SD card with lock switch o o kern/92798 scsi [ahc] SCSI problem with timeouts o kern/90282 scsi [sym] SCSI bus resets cause loss of ch device o kern/76178 scsi [ahd] Problem with ahd and large SCSI Raid system o kern/74627 scsi [ahc] [hang] Adaptec 2940U2W Can't boot 5.3 s kern/61165 scsi [panic] kernel page fault after calling cam_send_ccb o kern/60641 scsi [sym] Sporadic SCSI bus resets with 53C810 under load o kern/60598 scsi wire down of scsi devices conflicts with config s kern/57398 scsi [mly] Current fails to install on mly(4) based RAID di o bin/57088 scsi [cam] [patch] for a possible fd leak in libcam.c o kern/52638 scsi [panic] SCSI U320 on SMP server won't run faster than o kern/44587 scsi dev/dpt/dpt.h is missing defines required for DPT_HAND f kern/40895 scsi wierd kernel / device driver bug o kern/39388 scsi ncr/sym drivers fail with 53c810 and more than 256MB m o kern/35234 scsi World access to /dev/pass? (for scanner) requires acce 47 problems total. From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 11:15:08 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C5F9106564A for ; Tue, 5 Apr 2011 11:15:08 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 6162F8FC12 for ; Tue, 5 Apr 2011 11:15:06 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id OAA02092 for ; Tue, 05 Apr 2011 14:15:05 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1Q74Dx-0005vD-2w for freebsd-scsi@freebsd.org; Tue, 05 Apr 2011 14:15:05 +0300 Message-ID: <4D9AF9B7.9030107@FreeBSD.org> Date: Tue, 05 Apr 2011 14:15:03 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110308 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=X-VIET-VPS Content-Transfer-Encoding: 7bit Cc: Subject: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 11:15:08 -0000 I propose the following changes: --- a/sys/cam/scsi/scsi_all.c +++ b/sys/cam/scsi/scsi_all.c @@ -1431,7 +1431,7 @@ static struct asc_table_entry asc_table[] = { { SST(0x27, 0x06, SS_RDEF, /* XXX TBD */ "Conditional write protect") }, /* DTLPWROMAEBKVF */ - { SST(0x28, 0x00, SS_FATAL | ENXIO, + { SST(0x28, 0x00, SS_TUR | SSQ_MANY | SSQ_DECREMENT_COUNT | EBUSY, "Not ready to ready change, medium may have changed") }, /* DT WROM B */ { SST(0x28, 0x01, SS_FATAL | ENXIO, In my opinion this condition doesn't really mean a fatal error, but implies that we should retry while new medium "settles down". In my testing this change actually helps with some USB flashdrives and cardreaders with slow access to media. Perhaps some real SCSI devices use this sense code to signal a really "fatal" condition? Please let me know. --- a/sys/cam/scsi/scsi_all.c +++ b/sys/cam/scsi/scsi_all.c @@ -1448,7 +1448,7 @@ static struct asc_table_entry asc_table[] = { * the networking errnos? ECONNRESET anyone? */ /* DTLPWROMAEBKVF */ - { SST(0x29, 0x00, SS_FATAL | ENXIO, + { SST(0x29, 0x00, SS_RDEF, "Power on, reset, or bus device reset occurred") }, /* DTLPWROMAEBKVF */ { SST(0x29, 0x01, SS_RDEF, Align handling of this condition with the rest of the conditions in the same family: "Power on occurred", "SCSI bus reset occurred", "Bus device reset function occurred", etc. I don't see this particular condition should be special. Any insights and/or historical reasons? Thank you. -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 11:26:07 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F0CE106566B for ; Tue, 5 Apr 2011 11:26:07 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 688DA8FC1A for ; Tue, 5 Apr 2011 11:26:05 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id OAA02330 for ; Tue, 05 Apr 2011 14:26:05 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1Q74Oa-0005vq-Nk for freebsd-scsi@freebsd.org; Tue, 05 Apr 2011 14:26:04 +0300 Message-ID: <4D9AFC4C.9070702@FreeBSD.org> Date: Tue, 05 Apr 2011 14:26:04 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110308 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=X-VIET-VPS Content-Transfer-Encoding: 7bit Cc: Subject: silence CDIOREADTOCHEADER X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 11:26:07 -0000 Please consider the following patch: diff --git a/sys/cam/scsi/scsi_cd.c b/sys/cam/scsi/scsi_cd.c index 4c49e2d3..3e86eb8 100644 --- a/sys/cam/scsi/scsi_cd.c +++ b/sys/cam/scsi/scsi_cd.c @@ -2135,7 +2135,7 @@ cdioctl(struct disk *dp, u_long cmd, void *addr, int flag, struct thread *td) ("trying to do CDIOREADTOCHEADER\n")); error = cdreadtoc(periph, 0, 0, (u_int8_t *)th, - sizeof (*th), /*sense_flags*/0); + sizeof (*th), /*sense_flags*/SF_NO_PRINT); if (error) { free(th, M_SCSICD); cam_periph_unlock(periph); The idea is the READ_TOC command is bound to fail with "Invalid field in CDB" if a disc in CD drive doesn't have any tracks, e.g. it is a blank disk. This is a quite normal condition that doesn't require verbose logging. Elsewhere in scsi_cd code we already call cdreadtoc with SF_NO_PRINT when we try find out disk information for internal cd(4) use. That is done for the same reason according to the comments. Main reason to want this change is that some userland applications, most prominently hald, have a habit of calling CDIOREADTOCHEADER while "tasting" a new disk in a drive. -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 11:46:27 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E8BC106566C; Tue, 5 Apr 2011 11:46:27 +0000 (UTC) (envelope-from borjam@sarenet.es) Received: from proxypop1b.sarenet.es (proxypop1b.sarenet.es [194.30.0.104]) by mx1.freebsd.org (Postfix) with ESMTP id 072D08FC19; Tue, 5 Apr 2011 11:46:26 +0000 (UTC) Received: from [172.16.1.55] (ssglan.sare.net [192.148.167.100]) by proxypop1b.sarenet.es (Postfix) with ESMTP id F235160A2; Tue, 5 Apr 2011 13:30:03 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Borja Marcos In-Reply-To: <4D9AF9B7.9030107@FreeBSD.org> Date: Tue, 5 Apr 2011 13:30:04 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: References: <4D9AF9B7.9030107@FreeBSD.org> To: Andriy Gapon X-Mailer: Apple Mail (2.1084) Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 11:46:27 -0000 On Apr 5, 2011, at 1:15 PM, Andriy Gapon wrote: >=20 > I propose the following changes: >=20 > - { SST(0x28, 0x00, SS_FATAL | ENXIO, > + { SST(0x28, 0x00, SS_TUR | SSQ_MANY | SSQ_DECREMENT_COUNT | = EBUSY, > "Not ready to ready change, medium may have changed") }, > In my opinion this condition doesn't really mean a fatal error, but = implies that > we should retry while new medium "settles down". As far as I know, this shouldn't be reported by a non-removable media = device. It should be used by removable media such as tape units, = magneto-optical drives, CDROM drives, WORMs... Many years ago I used to write to SCSI tapes. If the operator changed a = tape, for example, while the tape was idle, the next read or write = command returned this code, indicating that there was a media change. = And it was important indeed, as our application sometimes wrote to tape = in relatively small chunks and it only rewound the tape when necessary. So, if the system was expecting a given tape to be in the unit and it = tried to write, that try failed reporting a tape change. The software = issued a rewind command and read the tape label to ensure that it was = the right tape (in which case it issued a seek to the end of the = recorded data) or created a new tape label, labelled it, etc etc. Assuming that manufacturers are using it as expected, if this was = reported by a removable media random access device (say, a magneto = optical disk) it should result in the disappearance of the "changed = disk", creation of a new disk. I mean, reread partition table et all, = and invalidation of any mount points related to the "disappeared" = device.=20 > In my testing this change actually helps with some USB flashdrives and > cardreaders with slow access to media. If a card read reports this, I assume that either the reader has crappy = firmware _or_ it has an electrical contact problem with the media. But = ignoring this error just could lead to data loss. In the case of a user = replacing a memory card with a mounted filesystem, it would be certainly = a data loss (blocks intended for one card written to a different card?) > Perhaps some real SCSI devices use this sense code to signal a really = "fatal" > condition? Please let me know. >=20 > --- a/sys/cam/scsi/scsi_all.c > +++ b/sys/cam/scsi/scsi_all.c > @@ -1448,7 +1448,7 @@ static struct asc_table_entry asc_table[] =3D { > * the networking errnos? ECONNRESET anyone? > */ > /* DTLPWROMAEBKVF */ > - { SST(0x29, 0x00, SS_FATAL | ENXIO, > + { SST(0x29, 0x00, SS_RDEF, > "Power on, reset, or bus device reset occurred") }, > /* DTLPWROMAEBKVF */ > { SST(0x29, 0x01, SS_RDEF, >=20 > Align handling of this condition with the rest of the conditions in = the same > family: "Power on occurred", "SCSI bus reset occurred", "Bus device = reset > function occurred", etc. > I don't see this particular condition should be special. > Any insights and/or historical reasons? I would be cautious with this. Of course if it happened with no = outstanding operations and data committed to media, it should be = harmless. But if you power cycle a hard disk with a dirty cache, some of = the data won't be committed to disk. If you just retry the operation and = otherwise ignore the message (which is equivalent to just logging and = retrying) you keep writing data to a possibly corrupted medium. It can = certainly led to further corruption and make the problem worse. My opinion, of course ;) Borja. From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 11:53:14 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9CB941065675; Tue, 5 Apr 2011 11:53:14 +0000 (UTC) (envelope-from borjam@sarenet.es) Received: from proxypop2b.sarenet.es (proxypop2.sarenet.es [194.30.0.95]) by mx1.freebsd.org (Postfix) with ESMTP id 5BFD78FC12; Tue, 5 Apr 2011 11:53:13 +0000 (UTC) Received: from [172.16.1.55] (ssglan.sare.net [192.148.167.100]) by proxypop2b.sarenet.es (Postfix) with ESMTP id F0D7973A5D; Tue, 5 Apr 2011 13:53:11 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Borja Marcos In-Reply-To: Date: Tue, 5 Apr 2011 13:53:11 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: References: <4D9AF9B7.9030107@FreeBSD.org> To: Borja Marcos X-Mailer: Apple Mail (2.1084) Cc: freebsd-scsi@FreeBSD.org, Andriy Gapon Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 11:53:14 -0000 On Apr 5, 2011, at 1:30 PM, Borja Marcos wrote: >=20 > On Apr 5, 2011, at 1:15 PM, Andriy Gapon wrote: >=20 > As far as I know, this shouldn't be reported by a non-removable media = device. It should be used by removable media such as tape units, = magneto-optical drives, CDROM drives, WORMs... >=20 >=20 > If a card read reports this, I assume that either the reader has = crappy firmware _or_ it has an electrical contact problem with the = media. But ignoring this error just could lead to data loss. In the case = of a user replacing a memory card with a mounted filesystem, it would be = certainly a data loss (blocks intended for one card written to a = different card?) To clarify my somewhat fuzzy message. I assume a card reader should = report this in the following cases: - User has replaced the card - User has extracted and reinserted the card - Electrical contact problem - Crappy reader firmware In either case it shouldn't be ignored causing just a retry. In the case of a fixed memory pendrive, well, it would indicate either = some serious internal error (this message is intended for removable = media) or, again, maybe an unplugged and plugged on USB device, at most? = Of course there's the option of buggy firmware reporting this for a = non-removable media unit. When you unplug a USB drive from the USB bus you are unplugging both the = media and the controller.=20 Borja. From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 12:41:32 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0D6A106566B for ; Tue, 5 Apr 2011 12:41:31 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 2FC7C8FC0A for ; Tue, 5 Apr 2011 12:41:30 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id PAA03610; Tue, 05 Apr 2011 15:41:27 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9B0DF7.8020104@FreeBSD.org> Date: Tue, 05 Apr 2011 15:41:27 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: Borja Marcos References: <4D9AF9B7.9030107@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 12:41:32 -0000 on 05/04/2011 14:30 Borja Marcos said the following: > > On Apr 5, 2011, at 1:15 PM, Andriy Gapon wrote: > >> >> I propose the following changes: >> >> - { SST(0x28, 0x00, SS_FATAL | ENXIO, >> + { SST(0x28, 0x00, SS_TUR | SSQ_MANY | SSQ_DECREMENT_COUNT | EBUSY, >> "Not ready to ready change, medium may have changed") }, >> In my opinion this condition doesn't really mean a fatal error, but implies that >> we should retry while new medium "settles down". > > As far as I know, this shouldn't be reported by a non-removable media device. It should be used by removable media such as tape units, magneto-optical drives, CDROM drives, WORMs... > > Many years ago I used to write to SCSI tapes. If the operator changed a tape, for example, while the tape was idle, the next read or write command returned this code, indicating that there was a media change. And it was important indeed, as our application sometimes wrote to tape in relatively small chunks and it only rewound the tape when necessary. > > So, if the system was expecting a given tape to be in the unit and it tried to write, that try failed reporting a tape change. The software issued a rewind command and read the tape label to ensure that it was the right tape (in which case it issued a seek to the end of the recorded data) or created a new tape label, labelled it, etc etc. > > Assuming that manufacturers are using it as expected, if this was reported by a removable media random access device (say, a magneto optical disk) it should result in the disappearance of the "changed disk", creation of a new disk. I mean, reread partition table et all, and invalidation of any mount points related to the "disappeared" device. > >> In my testing this change actually helps with some USB flashdrives and >> cardreaders with slow access to media. > > If a card read reports this, I assume that either the reader has crappy firmware _or_ it has an electrical contact problem with the media. But ignoring this error just could lead to data loss. In the case of a user replacing a memory card with a mounted filesystem, it would be certainly a data loss (blocks intended for one card written to a different card?) Interesting. Thank you for sharing this information! Let me think about it :) >> Perhaps some real SCSI devices use this sense code to signal a really "fatal" >> condition? Please let me know. >> >> --- a/sys/cam/scsi/scsi_all.c >> +++ b/sys/cam/scsi/scsi_all.c >> @@ -1448,7 +1448,7 @@ static struct asc_table_entry asc_table[] = { >> * the networking errnos? ECONNRESET anyone? >> */ >> /* DTLPWROMAEBKVF */ >> - { SST(0x29, 0x00, SS_FATAL | ENXIO, >> + { SST(0x29, 0x00, SS_RDEF, >> "Power on, reset, or bus device reset occurred") }, >> /* DTLPWROMAEBKVF */ >> { SST(0x29, 0x01, SS_RDEF, >> >> Align handling of this condition with the rest of the conditions in the same >> family: "Power on occurred", "SCSI bus reset occurred", "Bus device reset >> function occurred", etc. >> I don't see this particular condition should be special. >> Any insights and/or historical reasons? > > I would be cautious with this. Of course if it happened with no outstanding operations and data committed to media, it should be harmless. But if you power cycle a hard disk with a dirty cache, some of the data won't be committed to disk. If you just retry the operation and otherwise ignore the message (which is equivalent to just logging and retrying) you keep writing data to a possibly corrupted medium. It can certainly led to further corruption and make the problem worse. > > My opinion, of course ;) Sure :) But why would this particular sense code be so different from other similar codes that I quoted above. -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 12:43:50 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F5371065673 for ; Tue, 5 Apr 2011 12:43:50 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id B83D08FC08 for ; Tue, 5 Apr 2011 12:43:49 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id PAA03640; Tue, 05 Apr 2011 15:43:47 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9B0E82.1060800@FreeBSD.org> Date: Tue, 05 Apr 2011 15:43:46 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: Borja Marcos References: <4D9AF9B7.9030107@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 12:43:50 -0000 on 05/04/2011 14:53 Borja Marcos said the following: > > On Apr 5, 2011, at 1:30 PM, Borja Marcos wrote: > >> >> On Apr 5, 2011, at 1:15 PM, Andriy Gapon wrote: >> >> As far as I know, this shouldn't be reported by a non-removable media device. It should be used by removable media such as tape units, magneto-optical drives, CDROM drives, WORMs... >> >> >> If a card read reports this, I assume that either the reader has crappy firmware _or_ it has an electrical contact problem with the media. But ignoring this error just could lead to data loss. In the case of a user replacing a memory card with a mounted filesystem, it would be certainly a data loss (blocks intended for one card written to a different card?) > > To clarify my somewhat fuzzy message. I assume a card reader should report this in the following cases: > > - User has replaced the card > > - User has extracted and reinserted the card > > - Electrical contact problem > > - Crappy reader firmware > > In either case it shouldn't be ignored causing just a retry. > > > In the case of a fixed memory pendrive, well, it would indicate either some serious internal error (this message is intended for removable media) or, again, maybe an unplugged and plugged on USB device, at most? Of course there's the option of buggy firmware reporting this for a non-removable media unit. > > When you unplug a USB drive from the USB bus you are unplugging both the media and the controller. Actually, this sense code is reported by a particular USB thumbdrive that I have. So the media is definitely non-removable. And it happens each time I plug the thumbdrive. So I'd hazard a guess about its firmware. -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 13:19:39 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 07886106564A; Tue, 5 Apr 2011 13:19:39 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id AECB68FC17; Tue, 5 Apr 2011 13:19:37 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id QAA04405; Tue, 05 Apr 2011 16:19:35 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9B16E7.2070208@FreeBSD.org> Date: Tue, 05 Apr 2011 16:19:35 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: FreeBSD Arch , FreeBSD Hackers References: <4D95E162.40605@FreeBSD.org> In-Reply-To: <4D95E162.40605@FreeBSD.org> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-scsi@FreeBSD.org Subject: Re: looking for error codes X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 13:19:39 -0000 on 01/04/2011 17:29 Andriy Gapon said the following: > > I am looking for error codes that would unambiguously signal that a disk drive has > readonly or write-protected media and that disk drive has no media at the moment. > I foresee these error codes being used mostly between disk peripheral drivers and > filesystem drivers. > > I will appreciate your suggestions. > > P.S. > I see that Linux uses EROFS and ENOMEDIUM for these purposes. > I am not sure about EROFS in this role. > And we don't have ENOMEDIUM (nor EMEDIUMTYPE). Thanks for all the error code suggestions so far :-) It seems that ENODEV could be a good choice for signaling readonly or write-protected media on write access: 19 ENODEV Operation not supported by device. An attempt was made to apply an inappropriate function to a device, for example, trying to read a write-only device such as a printer. BTW, SCSI code currently maps that condition to EACCES, but I don't think that that is the best choice - the error could be also produced by "permissions-related" checks. E.g. from intro(2): 13 EACCES Permission denied. An attempt was made to access a file in a way forbidden by its file access permissions. As for the ENOMEDIUM, I don't think that adding a distinct error code here would provide any new useful abilities. So, ENXIO should still be a good option. -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 13:24:27 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 77F521065672; Tue, 5 Apr 2011 13:24:27 +0000 (UTC) (envelope-from borjam@sarenet.es) Received: from proxypop1b.sarenet.es (proxypop1b.sarenet.es [194.30.0.104]) by mx1.freebsd.org (Postfix) with ESMTP id 3952E8FC08; Tue, 5 Apr 2011 13:24:27 +0000 (UTC) Received: from [172.16.1.55] (ssglan.sare.net [192.148.167.100]) by proxypop1b.sarenet.es (Postfix) with ESMTP id CFF245CBF; Tue, 5 Apr 2011 15:24:25 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Borja Marcos In-Reply-To: <4D9B0DF7.8020104@FreeBSD.org> Date: Tue, 5 Apr 2011 15:24:25 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <4D0D7E78-2491-4D45-9DDE-58E360C6BA06@sarenet.es> References: <4D9AF9B7.9030107@FreeBSD.org> <4D9B0DF7.8020104@FreeBSD.org> To: Andriy Gapon X-Mailer: Apple Mail (2.1084) Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 13:24:27 -0000 On Apr 5, 2011, at 2:41 PM, Andriy Gapon wrote: >>> Align handling of this condition with the rest of the conditions in = the same >>> family: "Power on occurred", "SCSI bus reset occurred", "Bus device = reset >>> function occurred", etc. >>> I don't see this particular condition should be special. >>> Any insights and/or historical reasons? >>=20 >> I would be cautious with this. Of course if it happened with no = outstanding operations and data committed to media, it should be = harmless. But if you power cycle a hard disk with a dirty cache, some of = the data won't be committed to disk. If you just retry the operation and = otherwise ignore the message (which is equivalent to just logging and = retrying) you keep writing data to a possibly corrupted medium. It can = certainly led to further corruption and make the problem worse. >>=20 >> My opinion, of course ;) >=20 > Sure :) > But why would this particular sense code be so different from other = similar codes > that I quoted above. I forgot. Of course it's not harmelss at all. That's the problem of = being multi-tasking ;) Reset or power on could indicate that any configuration written to the = device (mode pages) have gone back to the default values as well. So, = even with no outstanding operations, I would treat it with caution. And again, if you power cycle a device from which you have filesystems = attached I find it safer to treat it as an I/O error, unmounting the = filesystems, checking, etc, etc. Borja. From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 13:35:31 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1A514106564A for ; Tue, 5 Apr 2011 13:35:31 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 625178FC08 for ; Tue, 5 Apr 2011 13:35:29 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id QAA04632; Tue, 05 Apr 2011 16:35:27 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9B1A9E.4040007@FreeBSD.org> Date: Tue, 05 Apr 2011 16:35:26 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: Borja Marcos References: <4D9AF9B7.9030107@FreeBSD.org> <4D9B0DF7.8020104@FreeBSD.org> <4D0D7E78-2491-4D45-9DDE-58E360C6BA06@sarenet.es> In-Reply-To: <4D0D7E78-2491-4D45-9DDE-58E360C6BA06@sarenet.es> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 13:35:31 -0000 on 05/04/2011 16:24 Borja Marcos said the following: > > On Apr 5, 2011, at 2:41 PM, Andriy Gapon wrote: > >>>> Align handling of this condition with the rest of the conditions in the same >>>> family: "Power on occurred", "SCSI bus reset occurred", "Bus device reset >>>> function occurred", etc. >>>> I don't see this particular condition should be special. >>>> Any insights and/or historical reasons? >>> >>> I would be cautious with this. Of course if it happened with no outstanding operations and data committed to media, it should be harmless. But if you power cycle a hard disk with a dirty cache, some of the data won't be committed to disk. If you just retry the operation and otherwise ignore the message (which is equivalent to just logging and retrying) you keep writing data to a possibly corrupted medium. It can certainly led to further corruption and make the problem worse. >>> >>> My opinion, of course ;) >> >> Sure :) >> But why would this particular sense code be so different from other similar codes >> that I quoted above. > > I forgot. Of course it's not harmelss at all. That's the problem of being multi-tasking ;) > > Reset or power on could indicate that any configuration written to the device (mode pages) have gone back to the default values as well. So, even with no outstanding operations, I would treat it with caution. > > And again, if you power cycle a device from which you have filesystems attached I find it safer to treat it as an I/O error, unmounting the filesystems, checking, etc, etc. Sure. So, still why "Power on occurred" or "Device internal reset" should be SS_RDEF while "Power on, reset, or bus device reset occurred" should be SS_FATAL? -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 13:41:09 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 43DFC1065674; Tue, 5 Apr 2011 13:41:09 +0000 (UTC) (envelope-from borjam@sarenet.es) Received: from proxypop1b.sarenet.es (proxypop1b.sarenet.es [194.30.0.104]) by mx1.freebsd.org (Postfix) with ESMTP id 04DC38FC0C; Tue, 5 Apr 2011 13:41:07 +0000 (UTC) Received: from [172.16.1.55] (ssglan.sare.net [192.148.167.100]) by proxypop1b.sarenet.es (Postfix) with ESMTP id A93105DDF; Tue, 5 Apr 2011 15:41:06 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Borja Marcos In-Reply-To: <4D9B1A9E.4040007@FreeBSD.org> Date: Tue, 5 Apr 2011 15:41:06 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: References: <4D9AF9B7.9030107@FreeBSD.org> <4D9B0DF7.8020104@FreeBSD.org> <4D0D7E78-2491-4D45-9DDE-58E360C6BA06@sarenet.es> <4D9B1A9E.4040007@FreeBSD.org> To: Andriy Gapon X-Mailer: Apple Mail (2.1084) Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 13:41:09 -0000 On Apr 5, 2011, at 3:35 PM, Andriy Gapon wrote: > on 05/04/2011 16:24 Borja Marcos said the following: >> I forgot. Of course it's not harmelss at all. That's the problem of = being multi-tasking ;) >>=20 >> Reset or power on could indicate that any configuration written to = the device (mode pages) have gone back to the default values as well. = So, even with no outstanding operations, I would treat it with caution. >>=20 >> And again, if you power cycle a device from which you have = filesystems attached I find it safer to treat it as an I/O error, = unmounting the filesystems, checking, etc, etc. >=20 > Sure. So, still why "Power on occurred" or "Device internal reset" = should be > SS_RDEF while "Power on, reset, or bus device reset occurred" should = be SS_FATAL? Seems to be safer to treat it as fatal, don't you think? Borja. From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 14:20:38 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CFF2A106564A for ; Tue, 5 Apr 2011 14:20:38 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 222048FC15 for ; Tue, 5 Apr 2011 14:20:37 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id RAA05434; Tue, 05 Apr 2011 17:20:34 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9B2531.4070202@FreeBSD.org> Date: Tue, 05 Apr 2011 17:20:33 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: Borja Marcos References: <4D9AF9B7.9030107@FreeBSD.org> <4D9B0DF7.8020104@FreeBSD.org> <4D0D7E78-2491-4D45-9DDE-58E360C6BA06@sarenet.es> <4D9B1A9E.4040007@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 14:20:38 -0000 on 05/04/2011 16:41 Borja Marcos said the following: > > On Apr 5, 2011, at 3:35 PM, Andriy Gapon wrote: > >> on 05/04/2011 16:24 Borja Marcos said the following: >>> I forgot. Of course it's not harmelss at all. That's the problem of being multi-tasking ;) >>> >>> Reset or power on could indicate that any configuration written to the device (mode pages) have gone back to the default values as well. So, even with no outstanding operations, I would treat it with caution. >>> >>> And again, if you power cycle a device from which you have filesystems attached I find it safer to treat it as an I/O error, unmounting the filesystems, checking, etc, etc. >> >> Sure. So, still why "Power on occurred" or "Device internal reset" should be >> SS_RDEF while "Power on, reset, or bus device reset occurred" should be SS_FATAL? > > Seems to be safer to treat it as fatal, don't you think? Seems to be safe to treat everything as fatal, but less convenient perhaps? So let me clarify. Do you suggest that all "reset" and "power" statuses be treated as SS_FATAL? Or do you single-out "Power on, reset, or bus device reset occurred"? -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 14:35:43 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 03A16106564A; Tue, 5 Apr 2011 14:35:43 +0000 (UTC) (envelope-from borjam@sarenet.es) Received: from proxypop2b.sarenet.es (proxypop2.sarenet.es [194.30.0.95]) by mx1.freebsd.org (Postfix) with ESMTP id B5F038FC14; Tue, 5 Apr 2011 14:35:42 +0000 (UTC) Received: from [172.16.1.55] (ssglan.sare.net [192.148.167.100]) by proxypop2b.sarenet.es (Postfix) with ESMTP id 02619735CE; Tue, 5 Apr 2011 16:35:40 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Borja Marcos In-Reply-To: <4D9B2531.4070202@FreeBSD.org> Date: Tue, 5 Apr 2011 16:35:40 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <2DA9EF9F-F548-4C24-A237-7F5BADEF9A38@sarenet.es> References: <4D9AF9B7.9030107@FreeBSD.org> <4D9B0DF7.8020104@FreeBSD.org> <4D0D7E78-2491-4D45-9DDE-58E360C6BA06@sarenet.es> <4D9B1A9E.4040007@FreeBSD.org> <4D9B2531.4070202@FreeBSD.org> To: Andriy Gapon X-Mailer: Apple Mail (2.1084) Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 14:35:43 -0000 On Apr 5, 2011, at 4:20 PM, Andriy Gapon wrote: >>> Sure. So, still why "Power on occurred" or "Device internal reset" = should be >>> SS_RDEF while "Power on, reset, or bus device reset occurred" should = be SS_FATAL? >>=20 >> Seems to be safer to treat it as fatal, don't you think? >=20 > Seems to be safe to treat everything as fatal, but less convenient = perhaps? > So let me clarify. Do you suggest that all "reset" and "power" = statuses be > treated as SS_FATAL? Or do you single-out "Power on, reset, or bus = device reset > occurred"? Sorry to write in such broad terms, but I'm not that familiar with the = source code of the SCSI subsystem. Hence the comments I'm writing are = "high-level" in nature :) Anyway I hope they will be useful.=20 ASC/ASCQ codes belonging to the 0x29 range received during an operation = different than an INQ done for a bus probe should be treated with care, = I think. In case they affected to a device storing mounted filesystems, = I think it should register as a fatal error. Ignoring it could lead to = data corruption if the power cycle has happened before data has been = committed to the disk (I'm talking about disks of course). Doing this can lead to "spurious" errors with flaky devices, and maybe = the operation would have succeeded. But, again, I think it's better to = reveal the error rather than hiding it and risking data corruption. = Moreover, if we make flaky devices work just right, we are favouring bad = manufacturers. I remember a similar discussion on BUGTRAQ several years = ago regarding a "MIME-polish program". My posture was that broken MIME = should go to the trash period. Regards ;) Borja. From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 15:55:38 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 42ACD1065735 for ; Tue, 5 Apr 2011 15:55:38 +0000 (UTC) (envelope-from Achim_Leubner@pmc-sierra.com) Received: from bby1mta03.pmc-sierra.bc.ca (bby1mta03.pmc-sierra.com [216.241.235.118]) by mx1.freebsd.org (Postfix) with ESMTP id 0B6F98FC08 for ; Tue, 5 Apr 2011 15:55:37 +0000 (UTC) Received: from bby1mta03.pmc-sierra.bc.ca (localhost.pmc-sierra.bc.ca [127.0.0.1]) by localhost (Postfix) with SMTP id 7345D10700B6; Tue, 5 Apr 2011 08:34:36 -0700 (PDT) Received: from bby1exg02.pmc_nt.nt.pmc-sierra.bc.ca (bby1exg02 [216.241.231.167]) by bby1mta03.pmc-sierra.bc.ca (Postfix) with SMTP id 511C510700B5; Tue, 5 Apr 2011 08:34:36 -0700 (PDT) Received: from BBY1EXM10.pmc_nt.nt.pmc-sierra.bc.ca ([216.241.231.158]) by bby1exg02.pmc_nt.nt.pmc-sierra.bc.ca with Microsoft SMTPSVC(6.0.3790.4675); Tue, 5 Apr 2011 08:34:36 -0700 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01CBF3A6.F7D71E12" Date: Tue, 5 Apr 2011 08:34:33 -0700 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: thread-topic: aac driver patch for FreeBSD 8.2 thread-index: AcvzpvZIEiI3tLszTQiFbupw29HLvQ== From: "Achim Leubner" To: "Ed Maste" , "Scott Long" X-OriginalArrivalTime: 05 Apr 2011 15:34:36.0194 (UTC) FILETIME=[F80D6820:01CBF3A6] X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-scsi@FreeBSD.org Subject: aac driver patch for FreeBSD 8.2 X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 15:55:38 -0000 This is a multi-part message in MIME format. ------_=_NextPart_001_01CBF3A6.F7D71E12 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hi Ed, Hi Scott, =20 Attached you find an aac driver patch to support PMC-Sierra's SRC based = controller family. It includes the following changes: - New hardware device id 0x28b interface=20 - New XPORT header required - Sync. command interface: small changes, doorbell bits shifted - Async. Interface: different inbound queue handling, no = outbound I2O queue available, using doorbell and response buffer in host = memory for status - Changed AIF (adapter initiated FIB) interface=20 - Passthrough (raw_srb) IOCTL handling changed =20 The driver package shipped with the new controller family is tested in = an release cycle and I adapted the changes to the FreeBSD 8.2 inbox = driver because we want to become inbox with that driver as soon as = possible.=20 Any comments are greatly appreciated. =20 Thanks, Achim =20 Achim Leubner Firmware Design Engineer PMC-Sierra Germany GmbH Sitz/Registered Office: Ismaning bei Muenchen Amtsgericht/Local Court Muenchen, HRB 189193 Gesch=E4ftsf=FChrer/Managing Director: Michael W. Zellner =20 ------_=_NextPart_001_01CBF3A6.F7D71E12 Content-Type: text/plain; name="fb82_aac.txt" Content-Transfer-Encoding: base64 Content-Description: fb82_aac.txt Content-Disposition: attachment; filename="fb82_aac.txt" ZGlmZiAtcHJ1TiBvbGQvYWFjLmMgbmV3L2FhYy5jCi0tLSBvbGQvYWFjLmMJMjAxMS0wMy0zMSAx NDo1NzozNC4wMDAwMDAwMDAgKzAwMDAKKysrIG5ldy9hYWMuYwkyMDExLTA0LTAxIDEyOjQyOjQ5 LjAwMDAwMDAwMCArMDAwMApAQCAtMiw3ICsyLDggQEAKICAqIENvcHlyaWdodCAoYykgMjAwMCBN aWNoYWVsIFNtaXRoCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDEgU2NvdHQgTG9uZwogICogQ29weXJp Z2h0IChjKSAyMDAwIEJTRGkKLSAqIENvcHlyaWdodCAoYykgMjAwMSBBZGFwdGVjLCBJbmMuCisg KiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAxMCBBZGFwdGVjLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMp IDIwMTAgUE1DLVNpZXJyYSwgSW5jLgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKQEAgLTk3LDcgKzk4LDcgQEAgc3RhdGljIGludAlhYWNfY2hlY2tfZmlybXdhcmUo c3RydWN0IGFhYwogc3RhdGljIGludAlhYWNfaW5pdChzdHJ1Y3QgYWFjX3NvZnRjICpzYyk7CiBz dGF0aWMgaW50CWFhY19zeW5jX2NvbW1hbmQoc3RydWN0IGFhY19zb2Z0YyAqc2MsIHVfaW50MzJf dCBjb21tYW5kLAogCQkJCSB1X2ludDMyX3QgYXJnMCwgdV9pbnQzMl90IGFyZzEsIHVfaW50MzJf dCBhcmcyLAotCQkJCSB1X2ludDMyX3QgYXJnMywgdV9pbnQzMl90ICpzcCk7CisJCQkJIHVfaW50 MzJfdCBhcmczLCB1X2ludDMyX3QgKnNwLCB1X2ludDMyX3QgKnIxKTsKIHN0YXRpYyBpbnQJYWFj X3NldHVwX2ludHIoc3RydWN0IGFhY19zb2Z0YyAqc2MpOwogc3RhdGljIGludAlhYWNfZW5xdWV1 ZV9maWIoc3RydWN0IGFhY19zb2Z0YyAqc2MsIGludCBxdWV1ZSwKIAkJCQlzdHJ1Y3QgYWFjX2Nv bW1hbmQgKmNtKTsKQEAgLTE4Miw2ICsxODMsMzMgQEAgc3RydWN0IGFhY19pbnRlcmZhY2UgYWFj X3JrdF9pbnRlcmZhY2UgPQogCWFhY19ya3Rfc2V0X291dGJfcXVldWUKIH07CiAKKy8qIFBNQyBT UkMgaW50ZXJmYWNlICovCitzdGF0aWMgaW50CWFhY19zcmNfZ2V0X2Z3c3RhdHVzKHN0cnVjdCBh YWNfc29mdGMgKnNjKTsKK3N0YXRpYyB2b2lkCWFhY19zcmNfcW5vdGlmeShzdHJ1Y3QgYWFjX3Nv ZnRjICpzYywgaW50IHFiaXQpOworc3RhdGljIGludAlhYWNfc3JjX2dldF9pc3RhdHVzKHN0cnVj dCBhYWNfc29mdGMgKnNjKTsKK3N0YXRpYyB2b2lkCWFhY19zcmNfY2xlYXJfaXN0YXR1cyhzdHJ1 Y3QgYWFjX3NvZnRjICpzYywgaW50IG1hc2spOworc3RhdGljIHZvaWQJYWFjX3NyY19zZXRfbWFp bGJveChzdHJ1Y3QgYWFjX3NvZnRjICpzYywgdV9pbnQzMl90IGNvbW1hbmQsCisJCQkJICAgIHVf aW50MzJfdCBhcmcwLCB1X2ludDMyX3QgYXJnMSwKKwkJCQkgICAgdV9pbnQzMl90IGFyZzIsIHVf aW50MzJfdCBhcmczKTsKK3N0YXRpYyBpbnQJYWFjX3NyY19nZXRfbWFpbGJveChzdHJ1Y3QgYWFj X3NvZnRjICpzYywgaW50IG1iKTsKK3N0YXRpYyB2b2lkCWFhY19zcmNfc2V0X2ludGVycnVwdHMo c3RydWN0IGFhY19zb2Z0YyAqc2MsIGludCBlbmFibGUpOworc3RhdGljIGludCBhYWNfc3JjX3Nl bmRfY29tbWFuZChzdHJ1Y3QgYWFjX3NvZnRjICpzYywgc3RydWN0IGFhY19jb21tYW5kICpjbSk7 CitzdGF0aWMgaW50IGFhY19zcmNfZ2V0X291dGJfcXVldWUoc3RydWN0IGFhY19zb2Z0YyAqc2Mp Oworc3RhdGljIHZvaWQgYWFjX3NyY19zZXRfb3V0Yl9xdWV1ZShzdHJ1Y3QgYWFjX3NvZnRjICpz YywgaW50IGluZGV4KTsKKworc3RydWN0IGFhY19pbnRlcmZhY2UgYWFjX3NyY19pbnRlcmZhY2Ug PSB7CisJYWFjX3NyY19nZXRfZndzdGF0dXMsCisJYWFjX3NyY19xbm90aWZ5LAorCWFhY19zcmNf Z2V0X2lzdGF0dXMsCisJYWFjX3NyY19jbGVhcl9pc3RhdHVzLAorCWFhY19zcmNfc2V0X21haWxi b3gsCisJYWFjX3NyY19nZXRfbWFpbGJveCwKKwlhYWNfc3JjX3NldF9pbnRlcnJ1cHRzLAorCWFh Y19zcmNfc2VuZF9jb21tYW5kLAorCWFhY19zcmNfZ2V0X291dGJfcXVldWUsCisJYWFjX3NyY19z ZXRfb3V0Yl9xdWV1ZQorfTsKKwogLyogRGVidWdnaW5nIGFuZCBEaWFnbm9zdGljcyAqLwogc3Rh dGljIHZvaWQJYWFjX2Rlc2NyaWJlX2NvbnRyb2xsZXIoc3RydWN0IGFhY19zb2Z0YyAqc2MpOwog c3RhdGljIGNoYXIJKmFhY19kZXNjcmliZV9jb2RlKHN0cnVjdCBhYWNfY29kZV9sb29rdXAgKnRh YmxlLApAQCAtMTk2LDYgKzIyNCw3IEBAIHN0YXRpYyBpbnQJCWFhY19pb2N0bF9zZW5kZmliKHN0 cnVjdCBhYWMKIHN0YXRpYyBpbnQJCWFhY19pb2N0bF9zZW5kX3Jhd19zcmIoc3RydWN0IGFhY19z b2Z0YyAqc2MsIGNhZGRyX3QgYXJnKTsKIHN0YXRpYyB2b2lkCQlhYWNfaGFuZGxlX2FpZihzdHJ1 Y3QgYWFjX3NvZnRjICpzYywKIAkJCQkJICAgc3RydWN0IGFhY19maWIgKmZpYik7CitzdGF0aWMg dm9pZAkJYWFjX3JlcXVlc3RfYWlmKHN0cnVjdCBhYWNfc29mdGMgKnNjKTsKIHN0YXRpYyBpbnQJ CWFhY19yZXZfY2hlY2soc3RydWN0IGFhY19zb2Z0YyAqc2MsIGNhZGRyX3QgdWRhdGEpOwogc3Rh dGljIGludAkJYWFjX29wZW5fYWlmKHN0cnVjdCBhYWNfc29mdGMgKnNjLCBjYWRkcl90IGFyZyk7 CiBzdGF0aWMgaW50CQlhYWNfY2xvc2VfYWlmKHN0cnVjdCBhYWNfc29mdGMgKnNjLCBjYWRkcl90 IGFyZyk7CkBAIC0yMDcsOCArMjM2LDExIEBAIHN0YXRpYyBpbnQJCWFhY19nZXRfcGNpX2luZm8o c3RydWN0IGFhY18KIHN0YXRpYyBpbnQJCWFhY19zdXBwb3J0ZWRfZmVhdHVyZXMoc3RydWN0IGFh Y19zb2Z0YyAqc2MsIGNhZGRyX3QgdXB0cik7CiBzdGF0aWMgdm9pZAkJYWFjX2lvY3RsX2V2ZW50 KHN0cnVjdCBhYWNfc29mdGMgKnNjLAogCQkJCQlzdHJ1Y3QgYWFjX2V2ZW50ICpldmVudCwgdm9p ZCAqYXJnKTsKK3N0YXRpYyBpbnQJCWFhY19yZXNldF9hZGFwdGVyKHN0cnVjdCBhYWNfc29mdGMg KnNjKTsKIHN0YXRpYyBzdHJ1Y3QgYWFjX21udGluZm9yZXNwICoKIAlhYWNfZ2V0X2NvbnRhaW5l cl9pbmZvKHN0cnVjdCBhYWNfc29mdGMgKnNjLCBzdHJ1Y3QgYWFjX2ZpYiAqZmliLCBpbnQgY2lk KTsKK3N0YXRpYyB1X2ludDMyX3QKKwlhYWNfY2hlY2tfYWRhcHRlcl9oZWFsdGgoc3RydWN0IGFh Y19zb2Z0YyAqc2MsIHVfaW50OF90ICpibGVkKTsKIAogc3RhdGljIHN0cnVjdCBjZGV2c3cgYWFj X2NkZXZzdyA9IHsKIAkuZF92ZXJzaW9uID0JRF9WRVJTSU9OLApAQCAtMjM3LDcgKzI2OSw3IEBA IGFhY19hdHRhY2goc3RydWN0IGFhY19zb2Z0YyAqc2MpCiAJaW50IGVycm9yLCB1bml0OwogCiAJ ZndwcmludGYoc2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwgIiIpOwotCisJc2Mt PmhpbnRfZmxhZ3MgPSBkZXZpY2VfZ2V0X2ZsYWdzKHNjLT5hYWNfZGV2KTsKIAkvKgogCSAqIElu aXRpYWxpemUgcGVyLWNvbnRyb2xsZXIgcXVldWVzLgogCSAqLwpAQCAtNDg3LDYgKzUxOSw3IEBA IGFhY19hZGRfY29udGFpbmVyKHN0cnVjdCBhYWNfc29mdGMgKnNjLCAKIHN0YXRpYyBpbnQKIGFh Y19hbGxvYyhzdHJ1Y3QgYWFjX3NvZnRjICpzYykKIHsKKwlidXNfc2l6ZV90IG1heHNpemU7CiAK IAlmd3ByaW50ZihzYywgSEJBX0ZMQUdTX0RCR19GVU5DVElPTl9FTlRSWV9CLCAiIik7CiAKQEAg LTUxNCw2ICs1NDcsMTEgQEAgYWFjX2FsbG9jKHN0cnVjdCBhYWNfc29mdGMgKnNjKQogCS8qCiAJ ICogQ3JlYXRlIERNQSB0YWcgZm9yIG1hcHBpbmcgRklCcyBpbnRvIGNvbnRyb2xsZXItYWRkcmVz c2FibGUgc3BhY2UuLgogCSAqLworCWlmIChzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfTkVXX0NPTU1f VFlQRTEpIAorCQltYXhzaXplID0gc2MtPmFhY19tYXhfZmlic19hbGxvYyAqIChzYy0+YWFjX21h eF9maWJfc2l6ZSArCisJCQlzaXplb2Yoc3RydWN0IGFhY19maWJfeHBvcnRoZHIpICsgMzEpOwor CWVsc2UKKwkJbWF4c2l6ZSA9IHNjLT5hYWNfbWF4X2ZpYnNfYWxsb2MgKiBzYy0+YWFjX21heF9m aWJfc2l6ZTsKIAlpZiAoYnVzX2RtYV90YWdfY3JlYXRlKHNjLT5hYWNfcGFyZW50X2RtYXQsCS8q IHBhcmVudCAqLwogCQkJICAgICAgIDEsIDAsIAkJCS8qIGFsZ25tbnQsIGJvdW5kYXJ5ICovCiAJ CQkgICAgICAgKHNjLT5mbGFncyAmIEFBQ19GTEFHU180R0JfV0lORE9XKSA/CkBAIC01MjEsMTEg KzU1OSw5IEBAIGFhY19hbGxvYyhzdHJ1Y3QgYWFjX3NvZnRjICpzYykKIAkJCSAgICAgICAweDdm ZmZmZmZmLAkJLyogbG93YWRkciAqLwogCQkJICAgICAgIEJVU19TUEFDRV9NQVhBRERSLCAJLyog aGlnaGFkZHIgKi8KIAkJCSAgICAgICBOVUxMLCBOVUxMLCAJCS8qIGZpbHRlciwgZmlsdGVyYXJn ICovCi0JCQkgICAgICAgc2MtPmFhY19tYXhfZmlic19hbGxvYyAqCi0JCQkgICAgICAgc2MtPmFh Y19tYXhfZmliX3NpemUsICAvKiBtYXhzaXplICovCisJCQkgICAgICAgbWF4c2l6ZSwgIAkJLyog bWF4c2l6ZSAqLwogCQkJICAgICAgIDEsCQkJLyogbnNlZ21lbnRzICovCi0JCQkgICAgICAgc2Mt PmFhY19tYXhfZmlic19hbGxvYyAqCi0JCQkgICAgICAgc2MtPmFhY19tYXhfZmliX3NpemUsCS8q IG1heHNpemUgKi8KKwkJCSAgICAgICBtYXhzaXplLAkJCS8qIG1heHNpemUgKi8KIAkJCSAgICAg ICAwLAkJCS8qIGZsYWdzICovCiAJCQkgICAgICAgTlVMTCwgTlVMTCwJCS8qIE5vIGxvY2tpbmcg bmVlZGVkICovCiAJCQkgICAgICAgJnNjLT5hYWNfZmliX2RtYXQpKSB7CkBAIC01MzYsNiArNTcy LDkgQEAgYWFjX2FsbG9jKHN0cnVjdCBhYWNfc29mdGMgKnNjKQogCS8qCiAJICogQ3JlYXRlIERN QSB0YWcgZm9yIHRoZSBjb21tb24gc3RydWN0dXJlIGFuZCBhbGxvY2F0ZSBpdC4KIAkgKi8KKwlt YXhzaXplID0gODE5MiArIHNpemVvZihzdHJ1Y3QgYWFjX2NvbW1vbik7CisJaWYgKHNjLT5mbGFn cyAmIEFBQ19GTEFHU19ORVdfQ09NTV9UWVBFMSkgCisJCW1heHNpemUgKz0gc2MtPmFhY19tYXhf ZmlicyAqIHNpemVvZih1X2ludDMyX3QpOwogCWlmIChidXNfZG1hX3RhZ19jcmVhdGUoc2MtPmFh Y19wYXJlbnRfZG1hdCwgCS8qIHBhcmVudCAqLwogCQkJICAgICAgIDEsIDAsCQkJLyogYWxnbm1u dCwgYm91bmRhcnkgKi8KIAkJCSAgICAgICAoc2MtPmZsYWdzICYgQUFDX0ZMQUdTXzRHQl9XSU5E T1cpID8KQEAgLTU0Myw5ICs1ODIsOSBAQCBhYWNfYWxsb2Moc3RydWN0IGFhY19zb2Z0YyAqc2Mp CiAJCQkgICAgICAgMHg3ZmZmZmZmZiwJCS8qIGxvd2FkZHIgKi8KIAkJCSAgICAgICBCVVNfU1BB Q0VfTUFYQUREUiwgCS8qIGhpZ2hhZGRyICovCiAJCQkgICAgICAgTlVMTCwgTlVMTCwgCQkvKiBm aWx0ZXIsIGZpbHRlcmFyZyAqLwotCQkJICAgICAgIDgxOTIgKyBzaXplb2Yoc3RydWN0IGFhY19j b21tb24pLCAvKiBtYXhzaXplICovCisJCQkgICAgICAgbWF4c2l6ZSwgCQkvKiBtYXhzaXplICov CiAJCQkgICAgICAgMSwJCQkvKiBuc2VnbWVudHMgKi8KLQkJCSAgICAgICBCVVNfU1BBQ0VfTUFY U0laRV8zMkJJVCwJLyogbWF4c2Vnc2l6ZSAqLworCQkJICAgICAgIG1heHNpemUsCQkJLyogbWF4 c2Vnc2l6ZSAqLwogCQkJICAgICAgIDAsCQkJLyogZmxhZ3MgKi8KIAkJCSAgICAgICBOVUxMLCBO VUxMLAkJLyogTm8gbG9ja2luZyBuZWVkZWQgKi8KIAkJCSAgICAgICAmc2MtPmFhY19jb21tb25f ZG1hdCkpIHsKQEAgLTU2Niw3ICs2MDUsNyBAQCBhYWNfYWxsb2Moc3RydWN0IGFhY19zb2Z0YyAq c2MpCiAJICogb2YgaWdub3JlZD8KIAkgKi8KIAkodm9pZClidXNfZG1hbWFwX2xvYWQoc2MtPmFh Y19jb21tb25fZG1hdCwgc2MtPmFhY19jb21tb25fZG1hbWFwLAotCQkJc2MtPmFhY19jb21tb24s IDgxOTIgKyBzaXplb2YoKnNjLT5hYWNfY29tbW9uKSwKKwkJCXNjLT5hYWNfY29tbW9uLCBtYXhz aXplLAogCQkJYWFjX2NvbW1vbl9tYXAsIHNjLCAwKTsKIAogCWlmIChzYy0+YWFjX2NvbW1vbl9i dXNhZGRyIDwgODE5MikgewpAQCAtNTc0LDcgKzYxMyw3IEBAIGFhY19hbGxvYyhzdHJ1Y3QgYWFj X3NvZnRjICpzYykKIAkJICAgICgodWludDhfdCAqKXNjLT5hYWNfY29tbW9uICsgODE5Mik7CiAJ CXNjLT5hYWNfY29tbW9uX2J1c2FkZHIgKz0gODE5MjsKIAl9Ci0JYnplcm8oc2MtPmFhY19jb21t b24sIHNpemVvZigqc2MtPmFhY19jb21tb24pKTsKKwliemVybyhzYy0+YWFjX2NvbW1vbiwgbWF4 c2l6ZSAtIDgxOTIpOwogCiAJLyogQWxsb2NhdGUgc29tZSBGSUJzIGFuZCBhc3NvY2lhdGVkIGNv bW1hbmQgc3RydWN0cyAqLwogCVRBSUxRX0lOSVQoJnNjLT5hYWNfZmlibWFwX3RxaCk7CkBAIC02 NDAsNyArNjc5LDggQEAgYWFjX2ZyZWUoc3RydWN0IGFhY19zb2Z0YyAqc2MpCiAJaWYgKHNjLT5h YWNfcmVnc19yZXMwICE9IE5VTEwpCiAJCWJ1c19yZWxlYXNlX3Jlc291cmNlKHNjLT5hYWNfZGV2 LCBTWVNfUkVTX01FTU9SWSwKIAkJCQkgICAgIHNjLT5hYWNfcmVnc19yaWQwLCBzYy0+YWFjX3Jl Z3NfcmVzMCk7Ci0JaWYgKHNjLT5hYWNfaHdpZiA9PSBBQUNfSFdJRl9OQVJLICYmIHNjLT5hYWNf cmVnc19yZXMxICE9IE5VTEwpCisJaWYgKChzYy0+YWFjX2h3aWYgPT0gQUFDX0hXSUZfU1JDIHx8 IHNjLT5hYWNfaHdpZiA9PSBBQUNfSFdJRl9OQVJLKQorCQkmJiBzYy0+YWFjX3JlZ3NfcmVzMSAh PSBOVUxMKQogCQlidXNfcmVsZWFzZV9yZXNvdXJjZShzYy0+YWFjX2RldiwgU1lTX1JFU19NRU1P UlksCiAJCQkJICAgICBzYy0+YWFjX3JlZ3NfcmlkMSwgc2MtPmFhY19yZWdzX3JlczEpOwogfQpA QCAtODAwLDYgKzg0MCwxMDcgQEAgYWFjX3Jlc3VtZShkZXZpY2VfdCBkZXYpCiB9CiAKIC8qCisg KiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgTkVXX0NPTU1fVFlQRTEgaW50ZXJmYWNlLgorICovCit2 b2lkCithYWNfbmV3X2ludHJfdHlwZTEodm9pZCAqYXJnKQoreworCXN0cnVjdCBhYWNfc29mdGMg KnNjOworCXN0cnVjdCBhYWNfY29tbWFuZCAqY207CisJc3RydWN0IGFhY19maWIgKmZpYjsKKwl1 X2ludDMyX3QgYmVsbGJpdHMsIGJlbGxiaXRzX3NoaWZ0ZWQsIGluZGV4LCBoYW5kbGU7CisJaW50 IGlzRmFzdFJlc3BvbnNlLCBpc0FpZiwgbm9Nb3JlQWlmOworCWludCBvdXJfaW50ZXJydXB0ID0g MDsKKworCXNjID0gKHN0cnVjdCBhYWNfc29mdGMgKilhcmc7CisKKwlmd3ByaW50ZihzYywgSEJB X0ZMQUdTX0RCR19GVU5DVElPTl9FTlRSWV9CLCAiIik7CisJbXR4X2xvY2soJnNjLT5hYWNfaW9f bG9jayk7CisJYmVsbGJpdHMgPSBBQUNfTUVNMF9HRVRSRUc0KHNjLCBBQUNfU1JDX09EQlJfUik7 CisJaWYgKGJlbGxiaXRzICYgQUFDX0RCX1JFU1BPTlNFX1NFTlRfTlMpIHsKKwkJYmVsbGJpdHMg PSBBQUNfREJfUkVTUE9OU0VfU0VOVF9OUzsKKwkJLyogaGFuZGxlIGFzeW5jLiBzdGF0dXMgKi8K KwkJb3VyX2ludGVycnVwdCA9IDE7CisJCWluZGV4ID0gc2MtPmFhY19ob3N0X3JycV9pZHg7CisJ CWlmIChzYy0+YWFjX2NvbW1vbi0+YWNfaG9zdF9ycnFbaW5kZXhdID09IDApIHsKKwkJCXVfaW50 MzJfdCBvbGRfaW5kZXggPSBpbmRleDsKKwkJCS8qIGFkanVzdCBpbmRleCAqLworCQkJZG8gewor CQkJCWluZGV4Kys7CisJCQkJaWYgKGluZGV4ID09IHNjLT5hYWNfbWF4X2ZpYnMpIAorCQkJCQlp bmRleCA9IDA7CisJCQkJaWYgKHNjLT5hYWNfY29tbW9uLT5hY19ob3N0X3JycVtpbmRleF0gIT0g MCkgCisJCQkJCWJyZWFrOworCQkJfSB3aGlsZSAoaW5kZXggIT0gb2xkX2luZGV4KTsKKwkJCXNj LT5hYWNfaG9zdF9ycnFfaWR4ID0gaW5kZXg7CisJCX0KKwkJZm9yICg7OykgeworCQkJaXNGYXN0 UmVzcG9uc2UgPSBpc0FpZiA9IG5vTW9yZUFpZiA9IDA7CisJCQkvKiByZW1vdmUgdG9nZ2xlIGJp dCAoMzEpICovCisJCQloYW5kbGUgPSAoc2MtPmFhY19jb21tb24tPmFjX2hvc3RfcnJxW2luZGV4 XSAmIDB4N2ZmZmZmZmYpOworCQkJLyogY2hlY2sgZmFzdCByZXNwb25zZSBiaXQgKDMwKSAqLwor CQkJaWYgKGhhbmRsZSAmIDB4NDAwMDAwMDApIAorCQkJCWlzRmFzdFJlc3BvbnNlID0gMTsKKwkJ CS8qIGNoZWNrIEFJRiBiaXQgKDIzKSAqLworCQkJZWxzZSBpZiAoaGFuZGxlICYgMHgwMDgwMDAw MCkgCisJCQkJaXNBaWYgPSBUUlVFOworCQkJaGFuZGxlICY9IDB4MDAwMGZmZmY7CisJCQlpZiAo aGFuZGxlID09IDApIAorCQkJCWJyZWFrOworCisJCQljbSA9IHNjLT5hYWNfY29tbWFuZHMgKyAo aGFuZGxlIC0gMSk7CisJCQlmaWIgPSBjbS0+Y21fZmliOworCQkJaWYgKGlzQWlmKSB7CisJCQkJ bm9Nb3JlQWlmID0gKGZpYi0+SGVhZGVyLlhmZXJTdGF0ZSAmIEFBQ19GSUJTVEFURV9OT01PUkVB SUYpID8gMTowOworCQkJCWlmICghbm9Nb3JlQWlmKSAKKwkJCQkJYWFjX2hhbmRsZV9haWYoc2Ms IGZpYik7CisJCQkJYWFjX3JlbW92ZV9idXN5KGNtKTsKKwkJCQlhYWNfcmVsZWFzZV9jb21tYW5k KGNtKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKGlzRmFzdFJlc3BvbnNlKSB7CisJCQkJCWZpYi0+ SGVhZGVyLlhmZXJTdGF0ZSB8PSBBQUNfRklCU1RBVEVfRE9ORUFEQVA7CisJCQkJCSooKHVfaW50 MzJfdCAqKShmaWItPmRhdGEpKSA9IEFBQ19FUlJPUl9OT1JNQUw7CisJCQkJfQorCQkJCWFhY19y ZW1vdmVfYnVzeShjbSk7CisJCQkJYWFjX3VubWFwX2NvbW1hbmQoY20pOworCQkJCWNtLT5jbV9m bGFncyB8PSBBQUNfQ01EX0NPTVBMRVRFRDsKKworCQkJCS8qIGlzIHRoZXJlIGEgY29tcGxldGlv biBoYW5kbGVyPyAqLworCQkJCWlmIChjbS0+Y21fY29tcGxldGUgIT0gTlVMTCkgeworCQkJCQlj bS0+Y21fY29tcGxldGUoY20pOworCQkJCX0gZWxzZSB7CisJCQkJCS8qIGFzc3VtZSB0aGF0IHNv bWVvbmUgaXMgc2xlZXBpbmcgb24gdGhpcyBjb21tYW5kICovCisJCQkJCXdha2V1cChjbSk7CisJ CQkJfQorCQkJCXNjLT5mbGFncyAmPSB+QUFDX1FVRVVFX0ZSWk47CisJCQl9CisKKwkJCXNjLT5h YWNfY29tbW9uLT5hY19ob3N0X3JycVtpbmRleCsrXSA9IDA7CisJCQlpZiAoaW5kZXggPT0gc2Mt PmFhY19tYXhfZmlicykgCisJCQkJaW5kZXggPSAwOworCQkJc2MtPmFhY19ob3N0X3JycV9pZHgg PSBpbmRleDsKKworCQkJaWYgKChpc0FpZiAmJiAhbm9Nb3JlQWlmKSB8fCBzYy0+YWlmX3BlbmRp bmcpIAorCQkJCWFhY19yZXF1ZXN0X2FpZihzYyk7CisJCX0KKwl9IGVsc2UgeworCQliZWxsYml0 c19zaGlmdGVkID0gKGJlbGxiaXRzID4+IEFBQ19TUkNfT0RSX1NISUZUKTsKKwkJaWYgKGJlbGxi aXRzX3NoaWZ0ZWQgJiBBQUNfREJfQUlGX1BFTkRJTkcpIHsKKwkJCW91cl9pbnRlcnJ1cHQgPSAx OworCQkJLyogaGFuZGxlIEFJRiAqLworCQkJYWFjX3JlcXVlc3RfYWlmKHNjKTsKKwkJfQorICAg IH0KKwlpZiAob3VyX2ludGVycnVwdCkgCisJCUFBQ19NRU0wX1NFVFJFRzQoc2MsIEFBQ19TUkNf T0RCUl9DLCBiZWxsYml0cyk7CisKKwkvKiBzZWUgaWYgd2UgY2FuIHN0YXJ0IHNvbWUgbW9yZSBJ L08gKi8KKwlpZiAoKHNjLT5mbGFncyAmIEFBQ19RVUVVRV9GUlpOKSA9PSAwKQorCQlhYWNfc3Rh cnRpbyhzYyk7CisJbXR4X3VubG9jaygmc2MtPmFhY19pb19sb2NrKTsKK30KKworLyoKICAqIElu dGVycnVwdCBoYW5kbGVyIGZvciBORVdfQ09NTSBpbnRlcmZhY2UuCiAgKi8KIHZvaWQKQEAgLTk0 NSw2ICsxMDg2LDggQEAgYWFjX3N0YXJ0aW8oc3RydWN0IGFhY19zb2Z0YyAqc2MpCiAJZndwcmlu dGYoc2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwgIiIpOwogCiAJZm9yICg7Oykg eworCQlpZiAoc2MtPmFhY19zdGF0ZSAmIEFBQ19TVEFURV9SRVNFVCkKKwkJCWJyZWFrOwogCQkv KgogCQkgKiBUaGlzIGZsYWcgbWlnaHQgYmUgc2V0IGlmIHRoZSBjYXJkIGlzIG91dCBvZiByZXNv dXJjZXMuCiAJCSAqIENoZWNraW5nIGl0IGhlcmUgcHJldmVudHMgYW4gaW5maW5pdGUgbG9vcCBv ZiBkZWZlcnJhbHMuCkBAIC0xMTkwLDYgKzEzMzMsMTYgQEAgYWFjX2Jpb19jb21tYW5kKHN0cnVj dCBhYWNfc29mdGMgKnNjLCBzdAogCWlmICgoYnAgPSBhYWNfZGVxdWV1ZV9iaW8oc2MpKSA9PSBO VUxMKQogCQlnb3RvIGZhaWw7CiAKKwlhZCA9IChzdHJ1Y3QgYWFjX2Rpc2sgKilicC0+YmlvX2Rp c2stPmRfZHJ2MTsKKwkvKiBjb250YWluZXIgc3RpbGwgdmFsaWQ/ICovCisJaWYgKGFkLT5hZF9j b250YWluZXIgPT0gTlVMTCkgeworCQlicC0+YmlvX2ZsYWdzIHw9IEJJT19FUlJPUjsKKwkJYnAt PmJpb19lcnJvciA9IEVJTlZBTDsKKwkJYmlvZG9uZShicCk7CisJCWJwID0gTlVMTDsKKwkJZ290 byBmYWlsOworCX0KKwogCS8qIGZpbGwgb3V0IHRoZSBjb21tYW5kICovCiAJY20tPmNtX2RhdGEg PSAodm9pZCAqKWJwLT5iaW9fZGF0YTsKIAljbS0+Y21fZGF0YWxlbiA9IGJwLT5iaW9fYmNvdW50 OwpAQCAtMTIxMSw4ICsxMzY0LDYgQEAgYWFjX2Jpb19jb21tYW5kKHN0cnVjdCBhYWNfc29mdGMg KnNjLCBzdAogCQlBQUNfRklCU1RBVEVfRkFTVF9SRVNQT05TRTsKIAogCS8qIGJ1aWxkIHRoZSBy ZWFkL3dyaXRlIHJlcXVlc3QgKi8KLQlhZCA9IChzdHJ1Y3QgYWFjX2Rpc2sgKilicC0+YmlvX2Rp c2stPmRfZHJ2MTsKLQogCWlmIChzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfUkFXX0lPKSB7CiAJCXN0 cnVjdCBhYWNfcmF3X2lvICpyYXc7CiAJCXJhdyA9IChzdHJ1Y3QgYWFjX3Jhd19pbyAqKSZmaWIt PmRhdGFbMF07CkBAIC0xMzA4LDcgKzE0NTksOSBAQCBhYWNfYmlvX2NvbXBsZXRlKHN0cnVjdCBh YWNfY29tbWFuZCAqY20pCiAKIAkvKiBmZXRjaCByZWxldmFudCBzdGF0dXMgYW5kIHRoZW4gcmVs ZWFzZSB0aGUgY29tbWFuZCAqLwogCWJwID0gKHN0cnVjdCBiaW8gKiljbS0+Y21fcHJpdmF0ZTsK LQlpZiAoYnAtPmJpb19jbWQgPT0gQklPX1JFQUQpIHsKKwlpZiAoY20tPmNtX2ZsYWdzICYgQUFD X0NNRF9SRVNFVCkgeworCQlzdGF0dXMgPSBTVF9CVVNfUkVTRVQ7CisJfSBlbHNlIGlmIChicC0+ YmlvX2NtZCA9PSBCSU9fUkVBRCkgewogCQlicnIgPSAoc3RydWN0IGFhY19ibG9ja3JlYWRfcmVz cG9uc2UgKikmY20tPmNtX2ZpYi0+ZGF0YVswXTsKIAkJc3RhdHVzID0gYnJyLT5TdGF0dXM7CiAJ fSBlbHNlIHsKQEAgLTEzMjEsNyArMTQ3NCw3IEBAIGFhY19iaW9fY29tcGxldGUoc3RydWN0IGFh Y19jb21tYW5kICpjbSkKIAlpZiAoc3RhdHVzID09IFNUX09LKSB7CiAJCWJwLT5iaW9fcmVzaWQg PSAwOwogCX0gZWxzZSB7Ci0JCWJwLT5iaW9fZXJyb3IgPSBFSU87CisJCWJwLT5iaW9fZXJyb3Ig PSAoc3RhdHVzID09IFNUX05PVF9SRUFEWSA/IEVCVVNZIDogRUlPKTsKIAkJYnAtPmJpb19mbGFn cyB8PSBCSU9fRVJST1I7CiAJCS8qIHBhc3MgYW4gZXJyb3Igc3RyaW5nIG91dCB0byB0aGUgZGlz ayBsYXllciAqLwogCQlicC0+YmlvX2RyaXZlcjEgPSBhYWNfZGVzY3JpYmVfY29kZShhYWNfY29t bWFuZF9zdGF0dXNfdGFibGUsCkBAIC0xNDAwLDYgKzE1NTMsNyBAQCBhYWNfcmVsZWFzZV9jb21t YW5kKHN0cnVjdCBhYWNfY29tbWFuZCAqCiAJY20tPmNtX2NvbXBsZXRlID0gTlVMTDsKIAljbS0+ Y21fcHJpdmF0ZSA9IE5VTEw7CiAJY20tPmNtX3F1ZXVlID0gQUFDX0FEQVBfTk9STV9DTURfUVVF VUU7CisJY20tPmNtX3Bhc3N0aHJfZG1hdCA9IDA7CiAJY20tPmNtX2ZpYi0+SGVhZGVyLlhmZXJT dGF0ZSA9IEFBQ19GSUJTVEFURV9FTVBUWTsKIAljbS0+Y21fZmliLT5IZWFkZXIuU3RydWN0VHlw ZSA9IEFBQ19GSUJUWVBFX1RGSUI7CiAJY20tPmNtX2ZpYi0+SGVhZGVyLkZsYWdzID0gMDsKQEAg LTE0NDgsNiArMTYwMiw3IEBAIGFhY19hbGxvY19jb21tYW5kcyhzdHJ1Y3QgYWFjX3NvZnRjICpz YykKIAlzdHJ1Y3QgYWFjX2ZpYm1hcCAqZm07CiAJdWludDY0X3QgZmlicGh5czsKIAlpbnQgaSwg ZXJyb3I7CisJdV9pbnQzMl90IG1heHNpemU7CiAKIAlmd3ByaW50ZihzYywgSEJBX0ZMQUdTX0RC R19GVU5DVElPTl9FTlRSWV9CLCAiIik7CiAKQEAgLTE0NjcsMjcgKzE2MjIsNDAgQEAgYWFjX2Fs bG9jX2NvbW1hbmRzKHN0cnVjdCBhYWNfc29mdGMgKnNjKQogCQlyZXR1cm4gKEVOT01FTSk7CiAJ fQogCisJbWF4c2l6ZSA9IHNjLT5hYWNfbWF4X2ZpYl9zaXplOworCWlmIChzYy0+ZmxhZ3MgJiBB QUNfRkxBR1NfTkVXX0NPTU1fVFlQRTEpIAorCQltYXhzaXplICs9IHNpemVvZihzdHJ1Y3QgYWFj X2ZpYl94cG9ydGhkcikgKyAzMTsKKwogCS8qIElnbm9yZSBlcnJvcnMgc2luY2UgdGhpcyBkb2Vz bid0IGJvdW5jZSAqLwogCSh2b2lkKWJ1c19kbWFtYXBfbG9hZChzYy0+YWFjX2ZpYl9kbWF0LCBm bS0+YWFjX2ZpYm1hcCwgZm0tPmFhY19maWJzLAotCQkJICAgICAgc2MtPmFhY19tYXhfZmlic19h bGxvYyAqIHNjLT5hYWNfbWF4X2ZpYl9zaXplLAorCQkJICAgICAgc2MtPmFhY19tYXhfZmlic19h bGxvYyAqIG1heHNpemUsCiAJCQkgICAgICBhYWNfbWFwX2NvbW1hbmRfaGVscGVyLCAmZmlicGh5 cywgMCk7CiAKIAkvKiBpbml0aWFsaXplIGNvbnN0YW50IGZpZWxkcyBpbiB0aGUgY29tbWFuZCBz dHJ1Y3R1cmUgKi8KLQliemVybyhmbS0+YWFjX2ZpYnMsIHNjLT5hYWNfbWF4X2ZpYnNfYWxsb2Mg KiBzYy0+YWFjX21heF9maWJfc2l6ZSk7CisJYnplcm8oZm0tPmFhY19maWJzLCBzYy0+YWFjX21h eF9maWJzX2FsbG9jICogbWF4c2l6ZSk7CiAJZm9yIChpID0gMDsgaSA8IHNjLT5hYWNfbWF4X2Zp YnNfYWxsb2M7IGkrKykgewogCQljbSA9IHNjLT5hYWNfY29tbWFuZHMgKyBzYy0+dG90YWxfZmli czsKIAkJZm0tPmFhY19jb21tYW5kcyA9IGNtOwogCQljbS0+Y21fc2MgPSBzYzsKIAkJY20tPmNt X2ZpYiA9IChzdHJ1Y3QgYWFjX2ZpYiAqKQotCQkJKCh1X2ludDhfdCAqKWZtLT5hYWNfZmlicyAr IGkqc2MtPmFhY19tYXhfZmliX3NpemUpOwotCQljbS0+Y21fZmlicGh5cyA9IGZpYnBoeXMgKyBp KnNjLT5hYWNfbWF4X2ZpYl9zaXplOworCQkJKCh1X2ludDhfdCAqKWZtLT5hYWNfZmlicyArIGkg KiBtYXhzaXplKTsKKwkJY20tPmNtX2ZpYnBoeXMgPSBmaWJwaHlzICsgaSAqIG1heHNpemU7CisJ CWlmIChzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfTkVXX0NPTU1fVFlQRTEpIHsKKwkJCXVfaW50NjRf dCBmaWJwaHlzX2FsaWduZWQ7CisJCQlmaWJwaHlzX2FsaWduZWQgPSAKKwkJCQkoY20tPmNtX2Zp YnBoeXMgKyBzaXplb2Yoc3RydWN0IGFhY19maWJfeHBvcnRoZHIpICsgMzEpICYgfjMxOworCQkJ Y20tPmNtX2ZpYiA9IChzdHJ1Y3QgYWFjX2ZpYiAqKQorCQkJCSgodV9pbnQ4X3QgKiljbS0+Y21f ZmliICsgKGZpYnBoeXNfYWxpZ25lZCAtIGNtLT5jbV9maWJwaHlzKSk7CisJCQljbS0+Y21fZmli cGh5cyA9IGZpYnBoeXNfYWxpZ25lZDsKKwkJfQogCQljbS0+Y21faW5kZXggPSBzYy0+dG90YWxf ZmliczsKIAogCQlpZiAoKGVycm9yID0gYnVzX2RtYW1hcF9jcmVhdGUoc2MtPmFhY19idWZmZXJf ZG1hdCwgMCwKIAkJCQkJICAgICAgICZjbS0+Y21fZGF0YW1hcCkpICE9IDApCiAJCQlicmVhazsK IAkJbXR4X2xvY2soJnNjLT5hYWNfaW9fbG9jayk7Ci0JCWFhY19yZWxlYXNlX2NvbW1hbmQoY20p OworCQlpZiAoc2MtPmFhY19tYXhfZmlicyA8PSAxIHx8IHNjLT5hYWNfbWF4X2ZpYnMgLSBzYy0+ dG90YWxfZmlicyA+IDEpCisJCQlhYWNfcmVsZWFzZV9jb21tYW5kKGNtKTsKIAkJc2MtPnRvdGFs X2ZpYnMrKzsKIAkJbXR4X3VubG9jaygmc2MtPmFhY19pb19sb2NrKTsKIAl9CkBAIC0xNTk4LDE0 ICsxNzY2LDE3IEBAIGFhY19tYXBfY29tbWFuZF9zZyh2b2lkICphcmcsIGJ1c19kbWFfc2UKIAlj bS0+Y21fZmliLT5IZWFkZXIuUmVjZWl2ZXJGaWJBZGRyZXNzID0gKHVfaW50MzJfdCljbS0+Y21f ZmlicGh5czsKIAogCS8qIHNhdmUgYSBwb2ludGVyIHRvIHRoZSBjb21tYW5kIGZvciBzcGVlZHkg cmV2ZXJzZS1sb29rdXAgKi8KLQljbS0+Y21fZmliLT5IZWFkZXIuU2VuZGVyRGF0YSA9IGNtLT5j bV9pbmRleDsKKwljbS0+Y21fZmliLT5IZWFkZXIuU2VuZGVyRGF0YSArPSBjbS0+Y21faW5kZXg7 CisKKwlpZiAoY20tPmNtX3Bhc3N0aHJfZG1hdCA9PSAwKSB7CisJCWlmIChjbS0+Y21fZmxhZ3Mg JiBBQUNfQ01EX0RBVEFJTikKKwkJCWJ1c19kbWFtYXBfc3luYyhzYy0+YWFjX2J1ZmZlcl9kbWF0 LCBjbS0+Y21fZGF0YW1hcCwKKwkJCQkJCQlCVVNfRE1BU1lOQ19QUkVSRUFEKTsKKwkJaWYgKGNt LT5jbV9mbGFncyAmIEFBQ19DTURfREFUQU9VVCkKKwkJCWJ1c19kbWFtYXBfc3luYyhzYy0+YWFj X2J1ZmZlcl9kbWF0LCBjbS0+Y21fZGF0YW1hcCwKKwkJCQkJCQlCVVNfRE1BU1lOQ19QUkVXUklU RSk7CisJfQogCi0JaWYgKGNtLT5jbV9mbGFncyAmIEFBQ19DTURfREFUQUlOKQotCQlidXNfZG1h bWFwX3N5bmMoc2MtPmFhY19idWZmZXJfZG1hdCwgY20tPmNtX2RhdGFtYXAsCi0JCQkJQlVTX0RN QVNZTkNfUFJFUkVBRCk7Ci0JaWYgKGNtLT5jbV9mbGFncyAmIEFBQ19DTURfREFUQU9VVCkKLQkJ YnVzX2RtYW1hcF9zeW5jKHNjLT5hYWNfYnVmZmVyX2RtYXQsIGNtLT5jbV9kYXRhbWFwLAotCQkJ CUJVU19ETUFTWU5DX1BSRVdSSVRFKTsKIAljbS0+Y21fZmxhZ3MgfD0gQUFDX0NNRF9NQVBQRUQ7 CiAKIAlpZiAoc2MtPmZsYWdzICYgQUFDX0ZMQUdTX05FV19DT01NKSB7CkBAIC0xNjQ0LDcgKzE4 MTUsNyBAQCBhYWNfdW5tYXBfY29tbWFuZChzdHJ1Y3QgYWFjX2NvbW1hbmQgKmNtCiAJaWYgKCEo Y20tPmNtX2ZsYWdzICYgQUFDX0NNRF9NQVBQRUQpKQogCQlyZXR1cm47CiAKLQlpZiAoY20tPmNt X2RhdGFsZW4gIT0gMCkgeworCWlmIChjbS0+Y21fZGF0YWxlbiAhPSAwICYmIGNtLT5jbV9wYXNz dGhyX2RtYXQgPT0gMCkgewogCQlpZiAoY20tPmNtX2ZsYWdzICYgQUFDX0NNRF9EQVRBSU4pCiAJ CQlidXNfZG1hbWFwX3N5bmMoc2MtPmFhY19idWZmZXJfZG1hdCwgY20tPmNtX2RhdGFtYXAsCiAJ CQkJCUJVU19ETUFTWU5DX1BPU1RSRUFEKTsKQEAgLTE2NzgsNyArMTg0OSw4IEBAIGFhY19jb21t b25fbWFwKHZvaWQgKmFyZywgYnVzX2RtYV9zZWdtZW4KIHN0YXRpYyBpbnQKIGFhY19jaGVja19m aXJtd2FyZShzdHJ1Y3QgYWFjX3NvZnRjICpzYykKIHsKLQl1X2ludDMyX3QgY29kZSwgbWFqb3Is IG1pbm9yLCBvcHRpb25zID0gMCwgYXR1X3NpemUgPSAwOworCXVfaW50MzJfdCBjb2RlLCBtYWpv ciwgbWlub3IsIG1heHNpemU7CisJdV9pbnQzMl90IG9wdGlvbnMgPSAwLCBhdHVfc2l6ZSA9IDA7 CiAJaW50IHN0YXR1czsKIAl0aW1lX3QgdGhlbjsKIApAQCAtMTcxMiw3ICsxODg0LDcgQEAgYWFj X2NoZWNrX2Zpcm13YXJlKHN0cnVjdCBhYWNfc29mdGMgKnNjKQogCSAqLwogCWlmIChzYy0+Zmxh Z3MgJiBBQUNfRkxBR1NfUEVSQzJRQykgewogCQlpZiAoYWFjX3N5bmNfY29tbWFuZChzYywgQUFD X01PTktFUl9HRVRLRVJOVkVSLCAwLCAwLCAwLCAwLAotCQkJCSAgICAgTlVMTCkpIHsKKwkJCQkg ICAgIE5VTEwsIE5VTEwpKSB7CiAJCQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LAogCQkJCSAg ICAgICJFcnJvciByZWFkaW5nIGZpcm13YXJlIHZlcnNpb25cbiIpOwogCQkJcmV0dXJuIChFSU8p OwpAQCAtMTcyOCwxMyArMTkwMCwxMiBAQCBhYWNfY2hlY2tfZmlybXdhcmUoc3RydWN0IGFhY19z b2Z0YyAqc2MpCiAJCQlyZXR1cm4gKEVJTlZBTCk7CiAJCX0KIAl9Ci0KIAkvKgogCSAqIFJldHJp ZXZlIHRoZSBjYXBhYmlsaXRpZXMvc3VwcG9ydGVkIG9wdGlvbnMgd29yZCBzbyB3ZSBrbm93IHdo YXQKIAkgKiB3b3JrLWFyb3VuZHMgdG8gZW5hYmxlLiAgU29tZSBmaXJtd2FyZSByZXZzIGRvbid0 IHN1cHBvcnQgdGhpcwogCSAqIGNvbW1hbmQuCiAJICovCi0JaWYgKGFhY19zeW5jX2NvbW1hbmQo c2MsIEFBQ19NT05LRVJfR0VUSU5GTywgMCwgMCwgMCwgMCwgJnN0YXR1cykpIHsKKwlpZiAoYWFj X3N5bmNfY29tbWFuZChzYywgQUFDX01PTktFUl9HRVRJTkZPLCAwLCAwLCAwLCAwLCAmc3RhdHVz LCBOVUxMKSkgewogCQlpZiAoc3RhdHVzICE9IEFBQ19TUkJfU1RTX0lOVkFMSURfUkVRVUVTVCkg ewogCQkJZGV2aWNlX3ByaW50ZihzYy0+YWFjX2RldiwKIAkJCSAgICAgIlJlcXVlc3RBZGFwdGVy SW5mbyBmYWlsZWRcbiIpOwpAQCAtMTc1MSwxNCArMTkyMiwxOCBAQCBhYWNfY2hlY2tfZmlybXdh cmUoc3RydWN0IGFhY19zb2Z0YyAqc2MpCiAJCWlmIChvcHRpb25zICYgQUFDX1NVUFBPUlRFRF9O T05EQVNEKQogCQkJc2MtPmZsYWdzIHw9IEFBQ19GTEFHU19FTkFCTEVfQ0FNOwogCQlpZiAoKG9w dGlvbnMgJiBBQUNfU1VQUE9SVEVEX1NHTUFQX0hPU1Q2NCkgIT0gMAotCQkgICAgICYmIChzaXpl b2YoYnVzX2FkZHJfdCkgPiA0KSkgeworCQkJJiYgKHNpemVvZihidXNfYWRkcl90KSA+IDQpCisJ CQkmJiAoc2MtPmhpbnRfZmxhZ3MgJiAweDEpKSB7CiAJCQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNf ZGV2LAogCQkJICAgICJFbmFibGluZyA2NC1iaXQgYWRkcmVzcyBzdXBwb3J0XG4iKTsKIAkJCXNj LT5mbGFncyB8PSBBQUNfRkxBR1NfU0dfNjRCSVQ7CiAJCX0KLQkJaWYgKChvcHRpb25zICYgQUFD X1NVUFBPUlRFRF9ORVdfQ09NTSkKLQkJICYmIHNjLT5hYWNfaWYuYWlmX3NlbmRfY29tbWFuZCkK LQkJCXNjLT5mbGFncyB8PSBBQUNfRkxBR1NfTkVXX0NPTU07CisJCWlmIChzYy0+YWFjX2lmLmFp Zl9zZW5kX2NvbW1hbmQpIHsKKwkJCWlmIChvcHRpb25zICYgQUFDX1NVUFBPUlRFRF9ORVdfQ09N TV9UWVBFMSkKKwkJCQlzYy0+ZmxhZ3MgfD0gQUFDX0ZMQUdTX05FV19DT01NIHwgQUFDX0ZMQUdT X05FV19DT01NX1RZUEUxOworCQkJZWxzZSBpZiAob3B0aW9ucyAmIEFBQ19TVVBQT1JURURfTkVX X0NPTU0pCisJCQkJc2MtPmZsYWdzIHw9IEFBQ19GTEFHU19ORVdfQ09NTTsKKwkJfQogCQlpZiAo b3B0aW9ucyAmIEFBQ19TVVBQT1JURURfNjRCSVRfQVJSQVlTSVpFKQogCQkJc2MtPmZsYWdzIHw9 IEFBQ19GTEFHU19BUlJBWV82NEJJVDsKIAl9CkBAIC0xNzY3LDM5ICsxOTQyLDcxIEBAIGFhY19j aGVja19maXJtd2FyZShzdHJ1Y3QgYWFjX3NvZnRjICpzYykKIAlzYy0+YWFjX21heF9maWJzID0g KHNjLT5mbGFncyAmIEFBQ19GTEFHU18yNTZGSUJTID8gMjU2OjUxMik7CiAKIAkvKiBSZW1hcCBt ZW0uIHJlc291cmNlLCBpZiByZXF1aXJlZCAqLwotCWlmICgoc2MtPmZsYWdzICYgQUFDX0ZMQUdT X05FV19DT01NKSAmJgotCQlhdHVfc2l6ZSA+IHJtYW5fZ2V0X3NpemUoc2MtPmFhY19yZWdzX3Jl czEpKSB7Ci0JCWJ1c19yZWxlYXNlX3Jlc291cmNlKAotCQkJc2MtPmFhY19kZXYsIFNZU19SRVNf TUVNT1JZLAotCQkJc2MtPmFhY19yZWdzX3JpZDEsIHNjLT5hYWNfcmVnc19yZXMxKTsKLQkJc2Mt PmFhY19yZWdzX3JlczEgPSBidXNfYWxsb2NfcmVzb3VyY2UoCi0JCQlzYy0+YWFjX2RldiwgU1lT X1JFU19NRU1PUlksICZzYy0+YWFjX3JlZ3NfcmlkMSwKLQkJCTB1bCwgfjB1bCwgYXR1X3NpemUs IFJGX0FDVElWRSk7Ci0JCWlmIChzYy0+YWFjX3JlZ3NfcmVzMSA9PSBOVUxMKSB7Ci0JCQlzYy0+ YWFjX3JlZ3NfcmVzMSA9IGJ1c19hbGxvY19yZXNvdXJjZV9hbnkoCisJaWYgKHNjLT5hYWNfaHdp ZiA9PSBBQUNfSFdJRl9OQVJLKSB7CisJCWlmICgoc2MtPmZsYWdzICYgQUFDX0ZMQUdTX05FV19D T01NKSAmJgorCQkJYXR1X3NpemUgPiBybWFuX2dldF9zaXplKHNjLT5hYWNfcmVnc19yZXMxKSkg eworCQkJYnVzX3JlbGVhc2VfcmVzb3VyY2UoCiAJCQkJc2MtPmFhY19kZXYsIFNZU19SRVNfTUVN T1JZLAotCQkJCSZzYy0+YWFjX3JlZ3NfcmlkMSwgUkZfQUNUSVZFKTsKKwkJCQlzYy0+YWFjX3Jl Z3NfcmlkMSwgc2MtPmFhY19yZWdzX3JlczEpOworCQkJc2MtPmFhY19yZWdzX3JlczEgPSBidXNf YWxsb2NfcmVzb3VyY2UoCisJCQkJc2MtPmFhY19kZXYsIFNZU19SRVNfTUVNT1JZLCAmc2MtPmFh Y19yZWdzX3JpZDEsCisJCQkJMHVsLCB+MHVsLCBhdHVfc2l6ZSwgUkZfQUNUSVZFKTsKIAkJCWlm IChzYy0+YWFjX3JlZ3NfcmVzMSA9PSBOVUxMKSB7Ci0JCQkJZGV2aWNlX3ByaW50ZihzYy0+YWFj X2RldiwKLQkJCQkgICAgImNvdWxkbid0IGFsbG9jYXRlIHJlZ2lzdGVyIHdpbmRvd1xuIik7Ci0J CQkJcmV0dXJuIChFTlhJTyk7CisJCQkJc2MtPmFhY19yZWdzX3JlczEgPSBidXNfYWxsb2NfcmVz b3VyY2VfYW55KAorCQkJCQlzYy0+YWFjX2RldiwgU1lTX1JFU19NRU1PUlksCisJCQkJCSZzYy0+ YWFjX3JlZ3NfcmlkMSwgUkZfQUNUSVZFKTsKKwkJCQlpZiAoc2MtPmFhY19yZWdzX3JlczEgPT0g TlVMTCkgeworCQkJCQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LAorCQkJCQkJImNvdWxkbid0 IGFsbG9jYXRlIHJlZ2lzdGVyIHdpbmRvd1xuIik7CisJCQkJCXJldHVybiAoRU5YSU8pOworCQkJ CX0KKwkJCQlzYy0+ZmxhZ3MgJj0gfkFBQ19GTEFHU19ORVdfQ09NTTsKIAkJCX0KLQkJCXNjLT5m bGFncyAmPSB+QUFDX0ZMQUdTX05FV19DT01NOworCQkJc2MtPmFhY19idGFnMSA9IHJtYW5fZ2V0 X2J1c3RhZyhzYy0+YWFjX3JlZ3NfcmVzMSk7CisJCQlzYy0+YWFjX2JoYW5kbGUxID0gcm1hbl9n ZXRfYnVzaGFuZGxlKHNjLT5hYWNfcmVnc19yZXMxKTsKIAkJfQotCQlzYy0+YWFjX2J0YWcxID0g cm1hbl9nZXRfYnVzdGFnKHNjLT5hYWNfcmVnc19yZXMxKTsKLQkJc2MtPmFhY19iaGFuZGxlMSA9 IHJtYW5fZ2V0X2J1c2hhbmRsZShzYy0+YWFjX3JlZ3NfcmVzMSk7Ci0KLQkJaWYgKHNjLT5hYWNf aHdpZiA9PSBBQUNfSFdJRl9OQVJLKSB7Ci0JCQlzYy0+YWFjX3JlZ3NfcmVzMCA9IHNjLT5hYWNf cmVnc19yZXMxOwotCQkJc2MtPmFhY19yZWdzX3JpZDAgPSBzYy0+YWFjX3JlZ3NfcmlkMTsKLQkJ CXNjLT5hYWNfYnRhZzAgPSBzYy0+YWFjX2J0YWcxOwotCQkJc2MtPmFhY19iaGFuZGxlMCA9IHNj LT5hYWNfYmhhbmRsZTE7CisJfSBlbHNlIHsKKwkJaWYgKChzYy0+ZmxhZ3MgJiBBQUNfRkxBR1Nf TkVXX0NPTU0pICYmCisJCQlhdHVfc2l6ZSA+IHJtYW5fZ2V0X3NpemUoc2MtPmFhY19yZWdzX3Jl czApKSB7CisJCQlidXNfcmVsZWFzZV9yZXNvdXJjZSgKKwkJCQlzYy0+YWFjX2RldiwgU1lTX1JF U19NRU1PUlksCisJCQkJc2MtPmFhY19yZWdzX3JpZDAsIHNjLT5hYWNfcmVnc19yZXMwKTsKKwkJ CXNjLT5hYWNfcmVnc19yZXMwID0gYnVzX2FsbG9jX3Jlc291cmNlKAorCQkJCXNjLT5hYWNfZGV2 LCBTWVNfUkVTX01FTU9SWSwgJnNjLT5hYWNfcmVnc19yaWQwLAorCQkJCTB1bCwgfjB1bCwgYXR1 X3NpemUsIFJGX0FDVElWRSk7CisJCQlpZiAoc2MtPmFhY19yZWdzX3JlczAgPT0gTlVMTCkgewor CQkJCXNjLT5hYWNfcmVnc19yZXMwID0gYnVzX2FsbG9jX3Jlc291cmNlX2FueSgKKwkJCQkJc2Mt PmFhY19kZXYsIFNZU19SRVNfTUVNT1JZLAorCQkJCQkmc2MtPmFhY19yZWdzX3JpZDAsIFJGX0FD VElWRSk7CisJCQkJaWYgKHNjLT5hYWNfcmVnc19yZXMwID09IE5VTEwpIHsKKwkJCQkJZGV2aWNl X3ByaW50ZihzYy0+YWFjX2RldiwKKwkJCQkJCSJjb3VsZG4ndCBhbGxvY2F0ZSByZWdpc3RlciB3 aW5kb3dcbiIpOworCQkJCQlyZXR1cm4gKEVOWElPKTsKKwkJCQl9CisJCQkJc2MtPmZsYWdzICY9 IH5BQUNfRkxBR1NfTkVXX0NPTU07CisJCQl9CisJCQlzYy0+YWFjX2J0YWcwID0gcm1hbl9nZXRf YnVzdGFnKHNjLT5hYWNfcmVnc19yZXMwKTsKKwkJCXNjLT5hYWNfYmhhbmRsZTAgPSBybWFuX2dl dF9idXNoYW5kbGUoc2MtPmFhY19yZWdzX3JlczApOworCQl9CisJCWlmIChzYy0+YWFjX2h3aWYg IT0gQUFDX0hXSUZfU1JDKSB7CisJCQlzYy0+YWFjX3JlZ3NfcmVzMSA9IHNjLT5hYWNfcmVnc19y ZXMwOworCQkJc2MtPmFhY19yZWdzX3JpZDEgPSBzYy0+YWFjX3JlZ3NfcmlkMDsKKwkJCXNjLT5h YWNfYnRhZzEgPSBzYy0+YWFjX2J0YWcwOworCQkJc2MtPmFhY19iaGFuZGxlMSA9IHNjLT5hYWNf YmhhbmRsZTA7CiAJCX0KIAl9CiAKKwlpZiAoc2MtPmFhY19od2lmID09IEFBQ19IV0lGX1NSQyAm JiAKKwkJIShzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfTkVXX0NPTU1fVFlQRTEpKSB7CisJCWRldmlj ZV9wcmludGYoc2MtPmFhY19kZXYsCisJCQkiaW52YWxpZCBjb21tYW5kIGludGVyZmFjZSBmb3Ig dGhhdCBjb250cm9sbGVyIGZhbWlseSFcbiIpOworCQlyZXR1cm4gKEVJTlZBTCk7CisJfQorCiAJ LyogUmVhZCBwcmVmZXJyZWQgc2V0dGluZ3MgKi8KIAlzYy0+YWFjX21heF9maWJfc2l6ZSA9IHNp emVvZihzdHJ1Y3QgYWFjX2ZpYik7CiAJc2MtPmFhY19tYXhfc2VjdG9ycyA9IDEyODsJCQkJLyog NjRLQiAqLworCXNjLT5hYWNfbWF4X2FpZiA9IDE7CiAJaWYgKHNjLT5mbGFncyAmIEFBQ19GTEFH U19TR182NEJJVCkKIAkJc2MtPmFhY19zZ190YWJsZXNpemUgPSAoQUFDX0ZJQl9EQVRBU0laRQog CQkgLSBzaXplb2Yoc3RydWN0IGFhY19ibG9ja3dyaXRlNjQpKQpAQCAtMTgwOSw3ICsyMDE2LDcg QEAgYWFjX2NoZWNrX2Zpcm13YXJlKHN0cnVjdCBhYWNfc29mdGMgKnNjKQogCQkgLSBzaXplb2Yo c3RydWN0IGFhY19ibG9ja3dyaXRlKSkKIAkJIC8gc2l6ZW9mKHN0cnVjdCBhYWNfc2dfZW50cnkp OwogCi0JaWYgKCFhYWNfc3luY19jb21tYW5kKHNjLCBBQUNfTU9OS0VSX0dFVENPTU1QUkVGLCAw LCAwLCAwLCAwLCBOVUxMKSkgeworCWlmICghYWFjX3N5bmNfY29tbWFuZChzYywgQUFDX01PTktF Ul9HRVRDT01NUFJFRiwgMCwgMCwgMCwgMCwgTlVMTCwgTlVMTCkpIHsKIAkJb3B0aW9ucyA9IEFB Q19HRVRfTUFJTEJPWChzYywgMSk7CiAJCXNjLT5hYWNfbWF4X2ZpYl9zaXplID0gKG9wdGlvbnMg JiAweEZGRkYpOwogCQlzYy0+YWFjX21heF9zZWN0b3JzID0gKG9wdGlvbnMgPj4gMTYpIDw8IDE7 CkBAIC0xODE3LDEwICsyMDI0LDE4IEBAIGFhY19jaGVja19maXJtd2FyZShzdHJ1Y3QgYWFjX3Nv ZnRjICpzYykKIAkJc2MtPmFhY19zZ190YWJsZXNpemUgPSAob3B0aW9ucyA+PiAxNik7CiAJCW9w dGlvbnMgPSBBQUNfR0VUX01BSUxCT1goc2MsIDMpOwogCQlzYy0+YWFjX21heF9maWJzID0gKG9w dGlvbnMgJiAweEZGRkYpOworCQlvcHRpb25zID0gQUFDX0dFVF9NQUlMQk9YKHNjLCA0KTsKKwkJ c2MtPmFhY19tYXhfYWlmID0gKG9wdGlvbnMgJiAweEZGRkYpOworCX0KKworCW1heHNpemUgPSBz Yy0+YWFjX21heF9maWJfc2l6ZTsKKwlpZiAoc2MtPmZsYWdzICYgQUFDX0ZMQUdTX05FV19DT01N X1RZUEUxKSAKKwkJbWF4c2l6ZSArPSBzaXplb2Yoc3RydWN0IGFhY19maWJfeHBvcnRoZHIpICsg MzE7CisJaWYgKG1heHNpemUgPiBQQUdFX1NJWkUpIHsKKyAgICAJc2MtPmFhY19tYXhfZmliX3Np emUgLT0gKG1heHNpemUgLSBQQUdFX1NJWkUpOworCQltYXhzaXplID0gUEFHRV9TSVpFOwogCX0K LQlpZiAoc2MtPmFhY19tYXhfZmliX3NpemUgPiBQQUdFX1NJWkUpCi0JCXNjLT5hYWNfbWF4X2Zp Yl9zaXplID0gUEFHRV9TSVpFOwotCXNjLT5hYWNfbWF4X2ZpYnNfYWxsb2MgPSBQQUdFX1NJWkUg LyBzYy0+YWFjX21heF9maWJfc2l6ZTsKKwlzYy0+YWFjX21heF9maWJzX2FsbG9jID0gUEFHRV9T SVpFIC8gbWF4c2l6ZTsKIAogCWlmIChzYy0+YWFjX21heF9maWJfc2l6ZSA+IHNpemVvZihzdHJ1 Y3QgYWFjX2ZpYikpIHsKIAkJc2MtPmZsYWdzIHw9IEFBQ19GTEFHU19SQVdfSU87CkBAIC0xODgw LDEwICsyMDk1LDI4IEBAIGFhY19pbml0KHN0cnVjdCBhYWNfc29mdGMgKnNjKQogCWlwLT5Ib3N0 RWxhcHNlZFNlY29uZHMgPSB0aW1lX3VwdGltZTsJLyogcmVzZXQgbGF0ZXIgaWYgaW52YWxpZCAq LwogCiAJaXAtPkluaXRGbGFncyA9IDA7Ci0JaWYgKHNjLT5mbGFncyAmIEFBQ19GTEFHU19ORVdf Q09NTSkgeworCWlmIChzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfTkVXX0NPTU1fVFlQRTEpIHsKKwkJ aXAtPkluaXRTdHJ1Y3RSZXZpc2lvbiA9IEFBQ19JTklUX1NUUlVDVF9SRVZJU0lPTl82OworCQlp cC0+SW5pdEZsYWdzIHw9IEFBQ19JTklURkxBR1NfTkVXX0NPTU1fVFlQRTFfU1VQUE9SVEVEOwor CQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LCAiTmV3IGNvbW0uIGludGVyZmFjZSB0eXBlMSBl bmFibGVkXG4iKTsKKwl9IGVsc2UgaWYgKHNjLT5mbGFncyAmIEFBQ19GTEFHU19ORVdfQ09NTSkg ewogCQlpcC0+SW5pdEZsYWdzIHw9IEFBQ19JTklURkxBR1NfTkVXX0NPTU1fU1VQUE9SVEVEOwog CQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LCAiTmV3IGNvbW0uIGludGVyZmFjZSBlbmFibGVk XG4iKTsKIAl9CisJaXAtPk1heE51bUFpZiA9IHNjLT5hYWNfbWF4X2FpZjsKKwlpcC0+SG9zdFJS UV9BZGRyTG93ID0gCisJCXNjLT5hYWNfY29tbW9uX2J1c2FkZHIgKyBvZmZzZXRvZihzdHJ1Y3Qg YWFjX2NvbW1vbiwgYWNfaG9zdF9ycnEpOworCS8qIGFsd2F5cyAzMi1iaXQgYWRkcmVzcyAqLwor CWlwLT5Ib3N0UlJRX0FkZHJIaWdoID0gMDsKKworCS8qIEFEUG1sMTA4NjM6IERpc2FibGUgUG93 ZXIgTWFuYWdlbWVudCBzdXBwb3J0ICovCisJc2MtPmFhY19zdXBwb3J0X29wdDIgJj0gfkFBQ19T VVBQT1JURURfUE9XRVJfTUFOQUdFTUVOVDsKKworCWlmIChzYy0+YWFjX3N1cHBvcnRfb3B0MiAm IEFBQ19TVVBQT1JURURfUE9XRVJfTUFOQUdFTUVOVCkgeworCQlpcC0+SW5pdEZsYWdzIHw9IEFB Q19JTklURkxBR1NfRFJJVkVSX1NVUFBPUlRTX1BNOworCQlpcC0+SW5pdEZsYWdzIHw9IEFBQ19J TklURkxBR1NfRFJJVkVSX1VTRVNfVVRDX1RJTUU7CisJCWRldmljZV9wcmludGYoc2MtPmFhY19k ZXYsICJQb3dlciBNYW5hZ2VtZW50IGVuYWJsZWRcbiIpOworCX0KIAogCWlwLT5NYXhJb0NvbW1h bmRzID0gc2MtPmFhY19tYXhfZmliczsKIAlpcC0+TWF4SW9TaXplID0gc2MtPmFhY19tYXhfc2Vj dG9ycyA8PCA5OwpAQCAtMTk3MCw2ICsyMjAzLDkgQEAgYWFjX2luaXQoc3RydWN0IGFhY19zb2Z0 YyAqc2MpCiAJY2FzZSBBQUNfSFdJRl9SS1Q6CiAJCUFBQ19NRU0wX1NFVFJFRzQoc2MsIEFBQ19S S1RfT0RCUiwgfjApOwogCQlicmVhazsKKwljYXNlIEFBQ19IV0lGX1NSQzoKKwkJQUFDX01FTTBf U0VUUkVHNChzYywgQUFDX1NSQ19PREJSX0MsIH4wKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJ YnJlYWs7CiAJfQpAQCAtMTk4MCw3ICsyMjE2LDcgQEAgYWFjX2luaXQoc3RydWN0IGFhY19zb2Z0 YyAqc2MpCiAJaWYgKGFhY19zeW5jX2NvbW1hbmQoc2MsIEFBQ19NT05LRVJfSU5JVFNUUlVDVCwK IAkJCSAgICAgc2MtPmFhY19jb21tb25fYnVzYWRkciArCiAJCQkgICAgIG9mZnNldG9mKHN0cnVj dCBhYWNfY29tbW9uLCBhY19pbml0KSwgMCwgMCwgMCwKLQkJCSAgICAgTlVMTCkpIHsKKwkJCSAg ICAgTlVMTCwgTlVMTCkpIHsKIAkJZGV2aWNlX3ByaW50ZihzYy0+YWFjX2RldiwKIAkJCSAgICAg ICJlcnJvciBlc3RhYmxpc2hpbmcgaW5pdCBzdHJ1Y3R1cmVcbiIpOwogCQllcnJvciA9IEVJTzsK QEAgLTIwMDMsNyArMjIzOSwxNCBAQCBhYWNfc2V0dXBfaW50cihzdHJ1Y3QgYWFjX3NvZnRjICpz YykKIAkJZGV2aWNlX3ByaW50ZihzYy0+YWFjX2RldiwgImNhbid0IGFsbG9jYXRlIGludGVycnVw dFxuIik7CiAJCXJldHVybiAoRUlOVkFMKTsKIAl9Ci0JaWYgKHNjLT5mbGFncyAmIEFBQ19GTEFH U19ORVdfQ09NTSkgeworCWlmIChzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfTkVXX0NPTU1fVFlQRTEp IHsKKwkJaWYgKGJ1c19zZXR1cF9pbnRyKHNjLT5hYWNfZGV2LCBzYy0+YWFjX2lycSwKKwkJCQkg ICBJTlRSX01QU0FGRXxJTlRSX1RZUEVfQklPLCBOVUxMLCAKKwkJCQkgICBhYWNfbmV3X2ludHJf dHlwZTEsIHNjLCAmc2MtPmFhY19pbnRyKSkgeworCQkJZGV2aWNlX3ByaW50ZihzYy0+YWFjX2Rl diwgImNhbid0IHNldCB1cCBpbnRlcnJ1cHRcbiIpOworCQkJcmV0dXJuIChFSU5WQUwpOworCQl9 CisJfSBlbHNlIGlmIChzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfTkVXX0NPTU0pIHsKIAkJaWYgKGJ1 c19zZXR1cF9pbnRyKHNjLT5hYWNfZGV2LCBzYy0+YWFjX2lycSwKIAkJCQkgICBJTlRSX01QU0FG RXxJTlRSX1RZUEVfQklPLCBOVUxMLCAKIAkJCQkgICBhYWNfbmV3X2ludHIsIHNjLCAmc2MtPmFh Y19pbnRyKSkgewpAQCAtMjAyOSw3ICsyMjcyLDcgQEAgYWFjX3NldHVwX2ludHIoc3RydWN0IGFh Y19zb2Z0YyAqc2MpCiBzdGF0aWMgaW50CiBhYWNfc3luY19jb21tYW5kKHN0cnVjdCBhYWNfc29m dGMgKnNjLCB1X2ludDMyX3QgY29tbWFuZCwKIAkJIHVfaW50MzJfdCBhcmcwLCB1X2ludDMyX3Qg YXJnMSwgdV9pbnQzMl90IGFyZzIsIHVfaW50MzJfdCBhcmczLAotCQkgdV9pbnQzMl90ICpzcCkK KwkJIHVfaW50MzJfdCAqc3AsIHVfaW50MzJfdCAqcjEpCiB7CiAJdGltZV90IHRoZW47CiAJdV9p bnQzMl90IHN0YXR1czsKQEAgLTIwNjIsNiArMjMwNSwxMCBAQCBhYWNfc3luY19jb21tYW5kKHN0 cnVjdCBhYWNfc29mdGMgKnNjLCB1CiAJaWYgKHNwICE9IE5VTEwpCiAJCSpzcCA9IHN0YXR1czsK IAorCS8qIHJldHVybiBwYXJhbWV0ZXIgKi8KKwlpZiAocjEgIT0gTlVMTCkgCisJCSpyMSA9IEFB Q19HRVRfTUFJTEJPWChzYywgMCk7CisKIAlpZiAoc3RhdHVzICE9IEFBQ19TUkJfU1RTX1NVQ0NF U1MpCiAJCXJldHVybiAoLTEpOwogCXJldHVybigwKTsKQEAgLTIwOTcsNyArMjM0NCw3IEBAIGFh Y19zeW5jX2ZpYihzdHJ1Y3QgYWFjX3NvZnRjICpzYywgdV9pbnQKIAkgKiBHaXZlIHRoZSBGSUIg dG8gdGhlIGNvbnRyb2xsZXIsIHdhaXQgZm9yIGEgcmVzcG9uc2UuCiAJICovCiAJaWYgKGFhY19z eW5jX2NvbW1hbmQoc2MsIEFBQ19NT05LRVJfU1lOQ0ZJQiwKLQkJCSAgICAgZmliLT5IZWFkZXIu UmVjZWl2ZXJGaWJBZGRyZXNzLCAwLCAwLCAwLCBOVUxMKSkgeworCQkJICAgICBmaWItPkhlYWRl ci5SZWNlaXZlckZpYkFkZHJlc3MsIDAsIDAsIDAsIE5VTEwsIE5VTEwpKSB7CiAJCWZ3cHJpbnRm KHNjLCBIQkFfRkxBR1NfREJHX0VSUk9SX0IsICJJTyBlcnJvciIpOwogCQlyZXR1cm4oRUlPKTsK IAl9CkBAIC0yMzQ5LDEyICsyNTk2LDExIEBAIGFhY190aW1lb3V0KHN0cnVjdCBhYWNfc29mdGMg KnNjKQogCWRlYWRsaW5lID0gdGltZV91cHRpbWUgLSBBQUNfQ01EX1RJTUVPVVQ7CiAJVEFJTFFf Rk9SRUFDSChjbSwgJnNjLT5hYWNfYnVzeSwgY21fbGluaykgewogCQlpZiAoKGNtLT5jbV90aW1l c3RhbXAgIDwgZGVhZGxpbmUpCi0JCSAgICAmJiAhKGNtLT5jbV9mbGFncyAmIEFBQ19DTURfVElN RURPVVQpKSB7CisJCQkvKiAmJiAhKGNtLT5jbV9mbGFncyAmIEFBQ19DTURfVElNRURPVVQpICov KSB7CiAJCQljbS0+Y21fZmxhZ3MgfD0gQUFDX0NNRF9USU1FRE9VVDsKIAkJCWRldmljZV9wcmlu dGYoc2MtPmFhY19kZXYsCi0JCQkgICAgIkNPTU1BTkQgJXAgKFRZUEUgJWQpIFRJTUVPVVQgQUZU RVIgJWQgU0VDT05EU1xuIiwKLQkJCSAgICBjbSwgY20tPmNtX2ZpYi0+SGVhZGVyLkNvbW1hbmQs Ci0JCQkgICAgKGludCkodGltZV91cHRpbWUtY20tPmNtX3RpbWVzdGFtcCkpOworCQkJCSAgICAg ICJDT01NQU5EICVwIFRJTUVPVVQgQUZURVIgJWQgU0VDT05EU1xuIiwKKwkJCQkgICAgICBjbSwg KGludCkodGltZV91cHRpbWUtY20tPmNtX3RpbWVzdGFtcCkpOwogCQkJQUFDX1BSSU5UX0ZJQihz YywgY20tPmNtX2ZpYik7CiAJCQl0aW1lZG91dCsrOwogCQl9CkBAIC0yMzY1LDYgKzI2MTEsNyBA QCBhYWNfdGltZW91dChzdHJ1Y3QgYWFjX3NvZnRjICpzYykKIAkJaWYgKGNvZGUgIT0gQUFDX1VQ X0FORF9SVU5OSU5HKSB7CiAJCQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LCAiV0FSTklORyEg Q29udHJvbGxlciBpcyBubyAiCiAJCQkJICAgICAgImxvbmdlciBydW5uaW5nISBjb2RlPSAweCV4 XG4iLCBjb2RlKTsKKwkJCWFhY19yZXNldF9hZGFwdGVyKHNjKTsKIAkJfQogCX0KIAlyZXR1cm47 CkBAIC0yMzkwLDggKzI2MzcsNyBAQCBhYWNfcnhfZ2V0X2Z3c3RhdHVzKHN0cnVjdCBhYWNfc29m dGMgKnNjCiB7CiAJZndwcmludGYoc2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwg IiIpOwogCi0JcmV0dXJuKEFBQ19NRU0wX0dFVFJFRzQoc2MsIHNjLT5mbGFncyAmIEFBQ19GTEFH U19ORVdfQ09NTSA/Ci0JICAgIEFBQ19SWF9PTVIwIDogQUFDX1JYX0ZXU1RBVFVTKSk7CisJcmV0 dXJuKEFBQ19NRU0wX0dFVFJFRzQoc2MsIEFBQ19SWF9PTVIwKSk7CiB9CiAKIHN0YXRpYyBpbnQK QEAgLTIzOTksOCArMjY0NSwxNSBAQCBhYWNfcmt0X2dldF9md3N0YXR1cyhzdHJ1Y3QgYWFjX3Nv ZnRjICpzCiB7CiAJZndwcmludGYoc2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwg IiIpOwogCi0JcmV0dXJuKEFBQ19NRU0wX0dFVFJFRzQoc2MsIHNjLT5mbGFncyAmIEFBQ19GTEFH U19ORVdfQ09NTSA/Ci0JICAgIEFBQ19SS1RfT01SMCA6IEFBQ19SS1RfRldTVEFUVVMpKTsKKwly ZXR1cm4oQUFDX01FTTBfR0VUUkVHNChzYywgQUFDX1JLVF9PTVIwKSk7Cit9CisKK3N0YXRpYyBp bnQKK2FhY19zcmNfZ2V0X2Z3c3RhdHVzKHN0cnVjdCBhYWNfc29mdGMgKnNjKQoreworCWZ3cHJp bnRmKHNjLCBIQkFfRkxBR1NfREJHX0ZVTkNUSU9OX0VOVFJZX0IsICIiKTsKKworCXJldHVybihB QUNfTUVNMF9HRVRSRUc0KHNjLCBBQUNfU1JDX09NUikpOwogfQogCiAvKgpAQCAtMjQzMSw2ICsy Njg0LDE0IEBAIGFhY19ya3RfcW5vdGlmeShzdHJ1Y3QgYWFjX3NvZnRjICpzYywgaW4KIAlBQUNf TUVNMF9TRVRSRUc0KHNjLCBBQUNfUktUX0lEQlIsIHFiaXQpOwogfQogCitzdGF0aWMgdm9pZAor YWFjX3NyY19xbm90aWZ5KHN0cnVjdCBhYWNfc29mdGMgKnNjLCBpbnQgcWJpdCkKK3sKKwlmd3By aW50ZihzYywgSEJBX0ZMQUdTX0RCR19GVU5DVElPTl9FTlRSWV9CLCAiIik7CisKKwlBQUNfTUVN MF9TRVRSRUc0KHNjLCBBQUNfU1JDX0lEQlIsIHFiaXQgPDwgQUFDX1NSQ19JRFJfU0hJRlQpOwor fQorCiAvKgogICogR2V0IHRoZSBpbnRlcnJ1cHQgcmVhc29uIGJpdHMKICAqLwpAQCAtMjQ1OCw2 ICsyNzE5LDE0IEBAIGFhY19ya3RfZ2V0X2lzdGF0dXMoc3RydWN0IGFhY19zb2Z0YyAqc2MKIAly ZXR1cm4oQUFDX01FTTBfR0VUUkVHNChzYywgQUFDX1JLVF9PREJSKSk7CiB9CiAKK3N0YXRpYyBp bnQKK2FhY19zcmNfZ2V0X2lzdGF0dXMoc3RydWN0IGFhY19zb2Z0YyAqc2MpCit7CisJZndwcmlu dGYoc2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwgIiIpOworCisJcmV0dXJuKEFB Q19NRU0wX0dFVFJFRzQoc2MsIEFBQ19TUkNfT0RCUl9SKSA+PiBBQUNfU1JDX09EUl9TSElGVCk7 Cit9CisKIC8qCiAgKiBDbGVhciBzb21lIGludGVycnVwdCByZWFzb24gYml0cwogICovCkBAIC0y NDg1LDYgKzI3NTQsMTQgQEAgYWFjX3JrdF9jbGVhcl9pc3RhdHVzKHN0cnVjdCBhYWNfc29mdGMg KgogCUFBQ19NRU0wX1NFVFJFRzQoc2MsIEFBQ19SS1RfT0RCUiwgbWFzayk7CiB9CiAKK3N0YXRp YyB2b2lkCithYWNfc3JjX2NsZWFyX2lzdGF0dXMoc3RydWN0IGFhY19zb2Z0YyAqc2MsIGludCBt YXNrKQoreworCWZ3cHJpbnRmKHNjLCBIQkFfRkxBR1NfREJHX0ZVTkNUSU9OX0VOVFJZX0IsICIi KTsKKworCUFBQ19NRU0wX1NFVFJFRzQoc2MsIEFBQ19TUkNfT0RCUl9DLCBtYXNrIDw8IEFBQ19T UkNfT0RSX1NISUZUKTsKK30KKwogLyoKICAqIFBvcHVsYXRlIHRoZSBtYWlsYm94IGFuZCBzZXQg dGhlIGNvbW1hbmQgd29yZAogICovCkBAIC0yNTI3LDYgKzI4MDQsMTkgQEAgYWFjX3JrdF9zZXRf bWFpbGJveChzdHJ1Y3QgYWFjX3NvZnRjICpzYwogCUFBQ19NRU0xX1NFVFJFRzQoc2MsIEFBQ19S S1RfTUFJTEJPWCArIDE2LCBhcmczKTsKIH0KIAorc3RhdGljIHZvaWQKK2FhY19zcmNfc2V0X21h aWxib3goc3RydWN0IGFhY19zb2Z0YyAqc2MsIHVfaW50MzJfdCBjb21tYW5kLCB1X2ludDMyX3Qg YXJnMCwKKwkJICAgIHVfaW50MzJfdCBhcmcxLCB1X2ludDMyX3QgYXJnMiwgdV9pbnQzMl90IGFy ZzMpCit7CisJZndwcmludGYoc2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwgIiIp OworCisJQUFDX01FTTBfU0VUUkVHNChzYywgQUFDX1NSQ19NQUlMQk9YLCBjb21tYW5kKTsKKwlB QUNfTUVNMF9TRVRSRUc0KHNjLCBBQUNfU1JDX01BSUxCT1ggKyA0LCBhcmcwKTsKKwlBQUNfTUVN MF9TRVRSRUc0KHNjLCBBQUNfU1JDX01BSUxCT1ggKyA4LCBhcmcxKTsKKwlBQUNfTUVNMF9TRVRS RUc0KHNjLCBBQUNfU1JDX01BSUxCT1ggKyAxMiwgYXJnMik7CisJQUFDX01FTTBfU0VUUkVHNChz YywgQUFDX1NSQ19NQUlMQk9YICsgMTYsIGFyZzMpOworfQorCiAvKgogICogRmV0Y2ggdGhlIGlt bWVkaWF0ZSBjb21tYW5kIHN0YXR1cyB3b3JkCiAgKi8KQEAgLTI1NTQsNiArMjg0NCwxNCBAQCBh YWNfcmt0X2dldF9tYWlsYm94KHN0cnVjdCBhYWNfc29mdGMgKnNjCiAJcmV0dXJuKEFBQ19NRU0x X0dFVFJFRzQoc2MsIEFBQ19SS1RfTUFJTEJPWCArIChtYiAqIDQpKSk7CiB9CiAKK3N0YXRpYyBp bnQKK2FhY19zcmNfZ2V0X21haWxib3goc3RydWN0IGFhY19zb2Z0YyAqc2MsIGludCBtYikKK3sK Kwlmd3ByaW50ZihzYywgSEJBX0ZMQUdTX0RCR19GVU5DVElPTl9FTlRSWV9CLCAiIik7CisKKwly ZXR1cm4oQUFDX01FTTBfR0VUUkVHNChzYywgQUFDX1NSQ19NQUlMQk9YICsgKG1iICogNCkpKTsK K30KKwogLyoKICAqIFNldC9jbGVhciBpbnRlcnJ1cHQgbWFza3MKICAqLwpAQCAtMjU5OSw2ICsy ODk3LDE4IEBAIGFhY19ya3Rfc2V0X2ludGVycnVwdHMoc3RydWN0IGFhY19zb2Z0YyAKIAl9CiB9 CiAKK3N0YXRpYyB2b2lkCithYWNfc3JjX3NldF9pbnRlcnJ1cHRzKHN0cnVjdCBhYWNfc29mdGMg KnNjLCBpbnQgZW5hYmxlKQoreworCWZ3cHJpbnRmKHNjLCBIQkFfRkxBR1NfREJHX0ZVTkNUSU9O X0VOVFJZX0IsICIlc2FibGUgaW50ZXJydXB0cyIsIGVuYWJsZSA/ICJlbiIgOiAiZGlzIik7CisK KwlpZiAoZW5hYmxlKSB7CisJCUFBQ19NRU0wX1NFVFJFRzQoc2MsIEFBQ19TUkNfT0lNUiwgfkFB Q19EQl9JTlRfTkVXX0NPTU1fVFlQRTEpOworCX0gZWxzZSB7CisJCUFBQ19NRU0wX1NFVFJFRzQo c2MsIEFBQ19TUkNfT0lNUiwgfjApOworCX0KK30KKwogLyoKICAqIE5ldyBjb21tLiBpbnRlcmZh Y2U6IFNlbmQgY29tbWFuZCBmdW5jdGlvbnMKICAqLwpAQCAtMjY0OCw2ICsyOTU4LDM1IEBAIGFh Y19ya3Rfc2VuZF9jb21tYW5kKHN0cnVjdCBhYWNfc29mdGMgKnMKIAlyZXR1cm4gMDsKIH0KIAor c3RhdGljIGludAorYWFjX3NyY19zZW5kX2NvbW1hbmQoc3RydWN0IGFhY19zb2Z0YyAqc2MsIHN0 cnVjdCBhYWNfY29tbWFuZCAqY20pCit7CisJc3RydWN0IGFhY19maWJfeHBvcnRoZHIgKnBGaWJY OworCXVfaW50MzJfdCBmaWJzaXplOworCXVfaW50NjRfdCBhZGRyZXNzOworCisJZndwcmludGYo c2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwgInNlbmQgY29tbWFuZCAobmV3IGNv bW0uIHR5cGUxKSIpOworCisJLyogQ2FsY3VsYXRlIHRoZSBhbW91bnQgdG8gdGhlIGZpYnNpemUg Yml0cyAqLworCWZpYnNpemUgPSAoc2l6ZW9mKHN0cnVjdCBhYWNfZmliX3hwb3J0aGRyKSArIAor CSAgIGNtLT5jbV9maWItPkhlYWRlci5TaXplICsgMTI3KSAvIDEyOCAtIDE7IAorCWlmIChmaWJz aXplID4gMzEpIAorCQlmaWJzaXplID0gMzE7CisKKwkvKiBGaWxsIFhQT1JUIGhlYWRlciAqLyAK KwlwRmliWCA9IChzdHJ1Y3QgYWFjX2ZpYl94cG9ydGhkciAqKQorCQkoKHVuc2lnbmVkIGNoYXIg KiljbS0+Y21fZmliIC0gc2l6ZW9mKHN0cnVjdCBhYWNfZmliX3hwb3J0aGRyKSk7CisJcEZpYlgt PkhhbmRsZSA9IGNtLT5jbV9maWItPkhlYWRlci5TZW5kZXJEYXRhICsgMTsKKwlwRmliWC0+SG9z dEFkZHJlc3MgPSBjbS0+Y21fZmlicGh5czsKKwlwRmliWC0+U2l6ZSA9IGNtLT5jbV9maWItPkhl YWRlci5TaXplOworCWFkZHJlc3MgPSBjbS0+Y21fZmlicGh5cyAtIHNpemVvZihzdHJ1Y3QgYWFj X2ZpYl94cG9ydGhkcik7CisKKwlhYWNfZW5xdWV1ZV9idXN5KGNtKTsKKwlBQUNfTUVNMF9TRVRS RUc0KHNjLCBBQUNfU1JDX0lRVUVfSCwgKHVfaW50MzJfdCkoYWRkcmVzcyA+PiAzMikpOworCUFB Q19NRU0wX1NFVFJFRzQoc2MsIEFBQ19TUkNfSVFVRV9MLCAodV9pbnQzMl90KWFkZHJlc3MgKyBm aWJzaXplKTsKKwlyZXR1cm4gMDsKK30KKwogLyoKICAqIE5ldyBjb21tLiBpbnRlcmZhY2U6IGdl dCwgc2V0IG91dGJvdW5kIHF1ZXVlIGluZGV4CiAgKi8KQEAgLTI2NjcsNiArMzAwNiwxNCBAQCBh YWNfcmt0X2dldF9vdXRiX3F1ZXVlKHN0cnVjdCBhYWNfc29mdGMgCiAJcmV0dXJuKEFBQ19NRU0w X0dFVFJFRzQoc2MsIEFBQ19SS1RfT1FVRSkpOwogfQogCitzdGF0aWMgaW50CithYWNfc3JjX2dl dF9vdXRiX3F1ZXVlKHN0cnVjdCBhYWNfc29mdGMgKnNjKQoreworCWZ3cHJpbnRmKHNjLCBIQkFf RkxBR1NfREJHX0ZVTkNUSU9OX0VOVFJZX0IsICIiKTsKKworCXJldHVybigtMSk7Cit9CisKIHN0 YXRpYyB2b2lkCiBhYWNfcnhfc2V0X291dGJfcXVldWUoc3RydWN0IGFhY19zb2Z0YyAqc2MsIGlu dCBpbmRleCkKIHsKQEAgLTI2ODMsNiArMzAzMCwxMiBAQCBhYWNfcmt0X3NldF9vdXRiX3F1ZXVl KHN0cnVjdCBhYWNfc29mdGMgCiAJQUFDX01FTTBfU0VUUkVHNChzYywgQUFDX1JLVF9PUVVFLCBp bmRleCk7CiB9CiAKK3N0YXRpYyB2b2lkCithYWNfc3JjX3NldF9vdXRiX3F1ZXVlKHN0cnVjdCBh YWNfc29mdGMgKnNjLCBpbnQgaW5kZXgpCit7CisJZndwcmludGYoc2MsIEhCQV9GTEFHU19EQkdf RlVOQ1RJT05fRU5UUllfQiwgIiIpOworfQorCiAvKgogICogRGVidWdnaW5nIGFuZCBEaWFnbm9z dGljcwogICovCkBAIC0yNzAyLDYgKzMwNTUsMjQgQEAgYWFjX2Rlc2NyaWJlX2NvbnRyb2xsZXIo c3RydWN0IGFhY19zb2Z0YwogCW10eF9sb2NrKCZzYy0+YWFjX2lvX2xvY2spOwogCWFhY19hbGxv Y19zeW5jX2ZpYihzYywgJmZpYik7CiAKKwlpZiAoc2MtPnN1cHBvcnRlZF9vcHRpb25zICYgQUFD X1NVUFBPUlRFRF9TVVBQTEVNRU5UX0FEQVBURVJfSU5GTykgeworCQlmaWItPmRhdGFbMF0gPSAw OworCQlpZiAoYWFjX3N5bmNfZmliKHNjLCBSZXF1ZXN0U3VwcGxlbWVudEFkYXB0ZXJJbmZvLCAw LCBmaWIsIDEpKSAKKwkJCWRldmljZV9wcmludGYoc2MtPmFhY19kZXYsICJSZXF1ZXN0U3VwcGxl bWVudEFkYXB0ZXJJbmZvIGZhaWxlZFxuIik7CisJCWVsc2UgeworCQkJc3RydWN0IGFhY19zdXBw bGVtZW50X2FkYXB0ZXJfaW5mbyAqc3VwcF9pbmZvOworCisJCQlzdXBwX2luZm8gPSAoKHN0cnVj dCBhYWNfc3VwcGxlbWVudF9hZGFwdGVyX2luZm8gKikmZmliLT5kYXRhWzBdKTsgCisJCQlhZGFw dGVyX3R5cGUgPSBzdXBwX2luZm8tPkFkYXB0ZXJUeXBlVGV4dDsKKwkJCXNjLT5hYWNfZmVhdHVy ZV9iaXRzID0gc3VwcF9pbmZvLT5GZWF0dXJlQml0czsKKwkJCXNjLT5hYWNfc3VwcG9ydF9vcHQy ID0gc3VwcF9pbmZvLT5TdXBwb3J0ZWRPcHRpb25zMjsKKwkJfQorCX0KKwlkZXZpY2VfcHJpbnRm KHNjLT5hYWNfZGV2LCAiJXMsIGFhYyBkcml2ZXIgJWQuJWQuJWQtJWRcbiIsCisJCWFkYXB0ZXJf dHlwZSwKKwkJQUFDX0RSSVZFUl9NQUpPUl9WRVJTSU9OLCBBQUNfRFJJVkVSX01JTk9SX1ZFUlNJ T04sCisJCUFBQ19EUklWRVJfQlVHRklYX0xFVkVMLCBBQUNfRFJJVkVSX0JVSUxEKTsKKwogCWZp Yi0+ZGF0YVswXSA9IDA7CiAJaWYgKGFhY19zeW5jX2ZpYihzYywgUmVxdWVzdEFkYXB0ZXJJbmZv LCAwLCBmaWIsIDEpKSB7CiAJCWRldmljZV9wcmludGYoc2MtPmFhY19kZXYsICJSZXF1ZXN0QWRh cHRlckluZm8gZmFpbGVkXG4iKTsKQEAgLTI3NTYsMjAgKzMxMjcsNiBAQCBhYWNfZGVzY3JpYmVf Y29udHJvbGxlcihzdHJ1Y3QgYWFjX3NvZnRjCiAJCQkgICAgICAiXDI0SEVBVFNFTlNPUiIpOwog CX0KIAotCWlmIChzYy0+c3VwcG9ydGVkX29wdGlvbnMgJiBBQUNfU1VQUE9SVEVEX1NVUFBMRU1F TlRfQURBUFRFUl9JTkZPKSB7Ci0JCWZpYi0+ZGF0YVswXSA9IDA7Ci0JCWlmIChhYWNfc3luY19m aWIoc2MsIFJlcXVlc3RTdXBwbGVtZW50QWRhcHRlckluZm8sIDAsIGZpYiwgMSkpCi0JCQlkZXZp Y2VfcHJpbnRmKHNjLT5hYWNfZGV2LAotCQkJICAgICJSZXF1ZXN0U3VwcGxlbWVudEFkYXB0ZXJJ bmZvIGZhaWxlZFxuIik7Ci0JCWVsc2UKLQkJCWFkYXB0ZXJfdHlwZSA9ICgoc3RydWN0IGFhY19z dXBwbGVtZW50X2FkYXB0ZXJfaW5mbyAqKQotCQkJICAgICZmaWItPmRhdGFbMF0pLT5BZGFwdGVy VHlwZVRleHQ7Ci0JfQotCWRldmljZV9wcmludGYoc2MtPmFhY19kZXYsICIlcywgYWFjIGRyaXZl ciAlZC4lZC4lZC0lZFxuIiwKLQkJYWRhcHRlcl90eXBlLAotCQlBQUNfRFJJVkVSX01BSk9SX1ZF UlNJT04sIEFBQ19EUklWRVJfTUlOT1JfVkVSU0lPTiwKLQkJQUFDX0RSSVZFUl9CVUdGSVhfTEVW RUwsIEFBQ19EUklWRVJfQlVJTEQpOwotCiAJYWFjX3JlbGVhc2Vfc3luY19maWIoc2MpOwogCW10 eF91bmxvY2soJnNjLT5hYWNfaW9fbG9jayk7CiB9CkBAIC0zMDUwLDI1ICszNDA3LDI1IEBAIHN0 YXRpYyBpbnQKIGFhY19pb2N0bF9zZW5kX3Jhd19zcmIoc3RydWN0IGFhY19zb2Z0YyAqc2MsIGNh ZGRyX3QgYXJnKQogewogCXN0cnVjdCBhYWNfY29tbWFuZCAqY207Ci0Jc3RydWN0IGFhY19ldmVu dCAqZXZlbnQ7CiAJc3RydWN0IGFhY19maWIgKmZpYjsKLQlzdHJ1Y3QgYWFjX3NyYiAqc3JiY21k LCAqdXNlcl9zcmI7Ci0Jc3RydWN0IGFhY19zZ19lbnRyeSAqc2dlOwotCXN0cnVjdCBhYWNfc2df ZW50cnk2NCAqc2dlNjQ7Ci0Jdm9pZCAqc3JiX3NnX2FkZHJlc3MsICp1cmVwbHk7Ci0JdWludDMy X3QgZmlic2l6ZSwgc3JiX3NnX2J5dGVjb3VudDsKLQlpbnQgZXJyb3IsIHRyYW5zZmVyX2RhdGE7 CisJc3RydWN0IGFhY19zcmIgKnNyYmNtZDsKKwlzdHJ1Y3QgYWFjX3NyYiAqdXNlcl9zcmIgPSAo c3RydWN0IGFhY19zcmIgKilhcmc7CisJdm9pZCAqdXNlcl9yZXBseTsKKwlpbnQgZXJyb3IsIHRy YW5zZmVyX2RhdGEgPSAwOworCWJ1c19kbWFtYXBfdCBvcmlnX21hcCA9IDA7CisJdV9pbnQzMl90 IGZpYnNpemUgPSAwOworCXVfaW50NjRfdCBzcmJfc2dfYWRkcmVzczsKKwl1X2ludDMyX3Qgc3Ji X3NnX2J5dGVjb3VudDsKIAogCWZ3cHJpbnRmKHNjLCBIQkFfRkxBR1NfREJHX0ZVTkNUSU9OX0VO VFJZX0IsICIiKTsKIAogCWNtID0gTlVMTDsKLQl0cmFuc2Zlcl9kYXRhID0gMDsKLQlmaWJzaXpl ID0gMDsKLQl1c2VyX3NyYiA9IChzdHJ1Y3QgYWFjX3NyYiAqKWFyZzsKIAogCW10eF9sb2NrKCZz Yy0+YWFjX2lvX2xvY2spOwogCWlmIChhYWNfYWxsb2NfY29tbWFuZChzYywgJmNtKSkgewotCQkg ZXZlbnQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBhYWNfZXZlbnQpLCBNX0FBQ0JVRiwKKwkJc3Ry dWN0IGFhY19ldmVudCAqZXZlbnQ7CisKKwkJZXZlbnQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBh YWNfZXZlbnQpLCBNX0FBQ0JVRiwKIAkJICAgIE1fTk9XQUlUIHwgTV9aRVJPKTsKIAkJaWYgKGV2 ZW50ID09IE5VTEwpIHsKIAkJCWVycm9yID0gRUJVU1k7CkBAIC0zMDc5LDEwOCArMzQzNiwxNzEg QEAgYWFjX2lvY3RsX3NlbmRfcmF3X3NyYihzdHJ1Y3QgYWFjX3NvZnRjIAogCQlldmVudC0+ZXZf Y2FsbGJhY2sgPSBhYWNfaW9jdGxfZXZlbnQ7CiAJCWV2ZW50LT5ldl9hcmcgPSAmY207CiAJCWFh Y19hZGRfZXZlbnQoc2MsIGV2ZW50KTsKLQkJbXNsZWVwKGNtLCAmc2MtPmFhY19pb19sb2NrLCAw LCAiYWFjcmF3IiwgMCk7CisJCW1zbGVlcChjbSwgJnNjLT5hYWNfaW9fbG9jaywgMCwgInNuZHJh dyIsIDApOwogCX0KIAltdHhfdW5sb2NrKCZzYy0+YWFjX2lvX2xvY2spOwogCiAJY20tPmNtX2Rh dGEgPSBOVUxMOworCS8qIHNhdmUgb3JpZ2luYWwgZG1hIG1hcCAqLworCW9yaWdfbWFwID0gY20t PmNtX2RhdGFtYXA7CisKIAlmaWIgPSBjbS0+Y21fZmliOwogCXNyYmNtZCA9IChzdHJ1Y3QgYWFj X3NyYiAqKWZpYi0+ZGF0YTsKLQllcnJvciA9IGNvcHlpbigmdXNlcl9zcmItPmRhdGFfbGVuLCAm Zmlic2l6ZSwgc2l6ZW9mKHVpbnQzMl90KSk7Ci0JaWYgKGVycm9yICE9IDApCisJaWYgKChlcnJv ciA9IGNvcHlpbigodm9pZCAqKSZ1c2VyX3NyYi0+ZGF0YV9sZW4sICZmaWJzaXplLCAKKwkJc2l6 ZW9mICh1X2ludDMyX3QpKSAhPSAwKSkgCiAJCWdvdG8gb3V0OwotCWlmIChmaWJzaXplID4gKHNj LT5hYWNfbWF4X2ZpYl9zaXplIC0gc2l6ZW9mKHN0cnVjdCBhYWNfZmliX2hlYWRlcikpKSB7CisJ aWYgKGZpYnNpemUgPiAoc2MtPmFhY19tYXhfZmliX3NpemUtc2l6ZW9mKHN0cnVjdCBhYWNfZmli X2hlYWRlcikpKSB7CiAJCWVycm9yID0gRUlOVkFMOwogCQlnb3RvIG91dDsKIAl9Ci0JZXJyb3Ig PSBjb3B5aW4odXNlcl9zcmIsIHNyYmNtZCwgZmlic2l6ZSk7Ci0JaWYgKGVycm9yICE9IDApCisJ aWYgKChlcnJvciA9IGNvcHlpbigodm9pZCAqKXVzZXJfc3JiLCBzcmJjbWQsIGZpYnNpemUpICE9 IDApKSAKIAkJZ290byBvdXQ7Ci0Jc3JiY21kLT5mdW5jdGlvbiA9IDA7Ci0Jc3JiY21kLT5yZXRy eV9saW1pdCA9IDA7CisKKwlzcmJjbWQtPmZ1bmN0aW9uID0gMDsJCS8qIFNSQkZfRXhlY3V0ZVNj c2kgKi8KKwlzcmJjbWQtPnJldHJ5X2xpbWl0ID0gMDsJLyogb2Jzb2xldGUgKi8KKworCS8qIG9u bHkgb25lIHNnIGVsZW1lbnQgZnJvbSB1c2Vyc3BhY2Ugc3VwcG9ydGVkICovCiAJaWYgKHNyYmNt ZC0+c2dfbWFwLlNnQ291bnQgPiAxKSB7CiAJCWVycm9yID0gRUlOVkFMOwogCQlnb3RvIG91dDsK IAl9Ci0KLQkvKiBSZXRyaWV2ZSBjb3JyZWN0IFNHIGVudHJpZXMuICovCi0JaWYgKGZpYnNpemUg PT0gKHNpemVvZihzdHJ1Y3QgYWFjX3NyYikgKwotCSAgICBzcmJjbWQtPnNnX21hcC5TZ0NvdW50 ICogc2l6ZW9mKHN0cnVjdCBhYWNfc2dfZW50cnkpKSkgewotCQlzZ2UgPSBzcmJjbWQtPnNnX21h cC5TZ0VudHJ5OwotCQlzZ2U2NCA9IE5VTEw7Ci0JCXNyYl9zZ19ieXRlY291bnQgPSBzZ2UtPlNn Qnl0ZUNvdW50OwotCQlzcmJfc2dfYWRkcmVzcyA9ICh2b2lkICopKHVpbnRwdHJfdClzZ2UtPlNn QWRkcmVzczsKLQl9CisJLyogY2hlY2sgZmlic2l6ZSAqLworCWlmIChmaWJzaXplID09IChzaXpl b2Yoc3RydWN0IGFhY19zcmIpICsgCisJCXNyYmNtZC0+c2dfbWFwLlNnQ291bnQgKiBzaXplb2Yo c3RydWN0IGFhY19zZ19lbnRyeSkpKSB7CisJCXN0cnVjdCBhYWNfc2dfZW50cnkgKnNncCA9IHNy YmNtZC0+c2dfbWFwLlNnRW50cnk7CisJCXNyYl9zZ19ieXRlY291bnQgPSBzZ3AtPlNnQnl0ZUNv dW50OworCQlzcmJfc2dfYWRkcmVzcyA9ICh1X2ludDY0X3Qpc2dwLT5TZ0FkZHJlc3M7CisJfSBl bHNlIGlmIChmaWJzaXplID09IChzaXplb2Yoc3RydWN0IGFhY19zcmIpICsgCisJCXNyYmNtZC0+ c2dfbWFwLlNnQ291bnQgKiBzaXplb2Yoc3RydWN0IGFhY19zZ19lbnRyeTY0KSkpIHsKICNpZmRl ZiBfX2FtZDY0X18KLQllbHNlIGlmIChmaWJzaXplID09IChzaXplb2Yoc3RydWN0IGFhY19zcmIp ICsKLQkgICAgc3JiY21kLT5zZ19tYXAuU2dDb3VudCAqIHNpemVvZihzdHJ1Y3QgYWFjX3NnX2Vu dHJ5NjQpKSkgewotCQlzZ2UgPSBOVUxMOwotCQlzZ2U2NCA9IChzdHJ1Y3QgYWFjX3NnX2VudHJ5 NjQgKilzcmJjbWQtPnNnX21hcC5TZ0VudHJ5OwotCQlzcmJfc2dfYnl0ZWNvdW50ID0gc2dlNjQt PlNnQnl0ZUNvdW50OwotCQlzcmJfc2dfYWRkcmVzcyA9ICh2b2lkICopc2dlNjQtPlNnQWRkcmVz czsKLQkJaWYgKHNnZTY0LT5TZ0FkZHJlc3MgPiAweGZmZmZmZmZmdWxsICYmCi0JCSAgICAoc2Mt PmZsYWdzICYgQUFDX0ZMQUdTX1NHXzY0QklUKSA9PSAwKSB7CisJCXN0cnVjdCBhYWNfc2dfZW50 cnk2NCAqc2dwID0gCisJCQkoc3RydWN0IGFhY19zZ19lbnRyeTY0ICopc3JiY21kLT5zZ19tYXAu U2dFbnRyeTsKKwkJc3JiX3NnX2J5dGVjb3VudCA9IHNncC0+U2dCeXRlQ291bnQ7CisJCXNyYl9z Z19hZGRyZXNzID0gc2dwLT5TZ0FkZHJlc3M7CisJCWlmIChzcmJfc2dfYWRkcmVzcyA+IDB4ZmZm ZmZmZmZ1bGwgJiYgCisJCQkhKHNjLT5mbGFncyAmIEFBQ19GTEFHU19TR182NEJJVCkpCisjZW5k aWYJCisJCXsKIAkJCWVycm9yID0gRUlOVkFMOwogCQkJZ290byBvdXQ7CiAJCX0KLQl9Ci0jZW5k aWYKLQllbHNlIHsKKwl9IGVsc2UgewogCQllcnJvciA9IEVJTlZBTDsKIAkJZ290byBvdXQ7CiAJ fQotCXVyZXBseSA9IChjaGFyICopYXJnICsgZmlic2l6ZTsKKwl1c2VyX3JlcGx5ID0gKGNoYXIg KilhcmcgKyBmaWJzaXplOwogCXNyYmNtZC0+ZGF0YV9sZW4gPSBzcmJfc2dfYnl0ZWNvdW50Owot CWlmIChzcmJjbWQtPnNnX21hcC5TZ0NvdW50ID09IDEpCisJaWYgKHNyYmNtZC0+c2dfbWFwLlNn Q291bnQgPT0gMSkgCiAJCXRyYW5zZmVyX2RhdGEgPSAxOwogCi0JY20tPmNtX3NndGFibGUgPSAo c3RydWN0IGFhY19zZ190YWJsZSAqKSZzcmJjbWQtPnNnX21hcDsKIAlpZiAodHJhbnNmZXJfZGF0 YSkgewotCQljbS0+Y21fZGF0YWxlbiA9IHNyYl9zZ19ieXRlY291bnQ7Ci0JCWNtLT5jbV9kYXRh ID0gbWFsbG9jKGNtLT5jbV9kYXRhbGVuLCBNX0FBQ0JVRiwgTV9OT1dBSVQpOwotCQlpZiAoY20t PmNtX2RhdGEgPT0gTlVMTCkgeworCQkvKgorCQkgKiBDcmVhdGUgRE1BIHRhZyBmb3IgdGhlIHBh c3N0aHIuIGRhdGEgYnVmZmVyIGFuZCBhbGxvY2F0ZSBpdC4KKwkJICovCisJCWlmIChidXNfZG1h X3RhZ19jcmVhdGUoc2MtPmFhY19wYXJlbnRfZG1hdCwgCS8qIHBhcmVudCAqLworCQkJMSwgMCwJ CQkvKiBhbGdubW50LCBib3VuZGFyeSAqLworCQkJKHNjLT5mbGFncyAmIEFBQ19GTEFHU19TR182 NEJJVCkgPworCQkJQlVTX1NQQUNFX01BWEFERFJfMzJCSVQgOgorCQkJMHg3ZmZmZmZmZiwJCS8q IGxvd2FkZHIgKi8KKwkJCUJVU19TUEFDRV9NQVhBRERSLCAJLyogaGlnaGFkZHIgKi8KKwkJCU5V TEwsIE5VTEwsIAkJLyogZmlsdGVyLCBmaWx0ZXJhcmcgKi8KKwkJCXNyYl9zZ19ieXRlY291bnQs IAkvKiBzaXplICovCisJCQlzYy0+YWFjX3NnX3RhYmxlc2l6ZSwJLyogbnNlZ21lbnRzICovCisJ CQlzcmJfc2dfYnl0ZWNvdW50LCAJLyogbWF4c2Vnc2l6ZSAqLworCQkJMCwJCQkvKiBmbGFncyAq LworCQkJTlVMTCwgTlVMTCwJCS8qIE5vIGxvY2tpbmcgbmVlZGVkICovCisJCQkmY20tPmNtX3Bh c3N0aHJfZG1hdCkpIHsKIAkJCWVycm9yID0gRU5PTUVNOwogCQkJZ290byBvdXQ7CiAJCX0KLQkJ aWYgKHNyYmNtZC0+ZmxhZ3MgJiBBQUNfU1JCX0ZMQUdTX0RBVEFfSU4pCisJCWlmIChidXNfZG1h bWVtX2FsbG9jKGNtLT5jbV9wYXNzdGhyX2RtYXQsICh2b2lkICoqKSZjbS0+Y21fZGF0YSwKKwkJ CUJVU19ETUFfTk9XQUlULCAmY20tPmNtX2RhdGFtYXApKSB7CisJCQllcnJvciA9IEVOT01FTTsK KwkJCWdvdG8gb3V0OworCQl9CisJCS8qIGZpbGwgc29tZSBjbSB2YXJpYWJsZXMgKi8KKwkJY20t PmNtX2RhdGFsZW4gPSBzcmJfc2dfYnl0ZWNvdW50OworCQlpZiAoc3JiY21kLT5mbGFncyAmIEFB Q19TUkJfRkxBR1NfREFUQV9JTikgCiAJCQljbS0+Y21fZmxhZ3MgfD0gQUFDX0NNRF9EQVRBSU47 Ci0JCWlmIChzcmJjbWQtPmZsYWdzICYgQUFDX1NSQl9GTEFHU19EQVRBX09VVCkgeworCQlpZiAo c3JiY21kLT5mbGFncyAmIEFBQ19TUkJfRkxBR1NfREFUQV9PVVQpCiAJCQljbS0+Y21fZmxhZ3Mg fD0gQUFDX0NNRF9EQVRBT1VUOwotCQkJZXJyb3IgPSBjb3B5aW4oc3JiX3NnX2FkZHJlc3MsIGNt LT5jbV9kYXRhLAotCQkJICAgIGNtLT5jbV9kYXRhbGVuKTsKLQkJCWlmIChlcnJvciAhPSAwKQor CisJCWlmIChzcmJjbWQtPmZsYWdzICYgQUFDX1NSQl9GTEFHU19EQVRBX09VVCkgeworCQkJaWYg KChlcnJvciA9IGNvcHlpbigKKyNpZmRlZiBfX2FtZDY0X18KKwkJCQkodm9pZCAqKXNyYl9zZ19h ZGRyZXNzLAorI2Vsc2UKKwkJCQkodm9pZCAqKSh1X2ludDMyX3Qpc3JiX3NnX2FkZHJlc3MsCisj ZW5kaWYKKwkJCQljbS0+Y21fZGF0YSwgY20tPmNtX2RhdGFsZW4pKSAhPSAwKQogCQkJCWdvdG8g b3V0OworCQkJLyogc3luYyByZXF1aXJlZCBmb3IgYnVzX2RtYW1lbV9hbGxvYygpIGFsbG9jLiBt ZW0uPyAqLworCQkJYnVzX2RtYW1hcF9zeW5jKGNtLT5jbV9wYXNzdGhyX2RtYXQsIGNtLT5jbV9k YXRhbWFwLAorCQkJCUJVU19ETUFTWU5DX1BSRVdSSVRFKTsKIAkJfQogCX0KIAotCWZpYi0+SGVh ZGVyLlNpemUgPSBzaXplb2Yoc3RydWN0IGFhY19maWJfaGVhZGVyKSArCi0JICAgIHNpemVvZihz dHJ1Y3QgYWFjX3NyYik7CisJLyogYnVpbGQgdGhlIEZJQiAqLworCWZpYi0+SGVhZGVyLlNpemUg PSBzaXplb2Yoc3RydWN0IGFhY19maWJfaGVhZGVyKSArIAorCQlzaXplb2Yoc3RydWN0IGFhY19z cmIpOwogCWZpYi0+SGVhZGVyLlhmZXJTdGF0ZSA9Ci0JICAgIEFBQ19GSUJTVEFURV9IT1NUT1dO RUQgICB8Ci0JICAgIEFBQ19GSUJTVEFURV9JTklUSUFMSVNFRCB8Ci0JICAgIEFBQ19GSUJTVEFU RV9FTVBUWSAgICAgICB8Ci0JICAgIEFBQ19GSUJTVEFURV9GUk9NSE9TVCAgICB8Ci0JICAgIEFB Q19GSUJTVEFURV9SRVhQRUNURUQgICB8Ci0JICAgIEFBQ19GSUJTVEFURV9OT1JNICAgICAgICB8 Ci0JICAgIEFBQ19GSUJTVEFURV9BU1lOQyAgICAgICB8Ci0JICAgIEFBQ19GSUJTVEFURV9GQVNU X1JFU1BPTlNFOwotCWZpYi0+SGVhZGVyLkNvbW1hbmQgPSAoc2MtPmZsYWdzICYgQUFDX0ZMQUdT X1NHXzY0QklUKSAhPSAwID8KLQkgICAgU2NzaVBvcnRDb21tYW5kVTY0IDogU2NzaVBvcnRDb21t YW5kOworCQlBQUNfRklCU1RBVEVfSE9TVE9XTkVEICAgfAorCQlBQUNfRklCU1RBVEVfSU5JVElB TElTRUQgfAorCQlBQUNfRklCU1RBVEVfRU1QVFkJIHwKKwkJQUFDX0ZJQlNUQVRFX0ZST01IT1NU CSB8CisJCUFBQ19GSUJTVEFURV9SRVhQRUNURUQgICB8CisJCUFBQ19GSUJTVEFURV9OT1JNCSB8 CisJCUFBQ19GSUJTVEFURV9BU1lOQwkgfAorCQlBQUNfRklCU1RBVEVfRkFTVF9SRVNQT05TRTsK KworCWZpYi0+SGVhZGVyLkNvbW1hbmQgPSAoc2MtPmZsYWdzICYgQUFDX0ZMQUdTX1NHXzY0QklU KSA/IAorCQlTY3NpUG9ydENvbW1hbmRVNjQgOiBTY3NpUG9ydENvbW1hbmQ7CisJY20tPmNtX3Nn dGFibGUgPSAoc3RydWN0IGFhY19zZ190YWJsZSAqKSZzcmJjbWQtPnNnX21hcDsKKworCS8qIHNl bmQgY29tbWFuZCAqLworCWlmICh0cmFuc2Zlcl9kYXRhKSB7CisJCWJ1c19kbWFtYXBfbG9hZChj bS0+Y21fcGFzc3Rocl9kbWF0LAorCQkJY20tPmNtX2RhdGFtYXAsIGNtLT5jbV9kYXRhLAorCQkJ Y20tPmNtX2RhdGFsZW4sCisJCQlhYWNfbWFwX2NvbW1hbmRfc2csIGNtLCAwKTsKKwl9IGVsc2Ug eworCQlhYWNfbWFwX2NvbW1hbmRfc2coY20sIE5VTEwsIDAsIDApOworCX0KIAorCS8qIHdhaXQg Zm9yIGNvbXBsZXRpb24gKi8KIAltdHhfbG9jaygmc2MtPmFhY19pb19sb2NrKTsKLQlhYWNfd2Fp dF9jb21tYW5kKGNtKTsKKwl3aGlsZSAoIShjbS0+Y21fZmxhZ3MgJiBBQUNfQ01EX0NPTVBMRVRF RCkpCisJCW1zbGVlcChjbSwgJnNjLT5hYWNfaW9fbG9jaywgMCwgInNuZHJ3MiIsIDApOwogCW10 eF91bmxvY2soJnNjLT5hYWNfaW9fbG9jayk7CiAKLQlpZiAodHJhbnNmZXJfZGF0YSAmJiAoc3Ji Y21kLT5mbGFncyAmIEFBQ19TUkJfRkxBR1NfREFUQV9JTikgIT0gMCkgewotCQllcnJvciA9IGNv cHlvdXQoY20tPmNtX2RhdGEsIHNyYl9zZ19hZGRyZXNzLCBjbS0+Y21fZGF0YWxlbik7Ci0JCWlm IChlcnJvciAhPSAwKQorCS8qIGNvcHkgZGF0YSAqLworCWlmICh0cmFuc2Zlcl9kYXRhICYmIChz cmJjbWQtPmZsYWdzICYgQUFDX1NSQl9GTEFHU19EQVRBX0lOKSkgeworCQlpZiAoKGVycm9yID0g Y29weW91dChjbS0+Y21fZGF0YSwgCisjaWZkZWYgX19hbWQ2NF9fCisJCQkodm9pZCAqKXNyYl9z Z19hZGRyZXNzLAorI2Vsc2UKKwkJCSh2b2lkICopKHVfaW50MzJfdClzcmJfc2dfYWRkcmVzcywK KyNlbmRpZgorCQkJY20tPmNtX2RhdGFsZW4pKSAhPSAwKQogCQkJZ290byBvdXQ7CisJCS8qIHN5 bmMgcmVxdWlyZWQgZm9yIGJ1c19kbWFtZW1fYWxsb2MoKSBhbGxvY2F0ZWQgbWVtLj8gKi8KKwkJ YnVzX2RtYW1hcF9zeW5jKGNtLT5jbV9wYXNzdGhyX2RtYXQsIGNtLT5jbV9kYXRhbWFwLAorCQkJ CUJVU19ETUFTWU5DX1BPU1RSRUFEKTsKIAl9Ci0JZXJyb3IgPSBjb3B5b3V0KGZpYi0+ZGF0YSwg dXJlcGx5LCBzaXplb2Yoc3RydWN0IGFhY19zcmJfcmVzcG9uc2UpKTsKKworCS8qIHN0YXR1cyAq LworCWVycm9yID0gY29weW91dChmaWItPmRhdGEsIHVzZXJfcmVwbHksIHNpemVvZihzdHJ1Y3Qg YWFjX3NyYl9yZXNwb25zZSkpOworCiBvdXQ6Ci0JaWYgKGNtICE9IE5VTEwpIHsKLQkJaWYgKGNt LT5jbV9kYXRhICE9IE5VTEwpCi0JCQlmcmVlKGNtLT5jbV9kYXRhLCBNX0FBQ0JVRik7CisJaWYg KGNtICYmIGNtLT5jbV9kYXRhKSB7CisJCWlmICh0cmFuc2Zlcl9kYXRhKQorCQkJYnVzX2RtYW1h cF91bmxvYWQoY20tPmNtX3Bhc3N0aHJfZG1hdCwgY20tPmNtX2RhdGFtYXApOworCQlidXNfZG1h bWVtX2ZyZWUoY20tPmNtX3Bhc3N0aHJfZG1hdCwgY20tPmNtX2RhdGEsIGNtLT5jbV9kYXRhbWFw KTsKKwkJY20tPmNtX2RhdGFtYXAgPSBvcmlnX21hcDsKKwl9CisJaWYgKGNtICYmIGNtLT5jbV9w YXNzdGhyX2RtYXQpIAorCQlidXNfZG1hX3RhZ19kZXN0cm95KGNtLT5jbV9wYXNzdGhyX2RtYXQp OworCWlmIChjbSkgeyAKIAkJbXR4X2xvY2soJnNjLT5hYWNfaW9fbG9jayk7CiAJCWFhY19yZWxl YXNlX2NvbW1hbmQoY20pOwogCQltdHhfdW5sb2NrKCZzYy0+YWFjX2lvX2xvY2spOwpAQCAtMzE4 OSw2ICszNjA5LDQyIEBAIG91dDoKIH0KIAogLyoKKyAqIFJlcXVlc3QgYW4gQUlGIGZyb20gdGhl IGNvbnRyb2xsZXIgKG5ldyBjb21tLiB0eXBlMSkKKyAqLworc3RhdGljIHZvaWQKK2FhY19yZXF1 ZXN0X2FpZihzdHJ1Y3QgYWFjX3NvZnRjICpzYykKK3sKKwlzdHJ1Y3QgYWFjX2NvbW1hbmQgKmNt OworCXN0cnVjdCBhYWNfZmliICpmaWI7CisKKwlmd3ByaW50ZihzYywgSEJBX0ZMQUdTX0RCR19G VU5DVElPTl9FTlRSWV9CLCAiIik7CisKKwlpZiAoYWFjX2FsbG9jX2NvbW1hbmQoc2MsICZjbSkp IHsKKwkJc2MtPmFpZl9wZW5kaW5nID0gMTsKKwkJcmV0dXJuOworCX0KKwlzYy0+YWlmX3BlbmRp bmcgPSAwOworICAgIAorCS8qIGJ1aWxkIHRoZSBGSUIgKi8KKwlmaWIgPSBjbS0+Y21fZmliOwor CWZpYi0+SGVhZGVyLlNpemUgPSBzaXplb2Yoc3RydWN0IGFhY19maWIpOworCWZpYi0+SGVhZGVy LlhmZXJTdGF0ZSA9CisgICAgICAgIEFBQ19GSUJTVEFURV9IT1NUT1dORUQgICB8CisgICAgICAg IEFBQ19GSUJTVEFURV9JTklUSUFMSVNFRCB8CisgICAgICAgIEFBQ19GSUJTVEFURV9FTVBUWQkg fAorICAgICAgICBBQUNfRklCU1RBVEVfRlJPTUhPU1QJIHwKKyAgICAgICAgQUFDX0ZJQlNUQVRF X1JFWFBFQ1RFRCAgIHwKKyAgICAgICAgQUFDX0ZJQlNUQVRFX05PUk0JIHwKKyAgICAgICAgQUFD X0ZJQlNUQVRFX0FTWU5DOworCS8qIHNldCBBSUYgbWFya2VyICovCisJZmliLT5IZWFkZXIuU2Vu ZGVyRGF0YSA9IDB4MDA4MDAwMDA7CisJZmliLT5IZWFkZXIuQ29tbWFuZCA9IEFpZlJlcXVlc3Q7 CisJKChzdHJ1Y3QgYWFjX2FpZl9jb21tYW5kICopZmliLT5kYXRhKS0+Y29tbWFuZCA9IEFpZlJl cUV2ZW50OworCisJYWFjX21hcF9jb21tYW5kX3NnKGNtLCBOVUxMLCAwLCAwKTsKK30KKworLyoK ICAqIGNkZXZwcml2IGludGVyZmFjZSBwcml2YXRlIGRlc3RydWN0b3IuCiAgKi8KIHN0YXRpYyB2 b2lkCkBAIC0zMjk1LDYgKzM3NTEsOSBAQCBhYWNfaGFuZGxlX2FpZihzdHJ1Y3QgYWFjX3NvZnRj ICpzYywgc3RyCiAJCQljbyA9IFRBSUxRX0ZJUlNUKCZzYy0+YWFjX2NvbnRhaW5lcl90cWgpOwog CQkJd2hpbGUgKGNvICE9IE5VTEwpIHsKIAkJCQlpZiAoY28tPmNvX2ZvdW5kID09IDApIHsKKwkJ CQkJc3RydWN0IGFhY19kaXNrICphZDsKKwkJCQkJYWQgPSBkZXZpY2VfZ2V0X3NvZnRjKGNvLT5j b19kaXNrKTsKKwkJCQkJYWQtPmFkX2NvbnRhaW5lciA9IE5VTEw7CiAJCQkJCW10eF91bmxvY2so JnNjLT5hYWNfaW9fbG9jayk7CiAJCQkJCW10eF9sb2NrKCZHaWFudCk7CiAJCQkJCWRldmljZV9k ZWxldGVfY2hpbGQoc2MtPmFhY19kZXYsCkBAIC0zNjEyLDYgKzQwNzEsNyBAQCBhYWNfc3VwcG9y dGVkX2ZlYXR1cmVzKHN0cnVjdCBhYWNfc29mdGMgCiAJIGlmIChmLmZlYXQuZlZhbHVlID09IDAp IHsKIAkJZi5mZWF0LmZCaXRzLmxhcmdlTEJBID0KIAkJICAgIChzYy0+ZmxhZ3MgJiBBQUNfRkxB R1NfTEJBXzY0QklUKSA/IDEgOiAwOworCQlmLmZlYXQuZkJpdHMuSkJPRFN1cHBvcnQgPSAxOwog CQkvKiBUT0RPOiBJbiB0aGUgZnV0dXJlLCBhZGQgb3RoZXIgZmVhdHVyZXMgc3RhdGUgaGVyZSBh cyB3ZWxsICovCiAJfSBlbHNlIHsKIAkJaWYgKGYuZmVhdC5mQml0cy5sYXJnZUxCQSkKQEAgLTM3 ODMsNiArNDI0Myw3IEBAIGFhY19nZXRfYnVzX2luZm8oc3RydWN0IGFhY19zb2Z0YyAqc2MpCiAJ CWNhbWluZi0+SW5pdGlhdG9yQnVzSWQgPSBidXNpbmZvLkluaXRpYXRvckJ1c0lkW2ldOwogCQlj YW1pbmYtPmFhY19zYyA9IHNjOwogCQljYW1pbmYtPnNpbV9kZXYgPSBjaGlsZDsKKwkJY2FtaW5m LT5hYWNfY2FtID0gTlVMTDsKIAogCQlkZXZpY2Vfc2V0X2l2YXJzKGNoaWxkLCBjYW1pbmYpOwog CQlkZXZpY2Vfc2V0X2Rlc2MoY2hpbGQsICJTQ1NJIFBhc3N0aHJvdWdoIEJ1cyIpOwpAQCAtMzc5 NiwzICs0MjU3LDE2NCBAQCBhYWNfZ2V0X2J1c19pbmZvKHN0cnVjdCBhYWNfc29mdGMgKnNjKQog CiAJcmV0dXJuOwogfQorCisvKgorICogQ2hlY2sgdG8gc2VlIGlmIHRoZSBrZXJuZWwgaXMgdXAg YW5kIHJ1bm5pbmcuIElmIHdlIGFyZSBpbiBhCisgKiBCbGlua0xFRCBzdGF0ZSwgcmV0dXJuIHRo ZSBCbGlua0xFRCBjb2RlLgorICovCitzdGF0aWMgdV9pbnQzMl90CithYWNfY2hlY2tfYWRhcHRl cl9oZWFsdGgoc3RydWN0IGFhY19zb2Z0YyAqc2MsIHVfaW50OF90ICpibGVkKQoreworCXVfaW50 MzJfdCByZXQ7CisKKwlyZXQgPSBBQUNfR0VUX0ZXU1RBVFVTKHNjKTsKKworCWlmIChyZXQgJiBB QUNfVVBfQU5EX1JVTk5JTkcpCisJCXJldCA9IDA7CisJZWxzZSBpZiAocmV0ICYgQUFDX0tFUk5F TF9QQU5JQyAmJiBibGVkKQorCQkqYmxlZCA9IChyZXQgPj4gMTYpICYgMHhmZjsKKworCXJldHVy biAocmV0KTsKK30KKworLyoKKyAqIE9uY2UgZG8gYW4gSU9QIHJlc2V0LCBiYXNpY2FsbHkgaGF2 ZSB0byByZS1pbml0aWFsaXplIHRoZSBjYXJkIGFzCisgKiBpZiBjb21pbmcgdXAgZnJvbSBhIGNv bGQgYm9vdCwgYW5kIHRoZSBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yCisgKiBhbnkgSU8gdGhh dCB3YXMgb3V0c3RhbmRpbmcgdG8gdGhlIGFkYXB0ZXIgYXQgdGhlIHRpbWUgb2YgdGhlIElPUAor ICogUkVTRVQuIEFuZCBwcmVwYXJlIHRoZSBkcml2ZXIgZm9yIElPUCBSRVNFVCBieSBtYWtpbmcg dGhlIGluaXQgY29kZQorICogbW9kdWxhciB3aXRoIHRoZSBhYmlsaXR5IHRvIGNhbGwgaXQgZnJv bSBtdWx0aXBsZSBwbGFjZXMuCisgKi8KK3N0YXRpYyBpbnQKK2FhY19yZXNldF9hZGFwdGVyKHN0 cnVjdCBhYWNfc29mdGMgKnNjKQoreworCXN0cnVjdCBhYWNfY29tbWFuZCAqY207CisJc3RydWN0 IGFhY19maWIgKmZpYjsKKwlzdHJ1Y3QgYWFjX3BhdXNlX2NvbW1hbmQgKnBjOworCXVfaW50MzJf dCBzdGF0dXMsIG9sZF9mbGFncywgcmVzZXRfbWFzaywgd2FpdENvdW50OworCisJZndwcmludGYo c2MsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwgIiIpOworCisJaWYgKHNjLT5hYWNf c3RhdGUgJiBBQUNfU1RBVEVfUkVTRVQpIHsKKwkJZGV2aWNlX3ByaW50ZihzYy0+YWFjX2Rldiwg ImFhY19yZXNldF9hZGFwdGVyKCkgYWxyZWFkeSBpbiBwcm9ncmVzc1xuIik7CisJCXJldHVybiAo RUlOVkFMKTsKKwl9CisJc2MtPmFhY19zdGF0ZSB8PSBBQUNfU1RBVEVfUkVTRVQ7CisKKwkvKiBk aXNhYmxlIGludGVycnVwdCAqLworCUFBQ19NQVNLX0lOVEVSUlVQVFMoc2MpOworCisJLyoKKwkg KiBBYm9ydCBhbGwgcGVuZGluZyBjb21tYW5kczoKKwkgKiBhKSBvbiB0aGUgY29udHJvbGxlcgor CSAqLworCXdoaWxlICgoY20gPSBhYWNfZGVxdWV1ZV9idXN5KHNjKSkgIT0gTlVMTCkgeworCQlj bS0+Y21fZmxhZ3MgfD0gQUFDX0NNRF9SRVNFVDsKKworCQkvKiBpcyB0aGVyZSBhIGNvbXBsZXRp b24gaGFuZGxlcj8gKi8KKwkJaWYgKGNtLT5jbV9jb21wbGV0ZSAhPSBOVUxMKSB7CisJCQljbS0+ Y21fY29tcGxldGUoY20pOworCQl9IGVsc2UgeworCQkJLyogYXNzdW1lIHRoYXQgc29tZW9uZSBp cyBzbGVlcGluZyBvbiB0aGlzCisJCQkgKiBjb21tYW5kCisJCQkgKi8KKwkJCXdha2V1cChjbSk7 CisJCX0KKwl9CisKKwkvKiBiKSBpbiB0aGUgd2FpdGluZyBxdWV1ZXMgKi8KKwl3aGlsZSAoKGNt ID0gYWFjX2RlcXVldWVfcmVhZHkoc2MpKSAhPSBOVUxMKSB7CisJCWNtLT5jbV9mbGFncyB8PSBB QUNfQ01EX1JFU0VUOworCisJCS8qIGlzIHRoZXJlIGEgY29tcGxldGlvbiBoYW5kbGVyPyAqLwor CQlpZiAoY20tPmNtX2NvbXBsZXRlICE9IE5VTEwpIHsKKwkJCWNtLT5jbV9jb21wbGV0ZShjbSk7 CisJCX0gZWxzZSB7CisJCQkvKiBhc3N1bWUgdGhhdCBzb21lb25lIGlzIHNsZWVwaW5nIG9uIHRo aXMKKwkJCSAqIGNvbW1hbmQKKwkJCSAqLworCQkJd2FrZXVwKGNtKTsKKwkJfQorCX0KKworCS8q IGZsdXNoIGRyaXZlcyAqLworCWlmIChhYWNfY2hlY2tfYWRhcHRlcl9oZWFsdGgoc2MsIE5VTEwp ID09IDApCisJCSh2b2lkKSBhYWNfc2h1dGRvd24oc2MtPmFhY19kZXYpOworCisJLyogZXhlY3V0 ZSBJT1AgcmVzZXQgKi8KKwlpZiAoc2MtPnN1cHBvcnRlZF9vcHRpb25zICYgQUFDX1NVUFBPUlRF RF9NVV9SRVNFVCkgeworCQlBQUNfTUVNMF9TRVRSRUc0KHNjLCBBQUNfSVJDU1IsIEFBQ19JUkNT Ul9DT1JFU19SU1QpOworCisJCS8qIFdlIG5lZWQgdG8gd2FpdCBmb3IgNSBzZWNvbmRzIGJlZm9y ZSBhY2Nlc3NpbmcgdGhlIE1VIGFnYWluCisJCSAqIDEwMDAwICogMTAwdXMgPSAxMDAwLDAwMHVz ID0gMTAwMG1zID0gMXMgIAorCQkgKi8KKwkJd2FpdENvdW50ID0gNSAqIDEwMDAwOworCQl3aGls ZSAod2FpdENvdW50KSB7CisJCQlERUxBWSgxMDApOwkJCS8qIGRlbGF5IDEwMCBtaWNyb3NlY29u ZHMgKi8KKwkJCXdhaXRDb3VudC0tOworCQl9CisJfSBlbHNlIGlmICgoYWFjX3N5bmNfY29tbWFu ZChzYywgCisJCUFBQ19JT1BfUkVTRVRfQUxXQVlTLCAwLCAwLCAwLCAwLCAmc3RhdHVzLCAmcmVz ZXRfbWFzaykpICE9IDApIHsKKwkJLyogY2FsbCBJT1BfUkVTRVQgZm9yIG9sZGVyIGZpcm13YXJl ICovCisJCWlmICgoYWFjX3N5bmNfY29tbWFuZChzYywgCisJCQlBQUNfSU9QX1JFU0VULCAwLCAw LCAwLCAwLCAmc3RhdHVzLCBOVUxMKSkgIT0gMCkgeworCisJCQlpZiAoc3RhdHVzID09IEFBQ19T UkJfU1RTX0lOVkFMSURfUkVRVUVTVCkKKwkJCQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LCAi SU9QX1JFU0VUIG5vdCBzdXBwb3J0ZWRcbiIpOworCQkJZWxzZQorCQkJCS8qIHByb2JhYmx5IHRp bWVvdXQgKi8KKwkJCQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LCAiSU9QX1JFU0VUIGZhaWxl ZFxuIik7CisKKwkJCS8qIHVud2luZCBhYWNfc2h1dGRvd24oKSAqLworCQkJYWFjX2FsbG9jX3N5 bmNfZmliKHNjLCAmZmliKTsKKwkJCXBjID0gKHN0cnVjdCBhYWNfcGF1c2VfY29tbWFuZCAqKSZm aWItPmRhdGFbMF07CisJCQlwYy0+Q29tbWFuZCA9IFZNX0NvbnRhaW5lckNvbmZpZzsKKwkJCXBj LT5UeXBlID0gQ1RfUEFVU0VfSU87CisJCQlwYy0+VGltZW91dCA9IDE7CisJCQlwYy0+TWluID0g MTsKKwkJCXBjLT5Ob1Jlc2NhbiA9IDE7CisKKwkJCSh2b2lkKSBhYWNfc3luY19maWIoc2MsIENv bnRhaW5lckNvbW1hbmQsIDAsIGZpYiwKKwkJCQlzaXplb2YgKHN0cnVjdCBhYWNfcGF1c2VfY29t bWFuZCkpOworCQkJYWFjX3JlbGVhc2Vfc3luY19maWIoc2MpOworCisJCQlnb3RvIGZpbmlzaDsK KwkJfQorCX0gZWxzZSBpZiAoc2MtPnN1cHBvcnRlZF9vcHRpb25zICYgQUFDX1NVUFBPUlRFRF9E T09SQkVMTF9SRVNFVCkgeworCQlBQUNfTUVNMF9TRVRSRUc0KHNjLCBBQUNfU1JDX0lEQlIsIHJl c2V0X21hc2spOworCQkvKiBXZSBuZWVkIHRvIHdhaXQgZm9yIDUgc2Vjb25kcyBiZWZvcmUgYWNj ZXNzaW5nIHRoZSBkb29yYmVsbCBhZ2FpbgorCQkgKiAxMDAwMCAqIDEwMHVzID0gMTAwMCwwMDB1 cyA9IDEwMDBtcyA9IDFzICAKKwkJICovCisJCXdhaXRDb3VudCA9IDUgKiAxMDAwMDsKKwkJd2hp bGUgKHdhaXRDb3VudCkgeworCQkJREVMQVkoMTAwKTsJCQkvKiBkZWxheSAxMDAgbWljcm9zZWNv bmRzICovCisJCQl3YWl0Q291bnQtLTsKKwkJfQorCX0KKworCS8qCisJICogUmUtcmVhZCBhbmQg cmVuZWdvdGlhdGUgdGhlIEZJQiBwYXJhbWV0ZXJzLCBhcyBvbmUgb2YgdGhlIGFjdGlvbnMKKwkg KiB0aGF0IGNhbiByZXN1bHQgZnJvbSBhbiBJT1AgcmVzZXQgaXMgdGhlIHJ1bm5pbmcgb2YgYSBu ZXcgZmlybXdhcmUKKwkgKiBpbWFnZS4KKwkgKi8KKwlvbGRfZmxhZ3MgPSBzYy0+ZmxhZ3M7CisJ LyoKKwkgKiBJbml0aWFsaXplIHRoZSBhZGFwdGVyLgorCSAqLworCWlmIChhYWNfY2hlY2tfZmly bXdhcmUoc2MpICE9IDApCisJCWdvdG8gZmluaXNoOworCWlmIChhYWNfaW5pdChzYykgIT0gMCkK KwkJZ290byBmaW5pc2g7CisKKwlpZiAoKG9sZF9mbGFncyAmIEFBQ19GTEFHU19ORVdfQ09NTSkg JiYKKwkJIShzYy0+ZmxhZ3MgJiBBQUNfRkxBR1NfTkVXX0NPTU0pKSB7CisJCS8qIHJlbWFwIGlu dGVycnVwdCBoYW5kbGVyICovCisJCWFhY19zZXR1cF9pbnRyKHNjKTsKKwl9CisKK2ZpbmlzaDoK KwlzYy0+YWFjX3N0YXRlICY9IH5BQUNfU1RBVEVfUkVTRVQ7CisJQUFDX1VOTUFTS19JTlRFUlJV UFRTKHNjKTsKKwlhYWNfc3RhcnRpbyhzYyk7CisJcmV0dXJuICgwKTsKK30KKwpkaWZmIC1wcnVO IG9sZC9hYWNfY2FtLmMgbmV3L2FhY19jYW0uYwotLS0gb2xkL2FhY19jYW0uYwkyMDExLTAzLTMx IDE0OjU3OjM0LjAwMDAwMDAwMCArMDAwMAorKysgbmV3L2FhY19jYW0uYwkyMDExLTA0LTAxIDEy OjU3OjAwLjAwMDAwMDAwMCArMDAwMApAQCAtNTM4LDcgKzUzOCw5IEBAIGFhY19jYW1fY29tcGxl dGUoc3RydWN0IGFhY19jb21tYW5kICpjbSkKIAljY2IgPSBjbS0+Y21fcHJpdmF0ZTsKIAlzcmJy ID0gKHN0cnVjdCBhYWNfc3JiX3Jlc3BvbnNlICopJmNtLT5jbV9maWItPmRhdGFbMF07CiAKLQlp ZiAoc3Jici0+ZmliX3N0YXR1cyAhPSAwKSB7CisJaWYgKGNtLT5jbV9mbGFncyAmIEFBQ19DTURf UkVTRVQpIHsKKwkJY2NiLT5jY2JfaC5zdGF0dXMgPSBDQU1fU0NTSV9CVVNfUkVTRVQ7CisJfSBl bHNlIGlmIChzcmJyLT5maWJfc3RhdHVzICE9IDApIHsKIAkJZGV2aWNlX3ByaW50ZihzYy0+YWFj X2RldiwgIlBhc3N0aHJ1IEZJQiBmYWlsZWQhXG4iKTsKIAkJY2NiLT5jY2JfaC5zdGF0dXMgPSBD QU1fUkVRX0FCT1JURUQ7CiAJfSBlbHNlIHsKQEAgLTU4Myw5ICs1ODUsMTAgQEAgYWFjX2NhbV9j b21wbGV0ZShzdHJ1Y3QgYWFjX2NvbW1hbmQgKmNtKQogCQkJCSAqIFdlIHdhbnQgREFTRCBhbmQg UFJPQyBkZXZpY2VzIHRvIG9ubHkgYmUKIAkJCQkgKiB2aXNpYmxlIHRocm91Z2ggdGhlIHBhc3Mg ZGV2aWNlLgogCQkJCSAqLwotCQkJCWlmICgoZGV2aWNlID09IFRfRElSRUNUKSB8fAotCQkJCSAg ICAoZGV2aWNlID09IFRfUFJPQ0VTU09SKSB8fAotCQkJCSAgICAoc2MtPmZsYWdzICYgQUFDX0ZM QUdTX0NBTV9QQVNTT05MWSkpCisJCQkJaWYgKChkZXZpY2UgPT0gVF9ESVJFQ1QgJiYgCisJCQkJ IAkhKHNjLT5hYWNfZmVhdHVyZV9iaXRzICYgQUFDX1NVUFBMX1NVUFBPUlRFRF9KQk9EKSkgfHwK KwkJCQkJKGRldmljZSA9PSBUX1BST0NFU1NPUikgfHwKKwkJCQkJKHNjLT5mbGFncyAmIEFBQ19G TEFHU19DQU1fUEFTU09OTFkpKQogCQkJCQljY2ItPmNzaW8uZGF0YV9wdHJbMF0gPQogCQkJCQkg ICAgKChkZXZpY2UgJiAweGUwKSB8IFRfTk9ERVZJQ0UpOwogCQkJCX0gZWxzZSBpZiAoY2NiLT5j Y2JfaC5zdGF0dXMgPT0gQ0FNX1NFTF9USU1FT1VUICYmCmRpZmYgLXBydU4gb2xkL2FhY19kaXNr LmMgbmV3L2FhY19kaXNrLmMKLS0tIG9sZC9hYWNfZGlzay5jCTIwMTEtMDMtMzEgMTQ6NTc6MzQu MDAwMDAwMDAwICswMDAwCisrKyBuZXcvYWFjX2Rpc2suYwkyMDExLTA0LTAxIDEzOjMyOjIwLjAw MDAwMDAwMCArMDAwMApAQCAtOTMsMjYgKzkzLDYwIEBAIERSSVZFUl9NT0RVTEUoYWFjZCwgYWFj LCBhYWNfZGlza19kcml2ZXIKIHN0YXRpYyBpbnQKIGFhY19kaXNrX29wZW4oc3RydWN0IGRpc2sg KmRwKQogewotCXN0cnVjdCBhYWNfZGlzawkqc2M7CisJc3RydWN0IGFhY19kaXNrCSpzY2Q7CisJ c3RydWN0IGFhY19zb2Z0YyAqc2M7CiAKIAlmd3ByaW50ZihOVUxMLCBIQkFfRkxBR1NfREJHX0ZV TkNUSU9OX0VOVFJZX0IsICIiKTsKIAotCXNjID0gKHN0cnVjdCBhYWNfZGlzayAqKWRwLT5kX2Ry djE7CisJc2NkID0gKHN0cnVjdCBhYWNfZGlzayAqKWRwLT5kX2RydjE7CiAJCi0JaWYgKHNjID09 IE5VTEwpIHsKKwlpZiAoc2NkID09IE5VTEwpIHsKIAkJcHJpbnRmKCJhYWNfZGlza19vcGVuOiBO byBTb2Z0Y1xuIik7CiAJCXJldHVybiAoRU5YSU8pOwogCX0KKwlzYyA9IHNjZC0+YWRfY29udHJv bGxlcjsKIAogCS8qIGNoZWNrIHRoYXQgdGhlIGNvbnRyb2xsZXIgaXMgdXAgYW5kIHJ1bm5pbmcg Ki8KLQlpZiAoc2MtPmFkX2NvbnRyb2xsZXItPmFhY19zdGF0ZSAmIEFBQ19TVEFURV9TVVNQRU5E KSB7Ci0JCWRldmljZV9wcmludGYoc2MtPmFkX2NvbnRyb2xsZXItPmFhY19kZXYsCi0JCSAgICAi Q29udHJvbGxlciBTdXNwZW5kZWQgY29udHJvbGxlciBzdGF0ZSA9IDB4JXhcbiIsCi0JCSAgICBz Yy0+YWRfY29udHJvbGxlci0+YWFjX3N0YXRlKTsKLQkJcmV0dXJuKEVOWElPKTsKKwlpZiAoc2Mt PmFhY19zdGF0ZSAmIEFBQ19TVEFURV9TVVNQRU5EKSB7CisJCWRldmljZV9wcmludGYoc2MtPmFh Y19kZXYsIAorCQkJIkNvbnRyb2xsZXIgU3VzcGVuZGVkIGNvbnRyb2xsZXIgc3RhdGUgPSAweCV4 XG4iLAorCQkJc2MtPmFhY19zdGF0ZSk7CisJCXJldHVybiAoRU5YSU8pOworCX0gICAgICAgICAg CisKKwkvKiBhbHJlYWR5IG9wZW5lZD8gKi8KKwlpZiAoc2NkLT5hZF9mbGFncyAmIEFBQ19ESVNL X09QRU4pIAorCQlyZXR1cm4gKDApOworCisJLyogcG93ZXIgbWFuYWdlbWVudCAqLworCWlmIChz Yy0+YWFjX3N1cHBvcnRfb3B0MiAmIEFBQ19TVVBQT1JURURfUE9XRVJfTUFOQUdFTUVOVCkgewor CQlzdHJ1Y3QgYWFjX2ZpYiAqZmliOworCQlzdHJ1Y3QgYWFjX2NudF9jb25maWcgKmNtZDsKKwor CQltdHhfbG9jaygmc2MtPmFhY19pb19sb2NrKTsKKwkJYWFjX2FsbG9jX3N5bmNfZmliKHNjLCAm ZmliKTsKKworCQkvKiBTdGFydCB1bml0ICovCisJCWNtZCA9IChzdHJ1Y3QgYWFjX2NudF9jb25m aWcgKikmZmliLT5kYXRhWzBdOworCQliemVybyhjbWQsIHNpemVvZiAoKmNtZCkgLSBDVF9QQUNL RVRfU0laRSk7CisJCWNtZC0+Q29tbWFuZCA9IFZNX0NvbnRhaW5lckNvbmZpZzsKKwkJY21kLT5D VENvbW1hbmQuY29tbWFuZCA9IENUX1BNX0RSSVZFUl9TVVBQT1JUOworCQljbWQtPkNUQ29tbWFu ZC5wYXJhbVswXSA9IEFBQ19QTV9EUklWRVJTVVBfU1RBUlRfVU5JVDsKKwkJY21kLT5DVENvbW1h bmQucGFyYW1bMV0gPSBzY2QtPmFkX2NvbnRhaW5lci0+Y29fbW50b2JqLk9iamVjdElkOworCQlj bWQtPkNUQ29tbWFuZC5wYXJhbVsyXSA9IDA7CS8qIDEgLSBpbW1lZGlhdGUgKi8KKworCQlpZiAo YWFjX3N5bmNfZmliKHNjLCBDb250YWluZXJDb21tYW5kLCAwLCBmaWIsCisJCQkJIHNpemVvZihz dHJ1Y3QgYWFjX2NudF9jb25maWcpKSB8fAorCQkJKih1X2ludDMyX3QgKikmZmliLT5kYXRhWzBd ICE9IDApIHsKKwkJCXByaW50ZigiUG93ZXIgTWFuYWdlbWVudDogRXJyb3Igc3RhcnRpbmcgY29u dGFpbmVyICVkXG4iLCAKKwkJCQlzY2QtPmFkX2NvbnRhaW5lci0+Y29fbW50b2JqLk9iamVjdElk KTsKKwkJfQorCisJCWFhY19yZWxlYXNlX3N5bmNfZmliKHNjKTsKKwkJbXR4X3VubG9jaygmc2Mt PmFhY19pb19sb2NrKTsKIAl9CiAKLQlzYy0+YWRfZmxhZ3MgfD0gQUFDX0RJU0tfT1BFTjsKKwlz Y2QtPmFkX2ZsYWdzIHw9IEFBQ19ESVNLX09QRU47CiAJcmV0dXJuICgwKTsKIH0KIApAQCAtMTIy LDE2ICsxNTYsNTAgQEAgYWFjX2Rpc2tfb3BlbihzdHJ1Y3QgZGlzayAqZHApCiBzdGF0aWMgaW50 CiBhYWNfZGlza19jbG9zZShzdHJ1Y3QgZGlzayAqZHApCiB7Ci0Jc3RydWN0IGFhY19kaXNrCSpz YzsKKwlzdHJ1Y3QgYWFjX2Rpc2sJKnNjZDsKKwlzdHJ1Y3QgYWFjX3NvZnRjICpzYzsKIAogCWZ3 cHJpbnRmKE5VTEwsIEhCQV9GTEFHU19EQkdfRlVOQ1RJT05fRU5UUllfQiwgIiIpOwogCi0Jc2Mg PSAoc3RydWN0IGFhY19kaXNrICopZHAtPmRfZHJ2MTsKKwlzY2QgPSAoc3RydWN0IGFhY19kaXNr ICopZHAtPmRfZHJ2MTsKIAkKLQlpZiAoc2MgPT0gTlVMTCkKKwlpZiAoc2NkID09IE5VTEwpCiAJ CXJldHVybiAoRU5YSU8pOworCXNjID0gc2NkLT5hZF9jb250cm9sbGVyOworCisJLyogYWxyZWFk eSBjbG9zZWQ/ICovCisJaWYgKCEoc2NkLT5hZF9mbGFncyAmIEFBQ19ESVNLX09QRU4pKSAKKwkJ cmV0dXJuICgwKTsKKworCS8qIHBvd2VyIG1hbmFnZW1lbnQgKi8KKwlpZiAoc2MtPmFhY19zdXBw b3J0X29wdDIgJiBBQUNfU1VQUE9SVEVEX1BPV0VSX01BTkFHRU1FTlQpIHsKKwkJc3RydWN0IGFh Y19maWIgKmZpYjsKKwkJc3RydWN0IGFhY19jbnRfY29uZmlnICpjbWQ7CisKKwkJbXR4X2xvY2so JnNjLT5hYWNfaW9fbG9jayk7CisJCWFhY19hbGxvY19zeW5jX2ZpYihzYywgJmZpYik7CisKKwkJ LyogU3RvcCB1bml0ICovCisJCWNtZCA9IChzdHJ1Y3QgYWFjX2NudF9jb25maWcgKikmZmliLT5k YXRhWzBdOworCQliemVybyhjbWQsIHNpemVvZiAoKmNtZCkgLSBDVF9QQUNLRVRfU0laRSk7CisJ CWNtZC0+Q29tbWFuZCA9IFZNX0NvbnRhaW5lckNvbmZpZzsKKwkJY21kLT5DVENvbW1hbmQuY29t bWFuZCA9IENUX1BNX0RSSVZFUl9TVVBQT1JUOworCQljbWQtPkNUQ29tbWFuZC5wYXJhbVswXSA9 IEFBQ19QTV9EUklWRVJTVVBfU1RPUF9VTklUOworCQljbWQtPkNUQ29tbWFuZC5wYXJhbVsxXSA9 IHNjZC0+YWRfY29udGFpbmVyLT5jb19tbnRvYmouT2JqZWN0SWQ7CisJCWNtZC0+Q1RDb21tYW5k LnBhcmFtWzJdID0gMDsJLyogMSAtIGltbWVkaWF0ZSAqLworCisJCWlmIChhYWNfc3luY19maWIo c2MsIENvbnRhaW5lckNvbW1hbmQsIDAsIGZpYiwKKwkJCQkgc2l6ZW9mKHN0cnVjdCBhYWNfY250 X2NvbmZpZykpIHx8CisJCQkqKHVfaW50MzJfdCAqKSZmaWItPmRhdGFbMF0gIT0gMCkgeworCQkJ cHJpbnRmKCJQb3dlciBNYW5hZ2VtZW50OiBFcnJvciBzdG9wcGluZyBjb250YWluZXIgJWRcbiIs IAorCQkJCXNjZC0+YWRfY29udGFpbmVyLT5jb19tbnRvYmouT2JqZWN0SWQpOworCQl9CisKKwkJ YWFjX3JlbGVhc2Vfc3luY19maWIoc2MpOworCQltdHhfdW5sb2NrKCZzYy0+YWFjX2lvX2xvY2sp OworCX0KIAotCXNjLT5hZF9mbGFncyAmPSB+QUFDX0RJU0tfT1BFTjsKKwlzY2QtPmFkX2ZsYWdz ICY9IH5BQUNfRElTS19PUEVOOwogCXJldHVybiAoMCk7CiB9CiAKZGlmZiAtcHJ1TiBvbGQvYWFj X2lvY3RsLmggbmV3L2FhY19pb2N0bC5oCi0tLSBvbGQvYWFjX2lvY3RsLmgJMjAxMS0wMy0zMSAx NTowMDozNS4wMDAwMDAwMDAgKzAwMDAKKysrIG5ldy9hYWNfaW9jdGwuaAkyMDExLTA0LTAxIDEz OjMzOjI5LjAwMDAwMDAwMCArMDAwMApAQCAtMTU3LDEyICsxNTcsMTIgQEAgdW5pb24gYWFjX3N0 YXRyZXF1ZXN0IHsKIHN0cnVjdCBhYWNfcmV2X2NoZWNrIHsKIAlSZXZDb21wb25lbnQJCWNhbGxp bmdDb21wb25lbnQ7CiAJc3RydWN0IEZzYVJldmlzaW9uCWNhbGxpbmdSZXZpc2lvbjsKLX07Cit9 IF9fcGFja2VkOwogCiBzdHJ1Y3QgYWFjX3Jldl9jaGVja19yZXNwIHsKIAlpbnQJCQlwb3NzaWJs eUNvbXBhdGlibGU7CiAJc3RydWN0IEZzYVJldmlzaW9uCWFkYXB0ZXJTV1JldmlzaW9uOwotfTsK K30gX19wYWNrZWQ7CiAKIC8qCiAgKiBDb250ZXh0IHBhc3NlZCBpbiBieSBhIGNvbnN1bWVyIGxv b2tpbmcgdG8gY29sbGVjdCBhbiBBSUYuCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RydWN0IGdldF9h ZGFwdGVyX2ZpYl9pb2N0bCB7CiAJdV9pbnQzMl90CUFkYXB0ZXJGaWJDb250ZXh0OwogCWludAkg IAlXYWl0OwogCWNhZGRyX3QJCUFpZkZpYjsKLX07Cit9IF9fcGFja2VkOwogCiBzdHJ1Y3QgYWFj X3F1ZXJ5X2Rpc2sgewogCWludDMyX3QJCUNvbnRhaW5lck51bWJlcjsKQEAgLTE4NCw3ICsxODQs NyBAQCBzdHJ1Y3QgYWFjX3F1ZXJ5X2Rpc2sgewogCWludDMyX3QJCUluc3RhbmNlOwogCWNoYXIJ CWRpc2tEZXZpY2VOYW1lWzEwXTsKIAl1X2ludDMyX3QJVW5NYXBwZWQ7Ci19OworfSBfX3BhY2tl ZDsKIAogLyogRmVhdHVyZXMsIGFza2VkIGZyb20gdGhlIHRvb2xzIHRvIGtub3cgaWYgdGhlIGRy aXZlcgogICogc3VwcG9ydHMgZHJpdmVzID4yVEIKQEAgLTE5Miw3ICsxOTIsMTAgQEAgc3RydWN0 IGFhY19xdWVyeV9kaXNrIHsKIHR5cGVkZWYgdW5pb24gewogCXN0cnVjdCB7CiAJCXVfaW50MzJf dCBsYXJnZUxCQSAgOiAxOwkvKiBkaXNrIHN1cHBvcnQgZ3JlYXRlciAyVEIgKi8KLQkJdV9pbnQz Ml90IGZSZXNlcnZlZCA6IDMxOworCQl1X2ludDMyX3QgSW9jdGxCdWYgIDogMTsgICAgLyogQVJD SU9DVEwgY2FsbCBzdXBwb3J0ICovCisJCXVfaW50MzJfdCBBSUZTdXBwb3J0OiAxOyAgICAvKiBB SUYgc3VwcG9ydCAqLworCQl1X2ludDMyX3QgSkJPRFN1cHBvcnQ6MTsgICAgLyogZmlybXdhcmUg KyBkcml2ZXIgYm90aCBzdXBwb3J0IEpCT0QgKi8KKwkJdV9pbnQzMl90IGZSZXNlcnZlZCA6IDI4 OwogCX0gZkJpdHM7CiAJdV9pbnQzMl90IGZWYWx1ZTsKIH0gZmVhdHVyZXNTdGF0ZTsKZGlmZiAt cHJ1TiBvbGQvYWFjX3BjaS5jIG5ldy9hYWNfcGNpLmMKLS0tIG9sZC9hYWNfcGNpLmMJMjAxMS0w My0zMSAxNDo1NzozNC4wMDAwMDAwMDAgKzAwMDAKKysrIG5ldy9hYWNfcGNpLmMJMjAxMS0wNC0w MSAxMzo0MTowMC4wMDAwMDAwMDAgKzAwMDAKQEAgLTIsNyArMiw4IEBACiAgKiBDb3B5cmlnaHQg KGMpIDIwMDAgTWljaGFlbCBTbWl0aAogICogQ29weXJpZ2h0IChjKSAyMDAxIFNjb3R0IExvbmcK ICAqIENvcHlyaWdodCAoYykgMjAwMCBCU0RpCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDEgQWRhcHRl YywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMTAgQWRhcHRlYywgSW5jLgorICogQ29w eXJpZ2h0IChjKSAyMDEwIFBNQy1TaWVycmEsIEluYy4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0CkBAIC0yNDMsMTUgKzI0NCw3IEBAIHN0cnVjdCBhYWNfaWRlbnQK IAl7MHg5MDA1LCAweDAyODUsIDB4OTAwNSwgMHgwMmQwLCBBQUNfSFdJRl9JOTYwUlgsIDAsCiAJ ICJBZGFwdGVjIFJBSUQgNTI0NDUifSwKIAl7MHg5MDA1LCAweDAyODUsIDB4OTAwNSwgMHgwMmQx LCBBQUNfSFdJRl9JOTYwUlgsIDAsCi0JICJBZGFwdGVjIFJBSUQgNTQwNSJ9LAotCXsweDkwMDUs IDB4MDI4NSwgMHg5MDA1LCAweDAyZDQsIEFBQ19IV0lGX0k5NjBSWCwgMCwKLQkgIkFkYXB0ZWMg UkFJRCAyMDQ1In0sCi0JezB4OTAwNSwgMHgwMjg1LCAweDkwMDUsIDB4MDJkNSwgQUFDX0hXSUZf STk2MFJYLCAwLAotCSAiQWRhcHRlYyBSQUlEIDI0MDUifSwKLQl7MHg5MDA1LCAweDAyODUsIDB4 OTAwNSwgMHgwMmQ2LCBBQUNfSFdJRl9JOTYwUlgsIDAsCi0JICJBZGFwdGVjIFJBSUQgMjQ0NSJ9 LAotCXsweDkwMDUsIDB4MDI4NSwgMHg5MDA1LCAweDAyZDcsIEFBQ19IV0lGX0k5NjBSWCwgMCwK LQkgIkFkYXB0ZWMgUkFJRCAyODA1In0sCisgICAgICAgICJBZGFwdGVjIFJBSUQgNTQwNSJ9LAog CXsweDkwMDUsIDB4MDI4NiwgMHgxMDE0LCAweDk1ODAsIEFBQ19IV0lGX1JLVCwgMCwKIAkgIklC TSBTZXJ2ZVJBSUQtOGsifSwKIAl7MHg5MDA1LCAweDAyODUsIDB4MTAxNCwgMHgwMzRkLCBBQUNf SFdJRl9JOTYwUlgsIDAsCkBAIC0yODQsNiArMjc3LDggQEAgYWFjX2ZhbWlseV9pZGVudGlmaWVy c1tdID0gewogCSAiQWRhcHRlYyBSQUlEIENvbnRyb2xsZXIifSwKIAl7MHg5MDA1LCAweDAyODYs IDAsIDAsIEFBQ19IV0lGX1JLVCwgMCwKIAkgIkFkYXB0ZWMgUkFJRCBDb250cm9sbGVyIn0sCisJ ezB4OTAwNSwgMHgwMjhiLCAwLCAwLCBBQUNfSFdJRl9TUkMsIDAsCisJICJBZGFwdGVjIFJBSUQg Q29udHJvbGxlciJ9LAogCXswLCAwLCAwLCAwLCAwLCAwLCAwfQogfTsKIApAQCAtMzY5LDYgKzM2 NCw0MCBAQCBhYWNfcGNpX2F0dGFjaChkZXZpY2VfdCBkZXYpCiAJCWdvdG8gb3V0OwogCX0KIAor CS8qIAorCSAqIERldGVjdCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlIHZlcnNpb24sIHNldCB1cCB0 aGUgYnVzIGludGVyZmFjZQorCSAqIGluZGlyZWN0aW9uLgorCSAqLworCWlkID0gYWFjX2ZpbmRf aWRlbnQoZGV2KTsKKwlzYy0+YWFjX2h3aWYgPSBpZC0+aHdpZjsKKwlzd2l0Y2goc2MtPmFhY19o d2lmKSB7CisJY2FzZSBBQUNfSFdJRl9JOTYwUlg6CisJY2FzZSBBQUNfSFdJRl9OQVJLOgorCQlm d3ByaW50ZihzYywgSEJBX0ZMQUdTX0RCR19JTklUX0IsICJzZXQgaGFyZHdhcmUgdXAgZm9yIGk5 NjBSeC9OQVJLIik7CisJCXNjLT5hYWNfaWYgPSBhYWNfcnhfaW50ZXJmYWNlOworCQlicmVhazsK KwljYXNlIEFBQ19IV0lGX1NUUk9OR0FSTToKKwkJZndwcmludGYoc2MsIEhCQV9GTEFHU19EQkdf SU5JVF9CLCAic2V0IGhhcmR3YXJlIHVwIGZvciBTdHJvbmdBUk0iKTsKKwkJc2MtPmFhY19pZiA9 IGFhY19zYV9pbnRlcmZhY2U7CisJCWJyZWFrOworCWNhc2UgQUFDX0hXSUZfUktUOgorCQlmd3By aW50ZihzYywgSEJBX0ZMQUdTX0RCR19JTklUX0IsICJzZXQgaGFyZHdhcmUgdXAgZm9yIFJvY2tl dC9NSVBTIik7CisJCXNjLT5hYWNfaWYgPSBhYWNfcmt0X2ludGVyZmFjZTsKKwkJYnJlYWs7CisJ Y2FzZSBBQUNfSFdJRl9TUkM6CisJCWZ3cHJpbnRmKHNjLCBIQkFfRkxBR1NfREJHX0lOSVRfQiwg InNldCBoYXJkd2FyZSB1cCBmb3IgUE1DIFNSQyIpOworCQlzYy0+YWFjX2lmID0gYWFjX3NyY19p bnRlcmZhY2U7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXNjLT5hYWNfaHdpZiA9IEFBQ19IV0lG X1VOS05PV047CisJCWRldmljZV9wcmludGYoc2MtPmFhY19kZXYsICJ1bmtub3duIGhhcmR3YXJl IHR5cGVcbiIpOworCQllcnJvciA9IEVOWElPOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBhc3N1 bWUgZmFpbHVyZSBpcyAnb3V0IG9mIG1lbW9yeScgKi8KKwllcnJvciA9IEVOT01FTTsKKwogCS8q CiAJICogQWxsb2NhdGUgdGhlIFBDSSByZWdpc3RlciB3aW5kb3cuCiAJICovCkBAIC0zODIsOCAr NDExLDggQEAgYWFjX3BjaV9hdHRhY2goZGV2aWNlX3QgZGV2KQogCXNjLT5hYWNfYnRhZzAgPSBy bWFuX2dldF9idXN0YWcoc2MtPmFhY19yZWdzX3JlczApOwogCXNjLT5hYWNfYmhhbmRsZTAgPSBy bWFuX2dldF9idXNoYW5kbGUoc2MtPmFhY19yZWdzX3JlczApOwogCi0JaWYgKHNjLT5hYWNfaHdp ZiA9PSBBQUNfSFdJRl9OQVJLKSB7Ci0JCXNjLT5hYWNfcmVnc19yaWQxID0gUENJUl9CQVIoMSk7 CisJaWYgKHNjLT5hYWNfaHdpZiA9PSBBQUNfSFdJRl9TUkMgfHwgc2MtPmFhY19od2lmID09IEFB Q19IV0lGX05BUkspIHsKKwkJc2MtPmFhY19yZWdzX3JpZDEgPSBQQ0lSX0JBUigyKTsKIAkJaWYg KChzYy0+YWFjX3JlZ3NfcmVzMSA9IGJ1c19hbGxvY19yZXNvdXJjZV9hbnkoc2MtPmFhY19kZXYs CiAJCSAgICBTWVNfUkVTX01FTU9SWSwgJnNjLT5hYWNfcmVnc19yaWQxLCBSRl9BQ1RJVkUpKSA9 PSBOVUxMKSB7CiAJCQlkZXZpY2VfcHJpbnRmKHNjLT5hYWNfZGV2LApAQCAtNDE5LDMzICs0NDgs NiBAQCBhYWNfcGNpX2F0dGFjaChkZXZpY2VfdCBkZXYpCiAJCWdvdG8gb3V0OwogCX0KIAotCS8q IAotCSAqIERldGVjdCB0aGUgaGFyZHdhcmUgaW50ZXJmYWNlIHZlcnNpb24sIHNldCB1cCB0aGUg YnVzIGludGVyZmFjZQotCSAqIGluZGlyZWN0aW9uLgotCSAqLwotCWlkID0gYWFjX2ZpbmRfaWRl bnQoZGV2KTsKLQlzYy0+YWFjX2h3aWYgPSBpZC0+aHdpZjsKLQlzd2l0Y2goc2MtPmFhY19od2lm KSB7Ci0JY2FzZSBBQUNfSFdJRl9JOTYwUlg6Ci0JY2FzZSBBQUNfSFdJRl9OQVJLOgotCQlmd3By aW50ZihzYywgSEJBX0ZMQUdTX0RCR19JTklUX0IsICJzZXQgaGFyZHdhcmUgdXAgZm9yIGk5NjBS eC9OQVJLIik7Ci0JCXNjLT5hYWNfaWYgPSBhYWNfcnhfaW50ZXJmYWNlOwotCQlicmVhazsKLQlj YXNlIEFBQ19IV0lGX1NUUk9OR0FSTToKLQkJZndwcmludGYoc2MsIEhCQV9GTEFHU19EQkdfSU5J VF9CLCAic2V0IGhhcmR3YXJlIHVwIGZvciBTdHJvbmdBUk0iKTsKLQkJc2MtPmFhY19pZiA9IGFh Y19zYV9pbnRlcmZhY2U7Ci0JCWJyZWFrOwotCWNhc2UgQUFDX0hXSUZfUktUOgotCQlmd3ByaW50 ZihzYywgSEJBX0ZMQUdTX0RCR19JTklUX0IsICJzZXQgaGFyZHdhcmUgdXAgZm9yIFJvY2tldC9N SVBTIik7Ci0JCXNjLT5hYWNfaWYgPSBhYWNfcmt0X2ludGVyZmFjZTsKLQkJYnJlYWs7Ci0JZGVm YXVsdDoKLQkJc2MtPmFhY19od2lmID0gQUFDX0hXSUZfVU5LTk9XTjsKLQkJZGV2aWNlX3ByaW50 ZihzYy0+YWFjX2RldiwgInVua25vd24gaGFyZHdhcmUgdHlwZVxuIik7Ci0JCWVycm9yID0gRU5Y SU87Ci0JCWdvdG8gb3V0OwotCX0KLQogCS8qIFNldCB1cCBxdWlya3MgKi8KIAlzYy0+ZmxhZ3Mg PSBpZC0+cXVpcmtzOwogCmRpZmYgLXBydU4gb2xkL2FhY3JlZy5oIG5ldy9hYWNyZWcuaAotLS0g b2xkL2FhY3JlZy5oCTIwMTEtMDMtMzEgMTQ6NTc6MzQuMDAwMDAwMDAwICswMDAwCisrKyBuZXcv YWFjcmVnLmgJMjAxMS0wNC0wMSAxMzo0Njo1MS4wMDAwMDAwMDAgKzAwMDAKQEAgLTIsNyArMiw4 IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMDAgTWljaGFlbCBTbWl0aAogICogQ29weXJpZ2h0IChj KSAyMDAwLTIwMDEgU2NvdHQgTG9uZwogICogQ29weXJpZ2h0IChjKSAyMDAwIEJTRGkKLSAqIENv cHlyaWdodCAoYykgMjAwMSBBZGFwdGVjLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAx MCBBZGFwdGVjLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAgUE1DLVNpZXJyYSwgSW5jLgog ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEyMyw2ICsxMjQs MTQgQEAgc3RydWN0IGFhY19xdWV1ZV90YWJsZSB7CiAjZGVmaW5lIEFBQ19BREFQX05PUk1fUkVT UF9RVUVVRQk2CiAjZGVmaW5lIEFBQ19BREFQX0hJR0hfUkVTUF9RVUVVRQk3CiAKKy8qIHRyYW5z cG9ydCBGSUIgaGVhZGVyIChQTUMpICovCitzdHJ1Y3QgYWFjX2ZpYl94cG9ydGhkciB7CisJdV9p bnQ2NF90CUhvc3RBZGRyZXNzOwkvKiBGSUIgaG9zdCBhZGRyZXNzIHcvbyB4cG9ydCBoZWFkZXIg Ki8KKwl1X2ludDMyX3QJU2l6ZTsJCQkvKiBGSUIgc2l6ZSBleGNsdWRpbmcgeHBvcnQgaGVhZGVy ICovCisJdV9pbnQzMl90CUhhbmRsZTsJCQkvKiBkcml2ZXIgaGFuZGxlIHRvIHJlZmVyZW5jZSB0 aGUgRklCICovCisJdV9pbnQ2NF90CVJlc2VydmVkWzJdOworfSBfX3BhY2tlZDsKKwogLyoKICAq IExpc3Qgc3RydWN0dXJlIHVzZWQgdG8gY2hhaW4gRklCcyAodXNlZCBieSB0aGUgYWRhcHRlciAt IHdlIGhhbmcgRklCcyBvZmYKICAqIG91ciBwcml2YXRlIGNvbW1hbmQgc3RydWN0dXJlIGFuZCBk b24ndCB0b3VjaCB0aGVzZSkKQEAgLTI2OCw2ICsyNzcsNyBAQCB0eXBlZGVmIGVudW0gewogI2Rl ZmluZSBBQUNfRklCU1RBVEVfQklPU0ZJQgkJKDE8PDE4KQogI2RlZmluZSBBQUNfRklCU1RBVEVf RkFTVF9SRVNQT05TRQkoMTw8MTkpCS8qIGZhc3QgcmVzcG9uc2UgY2FwYWJsZSAqLwogI2RlZmlu ZSBBQUNfRklCU1RBVEVfQVBJRklCCQkoMTw8MjApCisjZGVmaW5lIEFBQ19GSUJTVEFURV9OT01P UkVBSUYJCSgxPDwyMSkKIAogLyoKICAqIEZJQiBlcnJvciB2YWx1ZXMKQEAgLTI5MCw2ICszMDAs NyBAQCBzdHJ1Y3QgYWFjX2FkYXB0ZXJfaW5pdCB7CiAJdV9pbnQzMl90CUluaXRTdHJ1Y3RSZXZp c2lvbjsKICNkZWZpbmUgQUFDX0lOSVRfU1RSVUNUX1JFVklTSU9OCQkzCiAjZGVmaW5lIEFBQ19J TklUX1NUUlVDVF9SRVZJU0lPTl80CQk0CisjZGVmaW5lIEFBQ19JTklUX1NUUlVDVF9SRVZJU0lP Tl82CQk2CiAJdV9pbnQzMl90CU1pbmlQb3J0UmV2aXNpb247CiAjZGVmaW5lIEFBQ19JTklUX1NU UlVDVF9NSU5JUE9SVF9SRVZJU0lPTgkxCiAJdV9pbnQzMl90CUZpbGVzeXN0ZW1SZXZpc2lvbjsK QEAgLTMwNiwxMiArMzE3LDE4IEBAIHN0cnVjdCBhYWNfYWRhcHRlcl9pbml0IHsKIAl1X2ludDMy X3QJSG9zdEVsYXBzZWRTZWNvbmRzOwogCS8qIEFEQVBURVJfSU5JVF9TVFJVQ1RfUkVWSVNJT05f NCBiZWdpbnMgaGVyZSAqLwogCXVfaW50MzJfdAlJbml0RmxhZ3M7CQkJLyogZmxhZ3MgZm9yIHN1 cHBvcnRlZCBmZWF0dXJlcyAqLwotI2RlZmluZQlBQUNfSU5JVEZMQUdTX05FV19DT01NX1NVUFBP UlRFRAkxCi0jZGVmaW5lCUFBQ19JTklURkxBR1NfRFJJVkVSX1VTRVNfVVRDX1RJTUUJMHgxMAot I2RlZmluZQlBQUNfSU5JVEZMQUdTX0RSSVZFUl9TVVBQT1JUU19QTQkweDIwCisjZGVmaW5lIEFB Q19JTklURkxBR1NfTkVXX0NPTU1fU1VQUE9SVEVECTEKKyNkZWZpbmUgQUFDX0lOSVRGTEFHU19E UklWRVJfVVNFU19VVENfVElNRQkweDEwCisjZGVmaW5lIEFBQ19JTklURkxBR1NfRFJJVkVSX1NV UFBPUlRTX1BNCTB4MjAKKyNkZWZpbmUgQUFDX0lOSVRGTEFHU19ORVdfQ09NTV9UWVBFMV9TVVBQ T1JURUQgIDB4NDEKIAl1X2ludDMyX3QJTWF4SW9Db21tYW5kczsJCS8qIG1heCBvdXRzdGFuZGlu ZyBjb21tYW5kcyAqLwogCXVfaW50MzJfdAlNYXhJb1NpemU7CQkJLyogbGFyZ2VzdCBJL08gY29t bWFuZCAqLwogCXVfaW50MzJfdAlNYXhGaWJTaXplOwkJCS8qIGxhcmdlc3QgRklCIHRvIGFkYXB0 ZXIgKi8KKwkvKiBBREFQVEVSX0lOSVRfU1RSVUNUX1JFVklTSU9OXzUgYmVnaW5zIGhlcmUgKi8K Kwl1X2ludDMyX3QJTWF4TnVtQWlmOwkgICAgICAgIC8qIG1heCBudW1iZXIgb2YgYWlmICovIAor CS8qIEFEQVBURVJfSU5JVF9TVFJVQ1RfUkVWSVNJT05fNiBiZWdpbnMgaGVyZSAqLworCXVfaW50 MzJfdAlIb3N0UlJRX0FkZHJMb3c7CisJdV9pbnQzMl90CUhvc3RSUlFfQWRkckhpZ2g7CS8qIEhv c3QgUlJRIChyZXNwb25zZSBxdWV1ZSkgZm9yIFNSQyAqLwogfSBfX3BhY2tlZDsKIAogLyoKQEAg LTU3OCw2ICs1OTUsNyBAQCB0eXBlZGVmIGVudW0KICNkZWZpbmUgQUFDX1NVUFBPUlRFRF9ORVdf Q09NTQkJMHgyMDAwMAogI2RlZmluZSBBQUNfU1VQUE9SVEVEXzY0QklUX0FSUkFZU0laRQkweDQw MDAwCiAjZGVmaW5lIEFBQ19TVVBQT1JURURfSEVBVF9TRU5TT1IJMHg4MDAwMAorI2RlZmluZSBB QUNfU1VQUE9SVEVEX05FV19DT01NX1RZUEUxCTB4MTAwMDAwMDAgIC8qIFBNQyB0eXBlIG5ldyBj b21tICovCiAKIC8qIAogICogU3RydWN0dXJlIHVzZWQgdG8gcmVzcG9uZCB0byBhIFJlcXVlc3RB ZGFwdGVySW5mbyBmaWIuCkBAIC02MDYsNiArNjI0LDIwIEBAIHN0cnVjdCBhYWNfYWRhcHRlcl9p bmZvIHsKIAlBQUNfT2VtRmxhdm9yCU9lbVZhcmlhbnQ7CiB9IF9fcGFja2VkOwogCisvKgorICog TW9yZSBvcHRpb25zIGZyb20gc3VwcGxlbWVudCBpbmZvIC0gU3VwcG9ydGVkT3B0aW9uczIKKyAq LworI2RlZmluZSBBQUNfU1VQUE9SVEVEX01VX1JFU0VUCQkJMHgwMQorI2RlZmluZSBBQUNfU1VQ UE9SVEVEX0lHTk9SRV9SRVNFVAkJMHgwMgorI2RlZmluZSBBQUNfU1VQUE9SVEVEX1BPV0VSX01B TkFHRU1FTlQJCTB4MDQKKyNkZWZpbmUgQUFDX1NVUFBPUlRFRF9BUkNJT19QSFlERVYJCTB4MDgK KyNkZWZpbmUgQUFDX1NVUFBPUlRFRF9ET09SQkVMTF9SRVNFVAkJMHg0MDAwCisKKy8qCisgKiBG ZWF0dXJlQml0cyBvZiBSZXF1ZXN0U3VwcGxlbWVudEFkYXB0ZXJJbmZvIHVzZWQgaW4gdGhlIGRy aXZlcgorICovCisjZGVmaW5lIEFBQ19TVVBQTF9TVVBQT1JURURfSkJPRAkweDA4MDAwMDAwCisK IC8qIAogICogU3RydWN0dXJlIHVzZWQgdG8gcmVzcG9uZCB0byBhIFJlcXVlc3RTdXBwbGVtZW50 QWRhcHRlckluZm8gZmliLgogICovCkBAIC02NTQsOCArNjg2LDEyIEBAIHN0cnVjdCBhYWNfc3Vw cGxlbWVudF9hZGFwdGVyX2luZm8gewogCXVfaW50OF90CQlNZmdQY2JhU2VyaWFsTm9bTUZHX1BD QkFfU0VSSUFMX05VTUJFUl9XSURUSF07CiAJLyogV1dOIGZyb20gdGhlIE1GRyBzZWN0b3IgKi8K IAl1X2ludDhfdAkJTWZnV1dOTmFtZVtNRkdfV1dOX1dJRFRIXTsKLQkvKiBHcm93dGggQXJlYSBm b3IgZnV0dXJlIGV4cGFuc2lvbiAoKDcqNCkgLSAxMiAtIDgpLzQgPSAyIHdvcmRzICovCi0JdV9p bnQzMl90CVJlc2VydmVkR3Jvd3RoWzJdOworCXVfaW50MzJfdAlTdXBwb3J0ZWRPcHRpb25zMjsJ CS8qIG1vcmUgc3VwcG9ydGVkIGZlYXR1cmVzICovCisJdV9pbnQzMl90CUV4cGFuc2lvbkZsYWc7 CQkJLyogMSAtIGZvbGxvd2luZyBmaWVsZHMgYXJlIHZhbGlkICovCisJdV9pbnQzMl90CUZlYXR1 cmVCaXRzMzsKKwl1X2ludDMyX3QJU3VwcG9ydGVkUGVyZm9ybWFuY2VNb2RlOworCS8qIEdyb3d0 aCBBcmVhIGZvciBmdXR1cmUgZXhwYW5zaW9uICovCisJdV9pbnQzMl90CVJlc2VydmVkR3Jvd3Ro WzgwXTsKIH0gX19wYWNrZWQ7CiAKIC8qCkBAIC02NzUsNiArNzExLDggQEAgc3RydWN0IGFhY19z dXBwbGVtZW50X2FkYXB0ZXJfaW5mbyB7CiAjZGVmaW5lIEFBQ19NT05LRVJfUkNWVEVNUAkweDI1 CiAjZGVmaW5lIEFBQ19NT05LRVJfR0VUQ09NTVBSRUYJMHgyNgogI2RlZmluZSBBQUNfTU9OS0VS X1JFSU5JVAkweGVlCisjZGVmaW5lCUFBQ19JT1BfUkVTRVQJCTB4MTAwMAorI2RlZmluZQlBQUNf SU9QX1JFU0VUX0FMV0FZUwkweDEwMDEKIAogLyoKICAqICBBZGFwdGVyIFN0YXR1cyBSZWdpc3Rl cgpAQCAtMTAwNCw3ICsxMDQyLDggQEAgdHlwZWRlZiBlbnVtIHsKIAlBaWZSZXFTZW5kQVBJUmVw b3J0LAkvKiBBUEkgZ2VuZXJpYyByZXBvcnQgcmVxdWVzdHMgKi8KIAlBaWZSZXFBUElKb2JTdGFy dCwJLyogU3RhcnQgYSBqb2IgZnJvbSB0aGUgQVBJICovCiAJQWlmUmVxQVBJSm9iVXBkYXRlLAkv KiBVcGRhdGUgYSBqb2IgcmVwb3J0IGZyb20gdGhlIEFQSSAqLwotCUFpZlJlcUFQSUpvYkZpbmlz aAkvKiBGaW5pc2ggYSBqb2IgZnJvbSB0aGUgQVBJICovCisJQWlmUmVxQVBJSm9iRmluaXNoLAkv KiBGaW5pc2ggYSBqb2IgZnJvbSB0aGUgQVBJICovCisJQWlmUmVxRXZlbnQgPSAyMDAJLyogUE1D IE5FVyBDT01NOiBSZXF1ZXN0IHRoZSBldmVudCBkYXRhICovCiB9IEFBQ19BaWZDb21tYW5kOwog CiBzdHJ1Y3QgYWFjX2FpZl9jb21tYW5kIHsKQEAgLTExNDMsNiArMTE4Miw0MiBAQCB0eXBlZGVm IGVudW0gX1ZNX0NPTU1BTkRTIHsKIAlWTV9OYW1lU2VydmU2NAkJIAogfSBBQUNfVk1Db21tYW5k OwogCisvKiBDb250YWluZXIgQ29uZmlndXJhdGlvbiBTdWItQ29tbWFuZHMgKi8KKyNkZWZpbmUg Q1RfR0VUX1NDU0lfTUVUSE9ECTY0CisjZGVmaW5lCUNUX1BBVVNFX0lPCQkJNjUKKyNkZWZpbmUJ Q1RfUkVMRUFTRV9JTwkJCTY2CisjZGVmaW5lCUNUX0dFVF9DT05GSUdfU1RBVFVTCQkxNDcKKyNk ZWZpbmUJQ1RfQ09NTUlUX0NPTkZJRwkJMTUyCisjZGVmaW5lIENUX1BNX0RSSVZFUl9TVVBQT1JU CQkyNDUKKworLyogQ1RfUE1fRFJJVkVSX1NVUFBPUlQgcGFyYW1ldGVyICovCit0eXBlZGVmIGVu dW0geworCUFBQ19QTV9EUklWRVJTVVBfR0VUX1NUQVRVUyA9IDEsCisJQUFDX1BNX0RSSVZFUlNV UF9TVEFSVF9VTklULAorCUFBQ19QTV9EUklWRVJTVVBfU1RPUF9VTklUCit9IEFBQ19DVF9QTV9E UklWRVJfU1VQUE9SVF9TVUJfQ09NOworCisvKgorICogQ1RfUEFVU0VfSU8gaXMgaW1tZWRpYXRl IG1pbmltYWwgcnVudGltZSBjb21tYW5kIHRoYXQgaXMgdXNlZAorICogdG8gcmVzdGFydCB0aGUg YXBwbGljYXRpb25zIGFuZCBjYWNoZS4KKyAqLworc3RydWN0IGFhY19wYXVzZV9jb21tYW5kIHsK Kwl1X2ludDMyX3QJQ29tbWFuZDsKKwl1X2ludDMyX3QJVHlwZTsKKwl1X2ludDMyX3QJVGltZW91 dDsKKwl1X2ludDMyX3QJTWluOworCXVfaW50MzJfdAlOb1Jlc2NhbjsKKwl1X2ludDMyX3QJUGFy bTM7CisJdV9pbnQzMl90CVBhcm00OworCXVfaW50MzJfdAlDb3VudDsKK30gX19wYWNrZWQ7CisK Ky8qIEZsYWcgdmFsdWVzIGZvciBDb250ZW50U3RhdGUgKi8KKyNkZWZpbmUgQUFDX0ZTQ1NfTk9U Q0xFQU4JMHgxCS8qIGZzY2hlY2sgaXMgbmVjZXNzYXJ5IGJlZm9yZSBtb3VudGluZyAqLworI2Rl ZmluZSBBQUNfRlNDU19SRUFET05MWQkweDIJLyogcG9zc2libGUgcmVzdWx0IG9mIGJyb2tlbiBt aXJyb3IgKi8KKyNkZWZpbmUgQUFDX0ZTQ1NfSElEREVOCQkweDQJLyogY29udGFpbmVyIHNob3Vs ZCBiZSBpZ25vcmVkIGJ5IGRyaXZlciAqLworI2RlZmluZSBBQUNfRlNDU19OT1RfUkVBRFkJMHg4 CS8qIGNudCBpcyBpbiBzcGlubi4gc3RhdGUsIG5vdCByZHkgZm9yIElPJ3MgKi8KKwogLyoKICAq ICJtb3VudGFibGUgb2JqZWN0IgogICovCkBAIC0xMTg3LDcgKzEyNjIsNiBAQCBzdHJ1Y3QgYWFj X2Nsb3NlY29tbWFuZCB7CiAvKgogICogQ29udGFpbmVyIENvbmZpZyBDb21tYW5kCiAgKi8KLSNk ZWZpbmUgQ1RfR0VUX1NDU0lfTUVUSE9ECTY0CiBzdHJ1Y3QgYWFjX2N0Y2ZnIHsKIAl1X2ludDMy X3QJCUNvbW1hbmQ7CiAJdV9pbnQzMl90CQljbWQ7CkBAIC0xMzA5LDYgKzEzODMsMjQgQEAgdHlw ZWRlZiBlbnVtIHsKIAlDTVVOU1RBQkxFCiB9IEFBQ19Db21taXRMZXZlbDsKIAorCisjZGVmaW5l CUNUX0ZJQl9QQVJBTVMJCQk2CisjZGVmaW5lCU1BWF9GSUJfUEFSQU1TCQkJMTAKKyNkZWZpbmUJ Q1RfUEFDS0VUX1NJWkUgXAorCShBQUNfRklCX0RBVEFTSVpFIC0gc2l6ZW9mICh1X2ludDMyX3Qp IC0gXAorCSgoc2l6ZW9mICh1X2ludDMyX3QpKSAqIChNQVhfRklCX1BBUkFNUyArIDEpKSkKKwor c3RydWN0IGFhY19mc2FfY3RtIHsKKwl1X2ludDMyX3QJY29tbWFuZDsKKwl1X2ludDMyX3QJcGFy YW1bQ1RfRklCX1BBUkFNU107CisJaW50OF90CQlkYXRhW0NUX1BBQ0tFVF9TSVpFXTsKK307CisK K3N0cnVjdCBhYWNfY250X2NvbmZpZyB7CisJdV9pbnQzMl90CQlDb21tYW5kOworCXN0cnVjdCBh YWNfZnNhX2N0bQlDVENvbW1hbmQ7Cit9OworCiAvKgogICogQmxvY2sgcmVhZC93cml0ZSBvcGVy YXRpb25zLgogICogVGhlc2Ugc3RydWN0dXJlcyBhcmUgcGFja2VkIGludG8gdGhlICdkYXRhJyBh cmVhIGluIHRoZSBGSUIuCkBAIC0xMzc4LDcgKzE0NzAsNyBAQCBzdHJ1Y3QgYWFjX3Jhd19pbyB7 CiBzdHJ1Y3QgYWFjX2Nsb3NlX2NvbW1hbmQgewogCXVfaW50MzJfdAkJQ29tbWFuZDsKIAl1X2lu dDMyX3QJCUNvbnRhaW5lcklkOwotfTsKK30gX19wYWNrZWQ7CiAKIC8qCiAgKiBTQ1NJIFBhc3N0 aHJvdWdoIHN0cnVjdHVyZXMKQEAgLTEzOTUsNyArMTQ4Nyw3IEBAIHN0cnVjdCBhYWNfc3JiIHsK IAl1X2ludDMyX3QJCWNkYl9sZW47CiAJdV9pbnQ4X3QJCWNkYlsxNl07CiAJc3RydWN0IGFhY19z Z190YWJsZQlzZ19tYXA7Ci19OworfSBfX3BhY2tlZDsKIAogZW51bSB7CiAJQUFDX1NSQl9GVU5D X0VYRUNVVEVfU0NTSQk9IDB4MDAsCkBAIC0xNDM2LDcgKzE1MjgsNyBAQCBzdHJ1Y3QgYWFjX3Ny Yl9yZXNwb25zZSB7CiAJdV9pbnQzMl90CWRhdGFfbGVuOwogCXVfaW50MzJfdAlzZW5zZV9sZW47 CiAJdV9pbnQ4X3QJc2Vuc2VbQUFDX0hPU1RfU0VOU0VfREFUQV9NQVhdOwotfTsKK30gX19wYWNr ZWQ7CiAKIC8qCiAgKiBTdGF0dXMgY29kZXMgZm9yIFNDU0kgcGFzc3Rocm91Z2ggY29tbWFuZHMu ICBTaW5jZSB0aGV5IGFyZSBiYXNlZCBvbiBBU1BJLApAQCAtMTUzMSw2ICsxNjIzLDI5IEBAIGVu dW0gewogI2RlZmluZSBBQUNfUktUX0ZXU1RBVFVTCTB4MTAxYwkvKiBGaXJtd2FyZSBTdGF0dXMg KG1haWxib3ggNykgKi8KIAogLyoKKyAqIFJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciB0aGUgQWRh cHRlYyBQTUMgU1JDIGFkYXB0ZXJzLgorICovCisvKiBhY2Nlc3NpYmxlIHZpYSBCQVIwICovCisj ZGVmaW5lIEFBQ19TUkNfT01SCQkJMHhiYwkvKiBvdXRib3VuZCBtZXNzYWdlIHJlZ2lzdGVyICov CisjZGVmaW5lIEFBQ19TUkNfSURCUgkJMHgyMAkvKiBpbmJvdW5kIGRvb3JiZWxsIHJlZ2lzdGVy ICovCisjZGVmaW5lIEFBQ19TUkNfSUlTUgkJMHgyNAkvKiBpbmJvdW5kIGludGVycnVwdCBzdGF0 dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgQUFDX1NSQ19PREJSX1IJCTB4OWMJLyogb3V0Ym91bmQg ZG9vcmJlbGwgcmVnaXN0ZXIgcmVhZCAqLworI2RlZmluZSBBQUNfU1JDX09EQlJfQwkJMHhhMAkv KiBvdXRib3VuZCBkb29yYmVsbCByZWdpc3RlciBjbGVhciAqLworI2RlZmluZSBBQUNfU1JDX09J TVIJCTB4MzQJLyogb3V0Ym91bmQgaW50ZXJydXB0IG1hc2sgcmVnaXN0ZXIgKi8KKyNkZWZpbmUg QUFDX1NSQ19JUVVFX0wJCTB4YzAJLyogaW5ib3VuZCBxdWV1ZSBhZGRyZXNzIChsb3cpICovCisj ZGVmaW5lIEFBQ19TUkNfSVFVRV9ICQkweGM0CS8qIGluYm91bmQgcXVldWUgYWRkcmVzcyAoaGln aCkgKi8KKworI2RlZmluZSBBQUNfU1JDX01BSUxCT1gJCTB4N2ZjNjAJLyogbWFpbGJveCAoMjAg Ynl0ZXMpICovCisKKyNkZWZpbmUgQUFDX1NSQ19PRFJfU0hJRlQgCTEyCQkvKiBvdXRib3VuZCBk b29yYmVsbCBzaGlmdCAqLworI2RlZmluZSBBQUNfU1JDX0lEUl9TSElGVCAJOQkJLyogaW5ib3Vu ZCBkb29yYmVsbCBzaGlmdCAqLworCisvKiBTdW5yaXNlIExha2UgZHVhbCBjb3JlIHJlc2V0ICov CisjZGVmaW5lIEFBQ19JUkNTUgkJMHgzOAkvKiBpbmJvdW5kIGR1YWwgY29yZXMgcmVzZXQgKi8K KyNkZWZpbmUgQUFDX0lSQ1NSX0NPUkVTX1JTVAkzCisKKworLyoKICAqIENvbW1vbiBiaXQgZGVm aW5pdGlvbnMgZm9yIHRoZSBkb29yYmVsbCByZWdpc3RlcnMuCiAgKi8KIApAQCAtMTU0Miw2ICsx NjU3LDkgQEAgZW51bSB7CiAjZGVmaW5lIEFBQ19EQl9SRVNQT05TRV9SRUFEWQkoMTw8MikJLyog b25lIG9yIG1vcmUgY29tbWFuZHMgY29tcGxldGUgKi8KICNkZWZpbmUgQUFDX0RCX0NPTU1BTkRf Tk9UX0ZVTEwJKDE8PDMpCS8qIGNvbW1hbmQgcXVldWUgbm90IGZ1bGwgKi8KICNkZWZpbmUgQUFD X0RCX1JFU1BPTlNFX05PVF9GVUxMICgxPDw0KQkvKiByZXNwb25zZSBxdWV1ZSBub3QgZnVsbCAq LworI2RlZmluZSBBQUNfREJfQUlGX1BFTkRJTkcJCSgxPDw2KQkvKiBwZW5kaW5nIEFJRiAobmV3 IGNvbW0uIHR5cGUxKSAqLworLyogUE1DIHNwZWNpZmljIG91dGJvdW5kIGRvb3JiZWxsIGJpdHMg Ki8KKyNkZWZpbmUgQUFDX0RCX1JFU1BPTlNFX1NFTlRfTlMJCSgxPDwxKQkvKiByZXNwb25zZSBz ZW50IChub3Qgc2hpZnRlZCkgKi8KIAogLyoKICAqIFRoZSBhZGFwdGVyIGNhbiByZXF1ZXN0IHRo ZSBob3N0IHByaW50IGEgbWVzc2FnZSBieSBzZXR0aW5nIHRoZQpAQCAtMTU2MCw1ICsxNjc4LDYg QEAgZW51bSB7CiAjZGVmaW5lIEFBQ19EQl9JTlRFUlJVUFRTCShBQUNfREJfQ09NTUFORF9SRUFE WSAgfAlcCiAJCQkJIEFBQ19EQl9SRVNQT05TRV9SRUFEWSB8CVwKIAkJCQkgQUFDX0RCX1BSSU5U RikKLSNkZWZpbmUgQUFDX0RCX0lOVF9ORVdfQ09NTQkJMHgwOAkJCisjZGVmaW5lIEFBQ19EQl9J TlRfTkVXX0NPTU0JCTB4MDggIAorI2RlZmluZSBBQUNfREJfSU5UX05FV19DT01NX1RZUEUxCTB4 MDQKIApkaWZmIC1wcnVOIG9sZC9hYWN2YXIuaCBuZXcvYWFjdmFyLmgKLS0tIG9sZC9hYWN2YXIu aAkyMDExLTAzLTMxIDE0OjU3OjM0LjAwMDAwMDAwMCArMDAwMAorKysgbmV3L2FhY3Zhci5oCTIw MTEtMDQtMDEgMTQ6MDE6NDguMDAwMDAwMDAwICswMDAwCkBAIC0yLDcgKzIsOCBAQAogICogQ29w eXJpZ2h0IChjKSAyMDAwIE1pY2hhZWwgU21pdGgKICAqIENvcHlyaWdodCAoYykgMjAwMSBTY290 dCBMb25nCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDAgQlNEaQotICogQ29weXJpZ2h0IChjKSAyMDAx IEFkYXB0ZWMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDEwIEFkYXB0ZWMsIEluYy4K KyAqIENvcHlyaWdodCAoYykgMjAxMCBQTUMtU2llcnJhLCBJbmMuCiAgKiBBbGwgcmlnaHRzIHJl c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDMsOCArNDQsOCBAQAogI2RlZmluZQlBQUNf VFlQRV9SRUxFQVNFCQk0CiAKICNkZWZpbmUJQUFDX0RSSVZFUl9NQUpPUl9WRVJTSU9OCTIKLSNk ZWZpbmUJQUFDX0RSSVZFUl9NSU5PUl9WRVJTSU9OCTEKLSNkZWZpbmUJQUFDX0RSSVZFUl9CVUdG SVhfTEVWRUwJCTkKKyNkZWZpbmUJQUFDX0RSSVZFUl9NSU5PUl9WRVJTSU9OCTQKKyNkZWZpbmUJ QUFDX0RSSVZFUl9CVUdGSVhfTEVWRUwJCTEKICNkZWZpbmUJQUFDX0RSSVZFUl9UWVBFCQkJQUFD X1RZUEVfUkVMRUFTRQogCiAjaWZuZGVmIEFBQ19EUklWRVJfQlVJTEQKQEAgLTU2LDEyICs1Nyw2 IEBACiAgKi8KIAogLyoKLSAqIFRoZSBmaXJtd2FyZSBpbnRlcmZhY2UgYWxsb3dzIGZvciBhIDE2 LWJpdCBzL2cgbGlzdCBsZW5ndGguICBXZSBsaW1pdCAKLSAqIG91cnNlbHZlcyB0byBhIHJlYXNv bmFibGUgbWF4aW11bSBhbmQgZW5zdXJlIGFsaWdubWVudC4KLSAqLwotI2RlZmluZSBBQUNfTUFY U0dFTlRSSUVTCTY0CS8qIG1heCBTL0cgZW50cmllcywgbGltaXQgNjU1MzUgKi8JCQotCi0vKgog ICogV2UgYWxsb2NhdGUgYSBzbWFsbCBzZXQgb2YgRklCcyBmb3IgdGhlIGFkYXB0ZXIgdG8gdXNl IHRvIHNlbmQgdXMgbWVzc2FnZXMuCiAgKi8KICNkZWZpbmUgQUFDX0FEQVBURVJfRklCUwk4CkBA IC0xNzYsMTQgKzE3MSwxNSBAQCBzdHJ1Y3QgYWFjX2NvbW1hbmQKICNkZWZpbmUgQUFDX09OX0FB Q1FfQUlGCQkoMTw8OCkKICNkZWZpbmUgQUFDX09OX0FBQ1FfTk9STQkoMTw8MTApCiAjZGVmaW5l IEFBQ19PTl9BQUNRX01BU0sJKCgxPDw1KXwoMTw8Nil8KDE8PDcpfCgxPDw4KXwoMTw8MTApKQot I2RlZmluZSBBQUNfUVVFVUVfRlJaTgkJKDE8PDkpCQkvKiBGcmVlemUgdGhlIHByb2Nlc3Npbmcg b2YKLQkJCQkJCSAqIGNvbW1hbmRzIG9uIHRoZSBxdWV1ZS4gKi8KKyNkZWZpbmUgQUFDX0NNRF9S RVNFVAkJKDE8PDkpCiAKIAl2b2lkCQkJKCogY21fY29tcGxldGUpKHN0cnVjdCBhYWNfY29tbWFu ZCAqY20pOwogCXZvaWQJCQkqY21fcHJpdmF0ZTsKIAl0aW1lX3QJCQljbV90aW1lc3RhbXA7CS8q IGNvbW1hbmQgY3JlYXRpb24gdGltZSAqLwogCWludAkJCWNtX3F1ZXVlOwogCWludAkJCWNtX2lu ZGV4OworCWJ1c19kbWFfdGFnX3QJCWNtX3Bhc3N0aHJfZG1hdDsJLyogcGFzc3Rocm91Z2ggYnVm ZmVyL2NvbW1hbmQKKwkJCQkJCQkgKiBETUEgdGFnICovCiB9OwogCiBzdHJ1Y3QgYWFjX2ZpYm1h cCB7CkBAIC0yMjIsNiArMjE4LDkgQEAgc3RydWN0IGFhY19jb21tb24gewogCQogCS8qIGZpYiBm b3Igc3luY2hyb25vdXMgY29tbWFuZHMgKi8KIAlzdHJ1Y3QgYWFjX2ZpYgkJYWNfc3luY19maWI7 CisKKwkvKiByZXNwb25zZSBidWZmZXIgZm9yIFNSQyAobmV3IGNvbW0uIHR5cGUxKSAtIG11c3Qg YmUgbGFzdCBlbGVtZW50ICovCisJdV9pbnQzMl90ICAgYWNfaG9zdF9ycnFbMF07CiB9OwogCiAv KgpAQCAtMjQ0LDggKzI0Myw4IEBAIHN0cnVjdCBhYWNfaW50ZXJmYWNlIAogfTsKIGV4dGVybiBz dHJ1Y3QgYWFjX2ludGVyZmFjZQlhYWNfcnhfaW50ZXJmYWNlOwogZXh0ZXJuIHN0cnVjdCBhYWNf aW50ZXJmYWNlCWFhY19zYV9pbnRlcmZhY2U7Ci1leHRlcm4gc3RydWN0IGFhY19pbnRlcmZhY2UJ YWFjX2ZhX2ludGVyZmFjZTsKIGV4dGVybiBzdHJ1Y3QgYWFjX2ludGVyZmFjZQlhYWNfcmt0X2lu dGVyZmFjZTsKK2V4dGVybiBzdHJ1Y3QgYWFjX2ludGVyZmFjZQlhYWNfc3JjX2ludGVyZmFjZTsK IAogI2RlZmluZSBBQUNfR0VUX0ZXU1RBVFVTKHNjKQkJKChzYyktPmFhY19pZi5haWZfZ2V0X2Z3 c3RhdHVzKChzYykpKQogI2RlZmluZSBBQUNfUU5PVElGWShzYywgcWJpdCkJCSgoc2MpLT5hYWNf aWYuYWlmX3Fub3RpZnkoKHNjKSwgKHFiaXQpKSkKQEAgLTMyNCw2ICszMjMsNyBAQCBzdHJ1Y3Qg YWFjX3NvZnRjIAogI2RlZmluZQlBQUNfU1RBVEVfVU5VU0VEMAkoMTw8MSkKICNkZWZpbmUgQUFD X1NUQVRFX0lOVEVSUlVQVFNfT04JKDE8PDIpCiAjZGVmaW5lIEFBQ19TVEFURV9BSUZfU0xFRVBF UgkoMTw8MykKKyNkZWZpbmUgQUFDX1NUQVRFX1JFU0VUCQkoMTw8NCkKIAlzdHJ1Y3QgRnNhUmV2 aXNpb24JCWFhY19yZXZpc2lvbjsKIAogCS8qIGNvbnRyb2xsZXIgaGFyZHdhcmUgaW50ZXJmYWNl ICovCkBAIC0zMzIsNiArMzMyLDcgQEAgc3RydWN0IGFhY19zb2Z0YyAKICNkZWZpbmUgQUFDX0hX SUZfU1RST05HQVJNCTEKICNkZWZpbmUgQUFDX0hXSUZfUktUCQkzCiAjZGVmaW5lCUFBQ19IV0lG X05BUksJCTQKKyNkZWZpbmUgQUFDX0hXSUZfU1JDCQk1CiAjZGVmaW5lIEFBQ19IV0lGX1VOS05P V04JLTEKIAlidXNfZG1hX3RhZ190CQlhYWNfY29tbW9uX2RtYXQ7CS8qIGNvbW1vbiBzdHJ1Y3R1 cmUKIAkJCQkJCQkgKiBETUEgdGFnICovCkBAIC0zMzksNiArMzQwLDcgQEAgc3RydWN0IGFhY19z b2Z0YyAKIAkJCQkJCQkgKiBETUEgbWFwICovCiAJc3RydWN0IGFhY19jb21tb24JKmFhY19jb21t b247CiAJdV9pbnQzMl90CQlhYWNfY29tbW9uX2J1c2FkZHI7CisJdV9pbnQzMl90CQlhYWNfaG9z dF9ycnFfaWR4OwogCXN0cnVjdCBhYWNfaW50ZXJmYWNlCWFhY19pZjsKIAogCS8qIGNvbW1hbmQv ZmliIHJlc291cmNlcyAqLwpAQCAtMzgxLDYgKzM4Myw3IEBAIHN0cnVjdCBhYWNfc29mdGMgCiAJ c3RydWN0IGFhY19maWIJCWFhY19haWZxW0FBQ19BSUZRX0xFTkdUSF07CiAJaW50CQkJYWlmcV9p ZHg7CiAJaW50CQkJYWlmcV9maWxsZWQ7CisJaW50IAkJCWFpZl9wZW5kaW5nOwogCXN0cnVjdCBh YWNfZmliX2NvbnRleHQgKmZpYmN0eDsKIAlzdHJ1Y3Qgc2VsaW5mbwkJcmN2X3NlbGVjdDsKIAlz dHJ1Y3QgcHJvYwkJKmFpZnRocmVhZDsKQEAgLTQwOSw4ICs0MTIsMTIgQEAgc3RydWN0IGFhY19z b2Z0YyAKICNkZWZpbmUgQUFDX0ZMQUdTX05FV19DT01NCSgxIDw8IDExKQkvKiBOZXcgY29tbS4g aW50ZXJmYWNlIHN1cHBvcnRlZCAqLwogI2RlZmluZSBBQUNfRkxBR1NfUkFXX0lPCSgxIDw8IDEy KQkvKiBSYXcgSS9PIGludGVyZmFjZSAqLwogI2RlZmluZSBBQUNfRkxBR1NfQVJSQVlfNjRCSVQJ KDEgPDwgMTMpCS8qIDY0LWJpdCBhcnJheSBzaXplICovCi0jZGVmaW5lCUFBQ19GTEFHU19MQkFf NjRCSVQJKDEgPDwgMTQpCS8qIDY0LWJpdCBMQkEgc3VwcG9ydCAqLwotCisjZGVmaW5lIEFBQ19G TEFHU19MQkFfNjRCSVQJKDEgPDwgMTQpCS8qIDY0LWJpdCBMQkEgc3VwcG9ydCAqLworI2RlZmlu ZSBBQUNfUVVFVUVfRlJaTgkJKDEgPDwgMTUpCS8qIEZyZWV6ZSB0aGUgcHJvY2Vzc2luZyBvZgor CQkJCQkJICogY29tbWFuZHMgb24gdGhlIHF1ZXVlLiAqLworI2RlZmluZSBBQUNfRkxBR1NfTkVX X0NPTU1fVFlQRTEgKDEgPDwgMTYpCS8qIE5ldyBjb21tLiB0eXBlMSBzdXBwb3J0ZWQgKi8KKwl1 X2ludDMyX3QJCWhpbnRfZmxhZ3M7CQkvKiBkcml2ZXIgcGFyYW1ldGVycyAqLworCWludAlzaW1f ZnJlZXplZDsJCQkJLyogZmxhZyBmb3Igc2ltX2ZyZWV6ZS9yZWxlYXNlICovCQkKIAl1X2ludDMy X3QJCXN1cHBvcnRlZF9vcHRpb25zOwogCXVfaW50MzJfdAkJc2NzaV9tZXRob2RfaWQ7CiAJVEFJ TFFfSEVBRCgsYWFjX3NpbSkJYWFjX3NpbV90cWg7CkBAIC00MjIsNiArNDI5LDkgQEAgc3RydWN0 IGFhY19zb2Z0YyAKIAl1X2ludDMyX3QJYWFjX21heF9maWJfc2l6ZTsJCS8qIG1heC4gRklCIHNp emUgKi8KIAl1X2ludDMyX3QJYWFjX3NnX3RhYmxlc2l6ZTsJCS8qIG1heC4gc2cgY291bnQgZnJv bSBob3N0ICovCiAJdV9pbnQzMl90CWFhY19tYXhfc2VjdG9yczsJCS8qIG1heC4gSS9PIHNpemUg ZnJvbSBob3N0IChibG9ja3MpICovCisJdV9pbnQzMl90CWFhY19mZWF0dXJlX2JpdHM7CQkvKiBm ZWF0dXJlIGJpdHMgZnJvbSBzdXBwbC4gaW5mbyAqLworCXVfaW50MzJfdAlhYWNfc3VwcG9ydF9v cHQyOwkJLyogc3VwcC4gb3B0aW9ucyBmcm9tIHN1cHBsLiBpbmZvICovCisJdV9pbnQzMl90CWFh Y19tYXhfYWlmOwkJCS8qIG1heC4gQUlGIGNvdW50ICovCiAjZGVmaW5lIEFBQ19DQU1fVEFSR0VU X1dJTERDQVJEIH4wCiAJdm9pZAkJCSgqY2FtX3Jlc2Nhbl9jYikoc3RydWN0IGFhY19zb2Z0YyAq LCB1aW50MzJfdCwKIAkJCQkgICAgdWludDMyX3QpOwpAQCAtNDUzLDYgKzQ2Myw3IEBAIGV4dGVy biBpbnQJCWFhY19kZXRhY2goZGV2aWNlX3QgZGV2KTsKIGV4dGVybiBpbnQJCWFhY19zaHV0ZG93 bihkZXZpY2VfdCBkZXYpOwogZXh0ZXJuIGludAkJYWFjX3N1c3BlbmQoZGV2aWNlX3QgZGV2KTsg CiBleHRlcm4gaW50CQlhYWNfcmVzdW1lKGRldmljZV90IGRldik7CitleHRlcm4gdm9pZAkJYWFj X25ld19pbnRyX3R5cGUxKHZvaWQgKmFyZyk7CiBleHRlcm4gdm9pZAkJYWFjX25ld19pbnRyKHZv aWQgKmFyZyk7CiBleHRlcm4gaW50CQlhYWNfZmlsdGVyKHZvaWQgKmFyZyk7CiBleHRlcm4gdm9p ZAkJYWFjX3N1Ym1pdF9iaW8oc3RydWN0IGJpbyAqYnApOwo= ------_=_NextPart_001_01CBF3A6.F7D71E12-- From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 16:16:05 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B5FC6106564A for ; Tue, 5 Apr 2011 16:16:05 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id E45758FC0C for ; Tue, 5 Apr 2011 16:16:04 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id TAA07481; Tue, 05 Apr 2011 19:16:01 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9B4041.4010206@FreeBSD.org> Date: Tue, 05 Apr 2011 19:16:01 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: Borja Marcos References: <4D9AF9B7.9030107@FreeBSD.org> <4D9B0DF7.8020104@FreeBSD.org> In-Reply-To: <4D9B0DF7.8020104@FreeBSD.org> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 16:16:05 -0000 on 05/04/2011 15:41 Andriy Gapon said the following: > on 05/04/2011 14:30 Borja Marcos said the following: >> >> On Apr 5, 2011, at 1:15 PM, Andriy Gapon wrote: >> >>> >>> I propose the following changes: >>> >>> - { SST(0x28, 0x00, SS_FATAL | ENXIO, >>> + { SST(0x28, 0x00, SS_TUR | SSQ_MANY | SSQ_DECREMENT_COUNT | EBUSY, >>> "Not ready to ready change, medium may have changed") }, >>> In my opinion this condition doesn't really mean a fatal error, but implies that >>> we should retry while new medium "settles down". >> >> As far as I know, this shouldn't be reported by a non-removable media device. It should be used by removable media such as tape units, magneto-optical drives, CDROM drives, WORMs... >> >> Many years ago I used to write to SCSI tapes. If the operator changed a tape, for example, while the tape was idle, the next read or write command returned this code, indicating that there was a media change. And it was important indeed, as our application sometimes wrote to tape in relatively small chunks and it only rewound the tape when necessary. >> >> So, if the system was expecting a given tape to be in the unit and it tried to write, that try failed reporting a tape change. The software issued a rewind command and read the tape label to ensure that it was the right tape (in which case it issued a seek to the end of the recorded data) or created a new tape label, labelled it, etc etc. >> >> Assuming that manufacturers are using it as expected, if this was reported by a removable media random access device (say, a magneto optical disk) it should result in the disappearance of the "changed disk", creation of a new disk. I mean, reread partition table et all, and invalidation of any mount points related to the "disappeared" device. >> >>> In my testing this change actually helps with some USB flashdrives and >>> cardreaders with slow access to media. >> >> If a card read reports this, I assume that either the reader has crappy firmware _or_ it has an electrical contact problem with the media. But ignoring this error just could lead to data loss. In the case of a user replacing a memory card with a mounted filesystem, it would be certainly a data loss (blocks intended for one card written to a different card?) > > Interesting. Thank you for sharing this information! > Let me think about it :) OK. I completely agree with you here. I think that this sense code should be handled by peripheral drivers where it makes sense. E.g. da(4) could simply retry a command while at probing stage (i.e. there was no previous media detected), otherwise "spoil" its previous disk and probe a new disk. Thanks for straightening me :) -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Tue Apr 5 16:32:42 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B87D7106566B; Tue, 5 Apr 2011 16:32:42 +0000 (UTC) (envelope-from borjam@sarenet.es) Received: from proxypop2b.sarenet.es (proxypop2.sarenet.es [194.30.0.95]) by mx1.freebsd.org (Postfix) with ESMTP id 79F598FC16; Tue, 5 Apr 2011 16:32:42 +0000 (UTC) Received: from [172.16.1.55] (ssglan.sare.net [192.148.167.100]) by proxypop2b.sarenet.es (Postfix) with ESMTP id 39C1873611; Tue, 5 Apr 2011 18:32:41 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v1084) Content-Type: text/plain; charset=us-ascii From: Borja Marcos In-Reply-To: <4D9B4041.4010206@FreeBSD.org> Date: Tue, 5 Apr 2011 18:32:40 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <1A92B35B-FC1F-4988-A2D9-AC79ABC63B07@sarenet.es> References: <4D9AF9B7.9030107@FreeBSD.org> <4D9B0DF7.8020104@FreeBSD.org> <4D9B4041.4010206@FreeBSD.org> To: Andriy Gapon X-Mailer: Apple Mail (2.1084) Cc: freebsd-scsi@FreeBSD.org Subject: Re: propose: change some sense codes handling X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Apr 2011 16:32:42 -0000 On Apr 5, 2011, at 6:16 PM, Andriy Gapon wrote: >> Interesting. Thank you for sharing this information! >> Let me think about it :) >=20 > OK. I completely agree with you here. > I think that this sense code should be handled by peripheral drivers = where it > makes sense. E.g. da(4) could simply retry a command while at probing = stage (i.e. > there was no previous media detected), otherwise "spoil" its previous = disk and > probe a new disk. > Thanks for straightening me :) Really glad to be of any help!=20 Cheers, Borja. From owner-freebsd-scsi@FreeBSD.ORG Thu Apr 7 10:59:45 2011 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0984F106564A; Thu, 7 Apr 2011 10:59:45 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id 195E98FC0C; Thu, 7 Apr 2011 10:59:43 +0000 (UTC) Received: by fxm11 with SMTP id 11so1993450fxm.13 for ; Thu, 07 Apr 2011 03:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:message-id:date:from:user-agent :mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:content-type:content-transfer-encoding; bh=HZvitxj++kmXh6EhYe3lrjeLmG/TEMqnTxEAmWbihdo=; b=NQrHVTOpFo7JipM9CPNWDwVtKgLju5RCibXMAFPNi+ZChnwDwdcFxlyxjuoXwcHZnz HVvCWJK9GxoLvS+oMJFbJMdqAST4pmyBDzVLWg0aW28RS6YOL7h4OTjQlrBtjOOL6KnO g8QWx72fCS9ACARqm5WvdQK16N4RSL77LhiDw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; b=eQ9KYLmYJOFAH1sVy00KJKdYLvAjXUpwDuO34xwho0imz2wLlhDKon/Qkr3siHRRAH 9rz2jxtU9N2yF9J+fIYL7yOaqKq45mHTZCXaIvvunHlvMkqBuCK8If54CbpBuStesguI 51mt8rvmqCPGW44XAf9+vBZu/4ei/l+JFzu7U= Received: by 10.223.14.207 with SMTP id h15mr723256faa.50.1302173982878; Thu, 07 Apr 2011 03:59:42 -0700 (PDT) Received: from mavbook2.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id l4sm447370fan.38.2011.04.07.03.59.41 (version=SSLv3 cipher=OTHER); Thu, 07 Apr 2011 03:59:42 -0700 (PDT) Sender: Alexander Motin Message-ID: <4D9D9917.3030102@FreeBSD.org> Date: Thu, 07 Apr 2011 13:59:35 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.23 (X11/20091212) MIME-Version: 1.0 To: Alexander Best References: <20110331223339.GA13682@freebsd.org> <201104010843.47367.jhb@freebsd.org> <20110404204316.GA11367@freebsd.org> In-Reply-To: <20110404204316.GA11367@freebsd.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-scsi@freebsd.org, freebsd-current@freebsd.org, John Baldwin Subject: Re: multiple issues with devstat_*(9) X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2011 10:59:45 -0000 Alexander Best wrote: > On Fri Apr 1 11, John Baldwin wrote: >> On Thursday, March 31, 2011 6:33:39 pm Alexander Best wrote: >>> i think there are multiple issues with devstat. i found the following in >>> devicestat.h: ... >>> funny thing is i found the following in scsi_pass.c: >>> >>> softc->device_stats = devstat_new_entry("pass", >>> periph->unit_number, 0, >>> DEVSTAT_NO_BLOCKSIZE >>> | (no_tags ? DEVSTAT_NO_ORDERED_TAGS : 0), >>> softc->pd_type | >>> DEVSTAT_TYPE_IF_SCSI | >>> DEVSTAT_TYPE_PASS, >>> DEVSTAT_PRIORITY_PASS); >>> >>> ...so pass* *should* show up under iostat -t scsi. As I can see, this is a bug (or feature) of the libdevstat / devstat_selectdevs(). If you specify any -t, then pass devices will be reported only if you request "pass" specifically. >> Hmm, pass devices for adaX should not be SCSI though, they should be ide I >> think. > > i think the situation with ATA_CAM should be discussed further. still besides > this issue there are many more with devstat(3). > > i'll try to track all the "devstat_new_entry()" occurrences and see if some > issues can be fixed. maybe only the proper DEVSTAT_* args were forgotten. Assuming that SCSI and IDE in -t option means transport type, and assuming that we count everything except ATA and SATA as SCSI, I've made following patch, that should fix issues from the CAM side: http://people.freebsd.org/~mav/cam.devstat.patch Any objections? Or SCSI/IDE there expected to mean command set? -- Alexander Motin From owner-freebsd-scsi@FreeBSD.ORG Thu Apr 7 17:01:46 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE3C9106566C; Thu, 7 Apr 2011 17:01:46 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 9D95D8FC14; Thu, 7 Apr 2011 17:01:45 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id UAA19790; Thu, 07 Apr 2011 20:01:43 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9DEDF7.2070107@FreeBSD.org> Date: Thu, 07 Apr 2011 20:01:43 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org, freebsd-fs@FreeBSD.org, freebsd-hardware@FreeBSD.org X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: Subject: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2011 17:01:46 -0000 Guys, could you please review and comment on the following patch? http://people.freebsd.org/~avg/mount-retry-ro.diff Thank you! The patch consists of two parts. The first part is in CAM/SCSI to make sure that ENODEV is consistently returned to signal that an operation is not supported by a device (in accordance to intro(2)) and specifically to return ENODEV on write attempt to a read-only or write-protected media. Making this change in SCSI should cover real SCSI devices, as well as ATAPI through ahci/siis/atapicam or similar, plus majority (all?) of USB Mass Storage devices. The second part is in vfs_mount code. The idea is to re-try a mount call if we get the ENODEV error, and mounting was not already in read-only mode, and there was no explicit rw or noro option; the second try is changed to ro. I did only basic testing with an SD card in write-protected mode and a USB card-reader. Since I am not very familiar with vfs_mount code I might have missed some important details. A sample test log, just in case: ugen2.2: at usbus2 umass0: on usbus2 da0 at umass-sim0 bus 0 scbus7 target 0 lun 0 da0: Removable Direct Access SCSI-0 device da0: 40.000MB/s transfers da0: 488MB (1000448 512 byte sectors: 64H 32S/T 488C) da1 at umass-sim0 bus 0 scbus7 target 0 lun 1 da1: Removable Direct Access SCSI-0 device da1: 40.000MB/s transfers da1: Attempt to query device size failed: NOT READY, Medium not present da2 at umass-sim0 bus 0 scbus7 target 0 lun 2 da2: Removable Direct Access SCSI-0 device da2: 40.000MB/s transfers da2: Attempt to query device size failed: NOT READY, Medium not present da3 at umass-sim0 bus 0 scbus7 target 0 lun 3 da3: Removable Direct Access SCSI-0 device da3: 40.000MB/s transfers da3: Attempt to query device size failed: NOT READY, Medium not present GEOM: da0s1: EBR has non empty bootcode. (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 0 0 0 0 ea 0 0 8 0 (da0:umass-sim0:0:0:0): CAM status: SCSI Status Error (da0:umass-sim0:0:0:0): SCSI status: Check Condition (da0:umass-sim0:0:0:0): SCSI sense: DATA PROTECT csi:0,aa,55,61 asc:27,0 (Write protected) field replaceable unit: 1 g_vfs_done():da0s1[WRITE(offset=512, length=4096)]error = 19 (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 0 0 0 0 ea 0 0 8 0 (da0:umass-sim0:0:0:0): CAM status: SCSI Status Error (da0:umass-sim0:0:0:0): SCSI status: Check Condition (da0:umass-sim0:0:0:0): SCSI sense: DATA PROTECT csi:0,aa,55,61 asc:27,0 (Write protected) field replaceable unit: 1 g_vfs_done():da0s1[WRITE(offset=512, length=4096)]error = 19 vfs_donmount: R/W mount failed, possibly R/O media, falling back to R/O mount -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Thu Apr 7 17:25:13 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3B92A1065689; Thu, 7 Apr 2011 17:25:13 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 557978FC0A; Thu, 7 Apr 2011 17:25:10 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id UAA20232; Thu, 07 Apr 2011 20:25:09 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9DF375.4080506@FreeBSD.org> Date: Thu, 07 Apr 2011 20:25:09 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org, freebsd-fs@FreeBSD.org, FreeBSD Hackers X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: Subject: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2011 17:25:13 -0000 [sorry for double post, it should have been "hackers" not "hardware"] Guys, could you please review and comment on the following patch? http://people.freebsd.org/~avg/mount-retry-ro.diff Thank you! The patch consists of two parts. The first part is in CAM/SCSI to make sure that ENODEV is consistently returned to signal that an operation is not supported by a device (in accordance to intro(2)) and specifically to return ENODEV on write attempt to a read-only or write-protected media. Making this change in SCSI should cover real SCSI devices, as well as ATAPI through ahci/siis/atapicam or similar, plus majority (all?) of USB Mass Storage devices. The second part is in vfs_mount code. The idea is to re-try a mount call if we get the ENODEV error, and mounting was not already in read-only mode, and there was no explicit rw or noro option; the second try is changed to ro. I did only basic testing with an SD card in write-protected mode and a USB card-reader. Since I am not very familiar with vfs_mount code I might have missed some important details. A sample test log, just in case: ugen2.2: at usbus2 umass0: on usbus2 da0 at umass-sim0 bus 0 scbus7 target 0 lun 0 da0: Removable Direct Access SCSI-0 device da0: 40.000MB/s transfers da0: 488MB (1000448 512 byte sectors: 64H 32S/T 488C) da1 at umass-sim0 bus 0 scbus7 target 0 lun 1 da1: Removable Direct Access SCSI-0 device da1: 40.000MB/s transfers da1: Attempt to query device size failed: NOT READY, Medium not present da2 at umass-sim0 bus 0 scbus7 target 0 lun 2 da2: Removable Direct Access SCSI-0 device da2: 40.000MB/s transfers da2: Attempt to query device size failed: NOT READY, Medium not present da3 at umass-sim0 bus 0 scbus7 target 0 lun 3 da3: Removable Direct Access SCSI-0 device da3: 40.000MB/s transfers da3: Attempt to query device size failed: NOT READY, Medium not present GEOM: da0s1: EBR has non empty bootcode. (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 0 0 0 0 ea 0 0 8 0 (da0:umass-sim0:0:0:0): CAM status: SCSI Status Error (da0:umass-sim0:0:0:0): SCSI status: Check Condition (da0:umass-sim0:0:0:0): SCSI sense: DATA PROTECT csi:0,aa,55,61 asc:27,0 (Write protected) field replaceable unit: 1 g_vfs_done():da0s1[WRITE(offset=512, length=4096)]error = 19 (da0:umass-sim0:0:0:0): WRITE(10). CDB: 2a 0 0 0 0 ea 0 0 8 0 (da0:umass-sim0:0:0:0): CAM status: SCSI Status Error (da0:umass-sim0:0:0:0): SCSI status: Check Condition (da0:umass-sim0:0:0:0): SCSI sense: DATA PROTECT csi:0,aa,55,61 asc:27,0 (Write protected) field replaceable unit: 1 g_vfs_done():da0s1[WRITE(offset=512, length=4096)]error = 19 vfs_donmount: R/W mount failed, possibly R/O media, falling back to R/O mount -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Thu Apr 7 17:37:24 2011 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 78EDF1065705 for ; Thu, 7 Apr 2011 17:37:24 +0000 (UTC) (envelope-from mj@feral.com) Received: from ns1.feral.com (ns1.feral.com [192.67.166.1]) by mx1.freebsd.org (Postfix) with ESMTP id B34448FC16 for ; Thu, 7 Apr 2011 17:37:23 +0000 (UTC) Received: from [192.168.1.100] (m206-63.dsl.tsoft.com [198.144.206.63]) by ns1.feral.com (8.14.4/8.14.3) with ESMTP id p37HJmWJ019042 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Thu, 7 Apr 2011 10:19:49 -0700 (PDT) (envelope-from mj@feral.com) Message-ID: <4D9DF234.2070803@feral.com> Date: Thu, 07 Apr 2011 10:19:48 -0700 From: Matthew Jacob User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@freebsd.org References: <4D9DEDF7.2070107@FreeBSD.org> In-Reply-To: <4D9DEDF7.2070107@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Default is to whitelist mail, not delayed by milter-greylist-4.2.6 (ns1.feral.com [192.67.166.1]); Thu, 07 Apr 2011 10:19:49 -0700 (PDT) Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2011 17:37:24 -0000 > The first part is in CAM/SCSI to make sure that ENODEV is consistently returned to > signal that an operation is not supported by a device (in accordance to intro(2)) > and specifically to return ENODEV on write attempt to a read-only or > write-protected media. Making this change in SCSI should cover real SCSI devices, > as well as ATAPI through ahci/siis/atapicam or similar, plus majority (all?) of > USB Mass Storage devices. This may be the right thing to do (which is debatable) but I can tell you here and now this will break a lot of commercial usages of FreeBSD with SANS which depend (foolishly) on existing error codes. From owner-freebsd-scsi@FreeBSD.ORG Thu Apr 7 18:51:49 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 035AE106566B for ; Thu, 7 Apr 2011 18:51:49 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 4CDFF8FC0A for ; Thu, 7 Apr 2011 18:51:47 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id VAA21375 for ; Thu, 07 Apr 2011 21:51:46 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9E07C1.8070604@FreeBSD.org> Date: Thu, 07 Apr 2011 21:51:45 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org References: <4D9DEDF7.2070107@FreeBSD.org> <4D9DF234.2070803@feral.com> In-Reply-To: <4D9DF234.2070803@feral.com> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2011 18:51:49 -0000 on 07/04/2011 20:19 Matthew Jacob said the following: > >> The first part is in CAM/SCSI to make sure that ENODEV is consistently returned to >> signal that an operation is not supported by a device (in accordance to intro(2)) >> and specifically to return ENODEV on write attempt to a read-only or >> write-protected media. Making this change in SCSI should cover real SCSI devices, >> as well as ATAPI through ahci/siis/atapicam or similar, plus majority (all?) of >> USB Mass Storage devices. > > This may be the right thing to do (which is debatable) but I can tell you here and I am always open to a debate. > now this will break a lot of commercial usages of FreeBSD with SANS which depend > (foolishly) on existing error codes. Do you mean EACCES -> ENODEV specifically? If yes, can you tell me how those application distinguish EACCES that means ro/wp media from EACCES that means there is something wrong with some permissions? Or EACCES that could be returned from cam_periph_mapmem? P.S. do you have specific applications in mind or do you speak hypothetically? P.P.S. the only reason for my EACCES -> ENODEV is that *I* wanted to be sure what error condition I am seeing. If compatibility is preferred over what I perceive as correctness, then be it, I would not insist. Thanks! -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Thu Apr 7 20:43:38 2011 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E189106566B; Thu, 7 Apr 2011 20:43:38 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-pv0-f182.google.com (mail-pv0-f182.google.com [74.125.83.182]) by mx1.freebsd.org (Postfix) with ESMTP id D3DBA8FC15; Thu, 7 Apr 2011 20:43:37 +0000 (UTC) Received: by pvg11 with SMTP id 11so1297419pvg.13 for ; Thu, 07 Apr 2011 13:43:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=JX+fEMf/0gprv0XxszezUm4x3vq6rUMb2kC0B7E8C8o=; b=Hzgbeo2qKBMWoeW/1vZKQfTQ7UTwU+Tqq/kaOHYRuYnPP87vcM36ltak931OBX/Kz/ FYn/KsOa7kg5mlyXYgmlTm/FcLjqWKSRGPlZCav5aKMFbH6hQKc0vA6BpLKtmV611ZeT oxZcueCen43LkNE0fd6sX0KfR7LlDYfttsKvo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=pwrrDY5AguWvPp5dhR77gMc9VYODZJL3d70dzgqdO5k+7OOaqCfkOqt9e4hkJuz5Yr ISW+fU725NeZKGpfO4wWE4XN/4SUsO+QwyZe64zvFFe7HHPOkiCBtJSn0H9NnmsJzp3S /6n2Mt6F1/5B8YI6RfyKRFLM7Dh5vjOFQ7wtY= MIME-Version: 1.0 Received: by 10.143.39.17 with SMTP id r17mr964391wfj.113.1302207653707; Thu, 07 Apr 2011 13:20:53 -0700 (PDT) Received: by 10.68.42.3 with HTTP; Thu, 7 Apr 2011 13:20:53 -0700 (PDT) In-Reply-To: <4D9DF375.4080506@FreeBSD.org> References: <4D9DF375.4080506@FreeBSD.org> Date: Thu, 7 Apr 2011 13:20:53 -0700 Message-ID: From: Garrett Cooper To: Andriy Gapon Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-fs@freebsd.org, freebsd-scsi@freebsd.org, FreeBSD Hackers Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2011 20:43:38 -0000 On Thu, Apr 7, 2011 at 10:25 AM, Andriy Gapon wrote: > > [sorry for double post, it should have been "hackers" not "hardware"] > > Guys, > could you please review and comment on the following patch? > http://people.freebsd.org/~avg/mount-retry-ro.diff > Thank you! > > The patch consists of two parts. > > The first part is in CAM/SCSI to make sure that ENODEV is consistently re= turned to > signal that an operation is not supported by a device (in accordance to i= ntro(2)) > and specifically to return ENODEV on write attempt to a read-only or > write-protected media. =A0Making this change in SCSI should cover real SC= SI devices, > as well as ATAPI through ahci/siis/atapicam or similar, plus majority (al= l?) of > USB Mass Storage devices. > > The second part is in vfs_mount code. =A0The idea is to re-try a mount ca= ll if we > get the ENODEV error, and mounting was not already in read-only mode, and= there > was no explicit rw or noro option; the second try is changed to ro. > > I did only basic testing with an SD card in write-protected mode and a US= B > card-reader. =A0Since I am not very familiar with vfs_mount code I might = have missed > some important details. As a generic question / observation, maybe we should just implement 'errors=3Dremount-ro' (or a reasonable facsimile) like Linux has in our mount(8) command? Doesn't look like NetBSD, OpenBSD, or [Open]Solaris sported similar functionality. Thanks, -Garrett From owner-freebsd-scsi@FreeBSD.ORG Thu Apr 7 21:46:54 2011 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5B2F31065672 for ; Thu, 7 Apr 2011 21:46:54 +0000 (UTC) (envelope-from mj@feral.com) Received: from ns1.feral.com (ns1.feral.com [192.67.166.1]) by mx1.freebsd.org (Postfix) with ESMTP id 243E88FC0A for ; Thu, 7 Apr 2011 21:46:53 +0000 (UTC) Received: from [192.168.1.100] (m206-63.dsl.tsoft.com [198.144.206.63]) by ns1.feral.com (8.14.4/8.14.3) with ESMTP id p37LkqGb021581 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Thu, 7 Apr 2011 14:46:53 -0700 (PDT) (envelope-from mj@feral.com) Message-ID: <4D9E30CC.3080702@feral.com> Date: Thu, 07 Apr 2011 14:46:52 -0700 From: Matthew Jacob Organization: Feral Software User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.15) Gecko/20110303 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@freebsd.org References: <4D9DEDF7.2070107@FreeBSD.org> <4D9DF234.2070803@feral.com> <4D9E07C1.8070604@FreeBSD.org> In-Reply-To: <4D9E07C1.8070604@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Default is to whitelist mail, not delayed by milter-greylist-4.2.6 (ns1.feral.com [192.67.166.1]); Thu, 07 Apr 2011 14:46:53 -0700 (PDT) Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: mj@feral.com List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 Apr 2011 21:46:54 -0000 On 4/7/2011 11:51 AM, Andriy Gapon wrote: > > Do you mean EACCES -> ENODEV specifically? > If yes, can you tell me how those application distinguish EACCES that means ro/wp > media from EACCES that means there is something wrong with some permissions? > Or EACCES that could be returned from cam_periph_mapmem? > > P.S. do you have specific applications in mind or do you speak hypothetically? > > P.P.S. the only reason for my EACCES -> ENODEV is that *I* wanted to be sure what > error condition I am seeing. If compatibility is preferred over what I perceive > as correctness, then be it, I would not insist. Yes, these kinds of changes. Hypothetically, but it's an area that I know that there are a lot dependencies. I think all I really want to note that "correctness" here can be perceived as "gratuitous difference" by consumers of FreeBSD as a base platform. From owner-freebsd-scsi@FreeBSD.ORG Fri Apr 8 00:13:43 2011 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4492B106566B for ; Fri, 8 Apr 2011 00:13:43 +0000 (UTC) (envelope-from jdc@koitsu.dyndns.org) Received: from qmta10.emeryville.ca.mail.comcast.net (qmta10.emeryville.ca.mail.comcast.net [76.96.30.17]) by mx1.freebsd.org (Postfix) with ESMTP id 2A74E8FC13 for ; Fri, 8 Apr 2011 00:13:43 +0000 (UTC) Received: from omta14.emeryville.ca.mail.comcast.net ([76.96.30.60]) by qmta10.emeryville.ca.mail.comcast.net with comcast id UnBE1g0081HpZEsAAo0Ytl; Fri, 08 Apr 2011 00:00:32 +0000 Received: from koitsu.dyndns.org ([67.180.84.87]) by omta14.emeryville.ca.mail.comcast.net with comcast id Uo0R1g00s1t3BNj8ao0S19; Fri, 08 Apr 2011 00:00:31 +0000 Received: by icarus.home.lan (Postfix, from userid 1000) id 7AEEB9B422; Thu, 7 Apr 2011 17:00:25 -0700 (PDT) Date: Thu, 7 Apr 2011 17:00:25 -0700 From: Jeremy Chadwick To: Garrett Cooper Message-ID: <20110408000025.GA16252@icarus.home.lan> References: <4D9DF375.4080506@FreeBSD.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Cc: freebsd-fs@freebsd.org, freebsd-scsi@freebsd.org, Andriy Gapon , FreeBSD Hackers Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Apr 2011 00:13:43 -0000 On Thu, Apr 07, 2011 at 01:20:53PM -0700, Garrett Cooper wrote: > On Thu, Apr 7, 2011 at 10:25 AM, Andriy Gapon wrote: > > > > [sorry for double post, it should have been "hackers" not "hardware"] > > > > Guys, > > could you please review and comment on the following patch? > > http://people.freebsd.org/~avg/mount-retry-ro.diff > > Thank you! > > > > The patch consists of two parts. > > > > The first part is in CAM/SCSI to make sure that ENODEV is consistently returned to > > signal that an operation is not supported by a device (in accordance to intro(2)) > > and specifically to return ENODEV on write attempt to a read-only or > > write-protected media. ?Making this change in SCSI should cover real SCSI devices, > > as well as ATAPI through ahci/siis/atapicam or similar, plus majority (all?) of > > USB Mass Storage devices. > > > > The second part is in vfs_mount code. ?The idea is to re-try a mount call if we > > get the ENODEV error, and mounting was not already in read-only mode, and there > > was no explicit rw or noro option; the second try is changed to ro. > > > > I did only basic testing with an SD card in write-protected mode and a USB > > card-reader. ?Since I am not very familiar with vfs_mount code I might have missed > > some important details. > > As a generic question / observation, maybe we should just > implement 'errors=remount-ro' (or a reasonable facsimile) like Linux > has in our mount(8) command? Doesn't look like NetBSD, OpenBSD, or > [Open]Solaris sported similar functionality. I was going to recommend exactly this. :-) I like the idea of Andriy's patch, but would feel more comfortable if it were only used if a mount option was specified (-o errors=remount-ro"). Why: Are there any conditions where ENODEV is returned to the underlying vfs layer for things like unexpected hardware issues? I would imagine the latter would be ENXIO, but I'm not certain. An example situation: 1. User inserts USB flash drive/etc. 2. User tries to mount disk R/W manually 3. Weird/bizarre hardware issue happens mid-mount (drive falling off the bus, or maybe even the user yanking the drive right in the middle) -- could this ever return ENODEV? 4. Kernel attempts re-mount, which also fails, or possibly panics due to some underlying condition which nobody predicted 5. User mails mailing list If I'm worrying over nothing, then perfect. :-) My other concern is whether or not this mechanism change could caused some sort of "infinite loop" within devd(8)/devctl(4) where the daemon gets very confused as to what's going on or some automated commands get run when they shouldn't. -- | Jeremy Chadwick jdc@parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP 4BD6C0CB | From owner-freebsd-scsi@FreeBSD.ORG Fri Apr 8 02:16:46 2011 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DBAA81065670; Fri, 8 Apr 2011 02:16:45 +0000 (UTC) (envelope-from yanegomi@gmail.com) Received: from mail-pw0-f54.google.com (mail-pw0-f54.google.com [209.85.160.54]) by mx1.freebsd.org (Postfix) with ESMTP id 76C1A8FC0A; Fri, 8 Apr 2011 02:16:45 +0000 (UTC) Received: by pwj8 with SMTP id 8so1425939pwj.13 for ; Thu, 07 Apr 2011 19:16:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=kpT/2d4MXnsBu5MHzOKiNh1Wg0A3NsW/hoJOXYlrNoQ=; b=u73BnxZejx0aPjIJuOE2VXYFDjfY7Dl8AIFgcWQfsM8hhrbhZy3cpVEFpp5ouzNZ6e r76WL8aSf7Aou18dceFayW0xpUKF4O0uGP1QvQD/uM/j7Mpd0W5i7dgVUy/4npezERBH ldm/T/Mik9DRue+qNU4cZHhkBBfHBuOa7UjL4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=VW8Jc1rPHHqFbpFm5oeR/3x/ep0w9jBF4iAcyJzK+U+Yuegletww0Q/RXvYplNnOmm a/tdWxK7ZZNaOrgifdmnorwot7KEXzKnvDzWsGj2GzMPam9/Sp8w/9vAeBmMzcIdnTUl AoS8HSIk3IWJz95c+MhPI6mooutKPxEQvAGlc= MIME-Version: 1.0 Received: by 10.143.24.39 with SMTP id b39mr1225326wfj.341.1302229004786; Thu, 07 Apr 2011 19:16:44 -0700 (PDT) Received: by 10.68.42.3 with HTTP; Thu, 7 Apr 2011 19:16:44 -0700 (PDT) In-Reply-To: <20110408000025.GA16252@icarus.home.lan> References: <4D9DF375.4080506@FreeBSD.org> <20110408000025.GA16252@icarus.home.lan> Date: Thu, 7 Apr 2011 19:16:44 -0700 Message-ID: From: Garrett Cooper To: Jeremy Chadwick Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-fs@freebsd.org, freebsd-scsi@freebsd.org, Andriy Gapon , FreeBSD Hackers Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Apr 2011 02:16:46 -0000 On Thu, Apr 7, 2011 at 5:00 PM, Jeremy Chadwick wrote: > On Thu, Apr 07, 2011 at 01:20:53PM -0700, Garrett Cooper wrote: >> On Thu, Apr 7, 2011 at 10:25 AM, Andriy Gapon wrote: >> > >> > [sorry for double post, it should have been "hackers" not "hardware"] >> > >> > Guys, >> > could you please review and comment on the following patch? >> > http://people.freebsd.org/~avg/mount-retry-ro.diff >> > Thank you! >> > >> > The patch consists of two parts. >> > >> > The first part is in CAM/SCSI to make sure that ENODEV is consistently= returned to >> > signal that an operation is not supported by a device (in accordance t= o intro(2)) >> > and specifically to return ENODEV on write attempt to a read-only or >> > write-protected media. ?Making this change in SCSI should cover real S= CSI devices, >> > as well as ATAPI through ahci/siis/atapicam or similar, plus majority = (all?) of >> > USB Mass Storage devices. >> > >> > The second part is in vfs_mount code. ?The idea is to re-try a mount c= all if we >> > get the ENODEV error, and mounting was not already in read-only mode, = and there >> > was no explicit rw or noro option; the second try is changed to ro. >> > >> > I did only basic testing with an SD card in write-protected mode and a= USB >> > card-reader. ?Since I am not very familiar with vfs_mount code I might= have missed >> > some important details. >> >> =A0 =A0 As a generic question / observation, maybe we should just >> implement 'errors=3Dremount-ro' (or a reasonable facsimile) like Linux >> has in our mount(8) command? Doesn't look like NetBSD, OpenBSD, or >> [Open]Solaris sported similar functionality. > > I was going to recommend exactly this. =A0:-) > > I like the idea of Andriy's patch, but would feel more comfortable if it > were only used if a mount option was specified (-o errors=3Dremount-ro"). > Why: > > Are there any conditions where ENODEV is returned to the underlying vfs > layer for things like unexpected hardware issues? =A0I would imagine the > latter would be ENXIO, but I'm not certain. =A0An example situation: > > 1. User inserts USB flash drive/etc. > 2. User tries to mount disk R/W manually > 3. Weird/bizarre hardware issue happens mid-mount (drive falling off > =A0 the bus, or maybe even the user yanking the drive right in the > =A0 middle) -- could this ever return ENODEV? > 4. Kernel attempts re-mount, which also fails, or possibly panics > =A0 due to some underlying condition which nobody predicted > 5. User mails mailing list > > If I'm worrying over nothing, then perfect. =A0:-) =A0My other concern is > whether or not this mechanism change could caused some sort of "infinite > loop" within devd(8)/devctl(4) where the daemon gets very confused as to > what's going on or some automated commands get run when they shouldn't. Yeah. It seems like something else like EINVAL (just an example -- probably a bad one) would be better. Also, please be careful as returning ENODEV seems to be UFS-specific: The following errors can occur for a ufs file system mount: [ENODEV] A component of ufs_args fspec does not exist. Also, Tom Rhodes has a similar change to what I suggested on the backburner, but it hasn't been 100% fleshed out yet. Thanks, -Garrett From owner-freebsd-scsi@FreeBSD.ORG Fri Apr 8 05:51:14 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 25E40106564A; Fri, 8 Apr 2011 05:51:14 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 2055E8FC08; Fri, 8 Apr 2011 05:51:12 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id IAA29978; Fri, 08 Apr 2011 08:51:11 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1Q84b9-000GBx-DI; Fri, 08 Apr 2011 08:51:11 +0300 Message-ID: <4D9EA24E.2030401@FreeBSD.org> Date: Fri, 08 Apr 2011 08:51:10 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110308 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org, freebsd-current@FreeBSD.org References: <20110331223339.GA13682@freebsd.org> <201104010843.47367.jhb@freebsd.org> <20110404204316.GA11367@freebsd.org> <4D9D9917.3030102@FreeBSD.org> In-Reply-To: <4D9D9917.3030102@FreeBSD.org> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Subject: Re: multiple issues with devstat_*(9) X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Apr 2011 05:51:14 -0000 on 07/04/2011 13:59 Alexander Motin said the following: > Any objections? Or SCSI/IDE there expected to mean command set? > Sorry for saying something potentially stupid, but... do we actually have any reason to make that distinction from any practical point? -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Fri Apr 8 05:56:45 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 00E6C106571E for ; Fri, 8 Apr 2011 05:56:45 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 2A7988FC0A for ; Fri, 8 Apr 2011 05:56:43 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id IAA00163 for ; Fri, 08 Apr 2011 08:56:42 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1Q84gU-000GCU-HP for freebsd-scsi@freebsd.org; Fri, 08 Apr 2011 08:56:42 +0300 Message-ID: <4D9EA399.9080508@FreeBSD.org> Date: Fri, 08 Apr 2011 08:56:41 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110308 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org References: <4D9DEDF7.2070107@FreeBSD.org> <4D9DF234.2070803@feral.com> <4D9E07C1.8070604@FreeBSD.org> <4D9E30CC.3080702@feral.com> In-Reply-To: <4D9E30CC.3080702@feral.com> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Apr 2011 05:56:45 -0000 on 08/04/2011 00:46 Matthew Jacob said the following: > I think all I really want to note that "correctness" here can be perceived as > "gratuitous difference" by consumers of FreeBSD as a base platform. I agree. But I think that there is a chance that it might be perceived as an improvement. I guess depends on the beholder :-) -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Fri Apr 8 15:23:43 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7BF8E106567D; Fri, 8 Apr 2011 15:23:43 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id D9CB08FC16; Fri, 8 Apr 2011 15:23:41 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id SAA07973; Fri, 08 Apr 2011 18:23:24 +0300 (EEST) (envelope-from avg@FreeBSD.org) Message-ID: <4D9F286B.4010102@FreeBSD.org> Date: Fri, 08 Apr 2011 18:23:23 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110309 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: Andrew Duane References: <4D9DF375.4080506@FreeBSD.org> <20110408000025.GA16252@icarus.home.lan> <4D9EF55C.5070300@FreeBSD.org> <20110408214920.I1265@besplex.bde.org> In-Reply-To: X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: "freebsd-fs@freebsd.org" , FreeBSD Hackers , freebsd-scsi@FreeBSD.org Subject: Re: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Apr 2011 15:23:43 -0000 on 08/04/2011 15:36 Andrew Duane said the following: > What I was hoping to do was design a better mechanism for passing that R/O > detection from the device to the filesystem code. Our implementation uses a > platform sysctl that checks the incoming device name against some hardware or > software settings. Ick. I don't know enough about device/GEOM calls to do it > better though. I am actually not aware of any way to inquiry write-protection status from hardware. There are distinct SCSI sense codes for that, but you get them only after a failed write attempt. But there are many things that I don't know about... -- Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Fri Apr 8 16:59:34 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 75537106566C for ; Fri, 8 Apr 2011 16:59:34 +0000 (UTC) (envelope-from aduane@juniper.net) Received: from exprod7og120.obsmtp.com (exprod7og120.obsmtp.com [64.18.2.18]) by mx1.freebsd.org (Postfix) with ESMTP id 0C3F78FC1B for ; Fri, 8 Apr 2011 16:59:33 +0000 (UTC) Received: from P-EMHUB03-HQ.jnpr.net ([66.129.224.36]) (using TLSv1) by exprod7ob120.postini.com ([64.18.6.12]) with SMTP ID DSNKTZ8+9ZpIy7mEA5nQ41ZSWqknPvl6R5NN@postini.com; Fri, 08 Apr 2011 09:59:34 PDT Received: from p-emfe01-wf.jnpr.net (172.28.145.24) by P-EMHUB03-HQ.jnpr.net (172.24.192.37) with Microsoft SMTP Server (TLS) id 8.2.254.0; Fri, 8 Apr 2011 09:43:39 -0700 Received: from EMBX01-WF.jnpr.net ([fe80::1914:3299:33d9:e43b]) by p-emfe01-wf.jnpr.net ([fe80::d0d1:653d:5b91:a123%11]) with mapi; Fri, 8 Apr 2011 12:45:24 -0400 From: Andrew Duane To: Andriy Gapon Date: Fri, 8 Apr 2011 12:45:23 -0400 Thread-Topic: retry mounting with ro when rw fails Thread-Index: Acv2AO1qThMsSukkTE2FDMO0vOVbogAC01og Message-ID: References: <4D9DF375.4080506@FreeBSD.org> <20110408000025.GA16252@icarus.home.lan> <4D9EF55C.5070300@FreeBSD.org> <20110408214920.I1265@besplex.bde.org> <4D9F286B.4010102@FreeBSD.org> In-Reply-To: <4D9F286B.4010102@FreeBSD.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Cc: "freebsd-fs@freebsd.org" , FreeBSD Hackers , "freebsd-scsi@FreeBSD.org" Subject: RE: retry mounting with ro when rw fails X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Apr 2011 16:59:34 -0000 For SCSI-attached disks, yes. But other hardware has write-protect sensing = (SD cards, CD-roms, our platform). So if you can do that, you should Cleaning up after a failed write is a real problem, one that I needed to av= oid.=20 /Andrew =20 -----Original Message----- From: Andriy Gapon [mailto:avg@FreeBSD.org]=20 Sent: Friday, April 08, 2011 11:23 AM To: Andrew Duane Cc: Bruce Evans; freebsd-fs@freebsd.org; FreeBSD Hackers; freebsd-scsi@Free= BSD.org Subject: Re: retry mounting with ro when rw fails on 08/04/2011 15:36 Andrew Duane said the following: > What I was hoping to do was design a better mechanism for passing that R/= O > detection from the device to the filesystem code. Our implementation uses= a > platform sysctl that checks the incoming device name against some hardwar= e or > software settings. Ick. I don't know enough about device/GEOM calls to do= it > better though. I am actually not aware of any way to inquiry write-protection status from hardware. There are distinct SCSI sense codes for that, but you get them o= nly after a failed write attempt. But there are many things that I don't know about... --=20 Andriy Gapon From owner-freebsd-scsi@FreeBSD.ORG Sat Apr 9 20:19:40 2011 Return-Path: Delivered-To: freebsd-scsi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4E61C106566B; Sat, 9 Apr 2011 20:19:40 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 5E5678FC20; Sat, 9 Apr 2011 20:19:38 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id XAA26511; Sat, 09 Apr 2011 23:19:37 +0300 (EEST) (envelope-from avg@FreeBSD.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1Q8ed6-000L7P-Q2; Sat, 09 Apr 2011 23:19:36 +0300 Message-ID: <4DA0BF57.2090307@FreeBSD.org> Date: Sat, 09 Apr 2011 23:19:35 +0300 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.15) Gecko/20110308 Lightning/1.0b2 Thunderbird/3.1.9 MIME-Version: 1.0 To: freebsd-scsi@FreeBSD.org, freebsd-current@FreeBSD.org References: <20110331223339.GA13682@freebsd.org> <201104010843.47367.jhb@freebsd.org> <20110404204316.GA11367@freebsd.org> <4D9D9917.3030102@FreeBSD.org> <4D9EA24E.2030401@FreeBSD.org> In-Reply-To: <4D9EA24E.2030401@FreeBSD.org> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Subject: Re: multiple issues with devstat_*(9) X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 09 Apr 2011 20:19:40 -0000 on 08/04/2011 08:51 Andriy Gapon said the following: > on 07/04/2011 13:59 Alexander Motin said the following: >> Any objections? Or SCSI/IDE there expected to mean command set? >> > > Sorry for saying something potentially stupid, but... do we actually have any > reason to make that distinction from any practical point? And the following could be related here too: http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/81497 -- Andriy Gapon