From owner-freebsd-mips@FreeBSD.ORG Sun Aug 1 11:39:42 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0E565106566C; Sun, 1 Aug 2010 11:39:42 +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 30E2C8FC1F; Sun, 1 Aug 2010 11:39:40 +0000 (UTC) Received: by fxm13 with SMTP id 13so1509038fxm.13 for ; Sun, 01 Aug 2010 04:39:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received: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=fnw9qdIrwQecteXv3BQB1BpkIWBGfuR5bnkQNph+FbY=; b=reGNYvEkkFwraBGuHLyQ8ePsMW9zekvjatX+smeKMgjeD6g/do3y4c9NvDOQ4jCszw 4FKZS/8J67qmq7Dmhxiv1JEGXVWGPhBLA+gdKWf4+k5K0TIDsnucb2r2DMRJ/E6vO9dD X1GEBJ6Ebtnx84g6MnPQlr5L8iM6DRxuGseqQ= 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=cQIAJeChN/RG9mwKCMgnEldEvz3/MBZCAz7t0AKF7YFNYBgrvozP5noaQys2oynxjy jSXsU/3Q7Lzv9MhgsGXBt0PKP+944CmTeZpv4OfWEFN0OSyG8TjqtG19t7pqCOXQo2EF GqFlaDvq0UHCvJxQzMdZsAX+KydiStaUfEpJ0= Received: by 10.223.111.206 with SMTP id t14mr4428053fap.32.1280662780013; Sun, 01 Aug 2010 04:39:40 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id h4sm1583740faj.15.2010.08.01.04.39.38 (version=SSLv3 cipher=RC4-MD5); Sun, 01 Aug 2010 04:39:39 -0700 (PDT) Sender: Alexander Motin Message-ID: <4C555CF7.5080101@FreeBSD.org> Date: Sun, 01 Aug 2010 14:39:35 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.24 (X11/20100402) MIME-Version: 1.0 To: Neel Natu References: <4C41A248.8090605@FreeBSD.org> <4C41B4CF.6080409@FreeBSD.org> <4C4205CC.6080700@FreeBSD.org> <4C4ED247.80701@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Randall Stewart , freebsd-mips@freebsd.org, Neel Natu Subject: Re: [RFC] Event timers on MIPS X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Aug 2010 11:39:42 -0000 Neel Natu wrote: > Here is the patch for mips/mips/tick.c to fix tick_ticker(). > > In addition to incorporating the changes made in rmi/tick.c it fixes > the following: > > - There is a race between clock_intr() and tick_ticker() updating > counter_upper and counter_lower_last. This race exists because > interrupts are enabled even though tick_ticker() executes in a > critical section. While there is indeed a possible issue, I am not sure your solution is reliable. I haven't looked how DPCPU_GET implemented on MIPS, but can't compiler reorder them? I would thought about some lock or at least some atomics with barriers. "t_upper++;" there looks a bit strange, as it is not written back. The wrapping stuff won't work if this timer interrupts were not used. > - Fix a bug in clock_intr() in how it updates counter_upper and > counter_lower_last. It updates it only once every time the COUNT > register wraps around. More interestingly it will *never* update the > cached values of 'counter_upper' and 'counter_lower_last' if the > previous value of 'counter_lower_last' happens to be '0'. Reasonable. It would be nice if both wrapping places were implemented alike or the same way. > - Get rid of the superfluous critical section in clock_intr(). There > is no reason for it because clock_intr() executes in hard interrupt > context. Seems OK. -- Alexander Motin From owner-freebsd-mips@FreeBSD.ORG Mon Aug 2 11:07:05 2010 Return-Path: Delivered-To: freebsd-mips@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 597451065676 for ; Mon, 2 Aug 2010 11:07:05 +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 2C4DD8FC24 for ; Mon, 2 Aug 2010 11:07:05 +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 o72B750e035153 for ; Mon, 2 Aug 2010 11:07:05 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o72B74kV035151 for freebsd-mips@FreeBSD.org; Mon, 2 Aug 2010 11:07:04 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 2 Aug 2010 11:07:04 GMT Message-Id: <201008021107.o72B74kV035151@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-mips@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-mips@FreeBSD.org X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Aug 2010 11:07:05 -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 misc/147471 mips [headers] [patch] whitespace discrepancy in sys/mips/i 1 problem total. From owner-freebsd-mips@FreeBSD.ORG Tue Aug 3 15:15:28 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D61F01065675 for ; Tue, 3 Aug 2010 15:15:28 +0000 (UTC) (envelope-from neelnatu@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 4D7228FC16 for ; Tue, 3 Aug 2010 15:15:27 +0000 (UTC) Received: by wyj26 with SMTP id 26so5490749wyj.13 for ; Tue, 03 Aug 2010 08:15:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=avEVTZNW5pd7cctHh+66q95QUKSKpS3FWk6zPwniGZo=; b=NPV+dmDSoafckPGAD1xp2h03GJtshOYaRzy1iQPAQSOIQt8rTqG88mBIF7tlrn2swH 9q626m8MqqOl4VLr6Lbvy9JhtPqR6veTXAyUGq9J5wXc1PjJ+xYWY9/rANyhTr2X8M3a 6qYZANhI5tmsnEwS61sYwIq7gsIMc07YrPit8= 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; b=XJlqlBfdZPwbRLc3HePI2DWreVbVqK1LmEx8Df1HuTUTaTChwoDvWekov4SyQabXAj Q1nl2EMTTQpiRoyQ86s5Ii2l1sezYo5AHODp+FFvGpjTRBnYbE9d5JHwm/P6qn1EUJZC d0BKeXOHUKaS3371lrPtX85gPCVEHd/qvozvI= MIME-Version: 1.0 Received: by 10.216.35.138 with SMTP id u10mr888540wea.80.1280848527091; Tue, 03 Aug 2010 08:15:27 -0700 (PDT) Received: by 10.216.80.8 with HTTP; Tue, 3 Aug 2010 08:15:26 -0700 (PDT) In-Reply-To: <4C555CF7.5080101@FreeBSD.org> References: <4C41A248.8090605@FreeBSD.org> <4C41B4CF.6080409@FreeBSD.org> <4C4205CC.6080700@FreeBSD.org> <4C4ED247.80701@FreeBSD.org> <4C555CF7.5080101@FreeBSD.org> Date: Tue, 3 Aug 2010 08:15:26 -0700 Message-ID: From: Neel Natu To: Alexander Motin Content-Type: text/plain; charset=ISO-8859-1 Cc: Randall Stewart , freebsd-mips@freebsd.org, Neel Natu Subject: Re: [RFC] Event timers on MIPS X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Aug 2010 15:15:29 -0000 Hi Alexander, Thanks for taking the time to review the patch. Here is the updated patch: http://people.freebsd.org/~neel/tick_diff.txt On Sun, Aug 1, 2010 at 4:39 AM, Alexander Motin wrote: > Neel Natu wrote: >> Here is the patch for mips/mips/tick.c to fix tick_ticker(). >> >> In addition to incorporating the changes made in rmi/tick.c it fixes >> the following: >> >> - There is a race between clock_intr() and tick_ticker() updating >> counter_upper and counter_lower_last. This race exists because >> interrupts are enabled even though tick_ticker() executes in a >> critical section. > > While there is indeed a possible issue, I am not sure your solution is > reliable. I haven't looked how DPCPU_GET implemented on MIPS, but can't > compiler reorder them? I would thought about some lock or at least some > atomics with barriers. > Good catch. I have changed the type of 'counter_upper' and 'counter_lower_last' from 'uint32_t' to 'volatile uint32_t'. That should prevent the compiler from doing any reordering or loop optimization. I also verified the assembly listing of tick_ticker() and made sure that the such optimizations are not occurring. > "t_upper++;" there looks a bit strange, as it is not written back. The > wrapping stuff won't work if this timer interrupts were not used. > This part is intentional. I wanted only clock_intr() to update the cached values of 'counter_upper' and 'counter_lower_last' and tick_ticker() to sample a consistent snapshot of the tuple and then operate on it. I have added an XXX comment to describe the dependency. We can revisit this if we change the default timer in mips. >> - Fix a bug in clock_intr() in how it updates counter_upper and >> counter_lower_last. It updates it only once every time the COUNT >> register wraps around. More interestingly it will *never* update the >> cached values of 'counter_upper' and 'counter_lower_last' if the >> previous value of 'counter_lower_last' happens to be '0'. > > Reasonable. It would be nice if both wrapping places were implemented > alike or the same way. > This was intentional. See above. >> - Get rid of the superfluous critical section in clock_intr(). There >> is no reason for it because clock_intr() executes in hard interrupt >> context. > > Seems OK. > best Neel > -- > Alexander Motin > From owner-freebsd-mips@FreeBSD.ORG Tue Aug 3 19:44:45 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A55B1065673; Tue, 3 Aug 2010 19:44:45 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 8306E8FC0C; Tue, 3 Aug 2010 19:44:44 +0000 (UTC) Received: by wyj26 with SMTP id 26so5836140wyj.13 for ; Tue, 03 Aug 2010 12:44:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:cc:content-type; bh=riJG7Qf9fXjkMkUPVe8oWOIyPv9wZbbJFOngbxFqbBY=; b=AklVrb8ZqPQDw9Vltm4a7ofq8l5bmfTRstBAbo/mBmACrWmvpItRUfVmQXma8sRGk4 tgYmya4SJ8rgccsjNEFWjrMpnevVG1WLmUnoZTgsvkPZeKvWD+UharBdcwxwXEgdh13q oQo12xRNf2eKBYZwRp4YkEHn74WL+U/o3bHI0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:cc:content-type; b=pXt80jNTI8BDxM+rkrzM6FxRMY+oiFlvAsPZQQBoq3I6IrCtmJOYgtB2c0vDp92vY4 2OH/4wzWjQOqp3CUmYc+UKp634O6E5dOCkn+h9tNM2xBnVNvSYrNqeylcm8EAxVE9ar8 i7RMvMpdRerbO/rkx08Pbc9N3lqxe0lvnuSIU= MIME-Version: 1.0 Received: by 10.227.132.199 with SMTP id c7mr6782166wbt.89.1280864683231; Tue, 03 Aug 2010 12:44:43 -0700 (PDT) Received: by 10.216.160.10 with HTTP; Tue, 3 Aug 2010 12:44:42 -0700 (PDT) Date: Wed, 4 Aug 2010 01:14:42 +0530 Message-ID: From: "Jayachandran C." To: Juli Mallett , "M. Warner Losh" , freebsd-mips@freebsd.org Content-Type: multipart/mixed; boundary=001485f6c88a730961048cf08cb7 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: Merged pmap.c - Re: Support for 64bit userspace. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Aug 2010 19:44:45 -0000 --001485f6c88a730961048cf08cb7 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On Sat, Jul 31, 2010 at 5:17 AM, Jayachandran C. wrote: > On Fri, Jul 30, 2010 at 2:07 PM, Juli Mallett wrote= : > >> On Fri, Jul 30, 2010 at 01:15, Jayachandran C. >> wrote: >> > I will look at merging them without too many ifdefs. Another >> > possibility is to have a pmap.c, pmap32.c and pmap64.c, so that the >> > common code is not duplicated, but that too (as far as I can see) will >> > require a config option. >> >> I'm not really sure what the aversion to ifdefs is =97 they kind of come >> with the territory and this is exactly the part of the system where >> you expect to have them to conditionalize exactly this kind of >> behavior. If you were going to split out some subroutines for 32-bit >> and 64-bit, there are two ways you can do it without a config option >> (and I agree with you that avoiding one is very desirable =97 we already >> use too many knobs to get the right ABI in kernel configs). You could >> do: >> >> #ifndef __mips_n64 >> #include "pmap32.c" >> #else >> #include "pmap64.c" >> #endif >> >> Or you could wrap the whole 32/64 files (modulo a "struct __hack;" or >> whatever to avoid an empty translation unit) with ifdefs. >> >> Personally, I find having two implementations of a function a lot >> harder to read and keep track of than a single implementation with >> ifdefs in the body =97 there's very few places in the kernel where we do >> the former. If you do split out functions into separate files I would >> beg you to only split out the really big functions that are actually >> doing things based on different levels of page tables and then it's >> obvious why those things have two implementations and what needs to be >> abstracted to merge them. Having two copies of trivial functions or >> non-trivial functions that are mostly identical is a bad thing. >> >> You're doing the work, so at some point it's kind of your call, but I >> feel like you're making style changes to things that I cleaned up and >> tried to unify in pmap.c and that the way that they're done is pretty >> significant given how intimidating people find pmap. If we were going >> to support different kinds of MMUs (e.g. adding support for BAT-based >> MMUs) I'd be in favor of splitting things up, but then I'd want to >> follow PowerPC's lead. For now I think the appropriate thing to do is >> to follow the lead of my 64-bit work in the MIPS pmap and the PAE work >> in the i386 pmap and to use ifdefs and to try to abstract out the >> page-table differences. >> > > I had not looked at merging the files so far (mostly because it was easie= r > to do it this way), so I will see how best this can be done. > > I'm really thrilled with the work you're doing and can't wait for it >> to be in head =97 I'm quite eager to move everything on Octeon to n64 :) >> > > I have checked in everything except the page table implementation code. > > If you like to try the current code, the attached patch has the rest of t= he > changes. This has a few more issues fixed, n64 mostly works for me, exce= pt > a csh crash I'm looking at. > > I'll have a look at merging pmap.c with pmap64.c, and have another look a= t > the PAE. > Here's is the merged version of n64 changes. I had to change the existing pmap.c style a bit, so that merging the 32 bit and 64 bit versions was easier. On the n64 compilation, I have done a few more fixes, and the current code comes up multi-user and holds up pretty well on XLR. I'm doing some stress testing on o32 to see that I have not broken anything there during the changes. Let me know your comments. Also note that PTEs are still 32 bit and KSEG0 addresses are still used for page table pages, but these can be added... Thanks, JC. --001485f6c88a730961048cf08cb7 Content-Type: application/octet-stream; name="mips-3lvl-pt.patch" Content-Disposition: attachment; filename="mips-3lvl-pt.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcf5mpts1 SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvcGFyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9p bmNsdWRlL3BhcmFtLmgJKHJldmlzaW9uIDIxMDc5NikKKysrIHN5cy9taXBzL2luY2x1ZGUvcGFy YW0uaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDggKzEwNywxOCBAQAogI2RlZmluZQlOUFRFUEcJ CShQQUdFX1NJWkUvKHNpemVvZiAocHRfZW50cnlfdCkpKQogI2RlZmluZQlOUERFUEcJCShQQUdF X1NJWkUvKHNpemVvZiAocGRfZW50cnlfdCkpKQogCisjaWYgZGVmaW5lZChfX21pcHNfbjY0KQor I2RlZmluZQlTRUdTSElGVAkzMQkJLyogTE9HMihOQlNFRykgKi8KKyNkZWZpbmUJTkJTRUcJCSgx dWwgPDwgU0VHU0hJRlQpCS8qIGJ5dGVzL3NlZ21lbnQgKi8KKyNkZWZpbmUJUERSU0hJRlQJMjIg ICAgICAgICAgICAgIC8qIHNlY29uZCBsZXZlbCAqLworI2RlZmluZQlQRFJNQVNLCQkoKDEgPDwg UERSU0hJRlQpIC0gMSkKKyNlbHNlCiAjZGVmaW5lCVNFR1NISUZUCTIyCQkvKiBMT0cyKE5CU0VH KSAqLwogI2RlZmluZQlOQlNFRwkJKDEgPDwgU0VHU0hJRlQpCS8qIGJ5dGVzL3NlZ21lbnQgKi8K KyNkZWZpbmUJUERSU0hJRlQJU0VHU0hJRlQJLyogYWxpYXMgZm9yIFNFRyBpbiAzMiBiaXQgKi8K KyNkZWZpbmUJUERSTUFTSwkJKCgxIDw8IFBEUlNISUZUKSAtIDEpCisjZW5kaWYKKyNkZWZpbmUJ TkJQRFIJCSgxIDw8IFBEUlNISUZUKQkvKiBieXRlcy9wYWdlZGlyICovCiAjZGVmaW5lCVNFR01B U0sJCShOQlNFRy0xKQkvKiBieXRlIG9mZnNldCBpbnRvIHNlZ21lbnQgKi8KIAogI2RlZmluZQlN QVhQQUdFU0laRVMJMQkJLyogbWF4aW11bSBudW1iZXIgb2Ygc3VwcG9ydGVkIHBhZ2Ugc2l6ZXMg Ki8KQEAgLTExOSw3ICsxMjksNyBAQAogLyoKICAqIFRoZSBrZXJuZWwgc3RhY2sgbmVlZHMgdG8g YmUgYWxpZ25lZCBvbiBhIChQQUdFX1NJWkUgKiAyKSBib3VuZGFyeS4KICAqLwotI2RlZmluZQlL U1RBQ0tfUEFHRVMJCTIJLyoga2VybmVsIHN0YWNrKi8KKyNkZWZpbmUJS1NUQUNLX1BBR0VTCQky CS8qIGtlcm5lbCBzdGFjayAqLwogI2RlZmluZQlLU1RBQ0tfR1VBUkRfUEFHRVMJMgkvKiBwYWdl cyBvZiBrc3RhY2sgZ3VhcmQ7IDAgZGlzYWJsZXMgKi8KIAogI2RlZmluZQlVUEFHRVMJCQkyCklu ZGV4OiBzeXMvbWlwcy9pbmNsdWRlL3ZtcGFyYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9p bmNsdWRlL3ZtcGFyYW0uaAkocmV2aXNpb24gMjEwNzk2KQorKysgc3lzL21pcHMvaW5jbHVkZS92 bXBhcmFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw3ICsxODUsNyBAQAogICoJICBhbGxvY2F0 aW9ucyB1c2UgSElHSE1FTSBpZiBhdmFpbGFibGUsIGFuZCB0aGVuIERFRkFVTFQuIAogICoJLSBI SUdITUVNIGZvciBvdGhlciBwYWdlcyAKICAqLwotI2lmZGVmIF9fbWlwc19uNjQKKyNpZiAwIC8q IE5vdCB5ZXQsIGNoYW5nZSBuNjQgdG8gdXNlIHhrcGh5cyAqLwogI2RlZmluZQlWTV9ORlJFRUxJ U1QJCTEKICNkZWZpbmUJVk1fRlJFRUxJU1RfREVGQVVMVAkwCiAjZGVmaW5lCVZNX0ZSRUVMSVNU X0RJUkVDVAlWTV9GUkVFTElTVF9ERUZBVUxUCkluZGV4OiBzeXMvbWlwcy9taXBzL2V4Y2VwdGlv bi5TCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMvZXhjZXB0aW9uLlMJKHJldmlzaW9uIDIx MDc5NikKKysrIHN5cy9taXBzL21pcHMvZXhjZXB0aW9uLlMJKHdvcmtpbmcgY29weSkKQEAgLTEz Nyw3ICsxMzcsMTUgQEAKIAlQVFJfTAkJazEsIDAoazEpCQkJIzA4OiBrMT1zZWcgZW50cnkKIAlN RkMwCQlrMCwgTUlQU19DT1BfMF9CQURfVkFERFIJIzA5OiBrMD1iYWQgYWRkcmVzcyAoYWdhaW4p CiAJYmVxCQlrMSwgemVybywgMmYJCQkjMGE6ID09MCAtLSBubyBwYWdlIHRhYmxlCi0Jc3JsCQlr MCwgUEFHRV9TSElGVCAtIDIJCSMwYjogazA9VlBOIChha2EgdmE+PjEwKQorI2lmZGVmIF9fbWlw c19uNjQKKwlQVFJfU1JMCQlrMCwgUERSU0hJRlQgLSBQVFJTSElGVAkJIyBrMD1WUE4KKwlhbmRp CQlrMCwgazAsIFBUUk1BU0sJCQkjIGswPXBkZSBvZmZzZXQKKwlQVFJfQUREVQlrMSwgazAsIGsx CQkJIyBrMT1wZGUgZW50cnkgYWRkcmVzcworCVBUUl9MCQlrMSwgMChrMSkJCQkjIGsxPXBkZSBl bnRyeQorCU1GQzAJCWswLCBNSVBTX0NPUF8wX0JBRF9WQUREUgkjIGswPWJhZCBhZGRyZXNzIChh Z2FpbikKKwliZXEJCWsxLCB6ZXJvLCAyZgkJCSMgPT0wIC0tIG5vIHBhZ2UgdGFibGUKKyNlbmRp ZgorCVBUUl9TUkwJCWswLCBQQUdFX1NISUZUIC0gMgkJIzBiOiBrMD1WUE4gKGFrYSB2YT4+MTAp CiAJYW5kaQkJazAsIGswLCAweGZmOAkJCSMwYzogazA9cGFnZSB0YWIgb2Zmc2V0CiAJUFRSX0FE RFUJazEsIGsxLCBrMAkJCSMwZDogazE9cHRlIGFkZHJlc3MKIAlsdwkJazAsIDAoazEpCQkJIzBl OiBrMD1sbzAgcHRlCkBAIC04MzYsNiArODQ0LDE4IEBACiAJYmVxegkJazEsIDNmCiAJbm9wCiAK KyNpZmRlZiBfX21pcHNfbjY0CisJTUZDMAkJazAsIE1JUFNfQ09QXzBfQkFEX1ZBRERSCisJUFRS X1NSTAkJazAsIFBEUlNISUZUIC0gUFRSU0hJRlQJCSMgazA9cGRlIG9mZnNldCAoYWxtb3N0KQor CWJlcQkJazEsIHplcm8sIE1pcHNLZXJuR2VuRXhjZXB0aW9uCSMgPT0wIC0tIG5vIHBkZSB0YWIK KwlhbmRpCQlrMCwgazAsIFBUUk1BU0sJCQkjIGswPXBkZSBvZmZzZXQKKwlQVFJfQUREVQlrMSwg azAsIGsxCQkJIyBrMT1wZGUgZW50cnkgYWRkcmVzcworCVBUUl9MCQlrMSwgMChrMSkJCQkjIGsx PXBkZSBlbnRyeQorCisJLyogVmFsaWRhdGUgcGRlIHRhYmxlIHBvaW50ZXIuICAqLworCWJlcXoJ CWsxLCAzZgorCW5vcAorI2VuZGlmCiAJTUZDMAkJazAsIE1JUFNfQ09QXzBfQkFEX1ZBRERSCSMg azA9YmFkIGFkZHJlc3MgKGFnYWluKQogCVBUUl9TUkwJCWswLCBQQUdFX1NISUZUIC0gMgkJIyBr MD1WUE4KIAlhbmRpCQlrMCwgazAsIDB4ZmZjCQkJIyBrMD1wYWdlIHRhYiBvZmZzZXQKQEAgLTk5 Niw2ICsxMDE2LDE0IEBACiAJUFRSX0wJCWsxLCAwKGsxKQkJCSMgazE9c2VnIGVudHJ5CiAJTUZD MAkJazAsIE1JUFNfQ09QXzBfQkFEX1ZBRERSCSMgazA9YmFkIGFkZHJlc3MgKGFnYWluKQogCWJl cQkJazEsIHplcm8sIE1pcHNLZXJuR2VuRXhjZXB0aW9uCSMgPT0wIC0tIG5vIHBhZ2UgdGFibGUK KyNpZmRlZiBfX21pcHNfbjY0CisJUFRSX1NSTAkJazAsIFBEUlNISUZUIC0gUFRSU0hJRlQJCSMg azA9VlBOCisJYW5kaQkJazAsIGswLCBQVFJNQVNLCQkJIyBrMD1wZGUgb2Zmc2V0CisJUFRSX0FE RFUJazEsIGswLCBrMQkJCSMgazE9cGRlIGVudHJ5IGFkZHJlc3MKKwlQVFJfTAkJazEsIDAoazEp CQkJIyBrMT1wZGUgZW50cnkKKwlNRkMwCQlrMCwgTUlQU19DT1BfMF9CQURfVkFERFIJIyBrMD1i YWQgYWRkcmVzcyAoYWdhaW4pCisgIAliZXEJCWsxLCB6ZXJvLCBNaXBzS2VybkdlbkV4Y2VwdGlv bgkjID09MCAtLSBubyBwYWdlIHRhYmxlCisjZW5kaWYKIAlQVFJfU1JMCQlrMCwgUEFHRV9TSElG VCAtIDIJCSMgazA9VlBOCiAJYW5kaQkJazAsIGswLCAweGZmOAkJCSMgazA9cGFnZSB0YWIgb2Zm c2V0CiAJUFRSX0FERFUJazEsIGsxLCBrMAkJCSMgazE9cHRlIGFkZHJlc3MKSW5kZXg6IHN5cy9t aXBzL21pcHMvZ2VuYXNzeW0uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBzL2dlbmFzc3lt LmMJKHJldmlzaW9uIDIxMDc5NikKKysrIHN5cy9taXBzL21pcHMvZ2VuYXNzeW0uYwkod29ya2lu ZyBjb3B5KQpAQCAtOTMsNiArOTMsNyBAQAogQVNTWU0oUEFHRV9TSElGVCwgUEFHRV9TSElGVCk7 CiBBU1NZTShQQUdFX1NJWkUsIFBBR0VfU0laRSk7CiBBU1NZTShQQUdFX01BU0ssIFBBR0VfTUFT Syk7CitBU1NZTShQRFJTSElGVCwgUERSU0hJRlQpOwogQVNTWU0oU0VHU0hJRlQsIFNFR1NISUZU KTsKIEFTU1lNKE5QVEVQRywgTlBURVBHKTsKIEFTU1lNKFRERl9ORUVEUkVTQ0hFRCwgVERGX05F RURSRVNDSEVEKTsKSW5kZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5 cy9taXBzL21pcHMvcG1hcC5jCShyZXZpc2lvbiAyMTA3OTYpCisrKyBzeXMvbWlwcy9taXBzL3Bt YXAuYwkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksOCBAQAogX19GQlNESUQoIiRGcmVlQlNE JCIpOwogCiAjaW5jbHVkZSAib3B0X21zZ2J1Zi5oIgorI2luY2x1ZGUgIm9wdF9kZGIuaCIKKwog I2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgogI2luY2x1ZGUg PHN5cy9wcm9jLmg+CkBAIC03Niw2ICs3OCw5IEBACiAjaW5jbHVkZSA8c3lzL3ZtbWV0ZXIuaD4K ICNpbmNsdWRlIDxzeXMvbW1hbi5oPgogI2luY2x1ZGUgPHN5cy9zbXAuaD4KKyNpZmRlZiBEREIK KyNpbmNsdWRlIDxkZGIvZGRiLmg+CisjZW5kaWYKIAogI2luY2x1ZGUgPHZtL3ZtLmg+CiAjaW5j bHVkZSA8dm0vdm1fcGFyYW0uaD4KQEAgLTEyNSwyMyArMTMwLDIxIEBACiAgKiAgICAgaXMgZGVm aW5lZCBzdWNoIHRoYXQgaXQgZW5kcyBpbW1lZGlhdGVseSBhZnRlciBOUERFUEcqTlBURVBHKlBB R0VfU0laRSwKICAqICAgICBzbyB3ZSBlbmQgdXAgZ2V0dGluZyBOVVNFUlBHVEJMUyBvZiAwLgog ICovCi0jZGVmaW5lCXBtYXBfc2Vnc2hpZnQodikJKCgodikgPj4gU0VHU0hJRlQpICYgKE5QREVQ RyAtIDEpKQotI2RlZmluZQlzZWd0YWJfcGRlKG0sIHYpCSgobSlbcG1hcF9zZWdzaGlmdCgodikp XSkKKyNkZWZpbmUJcG1hcF9zZWdfaW5kZXgodikJKCgodikgPj4gU0VHU0hJRlQpICYgKE5QREVQ RyAtIDEpKQorI2RlZmluZQlwbWFwX3BkZV9pbmRleCh2KQkoKCh2KSA+PiBQRFJTSElGVCkgJiAo TlBERVBHIC0gMSkpCisjZGVmaW5lCXBtYXBfcHRlX2luZGV4KHYpCSgoKHYpID4+IFBBR0VfU0hJ RlQpICYgKE5QVEVQRyAtIDEpKQorI2RlZmluZQlwbWFwX3BkZV9waW5kZXgodikJKCh2KSA+PiBQ RFJTSElGVCkgICAgIC8qIFhYWCBUT0RPICovCiAKLSNpZiBkZWZpbmVkKF9fbWlwc19uNjQpCi0j ZGVmaW5lCU5VU0VSUEdUQkxTCQkoTlBERVBHKQorI2lmZGVmIF9fbWlwc19uNjQKKyNkZWZpbmUJ TlVQREUJCQkoTlBERVBHICogTlBERVBHKQorI2RlZmluZQlOVVNFUlBHVEJMUwkJKE5VUERFICsg TlBERVBHKQogI2Vsc2UKLSNkZWZpbmUJTlVTRVJQR1RCTFMJCShwbWFwX3NlZ3NoaWZ0KFZNX01B WFVTRVJfQUREUkVTUykpCisjZGVmaW5lCU5VUERFCQkJKE5QREVQRykKKyNkZWZpbmUJTlVTRVJQ R1RCTFMJCShOVVBERSkKICNlbmRpZgotI2RlZmluZQltaXBzX3NlZ3RydW5jKHZhKQkoKHZhKSAm IH5TRUdNQVNLKQorCiAjZGVmaW5lCWlzX2tlcm5lbF9wbWFwKHgpCSgoeCkgPT0ga2VybmVsX3Bt YXApCiAKLS8qCi0gKiBHaXZlbiBhIHZpcnR1YWwgYWRkcmVzcywgZ2V0IHRoZSBvZmZzZXQgb2Yg aXRzIFBURSB3aXRoaW4gaXRzIHBhZ2UKLSAqIGRpcmVjdG9yeSBwYWdlLgotICovCi0jZGVmaW5l CVBERV9PRkZTRVQodmEpCSgoKHZtX29mZnNldF90KSh2YSkgPj4gUEFHRV9TSElGVCkgJiAoTlBU RVBHIC0gMSkpCi0KIHN0cnVjdCBwbWFwIGtlcm5lbF9wbWFwX3N0b3JlOwogcGRfZW50cnlfdCAq a2VybmVsX3NlZ21hcDsKIApAQCAtMTUxLDEwICsxNTQsOSBAQAogc3RhdGljIGludCBua3B0Owog dW5zaWduZWQgcG1hcF9tYXhfYXNpZDsJCS8qIG1heCBBU0lEIHN1cHBvcnRlZCBieSB0aGUgc3lz dGVtICovCiAKLQogI2RlZmluZQlQTUFQX0FTSURfUkVTRVJWRUQJMAogCi12bV9vZmZzZXRfdCBr ZXJuZWxfdm1fZW5kOwordm1fb2Zmc2V0X3Qga2VybmVsX3ZtX2VuZCA9IFZNX01JTl9LRVJORUxf QUREUkVTUzsKIAogc3RhdGljIHZvaWQgcG1hcF9hc2lkX2FsbG9jKHBtYXBfdCBwbWFwKTsKIApA QCAtMTc5LDExICsxODEsMTAgQEAKIHN0YXRpYyB2b2lkIHBtYXBfcmVtb3ZlX2VudHJ5KHN0cnVj dCBwbWFwICpwbWFwLCB2bV9wYWdlX3QgbSwgdm1fb2Zmc2V0X3QgdmEpOwogc3RhdGljIGJvb2xl YW5fdCBwbWFwX3RyeV9pbnNlcnRfcHZfZW50cnkocG1hcF90IHBtYXAsIHZtX3BhZ2VfdCBtcHRl LAogICAgIHZtX29mZnNldF90IHZhLCB2bV9wYWdlX3QgbSk7Ci1zdGF0aWMgX19pbmxpbmUgdm9p ZAotcG1hcF9pbnZhbGlkYXRlX3BhZ2UocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhKTsKK3N0 YXRpYyBfX2lubGluZSB2b2lkIHBtYXBfaW52YWxpZGF0ZV9wYWdlKHBtYXBfdCBwbWFwLCB2bV9v ZmZzZXRfdCB2YSk7CitzdGF0aWMgaW50IF9wbWFwX3Vud2lyZV9wdGVfaG9sZChwbWFwX3QgcG1h cCwgdm1fb2Zmc2V0X3QgdmEsIHZtX3BhZ2VfdCBtKTsKIAogc3RhdGljIHZtX3BhZ2VfdCBwbWFw X2FsbG9jcHRlKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRfdCB2YSwgaW50IGZsYWdzKTsKLQogc3Rh dGljIHZtX3BhZ2VfdCBfcG1hcF9hbGxvY3B0ZShwbWFwX3QgcG1hcCwgdW5zaWduZWQgcHRlcGlu ZGV4LCBpbnQgZmxhZ3MpOwogc3RhdGljIGludCBwbWFwX3VudXNlX3B0KHBtYXBfdCwgdm1fb2Zm c2V0X3QsIHZtX3BhZ2VfdCk7CiBzdGF0aWMgaW50IGluaXRfcHRlX3Byb3Qodm1fb2Zmc2V0X3Qg dmEsIHZtX3BhZ2VfdCBtLCB2bV9wcm90X3QgcHJvdCk7CkBAIC0yNTksMzYgKzI2MCw3MSBAQAog CWludHJfcmVzdG9yZShpbnRyKQogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgcHRfZW50cnlfdCAq CisvKgorICogUGFnZSB0YWJsZSBlbnRyeSBsb29rdXAgcm91dGluZXMuCisgKi8KK3N0YXRpYyBf X2lubGluZSBwZF9lbnRyeV90ICoKIHBtYXBfc2VnbWFwKHBtYXBfdCBwbWFwLCB2bV9vZmZzZXRf dCB2YSkKIHsKLQlpZiAocG1hcC0+cG1fc2VndGFiICE9IE5VTEwpCi0JCXJldHVybiAoc2VndGFi X3BkZShwbWFwLT5wbV9zZWd0YWIsIHZhKSk7Ci0JZWxzZQorCXJldHVybiAoJnBtYXAtPnBtX3Nl Z3RhYltwbWFwX3NlZ19pbmRleCh2YSldKTsKK30KKworI2lmZGVmIF9fbWlwc19uNjQKK3N0YXRp YyBfX2lubGluZSBwZF9lbnRyeV90ICoKK3BtYXBfcGRwZV90b19wZGUocGRfZW50cnlfdCAqcGRw ZSwgdm1fb2Zmc2V0X3QgdmEpCit7CisJcGRfZW50cnlfdCAqcGRlOworCisJcGRlID0gKHBkX2Vu dHJ5X3QgKikqcGRwZTsKKwlyZXR1cm4gKCZwZGVbcG1hcF9wZGVfaW5kZXgodmEpXSk7Cit9CisK K3N0YXRpYyBfX2lubGluZSBwZF9lbnRyeV90ICoKK3BtYXBfcGRlKHBtYXBfdCBwbWFwLCB2bV9v ZmZzZXRfdCB2YSkKK3sKKwlwZF9lbnRyeV90ICpwZHBlOworCisJcGRwZSA9IHBtYXBfc2VnbWFw KHBtYXAsIHZhKTsKKwlpZiAocGRwZSA9PSBOVUxMIHx8ICpwZHBlID09IE5VTEwpCiAJCXJldHVy biAoTlVMTCk7CisKKwlyZXR1cm4gKHBtYXBfcGRwZV90b19wZGUocGRwZSwgdmEpKTsKIH0KKyNl bHNlCitzdGF0aWMgX19pbmxpbmUgcGRfZW50cnlfdCAqCitwbWFwX3BkcGVfdG9fcGRlKHBkX2Vu dHJ5X3QgKnBkcGUsIHZtX29mZnNldF90IHZhKQoreworCXJldHVybiBwZHBlOworfQogCi0vKgot ICoJUm91dGluZToJcG1hcF9wdGUKLSAqCUZ1bmN0aW9uOgotICoJCUV4dHJhY3QgdGhlIHBhZ2Ug dGFibGUgZW50cnkgYXNzb2NpYXRlZAotICoJCXdpdGggdGhlIGdpdmVuIG1hcC92aXJ0dWFsX2Fk ZHJlc3MgcGFpci4KLSAqLworc3RhdGljIF9faW5saW5lIAorcGRfZW50cnlfdCAqcG1hcF9wZGUo cG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZhKQoreworCXJldHVybiBwbWFwX3NlZ21hcChwbWFw LCB2YSk7Cit9CisjZW5kaWYKKworc3RhdGljIF9faW5saW5lIHB0X2VudHJ5X3QgKgorcG1hcF9w ZGVfdG9fcHRlKHBkX2VudHJ5X3QgKnBkZSwgdm1fb2Zmc2V0X3QgdmEpCit7CisJcHRfZW50cnlf dCAqcHRlOworCisJcHRlID0gKHB0X2VudHJ5X3QgKikqcGRlOworCXJldHVybiAoJnB0ZVtwbWFw X3B0ZV9pbmRleCh2YSldKTsKK30KKwogcHRfZW50cnlfdCAqCiBwbWFwX3B0ZShwbWFwX3QgcG1h cCwgdm1fb2Zmc2V0X3QgdmEpCiB7Ci0JcHRfZW50cnlfdCAqcGRlYWRkcjsKKwlwZF9lbnRyeV90 ICpwZGU7CiAKLQlpZiAocG1hcCkgewotCQlwZGVhZGRyID0gcG1hcF9zZWdtYXAocG1hcCwgdmEp OwotCQlpZiAocGRlYWRkcikgewotCQkJcmV0dXJuIHBkZWFkZHIgKyBQREVfT0ZGU0VUKHZhKTsK LQkJfQotCX0KLQlyZXR1cm4gKChwdF9lbnRyeV90ICopMCk7CisJcGRlID0gcG1hcF9wZGUocG1h cCwgdmEpOworCWlmIChwZGUgPT0gTlVMTCB8fCAqcGRlID09IE5VTEwpCisJCXJldHVybiAoTlVM TCk7CisKKwlyZXR1cm4gKHBtYXBfcGRlX3RvX3B0ZShwZGUsIHZhKSk7CiB9CiAKLQogdm1fb2Zm c2V0X3QKIHBtYXBfc3RlYWxfbWVtb3J5KHZtX3NpemVfdCBzaXplKQogewpAQCAtMzI2LDEyICsz NjIsNjkgQEAKICAqIEJvb3RzdHJhcCB0aGUgc3lzdGVtIGVub3VnaCB0byBydW4gd2l0aCB2aXJ0 dWFsIG1lbW9yeS4gIFRoaXMKICAqIGFzc3VtZXMgdGhhdCB0aGUgcGh5c19hdmFpbCBhcnJheSBo YXMgYmVlbiBpbml0aWFsaXplZC4KICAqLworc3RhdGljIHZvaWQgCitwbWFwX2NyZWF0ZV9rZXJu ZWxfcGFnZXRhYmxlKHZvaWQpCit7CisJaW50IGksIGo7CisJdm1fb2Zmc2V0X3QgcHRhZGRyOwor CXB0X2VudHJ5X3QgKnB0ZTsKKyNpZmRlZiBfX21pcHNfbjY0CisJcGRfZW50cnlfdCAqcGRlOwor CXZtX29mZnNldF90IHBkYWRkcjsKKwlpbnQgbnB0LCBucGRlOworI2VuZGlmCisKKwkvKgorCSAq IEFsbG9jYXRlIHNlZ21lbnQgdGFibGUgZm9yIHRoZSBrZXJuZWwKKwkgKi8KKwlrZXJuZWxfc2Vn bWFwID0gKHBkX2VudHJ5X3QgKilwbWFwX3N0ZWFsX21lbW9yeShQQUdFX1NJWkUpOworCisJLyoK KwkgKiBBbGxvY2F0ZSBzZWNvbmQgbGV2ZWwgcGFnZSB0YWJsZXMgZm9yIHRoZSBrZXJuZWwKKwkg Ki8KKyNpZmRlZiBfX21pcHNfbjY0CisJbnBkZSA9IGhvd21hbnkoTktQVCwgTlBERVBHKTsKKwlw ZGFkZHIgPSBwbWFwX3N0ZWFsX21lbW9yeShQQUdFX1NJWkUgKiBucGRlKTsKKyNlbmRpZgorCW5r cHQgPSBOS1BUOworCXB0YWRkciA9IHBtYXBfc3RlYWxfbWVtb3J5KFBBR0VfU0laRSAqIG5rcHQp OworCisJLyoKKwkgKiBUaGUgUls0LTddPzAwIHN0b3JlcyBvbmx5IG9uZSBjb3B5IG9mIHRoZSBH bG9iYWwgYml0IGluIHRoZQorCSAqIHRyYW5zbGF0aW9uIGxvb2thc2lkZSBidWZmZXIgZm9yIGVh Y2ggMiBwYWdlIGVudHJ5LiBUaHVzIGludmFsaWQKKwkgKiBlbnRyeXMgbXVzdCBoYXZlIHRoZSBH bG9iYWwgYml0IHNldCBzbyB3aGVuIEVudHJ5IExPIGFuZCBFbnRyeSBISQorCSAqIEcgYml0cyBh cmUgYW5kZWQgdG9nZXRoZXIgdGhleSB3aWxsIHByb2R1Y2UgYSBnbG9iYWwgYml0IHRvIHN0b3Jl CisJICogaW4gdGhlIHRsYi4KKwkgKi8KKwlmb3IgKGkgPSAwLCBwdGUgPSAocHRfZW50cnlfdCAq KXB0YWRkcjsgaSA8IChua3B0ICogTlBURVBHKTsgaSsrLCBwdGUrKykKKwkJKnB0ZSA9IFBURV9H OworCisjaWZkZWYgX19taXBzX242NAorCWZvciAoaSA9IDAsICBucHQgPSBua3B0OyBucHQgPiAw OyBpKyspIHsKKwkJa2VybmVsX3NlZ21hcFtpXSA9IChwZF9lbnRyeV90KShwZGFkZHIgKyBpICog UEFHRV9TSVpFKTsKKwkJcGRlID0gKHBkX2VudHJ5X3QgKilrZXJuZWxfc2VnbWFwW2ldOworCisJ CWZvciAoaiA9IDA7IGogPCBOUERFUEcgJiYgbnB0ID4gMDsgaisrLCBucHQtLSkKKwkJCXBkZVtq XSA9IChwZF9lbnRyeV90KShwdGFkZHIgKyAoaSAqIE5QREVQRyArIGopICogUEFHRV9TSVpFKTsK Kwl9CisjZWxzZQorCWZvciAoaSA9IDAsIGogPSBwbWFwX3NlZ19pbmRleChWTV9NSU5fS0VSTkVM X0FERFJFU1MpOyBpIDwgbmtwdDsgaSsrLCBqKyspCisJCWtlcm5lbF9zZWdtYXBbal0gPSAocGRf ZW50cnlfdCkocHRhZGRyICsgKGkgKiBQQUdFX1NJWkUpKTsKKyNlbmRpZgorCisJUE1BUF9MT0NL X0lOSVQoa2VybmVsX3BtYXApOworCWtlcm5lbF9wbWFwLT5wbV9zZWd0YWIgPSBrZXJuZWxfc2Vn bWFwOworCWtlcm5lbF9wbWFwLT5wbV9hY3RpdmUgPSB+MDsKKwlUQUlMUV9JTklUKCZrZXJuZWxf cG1hcC0+cG1fcHZsaXN0KTsKKwlrZXJuZWxfcG1hcC0+cG1fYXNpZFswXS5hc2lkID0gUE1BUF9B U0lEX1JFU0VSVkVEOworCWtlcm5lbF9wbWFwLT5wbV9hc2lkWzBdLmdlbiA9IDA7CisJa2VybmVs X3ZtX2VuZCArPSBua3B0ICogTlBURVBHICogUEFHRV9TSVpFOworfQorCiB2b2lkCiBwbWFwX2Jv b3RzdHJhcCh2b2lkKQogewotCXB0X2VudHJ5X3QgKnBndGFiOwotCXB0X2VudHJ5X3QgKnB0ZTsK LQlpbnQgaSwgajsKKwlpbnQgaTsKICNpZiAhZGVmaW5lZChfX21pcHNfbjY0KQogCWludCBtZW1v cnlfbGFyZ2VyX3RoYW5fNTEybWVnID0gMDsKICNlbmRpZgpAQCAtNDQwLDY2ICs1MzMsMTAgQEAK IAkJfQogCX0KICNlbmRpZgotCi0JLyoKLQkgKiBBbGxvY2F0ZSBzZWdtZW50IHRhYmxlIGZvciB0 aGUga2VybmVsCi0JICovCi0Ja2VybmVsX3NlZ21hcCA9IChwZF9lbnRyeV90ICopcG1hcF9zdGVh bF9tZW1vcnkoUEFHRV9TSVpFKTsKLQotCS8qCi0JICogQWxsb2NhdGUgc2Vjb25kIGxldmVsIHBh Z2UgdGFibGVzIGZvciB0aGUga2VybmVsCi0JICovCi0JbmtwdCA9IE5LUFQ7Ci0jaWYgIWRlZmlu ZWQoX19taXBzX242NCkKLQlpZiAobWVtb3J5X2xhcmdlcl90aGFuXzUxMm1lZykgewotCQkvKgot CQkgKiBJZiB3ZSBoYXZlIGEgbGFyZ2UgbWVtb3J5IHN5c3RlbSB3ZSBDQU5OT1QgYWZmb3JkIHRv IGhpdAotCQkgKiBwbWFwX2dyb3drZXJuZWwoKSBhbmQgYWxsb2NhdGUgbWVtb3J5LiBTaW5jZSB3 ZSBNQVkgZW5kCi0JCSAqIHVwIHdpdGggYSBwYWdlIHRoYXQgaXMgTk9UIG1hcHBhYmxlLiBGb3Ig dGhhdCByZWFzb24gd2UKLQkJICogdXAgZnJvbnQgZ3JhYiBtb3JlLiBOb3JtYWxsIE5LUFQgaXMg MTIwIChZTU1WIHNlZSBwbWFwLmgpCi0JCSAqIHRoaXMgZ2l2ZXMgdXMgNDgwbWVnIG9mIGtlcm5l bCB2aXJ0dWFsIGFkZHJlc3NlcyBhdCB0aGUKLQkJICogY29zdCBvZiAxMjAgcGFnZXMgKGVhY2gg cGFnZSBnZXRzIHVzIDQgTWVnKS4gU2luY2UgdGhlCi0JCSAqIGtlcm5lbCBzdGFydHMgYXQgdmly dHVhbF9hdmFpbCwgd2UgY2FuIHVzZSB0aGlzIHRvCi0JCSAqIGNhbGN1bGF0ZSBob3cgbWFueSBl bnRyaXMgYXJlIGxlZnQgZnJvbSB0aGVyZSB0byB0aGUgZW5kCi0JCSAqIG9mIHRoZSBzZWdtYXAs IHdlIHdhbnQgdG8gYWxsb2NhdGUgYWxsIG9mIGl0LCB3aGljaCB3b3VsZAotCQkgKiBiZSBzb21l d2hlcmUgYWJvdmUgMHhDMDAwMDAwMCAtIDB4RkZGRkZGRkYgd2hpY2ggcmVzdWx0cwotCQkgKiBp biBhYm91dCAyNTYgZW50cmllcyBvciBzbyBpbnN0ZWFkIG9mIHRoZSAxMjAuCi0JCSAqLwotCQlu a3B0ID0gKFBBR0VfU0laRSAvIHNpemVvZihwZF9lbnRyeV90KSkgLSAodmlydHVhbF9hdmFpbCA+ PiBTRUdTSElGVCk7Ci0JfQotI2VuZGlmCi0JcGd0YWIgPSAocHRfZW50cnlfdCAqKXBtYXBfc3Rl YWxfbWVtb3J5KFBBR0VfU0laRSAqIG5rcHQpOwotCi0JLyoKLQkgKiBUaGUgUls0LTddPzAwIHN0 b3JlcyBvbmx5IG9uZSBjb3B5IG9mIHRoZSBHbG9iYWwgYml0IGluIHRoZQotCSAqIHRyYW5zbGF0 aW9uIGxvb2thc2lkZSBidWZmZXIgZm9yIGVhY2ggMiBwYWdlIGVudHJ5LiBUaHVzIGludmFsaWQK LQkgKiBlbnRyeXMgbXVzdCBoYXZlIHRoZSBHbG9iYWwgYml0IHNldCBzbyB3aGVuIEVudHJ5IExP IGFuZCBFbnRyeSBISQotCSAqIEcgYml0cyBhcmUgYW5kZWQgdG9nZXRoZXIgdGhleSB3aWxsIHBy b2R1Y2UgYSBnbG9iYWwgYml0IHRvIHN0b3JlCi0JICogaW4gdGhlIHRsYi4KLQkgKi8KLQlmb3Ig KGkgPSAwLCBwdGUgPSBwZ3RhYjsgaSA8IChua3B0ICogTlBURVBHKTsgaSsrLCBwdGUrKykKLQkJ KnB0ZSA9IFBURV9HOwotCi0JLyoKLQkgKiBUaGUgc2VnbWVudCB0YWJsZSBjb250YWlucyB0aGUg S1ZBIG9mIHRoZSBwYWdlcyBpbiB0aGUgc2Vjb25kCi0JICogbGV2ZWwgcGFnZSB0YWJsZS4KLQkg Ki8KLQlmb3IgKGkgPSAwLCBqID0gKHZpcnR1YWxfYXZhaWwgPj4gU0VHU0hJRlQpOyBpIDwgbmtw dDsgaSsrLCBqKyspCi0JCWtlcm5lbF9zZWdtYXBbal0gPSAocGRfZW50cnlfdCkocGd0YWIgKyAo aSAqIE5QVEVQRykpOwotCi0JLyoKLQkgKiBUaGUga2VybmVsJ3MgcG1hcCBpcyBzdGF0aWNhbGx5 IGFsbG9jYXRlZCBzbyB3ZSBkb24ndCBoYXZlIHRvIHVzZQotCSAqIHBtYXBfY3JlYXRlLCB3aGlj aCBpcyB1bmxpa2VseSB0byB3b3JrIGNvcnJlY3RseSBhdCB0aGlzIHBhcnQgb2YKLQkgKiB0aGUg Ym9vdCBzZXF1ZW5jZSAoWFhYIGFuZCB3aGljaCBubyBsb25nZXIgZXhpc3RzKS4KLQkgKi8KLQlQ TUFQX0xPQ0tfSU5JVChrZXJuZWxfcG1hcCk7Ci0Ja2VybmVsX3BtYXAtPnBtX3NlZ3RhYiA9IGtl cm5lbF9zZWdtYXA7Ci0Ja2VybmVsX3BtYXAtPnBtX2FjdGl2ZSA9IH4wOwotCVRBSUxRX0lOSVQo Jmtlcm5lbF9wbWFwLT5wbV9wdmxpc3QpOwotCWtlcm5lbF9wbWFwLT5wbV9hc2lkWzBdLmFzaWQg PSBQTUFQX0FTSURfUkVTRVJWRUQ7Ci0Ja2VybmVsX3BtYXAtPnBtX2FzaWRbMF0uZ2VuID0gMDsK KwlwbWFwX2NyZWF0ZV9rZXJuZWxfcGFnZXRhYmxlKCk7CiAJcG1hcF9tYXhfYXNpZCA9IFZNTlVN X1BJRFM7CiAJbWlwc193cl9lbnRyeWhpKDApOworCW1pcHNfd3JfcGFnZW1hc2soMCk7CiB9CiAK IC8qCkBAIC03MzgsNiArNzc1LDggQEAKIAkJbnB0ZSB8PSBQVEVfQ19VTkNBQ0hFRDsKIAogCXB0 ZSA9IHBtYXBfcHRlKGtlcm5lbF9wbWFwLCB2YSk7CisJaWYgKHB0ZSA9PSBOVUxMKQorCQlwcmlu dGYoInZhICVwIHNlZ21hcCAtICVwIHNlZ19pbmRleCAlbHgsIHB0ZV9pbmRleCAlbHhcbiIsICh2 b2lkICopdmEsIGtlcm5lbF9wbWFwLT5wbV9zZWd0YWIsICh1X2xvbmcpcG1hcF9zZWdfaW5kZXgo dmEpLCh1X2xvbmcpIHBtYXBfcHRlX2luZGV4KHZhKSk7CiAJb3B0ZSA9ICpwdGU7CiAJKnB0ZSA9 IG5wdGU7CiAKQEAgLTg1OCwxOSArODk3LDU2IEBACiAgKiBUaGlzIHJvdXRpbmUgdW5ob2xkcyBw YWdlIHRhYmxlIHBhZ2VzLCBhbmQgaWYgdGhlIGhvbGQgY291bnQKICAqIGRyb3BzIHRvIHplcm8s IHRoZW4gaXQgZGVjcmVtZW50cyB0aGUgd2lyZSBjb3VudC4KICAqLworc3RhdGljIFBNQVBfSU5M SU5FIGludAorcG1hcF91bndpcmVfcHRlX2hvbGQocG1hcF90IHBtYXAsIHZtX29mZnNldF90IHZh LCB2bV9wYWdlX3QgbSkKK3sKKwktLW0tPndpcmVfY291bnQ7CisJaWYgKG0tPndpcmVfY291bnQg PT0gMCkKKwkJcmV0dXJuIChfcG1hcF91bndpcmVfcHRlX2hvbGQocG1hcCwgdmEsIG0pKTsKKwll bHNlCisJCXJldHVybiAoMCk7Cit9CisKIHN0YXRpYyBpbnQKLV9wbWFwX3Vud2lyZV9wdGVfaG9s ZChwbWFwX3QgcG1hcCwgdm1fcGFnZV90IG0pCitfcG1hcF91bndpcmVfcHRlX2hvbGQocG1hcF90 IHBtYXAsIHZtX29mZnNldF90IHZhLCB2bV9wYWdlX3QgbSkKIHsKKwlwZF9lbnRyeV90ICpwZGU7 CiAKKwlQTUFQX0xPQ0tfQVNTRVJUKHBtYXAsIE1BX09XTkVEKTsKIAkvKgogCSAqIHVubWFwIHRo ZSBwYWdlIHRhYmxlIHBhZ2UKIAkgKi8KLQlwbWFwLT5wbV9zZWd0YWJbbS0+cGluZGV4XSA9IDA7 Ci0JLS1wbWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudDsKKyNpZmRlZiBfX21pcHNfbjY0CisJ aWYgKG0tPnBpbmRleCA8IE5VUERFKQorCQlwZGUgPSBwbWFwX3BkZShwbWFwLCB2YSk7CisJZWxz ZQorCQlwZGUgPSBwbWFwX3NlZ21hcChwbWFwLCB2YSk7CisJKnBkZSA9IDA7CisjZWxzZQorCXBk ZSA9IHBtYXBfcGRlKHBtYXAsIHZhKTsKKyNlbmRpZgorCSpwZGUgPSAwOworCXBtYXAtPnBtX3N0 YXRzLnJlc2lkZW50X2NvdW50LS07CiAKKyNpZmRlZiBfX21pcHNfbjY0CisJaWYgKG0tPnBpbmRl eCA8IE5VUERFKSB7CisJCXBkX2VudHJ5X3QgKnBkcDsKKwkJdm1fcGFnZV90IHBkcGc7CisKKwkJ LyoKKwkJICogUmVjdXJzaXZlbHkgZGVjcmVtZW50IG5leHQgbGV2ZWwgcGFnZXRhYmxlIHJlZmNv dW50CisJCSAqLworCQlpZiAocG1hcC0+cG1fcHRwaGludCA9PSBtKQorCQkJcG1hcC0+cG1fcHRw aGludCA9IE5VTEw7CisKKwkJcGRwID0gKHBkX2VudHJ5X3QgKikqcG1hcF9zZWdtYXAocG1hcCwg dmEpOworCQlwZHBnID0gUEhZU19UT19WTV9QQUdFKE1JUFNfS1NFRzBfVE9fUEhZUyhwZHApKTsK KwkJcG1hcF91bndpcmVfcHRlX2hvbGQocG1hcCwgdmEsIHBkcGcpOworCX0KKyNlbHNlCiAJaWYg KHBtYXAtPnBtX3B0cGhpbnQgPT0gbSkKIAkJcG1hcC0+cG1fcHRwaGludCA9IE5VTEw7Ci0KKyNl bmRpZgogCS8qCiAJICogSWYgdGhlIHBhZ2UgaXMgZmluYWxseSB1bndpcmVkLCBzaW1wbHkgZnJl ZSBpdC4KIAkgKi8KQEAgLTg3OSwxNiArOTU1LDYgQEAKIAlyZXR1cm4gKDEpOwogfQogCi1zdGF0 aWMgUE1BUF9JTkxJTkUgaW50Ci1wbWFwX3Vud2lyZV9wdGVfaG9sZChwbWFwX3QgcG1hcCwgdm1f cGFnZV90IG0pCi17Ci0JLS1tLT53aXJlX2NvdW50OwotCWlmIChtLT53aXJlX2NvdW50ID09IDAp Ci0JCXJldHVybiAoX3BtYXBfdW53aXJlX3B0ZV9ob2xkKHBtYXAsIG0pKTsKLQllbHNlCi0JCXJl dHVybiAoMCk7Ci19Ci0KIC8qCiAgKiBBZnRlciByZW1vdmluZyBhIHBhZ2UgdGFibGUgZW50cnks IHRoaXMgcm91dGluZSBpcyB1c2VkIHRvCiAgKiBjb25kaXRpb25hbGx5IGZyZWUgdGhlIHBhZ2Us IGFuZCBtYW5hZ2UgdGhlIGhvbGQvd2lyZSBjb3VudHMuCkBAIC05MDMsMTcgKzk2OSwxNyBAQAog CQlyZXR1cm4gKDApOwogCiAJaWYgKG1wdGUgPT0gTlVMTCkgewotCQlwdGVwaW5kZXggPSBwbWFw X3NlZ3NoaWZ0KHZhKTsKKwkJcHRlcGluZGV4ID0gcG1hcF9wZGVfcGluZGV4KHZhKTsKIAkJaWYg KHBtYXAtPnBtX3B0cGhpbnQgJiYKIAkJICAgIChwbWFwLT5wbV9wdHBoaW50LT5waW5kZXggPT0g cHRlcGluZGV4KSkgewogCQkJbXB0ZSA9IHBtYXAtPnBtX3B0cGhpbnQ7CiAJCX0gZWxzZSB7Ci0J CQlwdGV2YSA9IHBtYXBfc2VnbWFwKHBtYXAsIHZhKTsKKwkJCXB0ZXZhID0gKnBtYXBfcGRlKHBt YXAsIHZhKTsKIAkJCW1wdGUgPSBQSFlTX1RPX1ZNX1BBR0UoTUlQU19LU0VHMF9UT19QSFlTKHB0 ZXZhKSk7CiAJCQlwbWFwLT5wbV9wdHBoaW50ID0gbXB0ZTsKIAkJfQogCX0KLQlyZXR1cm4gcG1h cF91bndpcmVfcHRlX2hvbGQocG1hcCwgbXB0ZSk7CisJcmV0dXJuIHBtYXBfdW53aXJlX3B0ZV9o b2xkKHBtYXAsIHZhLCBtcHRlKTsKIH0KIAogdm9pZApAQCAtOTk5LDcgKzEwNjUsNyBAQAogc3Rh dGljIHZtX3BhZ2VfdAogX3BtYXBfYWxsb2NwdGUocG1hcF90IHBtYXAsIHVuc2lnbmVkIHB0ZXBp bmRleCwgaW50IGZsYWdzKQogewotCXZtX29mZnNldF90IHB0ZXZhOworCXZtX29mZnNldF90IHBh Z2V2YTsKIAl2bV9wYWdlX3QgbTsKIAogCUtBU1NFUlQoKGZsYWdzICYgKE1fTk9XQUlUIHwgTV9X QUlUT0spKSA9PSBNX05PV0FJVCB8fApAQCAtMTAyOSwxMCArMTA5NSw0MSBAQAogCSAqIE1hcCB0 aGUgcGFnZXRhYmxlIHBhZ2UgaW50byB0aGUgcHJvY2VzcyBhZGRyZXNzIHNwYWNlLCBpZiBpdAog CSAqIGlzbid0IGFscmVhZHkgdGhlcmUuCiAJICovCisJcGFnZXZhID0gTUlQU19QSFlTX1RPX0tT RUcwKFZNX1BBR0VfVE9fUEhZUyhtKSk7CiAKLQlwdGV2YSA9IE1JUFNfUEhZU19UT19LU0VHMChW TV9QQUdFX1RPX1BIWVMobSkpOworI2lmZGVmIF9fbWlwc19uNjQKKwlpZiAocHRlcGluZGV4ID49 IE5VUERFKSB7CisJCXBtYXAtPnBtX3NlZ3RhYltwdGVwaW5kZXggLSBOVVBERV0gPSAocGRfZW50 cnlfdClwYWdldmE7CisJfSBlbHNlIHsKKwkJcGRfZW50cnlfdCAqcGRlcCwgKnBkZTsKKwkJaW50 IHNlZ2luZGV4ID0gcHRlcGluZGV4ID4+IChTRUdTSElGVCAtIFBEUlNISUZUKTsKKwkJaW50IHBk ZWluZGV4ID0gcHRlcGluZGV4ICYgKE5QREVQRyAtIDEpOworCQl2bV9wYWdlX3QgcGc7CisJCQor CQlwZGVwID0gJnBtYXAtPnBtX3NlZ3RhYltzZWdpbmRleF07CisJCWlmICgqcGRlcCA9PSBOVUxM KSB7IAorCQkJLyogcmVjdXJzZSBmb3IgYWxsb2NhdGluZyBwYWdlIGRpciAqLworCQkJaWYgKF9w bWFwX2FsbG9jcHRlKHBtYXAsIE5VUERFICsgc2VnaW5kZXgsIAorCQkJICAgIGZsYWdzKSA9PSBO VUxMKSB7CisJCQkJLyogYWxsb2MgZmFpbGVkLCByZWxlYXNlIGN1cnJlbnQgKi8KKwkJCQktLW0t PndpcmVfY291bnQ7CisJCQkJYXRvbWljX3N1YnRyYWN0X2ludCgmY250LnZfd2lyZV9jb3VudCwg MSk7CisJCQkJdm1fcGFnZV9mcmVlX3plcm8obSk7CisJCQkJcmV0dXJuIChOVUxMKTsKKwkJCX0K KwkJfSBlbHNlIHsKKwkJCXBnID0gUEhZU19UT19WTV9QQUdFKE1JUFNfS1NFRzBfVE9fUEhZUygq cGRlcCkpOworCQkJcGctPndpcmVfY291bnQrKzsKKwkJfQorCQkvKiBOZXh0IGxldmVsIGVudHJ5 ICovCisJCXBkZSA9IChwZF9lbnRyeV90ICopKnBkZXA7CisJCXBkZVtwZGVpbmRleF0gPSAocGRf ZW50cnlfdClwYWdldmE7CisJCXBtYXAtPnBtX3B0cGhpbnQgPSBtOworCX0KKyNlbHNlCisJcG1h cC0+cG1fc2VndGFiW3B0ZXBpbmRleF0gPSAocGRfZW50cnlfdClwYWdldmE7CisjZW5kaWYKIAlw bWFwLT5wbV9zdGF0cy5yZXNpZGVudF9jb3VudCsrOwotCXBtYXAtPnBtX3NlZ3RhYltwdGVwaW5k ZXhdID0gKHBkX2VudHJ5X3QpcHRldmE7CiAKIAkvKgogCSAqIFNldCB0aGUgcGFnZSB0YWJsZSBo aW50CkBAIC0xMDQ1LDcgKzExNDIsNyBAQAogcG1hcF9hbGxvY3B0ZShwbWFwX3QgcG1hcCwgdm1f b2Zmc2V0X3QgdmEsIGludCBmbGFncykKIHsKIAl1bnNpZ25lZCBwdGVwaW5kZXg7Ci0Jdm1fb2Zm c2V0X3QgcHRldmE7CisJcGRfZW50cnlfdCAqcGRlOwogCXZtX3BhZ2VfdCBtOwogCiAJS0FTU0VS VCgoZmxhZ3MgJiAoTV9OT1dBSVQgfCBNX1dBSVRPSykpID09IE1fTk9XQUlUIHx8CkBAIC0xMDU1 LDE4ICsxMTUyLDE4IEBACiAJLyoKIAkgKiBDYWxjdWxhdGUgcGFnZXRhYmxlIHBhZ2UgaW5kZXgK IAkgKi8KLQlwdGVwaW5kZXggPSBwbWFwX3NlZ3NoaWZ0KHZhKTsKKwlwdGVwaW5kZXggPSBwbWFw X3BkZV9waW5kZXgodmEpOwogcmV0cnk6CiAJLyoKIAkgKiBHZXQgdGhlIHBhZ2UgZGlyZWN0b3J5 IGVudHJ5CiAJICovCi0JcHRldmEgPSAodm1fb2Zmc2V0X3QpcG1hcC0+cG1fc2VndGFiW3B0ZXBp bmRleF07CisJcGRlID0gcG1hcF9wZGUocG1hcCwgdmEpOwogCiAJLyoKIAkgKiBJZiB0aGUgcGFn ZSB0YWJsZSBwYWdlIGlzIG1hcHBlZCwgd2UganVzdCBpbmNyZW1lbnQgdGhlIGhvbGQKIAkgKiBj b3VudCwgYW5kIGFjdGl2YXRlIGl0LgogCSAqLwotCWlmIChwdGV2YSkgeworCWlmIChwZGUgIT0g TlVMTCAmJiAqcGRlICE9IE5VTEwpIHsKIAkJLyoKIAkJICogSW4gb3JkZXIgdG8gZ2V0IHRoZSBw YWdlIHRhYmxlIHBhZ2UsIHRyeSB0aGUgaGludCBmaXJzdC4KIAkJICovCkBAIC0xMDc0LDcgKzEx NzEsNyBAQAogCQkgICAgKHBtYXAtPnBtX3B0cGhpbnQtPnBpbmRleCA9PSBwdGVwaW5kZXgpKSB7 CiAJCQltID0gcG1hcC0+cG1fcHRwaGludDsKIAkJfSBlbHNlIHsKLQkJCW0gPSBQSFlTX1RPX1ZN X1BBR0UoTUlQU19LU0VHMF9UT19QSFlTKHB0ZXZhKSk7CisJCQltID0gUEhZU19UT19WTV9QQUdF KE1JUFNfS1NFRzBfVE9fUEhZUygqcGRlKSk7CiAJCQlwbWFwLT5wbV9wdHBoaW50ID0gbTsKIAkJ fQogCQltLT53aXJlX2NvdW50Kys7CkBAIC0xMDg3LDcgKzExODQsNyBAQAogCQlpZiAobSA9PSBO VUxMICYmIChmbGFncyAmIE1fV0FJVE9LKSkKIAkJCWdvdG8gcmV0cnk7CiAJfQotCXJldHVybiBt OworCXJldHVybiAobSk7CiB9CiAKIApAQCAtMTEzNyw0NiArMTIzNCw0NCBAQAogcG1hcF9ncm93 a2VybmVsKHZtX29mZnNldF90IGFkZHIpCiB7CiAJdm1fcGFnZV90IG5rcGc7CisJcGRfZW50cnlf dCAqcGRlLCAqcGRwZTsKIAlwdF9lbnRyeV90ICpwdGU7CiAJaW50IGk7CiAKIAltdHhfYXNzZXJ0 KCZrZXJuZWxfbWFwLT5zeXN0ZW1fbXR4LCBNQV9PV05FRCk7Ci0JaWYgKGtlcm5lbF92bV9lbmQg PT0gMCkgewotCQlrZXJuZWxfdm1fZW5kID0gVk1fTUlOX0tFUk5FTF9BRERSRVNTOwotCQlua3B0 ID0gMDsKLQkJd2hpbGUgKHNlZ3RhYl9wZGUoa2VybmVsX3NlZ21hcCwga2VybmVsX3ZtX2VuZCkp IHsKLQkJCWtlcm5lbF92bV9lbmQgPSAoa2VybmVsX3ZtX2VuZCArIFBBR0VfU0laRSAqIE5QVEVQ RykgJgotCQkJICAgIH4oUEFHRV9TSVpFICogTlBURVBHIC0gMSk7Ci0JCQlua3B0Kys7Ci0JCQlp ZiAoa2VybmVsX3ZtX2VuZCAtIDEgPj0ga2VybmVsX21hcC0+bWF4X29mZnNldCkgewotCQkJCWtl cm5lbF92bV9lbmQgPSBrZXJuZWxfbWFwLT5tYXhfb2Zmc2V0OwotCQkJCWJyZWFrOwotCQkJfQot CQl9Ci0JfQotCWFkZHIgPSAoYWRkciArIFBBR0VfU0laRSAqIE5QVEVQRykgJiB+KFBBR0VfU0la RSAqIE5QVEVQRyAtIDEpOworCWFkZHIgPSByb3VuZHVwMihhZGRyLCBOQlNFRyk7CiAJaWYgKGFk ZHIgLSAxID49IGtlcm5lbF9tYXAtPm1heF9vZmZzZXQpCiAJCWFkZHIgPSBrZXJuZWxfbWFwLT5t YXhfb2Zmc2V0OwogCXdoaWxlIChrZXJuZWxfdm1fZW5kIDwgYWRkcikgewotCQlpZiAoc2VndGFi X3BkZShrZXJuZWxfc2VnbWFwLCBrZXJuZWxfdm1fZW5kKSkgewotCQkJa2VybmVsX3ZtX2VuZCA9 IChrZXJuZWxfdm1fZW5kICsgUEFHRV9TSVpFICogTlBURVBHKSAmCi0JCQkgICAgfihQQUdFX1NJ WkUgKiBOUFRFUEcgLSAxKTsKKwkJcGRwZSA9IHBtYXBfc2VnbWFwKGtlcm5lbF9wbWFwLCBrZXJu ZWxfdm1fZW5kKTsKKyNpZmRlZiBfX21pcHNfbjY0CisJCWlmICgqcGRwZSA9PSAwKSB7CisJCQkv KiBuZXcgaW50ZXJtZWRpYXRlIHBhZ2UgdGFibGUgZW50cnkgKi8KKwkJCW5rcGcgPSBwbWFwX2Fs bG9jX3B0ZV9wYWdlKG5rcHQsIFZNX0FMTE9DX0lOVEVSUlVQVCk7CisJCQlpZiAobmtwZyA9PSBO VUxMKQorCQkJCXBhbmljKCJwbWFwX2dyb3drZXJuZWw6IG5vIG1lbW9yeSB0byBncm93IGtlcm5l bCIpOworCQkJKnBkcGUgPSAocGRfZW50cnlfdClNSVBTX1BIWVNfVE9fS1NFRzAoVk1fUEFHRV9U T19QSFlTKG5rcGcpKTsKKwkJCWNvbnRpbnVlOyAvKiB0cnkgYWdhaW4gKi8KKwkJfQorI2VuZGlm CisJCXBkZSA9IHBtYXBfcGRwZV90b19wZGUocGRwZSwga2VybmVsX3ZtX2VuZCk7CisJCWlmICgq cGRlICE9IDApIHsKKwkJCWtlcm5lbF92bV9lbmQgPSAoa2VybmVsX3ZtX2VuZCArIE5CUERSKSAm IH5QRFJNQVNLOwogCQkJaWYgKGtlcm5lbF92bV9lbmQgLSAxID49IGtlcm5lbF9tYXAtPm1heF9v ZmZzZXQpIHsKIAkJCQlrZXJuZWxfdm1fZW5kID0ga2VybmVsX21hcC0+bWF4X29mZnNldDsKIAkJ CQlicmVhazsKIAkJCX0KIAkJCWNvbnRpbnVlOwogCQl9CisKIAkJLyoKIAkJICogVGhpcyBpbmRl eCBpcyBib2d1cywgYnV0IG91dCBvZiB0aGUgd2F5CiAJCSAqLwotIAkJbmtwZyA9IHBtYXBfYWxs b2NfcHRlX3BhZ2UobmtwdCwgVk1fQUxMT0NfSU5URVJSVVBUKTsKKwkJbmtwZyA9IHBtYXBfYWxs b2NfcHRlX3BhZ2UobmtwdCwgVk1fQUxMT0NfSU5URVJSVVBUKTsKIAkJaWYgKCFua3BnKQogCQkJ cGFuaWMoInBtYXBfZ3Jvd2tlcm5lbDogbm8gbWVtb3J5IHRvIGdyb3cga2VybmVsIik7Ci0KIAkJ bmtwdCsrOwotIAkJcHRlID0gKHB0X2VudHJ5X3QgKilNSVBTX1BIWVNfVE9fS1NFRzAoVk1fUEFH RV9UT19QSFlTKG5rcGcpKTsKLSAgCQlzZWd0YWJfcGRlKGtlcm5lbF9zZWdtYXAsIGtlcm5lbF92 bV9lbmQpID0gKHBkX2VudHJ5X3QpcHRlOworCQkqcGRlID0gKHBkX2VudHJ5X3QpTUlQU19QSFlT X1RPX0tTRUcwKFZNX1BBR0VfVE9fUEhZUyhua3BnKSk7CiAKIAkJLyoKIAkJICogVGhlIFJbNC03 XT8wMCBzdG9yZXMgb25seSBvbmUgY29weSBvZiB0aGUgR2xvYmFsIGJpdCBpbgpAQCAtMTE4NSwx MSArMTI4MCwxMSBAQAogCQkgKiBFbnRyeSBMTyBhbmQgRW50cnkgSEkgRyBiaXRzIGFyZSBhbmRl ZCB0b2dldGhlciB0aGV5IHdpbGwKIAkJICogcHJvZHVjZSBhIGdsb2JhbCBiaXQgdG8gc3RvcmUg aW4gdGhlIHRsYi4KIAkJICovCi0JCWZvciAoaSA9IDA7IGkgPCBOUFRFUEc7IGkrKywgcHRlKysp Ci0JCQkqcHRlID0gUFRFX0c7CisJCXB0ZSA9IChwdF9lbnRyeV90ICopKnBkZTsKKwkJZm9yIChp ID0gMDsgaSA8IE5QVEVQRzsgaSsrKQorCQkJcHRlW2ldID0gUFRFX0c7CiAKLQkJa2VybmVsX3Zt X2VuZCA9IChrZXJuZWxfdm1fZW5kICsgUEFHRV9TSVpFICogTlBURVBHKSAmCi0JCSAgICB+KFBB R0VfU0laRSAqIE5QVEVQRyAtIDEpOworCQlrZXJuZWxfdm1fZW5kID0gKGtlcm5lbF92bV9lbmQg KyBOQlBEUikgJiB+UERSTUFTSzsKIAkJaWYgKGtlcm5lbF92bV9lbmQgLSAxID49IGtlcm5lbF9t YXAtPm1heF9vZmZzZXQpIHsKIAkJCWtlcm5lbF92bV9lbmQgPSBrZXJuZWxfbWFwLT5tYXhfb2Zm c2V0OwogCQkJYnJlYWs7CkBAIC0xNDgwLDcgKzE1NzUsOSBAQAogdm9pZAogcG1hcF9yZW1vdmUo c3RydWN0IHBtYXAgKnBtYXAsIHZtX29mZnNldF90IHN2YSwgdm1fb2Zmc2V0X3QgZXZhKQogewot CXZtX29mZnNldF90IHZhLCBudmE7CisJdm1fb2Zmc2V0X3QgdmFfbmV4dDsKKwlwZF9lbnRyeV90 ICpwZGUsICpwZHBlOworCXB0X2VudHJ5X3QgKnB0ZTsKIAogCWlmIChwbWFwID09IE5VTEwpCiAJ CXJldHVybjsKQEAgLTE0OTksMTUgKzE1OTYsMzAgQEAKIAkJcG1hcF9yZW1vdmVfcGFnZShwbWFw LCBzdmEpOwogCQlnb3RvIG91dDsKIAl9Ci0JZm9yICh2YSA9IHN2YTsgdmEgPCBldmE7IHZhID0g bnZhKSB7Ci0JCWlmIChwbWFwX3NlZ21hcChwbWFwLCB2YSkgPT0gTlVMTCkgewotCQkJbnZhID0g bWlwc19zZWd0cnVuYyh2YSArIE5CU0VHKTsKKwlmb3IgKDsgc3ZhIDwgZXZhOyBzdmEgPSB2YV9u ZXh0KSB7CisJCXBkcGUgPSBwbWFwX3NlZ21hcChwbWFwLCBzdmEpOworI2lmZGVmIF9fbWlwc19u NjQKKwkJaWYgKCpwZHBlID09IDApIHsKKwkJCXZhX25leHQgPSAoc3ZhICsgTkJTRUcpICYgflNF R01BU0s7CisJCQlpZiAodmFfbmV4dCA8IHN2YSkKKwkJCQl2YV9uZXh0ID0gZXZhOwogCQkJY29u dGludWU7CiAJCX0KLQkJcG1hcF9yZW1vdmVfcGFnZShwbWFwLCB2YSk7Ci0JCW52YSA9IHZhICsg UEFHRV9TSVpFOworI2VuZGlmCisJCXZhX25leHQgPSAoc3ZhICsgTkJQRFIpICYgflBEUk1BU0s7 CisJCWlmICh2YV9uZXh0IDwgc3ZhKQorCQkJdmFfbmV4dCA9IGV2YTsKKworCQlwZGUgPSBwbWFw X3BkcGVfdG9fcGRlKHBkcGUsIHN2YSk7CisJCWlmICgqcGRlID09IDApCisJCQljb250aW51ZTsK KwkJaWYgKHZhX25leHQgPiBldmEpCisJCQl2YV9uZXh0ID0gZXZhOworCQlmb3IgKHB0ZSA9IHBt YXBfcGRlX3RvX3B0ZShwZGUsIHN2YSk7IHN2YSAhPSB2YV9uZXh0OyAKKwkJICAgIHB0ZSsrLCBz dmEgKz0gUEFHRV9TSVpFKSB7CisJCQlwbWFwX3JlbW92ZV9wYWdlKHBtYXAsIHN2YSk7CisJCX0K IAl9Ci0KIG91dDoKIAl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKIAlQTUFQX1VOTE9DSyhwbWFw KTsKQEAgLTE1OTYsNiArMTcwOCw4IEBACiBwbWFwX3Byb3RlY3QocG1hcF90IHBtYXAsIHZtX29m ZnNldF90IHN2YSwgdm1fb2Zmc2V0X3QgZXZhLCB2bV9wcm90X3QgcHJvdCkKIHsKIAlwdF9lbnRy eV90ICpwdGU7CisJcGRfZW50cnlfdCAqcGRlLCAqcGRwZTsKKwl2bV9vZmZzZXRfdCB2YV9uZXh0 OwogCiAJaWYgKHBtYXAgPT0gTlVMTCkKIAkJcmV0dXJuOwpAQCAtMTYwOSw0NCArMTcyMyw1MyBA QAogCiAJdm1fcGFnZV9sb2NrX3F1ZXVlcygpOwogCVBNQVBfTE9DSyhwbWFwKTsKLQl3aGlsZSAo c3ZhIDwgZXZhKSB7Ci0JCXB0X2VudHJ5X3QgcGJpdHMsIG9iaXRzOworCWZvciAoOyBzdmEgPCBl dmE7IHN2YSA9IHZhX25leHQpIHsKKwkJcHRfZW50cnlfdCBvYml0cywgcGJpdHM7CiAJCXZtX3Bh Z2VfdCBtOwotCQl2bV9vZmZzZXRfdCBwYTsKKwkJdm1fcGFkZHJfdCBwYTsKIAotCQkvKgotCQkg KiBJZiBzZWdtZW50IHRhYmxlIGVudHJ5IGlzIGVtcHR5LCBza2lwIHRoaXMgc2VnbWVudC4KLQkJ ICovCi0JCWlmIChwbWFwX3NlZ21hcChwbWFwLCBzdmEpID09IE5VTEwpIHsKLQkJCXN2YSA9IG1p cHNfc2VndHJ1bmMoc3ZhICsgTkJTRUcpOworCQlwZHBlID0gcG1hcF9zZWdtYXAocG1hcCwgc3Zh KTsKKyNpZmRlZiBfX21pcHNfbjY0CisJCWlmICgqcGRwZSA9PSAwKSB7CisJCQl2YV9uZXh0ID0g KHN2YSArIE5CU0VHKSAmIH5TRUdNQVNLOworCQkJaWYgKHZhX25leHQgPCBzdmEpCisJCQkJdmFf bmV4dCA9IGV2YTsKIAkJCWNvbnRpbnVlOwogCQl9Ci0JCS8qCi0JCSAqIElmIHB0ZSBpcyBpbnZh bGlkLCBza2lwIHRoaXMgcGFnZQotCQkgKi8KLQkJcHRlID0gcG1hcF9wdGUocG1hcCwgc3ZhKTsK LQkJaWYgKCFwdGVfdGVzdChwdGUsIFBURV9WKSkgewotCQkJc3ZhICs9IFBBR0VfU0laRTsKKyNl bmRpZgorCQl2YV9uZXh0ID0gKHN2YSArIE5CUERSKSAmIH5QRFJNQVNLOworCQlpZiAodmFfbmV4 dCA8IHN2YSkKKwkJCXZhX25leHQgPSBldmE7CisKKwkJcGRlID0gcG1hcF9wZHBlX3RvX3BkZShw ZHBlLCBzdmEpOworCQlpZiAocGRlID09IE5VTEwgfHwgKnBkZSA9PSBOVUxMKQogCQkJY29udGlu dWU7Ci0JCX0KLXJldHJ5OgotCQlvYml0cyA9IHBiaXRzID0gKnB0ZTsKLQkJcGEgPSBUTEJMT19Q VEVfVE9fUEEocGJpdHMpOworCQlpZiAodmFfbmV4dCA+IGV2YSkKKwkJCXZhX25leHQgPSBldmE7 CiAKLQkJaWYgKHBhZ2VfaXNfbWFuYWdlZChwYSkgJiYgcHRlX3Rlc3QoJnBiaXRzLCBQVEVfRCkp IHsKLQkJCW0gPSBQSFlTX1RPX1ZNX1BBR0UocGEpOwotCQkJdm1fcGFnZV9kaXJ0eShtKTsKLQkJ CW0tPm1kLnB2X2ZsYWdzICY9IH5QVl9UQUJMRV9NT0Q7Ci0JCX0KLQkJcHRlX2NsZWFyKCZwYml0 cywgUFRFX0QpOwotCQlwdGVfc2V0KCZwYml0cywgUFRFX1JPKTsKKwkJZm9yIChwdGUgPSBwbWFw X3BkZV90b19wdGUocGRlLCBzdmEpOyBzdmEgIT0gdmFfbmV4dDsgcHRlKyssCisJCSAgICAgc3Zh ICs9IFBBR0VfU0laRSkgewogCi0JCWlmIChwYml0cyAhPSAqcHRlKSB7Ci0JCQlpZiAoIWF0b21p Y19jbXBzZXRfaW50KCh1X2ludCAqKXB0ZSwgb2JpdHMsIHBiaXRzKSkKLQkJCQlnb3RvIHJldHJ5 OwotCQkJcG1hcF91cGRhdGVfcGFnZShwbWFwLCBzdmEsIHBiaXRzKTsKKwkJCS8qIFNraXAgaW52 YWxpZCBQVEVzICovCisJCQlpZiAoIXB0ZV90ZXN0KHB0ZSwgUFRFX1YpKQorCQkJCWNvbnRpbnVl OworcmV0cnk6CisJCQlvYml0cyA9IHBiaXRzID0gKnB0ZTsKKwkJCXBhID0gVExCTE9fUFRFX1RP X1BBKHBiaXRzKTsKKwkJCWlmIChwYWdlX2lzX21hbmFnZWQocGEpICYmIHB0ZV90ZXN0KCZwYml0 cywgUFRFX0QpKSB7CisJCQkJbSA9IFBIWVNfVE9fVk1fUEFHRShwYSk7CisJCQkJdm1fcGFnZV9k aXJ0eShtKTsKKwkJCQltLT5tZC5wdl9mbGFncyAmPSB+UFZfVEFCTEVfTU9EOworCQkJfQorCQkJ cHRlX2NsZWFyKCZwYml0cywgUFRFX0QpOworCQkJcHRlX3NldCgmcGJpdHMsIFBURV9STyk7CisJ CQkKKwkJCWlmIChwYml0cyAhPSAqcHRlKSB7CisJCQkJaWYgKCFhdG9taWNfY21wc2V0X2ludCgo dV9pbnQgKilwdGUsIG9iaXRzLCBwYml0cykpCisJCQkJCWdvdG8gcmV0cnk7CisJCQkJcG1hcF91 cGRhdGVfcGFnZShwbWFwLCBzdmEsIHBiaXRzKTsKKwkJCX0KIAkJfQotCQlzdmEgKz0gUEFHRV9T SVpFOwogCX0KIAl2bV9wYWdlX3VubG9ja19xdWV1ZXMoKTsKIAlQTUFQX1VOTE9DSyhwbWFwKTsK QEAgLTE4OTksMzIgKzIwMjIsMzIgQEAKIAkgKiBjcmVhdGluZyBpdCBoZXJlLgogCSAqLwogCWlm ICh2YSA8IFZNX01BWFVTRVJfQUREUkVTUykgeworCQlwZF9lbnRyeV90ICpwZGU7CiAJCXVuc2ln bmVkIHB0ZXBpbmRleDsKLQkJdm1fb2Zmc2V0X3QgcHRldmE7CiAKIAkJLyoKIAkJICogQ2FsY3Vs YXRlIHBhZ2V0YWJsZSBwYWdlIGluZGV4CiAJCSAqLwotCQlwdGVwaW5kZXggPSBwbWFwX3NlZ3No aWZ0KHZhKTsKKwkJcHRlcGluZGV4ID0gcG1hcF9wZGVfcGluZGV4KHZhKTsKIAkJaWYgKG1wdGUg JiYgKG1wdGUtPnBpbmRleCA9PSBwdGVwaW5kZXgpKSB7CiAJCQltcHRlLT53aXJlX2NvdW50Kys7 CiAJCX0gZWxzZSB7CiAJCQkvKgogCQkJICogR2V0IHRoZSBwYWdlIGRpcmVjdG9yeSBlbnRyeQog CQkJICovCi0JCQlwdGV2YSA9ICh2bV9vZmZzZXRfdClwbWFwLT5wbV9zZWd0YWJbcHRlcGluZGV4 XTsKKwkJCXBkZSA9IHBtYXBfcGRlKHBtYXAsIHZhKTsKIAogCQkJLyoKIAkJCSAqIElmIHRoZSBw YWdlIHRhYmxlIHBhZ2UgaXMgbWFwcGVkLCB3ZSBqdXN0CiAJCQkgKiBpbmNyZW1lbnQgdGhlIGhv bGQgY291bnQsIGFuZCBhY3RpdmF0ZSBpdC4KIAkJCSAqLwotCQkJaWYgKHB0ZXZhKSB7CisJCQlp ZiAocGRlICYmICpwZGUgIT0gMCkgewogCQkJCWlmIChwbWFwLT5wbV9wdHBoaW50ICYmCiAJCQkJ ICAgIChwbWFwLT5wbV9wdHBoaW50LT5waW5kZXggPT0gcHRlcGluZGV4KSkgewogCQkJCQltcHRl ID0gcG1hcC0+cG1fcHRwaGludDsKIAkJCQl9IGVsc2UgewogCQkJCQltcHRlID0gUEhZU19UT19W TV9QQUdFKAotCQkJCQkJTUlQU19LU0VHMF9UT19QSFlTKHB0ZXZhKSk7CisJCQkJCQlNSVBTX0tT RUcwX1RPX1BIWVMoKnBkZSkpOwogCQkJCQlwbWFwLT5wbV9wdHBoaW50ID0gbXB0ZTsKIAkJCQl9 CiAJCQkJbXB0ZS0+d2lyZV9jb3VudCsrOwpAQCAtMTk1NCw3ICsyMDc3LDcgQEAKIAlpZiAoKG0t PmZsYWdzICYgKFBHX0ZJQ1RJVElPVVMgfCBQR19VTk1BTkFHRUQpKSA9PSAwICYmCiAJICAgICFw bWFwX3RyeV9pbnNlcnRfcHZfZW50cnkocG1hcCwgbXB0ZSwgdmEsIG0pKSB7CiAJCWlmIChtcHRl ICE9IE5VTEwpIHsKLQkJCXBtYXBfdW53aXJlX3B0ZV9ob2xkKHBtYXAsIG1wdGUpOworCQkJcG1h cF91bndpcmVfcHRlX2hvbGQocG1hcCwgdmEsIG1wdGUpOwogCQkJbXB0ZSA9IE5VTEw7CiAJCX0K IAkJcmV0dXJuIChtcHRlKTsKQEAgLTI1MDYsMjEgKzI2MjksMTkgQEAKIAogCQlQTUFQX0xPQ0so cHYtPnB2X3BtYXApOwogCQlwdGUgPSBwbWFwX3B0ZShwdi0+cHZfcG1hcCwgcHYtPnB2X3ZhKTsK LQogCQlpZiAoc2V0ZW0pIHsKLQkJCSooaW50ICopcHRlIHw9IGJpdDsKKwkJCSpwdGUgfD0gYml0 OwogCQkJcG1hcF91cGRhdGVfcGFnZShwdi0+cHZfcG1hcCwgcHYtPnB2X3ZhLCAqcHRlKTsKIAkJ fSBlbHNlIHsKLQkJCXZtX29mZnNldF90IHBiaXRzID0gKih2bV9vZmZzZXRfdCAqKXB0ZTsKKwkJ CXB0X2VudHJ5X3QgcGJpdHMgPSAqcHRlOwogCiAJCQlpZiAocGJpdHMgJiBiaXQpIHsKIAkJCQlp ZiAoYml0ID09IFBURV9EKSB7Ci0JCQkJCWlmIChwYml0cyAmIFBURV9EKSB7CisJCQkJCWlmIChw Yml0cyAmIFBURV9EKQogCQkJCQkJdm1fcGFnZV9kaXJ0eShtKTsKLQkJCQkJfQotCQkJCQkqKGlu dCAqKXB0ZSA9IChwYml0cyAmIH5QVEVfRCkgfCBQVEVfUk87CisJCQkJCSpwdGUgPSAocGJpdHMg JiB+UFRFX0QpIHwgUFRFX1JPOwogCQkJCX0gZWxzZSB7Ci0JCQkJCSooaW50ICopcHRlID0gcGJp dHMgJiB+Yml0OworCQkJCQkqcHRlID0gcGJpdHMgJiB+Yml0OwogCQkJCX0KIAkJCQlwbWFwX3Vw ZGF0ZV9wYWdlKHB2LT5wdl9wbWFwLCBwdi0+cHZfdmEsICpwdGUpOwogCQkJfQpAQCAtMjY1OCwx MyArMjc3OSwxNyBAQAogYm9vbGVhbl90CiBwbWFwX2lzX3ByZWZhdWx0YWJsZShwbWFwX3QgcG1h cCwgdm1fb2Zmc2V0X3QgYWRkcikKIHsKKwlwZF9lbnRyeV90ICpwZGU7CiAJcHRfZW50cnlfdCAq cHRlOwogCWJvb2xlYW5fdCBydjsKIAogCXJ2ID0gRkFMU0U7CiAJUE1BUF9MT0NLKHBtYXApOwot CWlmIChwbWFwX3NlZ21hcChwbWFwLCBhZGRyKSAhPSBOVUxMKSB7Ci0JCXB0ZSA9IHBtYXBfcHRl KHBtYXAsIGFkZHIpOworCXBkZSA9IHBtYXBfcGRlKHBtYXAsIGFkZHIpOworCWlmIChwZGUgIT0g TlVMTCAmJiAqcGRlICE9IDApIHsKKwkJcHRlID0gcG1hcF9wZGVfdG9fcHRlKHBkZSwgYWRkcik7 CisJCWlmIChwdGUgPT0gTlVMTCkKKwkJCXByaW50ZigiRmFpbCBhZGRyICVwIHBkZSAlcCwgcHRl ICVwXG4iLCAodm9pZCAqKWFkZHIsIHBkZSwgcHRlKTsKIAkJcnYgPSAoKnB0ZSA9PSAwKTsKIAl9 CiAJUE1BUF9VTkxPQ0socG1hcCk7CkBAIC0yOTI3LDc0ICszMDUyLDY1IEBACiAJcmV0dXJuOwog fQogCi1pbnQgcG1hcF9waWRfZHVtcChpbnQgcGlkKTsKLQotaW50Ci1wbWFwX3BpZF9kdW1wKGlu dCBwaWQpCitEQl9TSE9XX0NPTU1BTkQocHRhYmxlLCBkZGJfcGlkX2R1bXApCiB7CiAJcG1hcF90 IHBtYXA7CisJc3RydWN0IHRocmVhZCAqdGQgPSBOVUxMOwogCXN0cnVjdCBwcm9jICpwOwotCWlu dCBucHRlID0gMDsKLQlpbnQgaW5kZXg7CisJaW50IGksIGosIGs7CisJdm1fcGFkZHJfdCBwYTsK Kwl2bV9vZmZzZXRfdCB2YTsKIAotCXN4X3Nsb2NrKCZhbGxwcm9jX2xvY2spOwotCUxJU1RfRk9S RUFDSChwLCAmYWxscHJvYywgcF9saXN0KSB7Ci0JCWlmIChwLT5wX3BpZCAhPSBwaWQpCi0JCQlj b250aW51ZTsKKwlpZiAoaGF2ZV9hZGRyKSB7CisJCXRkID0gZGJfbG9va3VwX3RocmVhZChhZGRy LCBUUlVFKTsKKwkJaWYgKHRkID09IE5VTEwpIHsKKwkJCWRiX3ByaW50ZigiSW52YWxpZCBwaWQg b3IgdGlkIik7CisJCQlyZXR1cm47CisJCX0KKwkJcCA9IHRkLT50ZF9wcm9jOworCQlpZiAocC0+ cF92bXNwYWNlID09IE5VTEwpIHsKKwkJCWRiX3ByaW50ZigiTm8gdm1zcGFjZSBmb3IgcHJvY2Vz cyIpOworCQkJcmV0dXJuOworCQl9CisJCQlwbWFwID0gdm1zcGFjZV9wbWFwKHAtPnBfdm1zcGFj ZSk7CisJfSBlbHNlCisJCXBtYXAgPSBrZXJuZWxfcG1hcDsKIAotCQlpZiAocC0+cF92bXNwYWNl KSB7Ci0JCQlpbnQgaSwgajsKLQotCQkJcHJpbnRmKCJ2bXNwYWNlIGlzICVwXG4iLAotCQkJICAg ICAgIHAtPnBfdm1zcGFjZSk7Ci0JCQlpbmRleCA9IDA7Ci0JCQlwbWFwID0gdm1zcGFjZV9wbWFw KHAtPnBfdm1zcGFjZSk7Ci0JCQlwcmludGYoInBtYXAgYXNpZDoleCBnZW5lcmF0aW9uOiV4XG4i LAorCWRiX3ByaW50ZigicG1hcDolcCBzZWd0YWI6JXAgYXNpZDoleCBnZW5lcmF0aW9uOiV4XG4i LAorCSAgICBwbWFwLCBwbWFwLT5wbV9zZWd0YWIsCiAJCQkgICAgICAgcG1hcC0+cG1fYXNpZFsw XS5hc2lkLAogCQkJICAgICAgIHBtYXAtPnBtX2FzaWRbMF0uZ2VuKTsKLQkJCWZvciAoaSA9IDA7 IGkgPCBOVVNFUlBHVEJMUzsgaSsrKSB7Ci0JCQkJcGRfZW50cnlfdCAqcGRlOwotCQkJCXB0X2Vu dHJ5X3QgKnB0ZTsKLQkJCQl1bnNpZ25lZCBiYXNlID0gaSA8PCBTRUdTSElGVDsKKwlmb3IgKGkg PSAwOyBpIDwgTlBERVBHOyBpKyspIHsKKwkJcGRfZW50cnlfdCAqcGRwZTsKKwkJcHRfZW50cnlf dCAqcGRlOworCQlwdF9lbnRyeV90IHB0ZTsKIAotCQkJCXBkZSA9ICZwbWFwLT5wbV9zZWd0YWJb aV07Ci0JCQkJaWYgKHBkZSAmJiAqcGRlICE9IDApIHsKLQkJCQkJZm9yIChqID0gMDsgaiA8IDEw MjQ7IGorKykgewotCQkJCQkJdm1fb2Zmc2V0X3QgdmEgPSBiYXNlICsKLQkJCQkJCShqIDw8IFBB R0VfU0hJRlQpOwotCi0JCQkJCQlwdGUgPSBwbWFwX3B0ZShwbWFwLCB2YSk7Ci0JCQkJCQlpZiAo cHRlICYmIHB0ZV90ZXN0KHB0ZSwgUFRFX1YpKSB7Ci0JCQkJCQkJdm1fb2Zmc2V0X3QgcGE7Ci0J CQkJCQkJdm1fcGFnZV90IG07Ci0KLQkJCQkJCQlwYSA9IFRMQkxPX1BGTl9UT19QQSgqcHRlKTsK LQkJCQkJCQltID0gUEhZU19UT19WTV9QQUdFKHBhKTsKLQkJCQkJCQlwcmludGYoInZhOiAlcCwg cHQ6ICVwLCBoOiAlZCwgdzogJWQsIGY6IDB4JXgiLAotCQkJCQkJCSAgICAodm9pZCAqKXZhLAot CQkJCQkJCSAgICAodm9pZCAqKXBhLAotCQkJCQkJCSAgICBtLT5ob2xkX2NvdW50LAotCQkJCQkJ CSAgICBtLT53aXJlX2NvdW50LAotCQkJCQkJCSAgICBtLT5mbGFncyk7Ci0JCQkJCQkJbnB0ZSsr OwotCQkJCQkJCWluZGV4Kys7Ci0JCQkJCQkJaWYgKGluZGV4ID49IDIpIHsKLQkJCQkJCQkJaW5k ZXggPSAwOwotCQkJCQkJCQlwcmludGYoIlxuIik7Ci0JCQkJCQkJfSBlbHNlIHsKLQkJCQkJCQkJ cHJpbnRmKCIgIik7Ci0JCQkJCQkJfQotCQkJCQkJfQotCQkJCQl9Ci0JCQkJfQorCQlwZHBlID0g KHBkX2VudHJ5X3QgKilwbWFwLT5wbV9zZWd0YWJbaV07CisJCWlmIChwZHBlID09IE5VTEwpCisJ CQljb250aW51ZTsKKwkJZGJfcHJpbnRmKCJbJTRkXSAlcFxuIiwgaSwgcGRwZSk7CisjaWZkZWYg X19taXBzX242NAorCQlmb3IgKGogPSAwOyBqIDwgTlBERVBHOyBqKyspIHsKKwkJCXBkZSA9IChw dF9lbnRyeV90ICopcGRwZVtqXTsKKwkJCWlmIChwZGUgPT0gTlVMTCkKKwkJCQljb250aW51ZTsK KwkJCWRiX3ByaW50ZigiXHRbJTRkXSAlcFxuIiwgaiwgcGRlKTsKKyNlbHNlCisJCXsKKwkJCWog PSAwOworCQkJcGRlID0gIChwdF9lbnRyeV90ICopcGRwZTsKKyNlbmRpZgorCQkJZm9yIChrID0g MDsgayA8IE5QVEVQRzsgaysrKSB7CisJCQkJcHRlID0gcGRlW2tdOworCQkJCWlmIChwdGUgPT0g MCB8fCAhcHRlX3Rlc3QoJnB0ZSwgUFRFX1YpKQorCQkJCQljb250aW51ZTsKKwkJCQlwYSA9IFRM QkxPX1BURV9UT19QQShwdGUpOworCQkJCXZhID0gKCh1X2xvbmcpaSA8PCBTRUdTSElGVCkgfCAo aiA8PCBQRFJTSElGVCkgfCAoayA8PCBQQUdFX1NISUZUKTsKKwkJCQlkYl9wcmludGYoIlx0XHRb JTA0ZF0gdmE6ICVwIHB0ZTogJTh4IHBhOiVseFxuIiwKKwkJCQkgICAgICAgaywgKHZvaWQgKil2 YSwgcHRlLCAodV9sb25nKXBhKTsKIAkJCX0KLQkJfSBlbHNlIHsKLQkJICBwcmludGYoIlByb2Nl c3MgcGlkOiVkIGhhcyBubyB2bV9zcGFjZVxuIiwgcGlkKTsKIAkJfQotCQlicmVhazsKIAl9Ci0J c3hfc3VubG9jaygmYWxscHJvY19sb2NrKTsKLQlyZXR1cm4gbnB0ZTsKIH0KIAogCkBAIC0zMTI2 LDcgKzMyNDIsNiBAQAogCVBIWVNfVE9fVk1fUEFHRShwYSktPm1kLnB2X2ZsYWdzIHw9IChQVl9U QUJMRV9SRUYgfCBQVl9UQUJMRV9NT0QpOwogfQogCi0KIC8qCiAgKglSb3V0aW5lOglwbWFwX2tl eHRyYWN0CiAgKglGdW5jdGlvbjoKQEAgLTMxNDUsNyArMzI2MCw2IEBACiAJaWYgKHZhID49IE1J UFNfWEtQSFlTX1NUQVJUICYmIHZhIDwgTUlQU19YS1BIWVNfRU5EKQogCQlyZXR1cm4gKE1JUFNf WEtQSFlTX1RPX1BIWVModmEpKTsKICNlbmRpZgotCiAJaWYgKHZhID49IE1JUFNfS1NFRzBfU1RB UlQgJiYgdmEgPCBNSVBTX0tTRUcwX0VORCkKIAkJcmV0dXJuIChNSVBTX0tTRUcwX1RPX1BIWVMo dmEpKTsKIApAQCAtMzIwNSw3ICszMzE5LDcgQEAKIAogCWlmIChtICE9IE5VTEwpIHsKIAkJZm9y IChwdiA9IFRBSUxRX0ZJUlNUKCZtLT5tZC5wdl9saXN0KTsgcHY7Ci0JICAgIAkgICAgcHYgPSBU QUlMUV9ORVhUKHB2LCBwdl9saXN0KSkgeworCQkgICAgcHYgPSBUQUlMUV9ORVhUKHB2LCBwdl9s aXN0KSkgewogCQkJbWlwc19kY2FjaGVfd2JpbnZfcmFuZ2VfaW5kZXgocHYtPnB2X3ZhLCBQQUdF X1NJWkUpOwogCQl9CiAJfQo= --001485f6c88a730961048cf08cb7-- From owner-freebsd-mips@FreeBSD.ORG Tue Aug 3 20:46:12 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DA1B106566B for ; Tue, 3 Aug 2010 20:46:12 +0000 (UTC) (envelope-from juli@clockworksquid.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 1EADB8FC16 for ; Tue, 3 Aug 2010 20:46:11 +0000 (UTC) Received: by wyj26 with SMTP id 26so5913871wyj.13 for ; Tue, 03 Aug 2010 13:46:11 -0700 (PDT) Received: by 10.216.19.203 with SMTP id n53mr3492116wen.21.1280868370917; Tue, 03 Aug 2010 13:46:10 -0700 (PDT) MIME-Version: 1.0 Sender: juli@clockworksquid.com Received: by 10.216.5.5 with HTTP; Tue, 3 Aug 2010 13:45:50 -0700 (PDT) In-Reply-To: References: From: Juli Mallett Date: Tue, 3 Aug 2010 13:45:50 -0700 X-Google-Sender-Auth: mgyzrQ6p7Lxu-vdkH2vo8JfJB_g Message-ID: To: "Jayachandran C." Content-Type: text/plain; charset=ISO-8859-1 Cc: freebsd-mips@freebsd.org Subject: Re: Merged pmap.c - Re: Support for 64bit userspace. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Aug 2010 20:46:12 -0000 On Tue, Aug 3, 2010 at 12:44, Jayachandran C. wrote: > Here's is the merged version of n64 changes. I had to change the existing > pmap.c style a bit, so that merging the 32 bit and 64 bit versions was > easier. > On the n64 compilation, I have done a few more fixes, and the current code > comes up multi-user and holds up pretty well on XLR. > I'm doing some stress testing on o32 to see that I have not broken anything > there during the changes. > Let me know your comments. Also note that PTEs are still 32 bit and KSEG0 > addresses are still used for page table pages, but these can be added... Looks good to me with a quick read. Thanks for doing this! I will try to test on Octeon within a couple of days but would encourage you to commit sooner rather than later so that there can be more people testing n64 (I know there are several people waiting for it.) Thanks! Juli. From owner-freebsd-mips@FreeBSD.ORG Wed Aug 4 14:22:33 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83665106566B for ; Wed, 4 Aug 2010 14:22:33 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 1BA168FC0A for ; Wed, 4 Aug 2010 14:22:32 +0000 (UTC) Received: by wyj26 with SMTP id 26so6851571wyj.13 for ; Wed, 04 Aug 2010 07:22:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=aSIiFjaUtOHJbfKapsyGMXubM7Iu8Cg8itT1g49U+0g=; b=vC1S8qH7S9yWAUh5kqNVh7udhHPLi2F1Q42MI0lKf2mKFTqAUYcdbv11ToetbZFVAO u11Qa9e1MU004hXsgCRWCNem+LHlYUk6nTQfGe9/AR2D98wiiJ8UHYiJCL/Uvh2/mT0n dxXeivSz37yEcajganobwmi6YzMJYv5foWHnE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=XgdvINJ254ocxIDbq+O1EevlVJ9I1wc9WBIewZ94HTuWbJ9Yt0EVYwQJD5bg6k0g84 lraBI/gAE1sMGwCAOmkv0Gkp7CdZX+GZYGNFdalwZklSVtoKC7VXr+S4EW5UfdsiadVM OjMdiPpMsArFSrGeDPt8H+pkfmwSa6v0H8R7U= MIME-Version: 1.0 Received: by 10.216.177.81 with SMTP id c59mr7881562wem.8.1280931751855; Wed, 04 Aug 2010 07:22:31 -0700 (PDT) Received: by 10.216.160.10 with HTTP; Wed, 4 Aug 2010 07:22:31 -0700 (PDT) Date: Wed, 4 Aug 2010 19:52:31 +0530 Message-ID: From: "Jayachandran C." To: freebsd-mips@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: HEADSUP : n64 changes in HEAD. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Aug 2010 14:22:33 -0000 I have checked the n64 changes into HEAD. The changes areto add 3 level page tables for n64 compilation. Juli's work (from octeon branch) had added most of kernel and userspace code for n64, other than the page table code, so this is just one of the last pieces of the whole effort. I have already checked in fixes to many user/kernel components for n64 during the past week. I have tried quite a bit to make sure that the new 32 bit code in pmap.c is completely equivalent to the earlier code. If you see any regressions in the o32 compilation, please let me know. To try out 64 bit, the environment and commands are: -- export TARGET=mips export TARGET_ARCH=mips export TARGET_CPUTYPE=mips64 export TARGET_BIG_ENDIAN=y export TARGET_ABI=n64 export KERNCONF=XLR64 make buildworld -DWITHOUT_CDDL -DWITHOUT_USB -DWITHOUT_BLUETOOTH make buildkernel -- The n64 kernel and userspace comes up in multi-user, and is pretty stable. There is still some work to do: - SMP is still untested - PTE entries are still 32 bit, physmem >4GB is not yet supported - ddb does not fully work yet - thread libraries are not tested yet. - page table page allocation code needs to be updated to use XKPHYS. - buildworld still has some components (see -D above) which does not compile. - code for 32 bit compatibility is still not there, so only n64 executables run on n64 kernel. But other than this, if you come across any crash or failure in n64 please let me know. Thanks, JC. From owner-freebsd-mips@FreeBSD.ORG Wed Aug 4 14:23:01 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A0CA1065670; Wed, 4 Aug 2010 14:23:01 +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 844C38FC2A; Wed, 4 Aug 2010 14:23:00 +0000 (UTC) Received: by fxm13 with SMTP id 13so2531398fxm.13 for ; Wed, 04 Aug 2010 07:22:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received: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=sJOVulrp7adjAqw1xU+22/RhTlz+aVTSNkhg8CXRWm8=; b=IgOx+HQzJjo08YlLkyaiRz5RzZnro9cel4fZu/HSqu2olo3zdwtJZ8dWNfbeiNTnVC g4FsHZta/L9mhz+3UirExB+SXJrsnaFDN6S3c7sMhDhMeSM7/imKS/eiRh9QiVEILCEd ZUXW36bQCnEh5ZbyEkJPy9QNQ0viIinH4L6BI= 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=F6SKzz1alwHq8QuuswpZZQVoE8Ot4f9a98kevSuQMnZQzPbhJ/DzljG6m+u7GEUW7S WZlJRNGngHUO2uZBB1JtxsCcFrP6Z+wTL32aA+Vg1JS3HyOlrwyfRM8CjCC4H5+UAwpO TbcI54pdbzd6T/ABIlHuS9/jD6v55/e6uzNu8= Received: by 10.223.122.198 with SMTP id m6mr9008381far.87.1280931779323; Wed, 04 Aug 2010 07:22:59 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id r5sm2986974faq.8.2010.08.04.07.22.57 (version=SSLv3 cipher=RC4-MD5); Wed, 04 Aug 2010 07:22:57 -0700 (PDT) Sender: Alexander Motin Message-ID: <4C5977BC.1060104@FreeBSD.org> Date: Wed, 04 Aug 2010 17:22:52 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.24 (X11/20100402) MIME-Version: 1.0 To: Neel Natu References: <4C41A248.8090605@FreeBSD.org> <4C41B4CF.6080409@FreeBSD.org> <4C4205CC.6080700@FreeBSD.org> <4C4ED247.80701@FreeBSD.org> <4C555CF7.5080101@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Randall Stewart , freebsd-mips@freebsd.org, Neel Natu Subject: Re: [RFC] Event timers on MIPS X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Aug 2010 14:23:01 -0000 Neel Natu wrote: > Thanks for taking the time to review the patch. Here is the updated patch: > http://people.freebsd.org/~neel/tick_diff.txt Seems fine. > On Sun, Aug 1, 2010 at 4:39 AM, Alexander Motin wrote: >> "t_upper++;" there looks a bit strange, as it is not written back. The >> wrapping stuff won't work if this timer interrupts were not used. > > This part is intentional. > > I wanted only clock_intr() to update the cached values of > 'counter_upper' and 'counter_lower_last' and tick_ticker() to sample a > consistent snapshot of the tuple and then operate on it. > > I have added an XXX comment to describe the dependency. We can revisit > this if we change the default timer in mips. It's not about default timer, but about having any other timer. But if you wish so, it should be enough for now. -- Alexander Motin From owner-freebsd-mips@FreeBSD.ORG Wed Aug 4 19:37:46 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C33AD106564A for ; Wed, 4 Aug 2010 19:37:46 +0000 (UTC) (envelope-from juli@clockworksquid.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 65EDB8FC12 for ; Wed, 4 Aug 2010 19:37:45 +0000 (UTC) Received: by wyj26 with SMTP id 26so7252961wyj.13 for ; Wed, 04 Aug 2010 12:37:44 -0700 (PDT) Received: by 10.216.196.160 with SMTP id r32mr8257831wen.36.1280950664445; Wed, 04 Aug 2010 12:37:44 -0700 (PDT) MIME-Version: 1.0 Sender: juli@clockworksquid.com Received: by 10.216.5.5 with HTTP; Wed, 4 Aug 2010 12:37:22 -0700 (PDT) In-Reply-To: References: From: Juli Mallett Date: Wed, 4 Aug 2010 12:37:22 -0700 X-Google-Sender-Auth: bvqxDvSYnDR_H2gLe4K1A7SA0V0 Message-ID: To: "Jayachandran C." Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: freebsd-mips@freebsd.org Subject: Re: HEADSUP : n64 changes in HEAD. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Aug 2010 19:37:46 -0000 On Wed, Aug 4, 2010 at 07:22, Jayachandran C. wr= ote: > I have checked the n64 changes into HEAD. =A0The changes areto add 3 leve= l > page tables for n64 compilation. =A0Juli's work (from octeon branch) had = added > most of kernel and userspace code for n64, other than the page table code= , > so this is just one of the last pieces of the whole effort. =A0I have alr= eady > checked in fixes to many user/kernel components for n64 during the past > week. Thanks for all of your work, this is fantastic! Juli. From owner-freebsd-mips@FreeBSD.ORG Thu Aug 5 06:13:56 2010 Return-Path: Delivered-To: mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 536FB106567B for ; Thu, 5 Aug 2010 06:13:56 +0000 (UTC) (envelope-from alc@cs.rice.edu) Received: from mail.cs.rice.edu (mail.cs.rice.edu [128.42.1.31]) by mx1.freebsd.org (Postfix) with ESMTP id 28EFC8FC26 for ; Thu, 5 Aug 2010 06:13:56 +0000 (UTC) Received: from mail.cs.rice.edu (localhost.localdomain [127.0.0.1]) by mail.cs.rice.edu (Postfix) with ESMTP id ADF512C2B02; Thu, 5 Aug 2010 01:13:55 -0500 (CDT) X-Virus-Scanned: by amavis-2.4.0 at mail.cs.rice.edu Received: from mail.cs.rice.edu ([127.0.0.1]) by mail.cs.rice.edu (mail.cs.rice.edu [127.0.0.1]) (amavisd-new, port 10024) with LMTP id fm86fC4LudFK; Thu, 5 Aug 2010 01:13:48 -0500 (CDT) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.cs.rice.edu (Postfix) with ESMTP id CFA7A2C2B32; Thu, 5 Aug 2010 01:13:47 -0500 (CDT) Message-ID: <4C5A569B.9090401@cs.rice.edu> Date: Thu, 05 Aug 2010 01:13:47 -0500 From: Alan Cox User-Agent: Thunderbird 2.0.0.24 (X11/20100501) MIME-Version: 1.0 To: "Jayachandran C." References: <201008041412.o74ECAix092415@svn.freebsd.org> In-Reply-To: <201008041412.o74ECAix092415@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: mips@freebsd.org Subject: Re: svn commit: r210846 - in head/sys/mips: include mips X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Aug 2010 06:13:56 -0000 Just an observation ... Jayachandran C. wrote: > Author: jchandra > Date: Wed Aug 4 14:12:09 2010 > New Revision: 210846 > URL: http://svn.freebsd.org/changeset/base/210846 > > Log: > Add 3 level page tables for MIPS in n64. > > - 32 bit compilation will still use old 2 level page tables > - re-arrange pmap code so that adding another level is easier > - pmap code for 3 level page tables for n64 > - update TLB handler to traverse 3 levels in n64 > > Reviewed by: jmallett > [snip] > > - if (pbits != *pte) { > - if (!atomic_cmpset_int((u_int *)pte, obits, pbits)) > - goto retry; > - pmap_update_page(pmap, sva, pbits); > + /* Skip invalid PTEs */ > + if (!pte_test(pte, PTE_V)) > + continue; > +retry: > + obits = pbits = *pte; > + pa = TLBLO_PTE_TO_PA(pbits); > + if (page_is_managed(pa) && pte_test(&pbits, PTE_D)) { > + m = PHYS_TO_VM_PAGE(pa); > + vm_page_dirty(m); > + m->md.pv_flags &= ~PV_TABLE_MOD; > + } > + pte_clear(&pbits, PTE_D); > + pte_set(&pbits, PTE_RO); > + > + if (pbits != *pte) { > + if (!atomic_cmpset_int((u_int *)pte, obits, pbits)) > + goto retry; > + pmap_update_page(pmap, sva, pbits); > + } > } > MIPS doesn't really need to use atomic_cmpset_int() in situations like this because the software dirty bit emulation in trap.c acquires the pmap lock. Atomics like this appear to be a carryover from i386 where the hardware-managed TLB might concurrently set the modified bit. From owner-freebsd-mips@FreeBSD.ORG Thu Aug 5 10:56:59 2010 Return-Path: Delivered-To: mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2299D106567B for ; Thu, 5 Aug 2010 10:56:59 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id AD16C8FC1F for ; Thu, 5 Aug 2010 10:56:57 +0000 (UTC) Received: by wyj26 with SMTP id 26so8062101wyj.13 for ; Thu, 05 Aug 2010 03:56:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=hX13BXhp8LUGMyjJpisF/w8DLNk7DH7V3q1gQuAkaGc=; b=efdlJ+mEHyJipd3Q3N7zVw1wNwC0MAGMnPCMeVnpSL35AKOj1gGxyb80Ytb5FjSTJt Qad14bBWkDfBIDeqx/0rYQsVhxOZ+0kmmrRAlXJUwi6vjjAUuGstyZT1x8/FFxTaGkLL c4ItaA5VeJPqga7Lhn/NVdKKWNGG7t7fsC0XQ= 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=FIzbWdw7P8ZdW/9WnHLomC8C8kVcBuSIAecGGLIHkRTsGweFI3PPjWONWPk/zkNuX9 mEDt3rPKtmmHPp4xwAz4e8O+5qxgjGTbF+sgnBj1NEEQt0USMKLhWRK8Z0UgOkd2sgoP lKQb3Oh9576zmZtxAHEd+4tHNgFEQQPrkt/h0= MIME-Version: 1.0 Received: by 10.216.167.72 with SMTP id h50mr8930475wel.103.1281005814738; Thu, 05 Aug 2010 03:56:54 -0700 (PDT) Received: by 10.216.160.10 with HTTP; Thu, 5 Aug 2010 03:56:54 -0700 (PDT) In-Reply-To: <4C5A569B.9090401@cs.rice.edu> References: <201008041412.o74ECAix092415@svn.freebsd.org> <4C5A569B.9090401@cs.rice.edu> Date: Thu, 5 Aug 2010 16:26:54 +0530 Message-ID: From: "Jayachandran C." To: Alan Cox Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: "Jayachandran C." , mips@freebsd.org Subject: Re: svn commit: r210846 - in head/sys/mips: include mips X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Aug 2010 10:56:59 -0000 On Thu, Aug 5, 2010 at 11:43 AM, Alan Cox wrote: > Just an observation ... > > Jayachandran C. wrote: >> >> Author: jchandra >> Date: Wed Aug =A04 14:12:09 2010 >> New Revision: 210846 >> URL: http://svn.freebsd.org/changeset/base/210846 >> >> Log: >> =A0Add 3 level page tables for MIPS in n64. >> =A0 =A0- 32 bit compilation will still use old 2 level page tables >> =A0- re-arrange pmap code so that adding another level is easier >> =A0- pmap code for 3 level page tables for n64 >> =A0- update TLB handler to traverse 3 levels in n64 >> =A0 =A0Reviewed by: =A0 =A0 =A0 =A0jmallett >> > > [snip] >> >> =A0- =A0 =A0 =A0 =A0 =A0 =A0 =A0if (pbits !=3D *pte) { >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!atomic_cmpset_int((u_= int *)pte, obits, >> pbits)) >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 goto retry= ; >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pmap_update_page(pmap, sva= , pbits); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 /* Skip invalid PTEs */ >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!pte_test(pte, PTE_V)) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 continue; >> +retry: >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 obits =3D pbits =3D *pte; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pa =3D TLBLO_PTE_TO_PA(pbi= ts); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (page_is_managed(pa) &&= pte_test(&pbits, >> PTE_D)) { >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 m =3D PHYS= _TO_VM_PAGE(pa); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 vm_page_di= rty(m); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 m->md.pv_f= lags &=3D ~PV_TABLE_MOD; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pte_clear(&pbits, PTE_D); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pte_set(&pbits, PTE_RO); >> + >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (pbits !=3D *pte) { >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!atomi= c_cmpset_int((u_int *)pte, >> obits, pbits)) >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 goto retry; >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 pmap_updat= e_page(pmap, sva, pbits); >> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0} >> > > MIPS doesn't really need to use atomic_cmpset_int() in situations like th= is > because the software dirty bit emulation in trap.c acquires the pmap lock= . > =A0Atomics like this appear to be a carryover from i386 where the > hardware-managed TLB might concurrently set the modified bit. Then I guess we should be able to use *pte directly, without pbits, obits and the retry loop. Will try this change... Thanks, JC. From owner-freebsd-mips@FreeBSD.ORG Thu Aug 5 13:13:23 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24D551065678 for ; Thu, 5 Aug 2010 13:13:23 +0000 (UTC) (envelope-from waynegong83@gmail.com) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id D07338FC0A for ; Thu, 5 Aug 2010 13:13:22 +0000 (UTC) Received: by gwj23 with SMTP id 23so3047589gwj.13 for ; Thu, 05 Aug 2010 06:13:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=Ae/TRtIP2XFUEGeMvWCGA+sMDGv4Gdb46Y7ygB0q3Lo=; b=qOAprr2qCw4fHWeMak/odoxon9ieJ7x+IAPgEOYIFDnvpS9IqQH0q5fFa5TRxHDQMP 4Dx9ven28zR9oE1DcvlZDPS7eFIblZQ46sFN1PwY/AOv5J16ecqtqYOTUQHy5GKGM1nK UNXx14WyNULs8s4LbHY9oz9LTjUDdl3guDnMI= 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; b=ZBjzQ9m9kqQ2RRUJzr7rB6dIy1xHBYho/pYdTeu5Q6PvEz5eLzsOterBZV//HIzGKV j0Odc+SpFJVhsQd7jXS6sMxON9OajDAFvC6pbOeDzGUJPQi2ipcFg+ntoSC+G6HkXnzB et4MYJSRTQAERRlWLX+WhZ81OohUvzmoiB3Xo= MIME-Version: 1.0 Received: by 10.100.107.6 with SMTP id f6mr11773912anc.220.1281014001139; Thu, 05 Aug 2010 06:13:21 -0700 (PDT) Received: by 10.220.186.72 with HTTP; Thu, 5 Aug 2010 06:13:20 -0700 (PDT) In-Reply-To: References: Date: Thu, 5 Aug 2010 18:43:20 +0530 Message-ID: From: waynegong L To: "Jayachandran C." Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-mips@freebsd.org Subject: Re: HEADSUP : n64 changes in HEAD. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Aug 2010 13:13:23 -0000 Hi Jayachandran, I have been waiting for n64 support and happy to see this mail. But unfortunately i got a panic with the from HEAD(revision 210854) on my octeon board. Please find the information below. I have built rootfs in to the kernel and the rootfs is stripped one with 30M size. Also SMP support is disabled in the config file. -----------------panic info------------------------------------------------------------------ Trying to mount root from ufs:/dev/md0 warning: no time-of-day clock registered, system time will not be set accurately Lookup of /dev for devfs, error: 2 start_init: trying /sbin/init panic: userret: Returning with 1 locks held. KDB: enter: panic [ thread pid 1 tid 100001 ] Stopped at kdb_enter+0x90: lui at,0x0 A bit of debugging pointed has taken me to lockmgr. db> show alllocks Process 1 (init) thread 0xc000000007926000 (100001) exclusive lockmgr devfs (devfs) r = 0 (0xc000000007fb8cf0) locked @ /freebsd/testmainline/ head/sys/kern/vfs_subr.c:2101 db> show lockedvnods Locked vnodes db> show lock 0xc000000007fb8cf0 class: lockmgr name: devfs state: XLOCK: 0xc000000007926000 (tid 100001, pid 1, "init") waiters: none spinners: none db> show thread 100001 Thread 100001 at 0xc000000007926000: proc (pid 1): 0xc000000007923000 name: init stack: 0xc00000002589c000-0xc00000002589dfff flags: 0x1000004 pflags: 0 state: RUNNING (CPU 0) priority: 180 container lock: sched lock (0xffffffff8240a338) db> ps pid ppid pgrp uid state wmesg wchan cmd 15 0 0 0 DL mdwait 0xc0000000080a0800 [md0] 14 0 0 0 DL - 0xffffffff82404eb4 [schedcpu] 13 0 0 0 DL sdflush 0xffffffff825b00c8 [softdepflush] 9 0 0 0 DL syncer 0xffffffff825ac2a0 [syncer] 8 0 0 0 DL vlruwt 0xc0000000080a9448 [vnlru] 7 0 0 0 DL psleep 0xffffffff825abe50 [bufdaemon] 6 0 0 0 RL [pagezero] 5 0 0 0 DL psleep 0xffffffff825b0e8c [pagedaemon] 12 0 0 0 DL - 0xffffffff82404eb4 [yarrow] 4 0 0 0 DL - 0xffffffff82401950 [g_down] 3 0 0 0 DL - 0xffffffff82401948 [g_up] 2 0 0 0 DL - 0xffffffff82401938 [g_event] 11 0 0 0 WL (threaded) [intr] 100015 I [swi0: uart uart] 100014 I [swi5: +] 100012 I [swi6: task queue] 100011 I [swi6: Giant taskq] 100005 I [swi3: vm] 100004 I [swi1: netisr 0] 100003 I [swi4: clock] 10 0 0 0 RL [idle] 1 0 0 0 RL CPU 0 [init] 0 0 0 0 DLs (threaded) [kernel] 100017 D deadlkre 0xffffffff82404eb4 [deadlkres] 100016 D - 0xc0000000079b4380 [octe taskq] 100013 D - 0xc000000007972e00 [kqueue taskq] 100010 D - 0xc000000007955500 [thread taskq] 100000 D sched 0xffffffff824019c8 [swapper] My env is as below. TARGET=mips TARGET_ABI=n64 TARGET_CPUTYPE=mips64 TARGET_BIG_ENDIAN=y My kernel build was successful, Also buildworld/install world was done with the below components as suggested. -DWITHOUT_CDDL -DWITHOUT_USB -DWITHOUT_BLUETOOTH Please let me know if you need any more info. Thanks, Wayne. On Wed, Aug 4, 2010 at 7:52 PM, Jayachandran C. wrote: > I have checked the n64 changes into HEAD. The changes areto add 3 level > page tables for n64 compilation. Juli's work (from octeon branch) had > added > most of kernel and userspace code for n64, other than the page table code, > so this is just one of the last pieces of the whole effort. I have already > checked in fixes to many user/kernel components for n64 during the past > week. > > I have tried quite a bit to make sure that the new 32 bit code in pmap.c is > completely equivalent to the earlier code. If you see any regressions in > the o32 compilation, please let me know. > > To try out 64 bit, the environment and commands are: > -- > export TARGET=mips > export TARGET_ARCH=mips > export TARGET_CPUTYPE=mips64 > export TARGET_BIG_ENDIAN=y > export TARGET_ABI=n64 > export KERNCONF=XLR64 > make buildworld -DWITHOUT_CDDL -DWITHOUT_USB -DWITHOUT_BLUETOOTH > make buildkernel > -- > > The n64 kernel and userspace comes up in multi-user, and is pretty stable. > > There is still some work to do: > - SMP is still untested > - PTE entries are still 32 bit, physmem >4GB is not yet supported > - ddb does not fully work yet > - thread libraries are not tested yet. > - page table page allocation code needs to be updated to use XKPHYS. > - buildworld still has some components (see -D above) which does not > compile. > - code for 32 bit compatibility is still not there, so only n64 executables > run on n64 kernel. > > But other than this, if you come across any crash or failure in n64 please > let me know. > > Thanks, > JC. > _______________________________________________ > freebsd-mips@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-mips > To unsubscribe, send any mail to "freebsd-mips-unsubscribe@freebsd.org" > From owner-freebsd-mips@FreeBSD.ORG Thu Aug 5 14:13:16 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A9FC106564A for ; Thu, 5 Aug 2010 14:13:16 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-ew0-f54.google.com (mail-ew0-f54.google.com [209.85.215.54]) by mx1.freebsd.org (Postfix) with ESMTP id 130098FC14 for ; Thu, 5 Aug 2010 14:13:15 +0000 (UTC) Received: by ewy26 with SMTP id 26so2745674ewy.13 for ; Thu, 05 Aug 2010 07:13:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=+8uL3b29NVRJbwd/+H+TSQzloyOR++GpjUT01unCrvA=; b=jyb+P1/4/VXwdtFR1Po2xZ0fyYzTjYtQUOuoaFsao1gioxwHGekKL287qAtZNIpp+Y LrMTSwxzHyZm5EdL7RUckOGppzh2J1SkwUmYkFoB4Obh/RdYSZ8NmyiQZMkZGrP4k5CV R765bda06zSnhe5UqN5Tzcwsgim0YVxYw0pHQ= 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=db0Kx06JPWUB8nh7fA3zav0TkCsVQcaLTcXM+BHmu2/nCJivZmZhC6HfXluG9AsINR x9KeQ0+rt8sXsYAh8lNK0R2zukOoBufauGrdPJWOV3tLg+LAHIuy3AkbVlRoJyyiBw1N M8y1j5CCCwsz/W0ugYqPR7vsNFfjVmaL4sm8A= MIME-Version: 1.0 Received: by 10.216.234.132 with SMTP id s4mr3610162weq.0.1281017594729; Thu, 05 Aug 2010 07:13:14 -0700 (PDT) Received: by 10.216.160.10 with HTTP; Thu, 5 Aug 2010 07:13:14 -0700 (PDT) In-Reply-To: References: Date: Thu, 5 Aug 2010 19:43:14 +0530 Message-ID: From: "Jayachandran C." To: waynegong L Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: base64 Cc: freebsd-mips@freebsd.org Subject: Re: HEADSUP : n64 changes in HEAD. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Aug 2010 14:13:16 -0000 T24gVGh1LCBBdWcgNSwgMjAxMCBhdCA2OjQzIFBNLCB3YXluZWdvbmcgTCA8d2F5bmVnb25nODNA Z21haWwuY29tPiB3cm90ZToKPiBIaSBKYXlhY2hhbmRyYW4sCj4KPiBJIGhhdmUgYmVlbiB3YWl0 aW5nIGZvciBuNjQgc3VwcG9ydCBhbmQgaGFwcHkgdG8gc2VlIHRoaXMgbWFpbC4KPiBCdXQgdW5m b3J0dW5hdGVseSBpIGdvdCBhIHBhbmljIHdpdGggdGhlIGZyb20gSEVBRChyZXZpc2lvbiAyMTA4 NTQpIG9uIG15Cj4gb2N0ZW9uIGJvYXJkLiBQbGVhc2UgZmluZCB0aGUgaW5mb3JtYXRpb24gYmVs b3cuCj4gSSBoYXZlIGJ1aWx0IHJvb3RmcyBpbiB0byB0aGUga2VybmVsIGFuZCB0aGUgcm9vdGZz IGlzIHN0cmlwcGVkIG9uZSB3aXRoIDMwTQo+IHNpemUuIEFsc28gU01QIHN1cHBvcnQgaXMgZGlz YWJsZWQgaW4gdGhlIGNvbmZpZyBmaWxlLgoKVGhlcmUgYXJlIGZldyBvdGhlciBjaGFuZ2VzIHRv IHRoZSBjb25maWcgZmlsZSB0b28sIHRvCgpvcHRpb25zICAgICAgICAgSVNBX01JUFM2NAptYWtl b3B0aW9ucyAgICAgTERTQ1JJUFRfTkFNRT1sZHNjcmlwdC5taXBzLjY0Cm1ha2VvcHRpb25zICAg ICBBUkNIX0ZMQUdTPSItbWFyY2g9bWlwczY0IC1tYWJpPTY0IgptYWtlb3B0aW9ucyAgIEtFUk5M T0FEQUREUj0weGZmZmZmZmZmODAxMDAwMDAKCmlkZWFsbHksIHdlIHNob3VsZCBnZXQgdGhpcyBz ZXR1cCB3aGVuIFRBUkdFVF9BQkkgaXMgc2V0LCBidXQgbm90IHlldC4KCj4gLS0tLS0tLS0tLS0t LS0tLS1wYW5pYwo+IGluZm8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiBUcnlpbmcgdG8gbW91bnQgcm9vdCBmcm9tIHVm czovZGV2L21kMAo+IHdhcm5pbmc6IG5vIHRpbWUtb2YtZGF5IGNsb2NrIHJlZ2lzdGVyZWQsIHN5 c3RlbSB0aW1lIHdpbGwgbm90IGJlIHNldAo+IGFjY3VyYXRlbHkKPiBMb29rdXAgb2YgL2RldiBm b3IgZGV2ZnMsIGVycm9yOiAyCj4gc3RhcnRfaW5pdDogdHJ5aW5nIC9zYmluL2luaXQKPiBwYW5p YzogdXNlcnJldDogUmV0dXJuaW5nIHdpdGggMSBsb2NrcyBoZWxkLgo+IEtEQjogZW50ZXI6IHBh bmljCj4gWyB0aHJlYWQgcGlkIDEgdGlkIDEwMDAwMSBdCj4gU3RvcHBlZCBhdKCgoKCgIGtkYl9l bnRlcisweDkwOiBsdWmgoKCgIGF0LDB4MAo+Cj4KPiBBIGJpdCBvZiBkZWJ1Z2dpbmcgcG9pbnRl ZCBoYXMgdGFrZW4gbWUgdG8gbG9ja21nci4KPgo+IGRiPiBzaG93IGFsbGxvY2tzCj4gUHJvY2Vz cyAxIChpbml0KSB0aHJlYWQgMHhjMDAwMDAwMDA3OTI2MDAwICgxMDAwMDEpCj4gZXhjbHVzaXZl IGxvY2ttZ3IgZGV2ZnMgKGRldmZzKSByID0gMCAoMHhjMDAwMDAwMDA3ZmI4Y2YwKSBsb2NrZWQg QAo+IC9mcmVlYnNkL3Rlc3RtYWlubGluZS8KPiBoZWFkL3N5cy9rZXJuL3Zmc19zdWJyLmM6MjEw MQo+Cj4gZGI+IHNob3cgbG9ja2Vkdm5vZHMKPiBMb2NrZWQgdm5vZGVzCj4KPiBkYj4gc2hvdyBs b2NrIDB4YzAwMDAwMDAwN2ZiOGNmMAo+IKBjbGFzczogbG9ja21ncgo+IKBuYW1lOiBkZXZmcwo+ IKBzdGF0ZTogWExPQ0s6IDB4YzAwMDAwMDAwNzkyNjAwMCAodGlkIDEwMDAwMSwgcGlkIDEsICJp bml0IikKPiCgd2FpdGVyczogbm9uZQo+IKBzcGlubmVyczogbm9uZQo+Cj4gZGI+IHNob3cgdGhy ZWFkIDEwMDAwMQo+IFRocmVhZCAxMDAwMDEgYXQgMHhjMDAwMDAwMDA3OTI2MDAwOgo+IKBwcm9j IChwaWQgMSk6IDB4YzAwMDAwMDAwNzkyMzAwMAo+IKBuYW1lOiBpbml0Cj4goHN0YWNrOiAweGMw MDAwMDAwMjU4OWMwMDAtMHhjMDAwMDAwMDI1ODlkZmZmCj4goGZsYWdzOiAweDEwMDAwMDSgIHBm bGFnczogMAo+IKBzdGF0ZTogUlVOTklORyAoQ1BVIDApCj4goHByaW9yaXR5OiAxODAKPiCgY29u dGFpbmVyIGxvY2s6IHNjaGVkIGxvY2sgKDB4ZmZmZmZmZmY4MjQwYTMzOCkKPgo+Cj4gZGI+oCBw cwo+IKAgcGlkoCBwcGlkoCBwZ3JwoKAgdWlkoKAgc3RhdGWgoCB3bWVzZ6CgoKCgoKCgIHdjaGFu oKCgoKCgoCBjbWQKPiCgoCAxNaCgoKAgMKCgoKAgMKCgoKAgMKAgREygoKCgoCBtZHdhaXSgoCAw eGMwMDAwMDAwMDgwYTA4MDAgW21kMF0KPiCgoCAxNKCgoKAgMKCgoKAgMKCgoKAgMKAgREygoKCg oCAtoKCgoKCgoCAweGZmZmZmZmZmODI0MDRlYjQgW3NjaGVkY3B1XQo+IKCgIDEzoKCgoCAwoKCg oCAwoKCgoCAwoCBETKCgoKCgIHNkZmx1c2igIDB4ZmZmZmZmZmY4MjViMDBjOCBbc29mdGRlcGZs dXNoXQo+IKCgoCA5oKCgoCAwoKCgoCAwoKCgoCAwoCBETKCgoKCgIHN5bmNlcqCgIDB4ZmZmZmZm ZmY4MjVhYzJhMCBbc3luY2VyXQo+IKCgoCA4oKCgoCAwoKCgoCAwoKCgoCAwoCBETKCgoKCgIHZs cnV3dKCgIDB4YzAwMDAwMDAwODBhOTQ0OCBbdm5scnVdCj4goKCgIDegoKCgIDCgoKCgIDCgoKCg IDCgIERMoKCgoKAgcHNsZWVwoKAgMHhmZmZmZmZmZjgyNWFiZTUwIFtidWZkYWVtb25dCj4goKCg IDagoKCgIDCgoKCgIDCgoKCgIDCgIFJMoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg IFtwYWdlemVyb10KPiCgoKAgNaCgoKAgMKCgoKAgMKCgoKAgMKAgREygoKCgoCBwc2xlZXCgoCAw eGZmZmZmZmZmODI1YjBlOGMgW3BhZ2VkYWVtb25dCj4goKAgMTKgoKCgIDCgoKCgIDCgoKCgIDCg IERMoKCgoKAgLaCgoKCgoKAgMHhmZmZmZmZmZjgyNDA0ZWI0IFt5YXJyb3ddCj4goKCgIDSgoKCg IDCgoKCgIDCgoKCgIDCgIERMoKCgoKAgLaCgoKCgoKAgMHhmZmZmZmZmZjgyNDAxOTUwIFtnX2Rv d25dCj4goKCgIDOgoKCgIDCgoKCgIDCgoKCgIDCgIERMoKCgoKAgLaCgoKCgoKAgMHhmZmZmZmZm ZjgyNDAxOTQ4IFtnX3VwXQo+IKCgoCAyoKCgoCAwoKCgoCAwoKCgoCAwoCBETKCgoKCgIC2goKCg oKCgIDB4ZmZmZmZmZmY4MjQwMTkzOCBbZ19ldmVudF0KPiCgoCAxMaCgoKAgMKCgoKAgMKCgoKAg MKAgV0ygoKCgoCAodGhyZWFkZWQpoKCgoKCgoKCgoKCgoKCgoKAgW2ludHJdCj4gMTAwMDE1oKCg oKCgoKCgoKCgoKCgoKCgIEmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtzd2kw OiB1YXJ0Cj4gdWFydF0KPiAxMDAwMTSgoKCgoKCgoKCgoKCgoKCgoKAgSaCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKAgW3N3aTU6ICtdCj4gMTAwMDEyoKCgoKCgoKCgoKCgoKCgoKCg IEmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtzd2k2OiB0YXNrCj4gcXVldWVd Cj4gMTAwMDExoKCgoKCgoKCgoKCgoKCgoKCgIEmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgIFtzd2k2OiBHaWFudAo+IHRhc2txXQo+IDEwMDAwNaCgoKCgoKCgoKCgoKCgoKCgoCBJ oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBbc3dpMzogdm1dCj4gMTAwMDA0oKCg oKCgoKCgoKCgoKCgoKCgIEmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtzd2kx OiBuZXRpc3IKPiAwXQo+IDEwMDAwM6CgoKCgoKCgoKCgoKCgoKCgoCBJoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoCBbc3dpNDogY2xvY2tdCj4goKAgMTCgoKCgIDCgoKCgIDCgoKCg IDCgIFJMoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtpZGxlXQo+IKCgoCAxoKCg oCAwoKCgoCAwoKCgoCAwoCBSTKCgoKCgIENQVSAwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBbaW5p dF0KPiCgoKAgMKCgoKAgMKCgoKAgMKCgoKAgMKAgRExzoKCgoCAodGhyZWFkZWQpoKCgoKCgoKCg oKCgoKCgoKAgW2tlcm5lbF0KPiAxMDAwMTegoKCgoKCgoKCgoKCgoKCgoKAgRKCgoKCgoCBkZWFk bGtyZSAweGZmZmZmZmZmODI0MDRlYjQgW2RlYWRsa3Jlc10KPiAxMDAwMTagoKCgoKCgoKCgoKCg oKCgoKAgRKCgoKCgoCAtoKCgoKCgoCAweGMwMDAwMDAwMDc5YjQzODAgW29jdGUgdGFza3FdCj4g MTAwMDEzoKCgoKCgoKCgoKCgoKCgoKCgIESgoKCgoKAgLaCgoKCgoKAgMHhjMDAwMDAwMDA3OTcy ZTAwIFtrcXVldWUgdGFza3FdCj4gMTAwMDEwoKCgoKCgoKCgoKCgoKCgoKCgIESgoKCgoKAgLaCg oKCgoKAgMHhjMDAwMDAwMDA3OTU1NTAwIFt0aHJlYWQgdGFza3FdCj4gMTAwMDAwoKCgoKCgoKCg oKCgoKCgoKCgIESgoKCgoKAgc2NoZWSgoKAgMHhmZmZmZmZmZjgyNDAxOWM4IFtzd2FwcGVyXQo+ Cj4gTXkgZW52IGlzIGFzIGJlbG93Lgo+IFRBUkdFVD1taXBzCj4gVEFSR0VUX0FCST1uNjQKPiBU QVJHRVRfQ1BVVFlQRT1taXBzNjQKPiBUQVJHRVRfQklHX0VORElBTj15Cj4KPiBNeSBrZXJuZWwg YnVpbGQgd2FzIHN1Y2Nlc3NmdWwsIEFsc28gYnVpbGR3b3JsZC9pbnN0YWxsIHdvcmxkIHdhcyBk b25lIHdpdGgKPiB0aGUgYmVsb3cgY29tcG9uZW50cyBhcyBzdWdnZXN0ZWQuCj4gLURXSVRIT1VU X0NEREwgLURXSVRIT1VUX1VTQiAtRFdJVEhPVVRfQkxVRVRPT1RICj4KPiBQbGVhc2UgbGV0IG1l IGtub3cgaWYgeW91IG5lZWQgYW55IG1vcmUgaW5mby4KCmBzaG93IHJlZ2lzdGVycycgb3V0cHV0 IHdpbGwgYmUgZ29vZCwgYnV0IEkgdGhpbmsgdGhlIGtlcm5lbCBpcyBzdGlsbApub3QgNjQgYml0 LCBzbyB0aGUgNjQgYml0IHVzZXJzcGFjZSBjcmFzaGVkLgoKSkMuCg== From owner-freebsd-mips@FreeBSD.ORG Thu Aug 5 14:25:21 2010 Return-Path: Delivered-To: mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 913731065676; Thu, 5 Aug 2010 14:25:21 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 5CBDF8FC18; Thu, 5 Aug 2010 14:25:19 +0000 (UTC) Received: by wyj26 with SMTP id 26so8301414wyj.13 for ; Thu, 05 Aug 2010 07:25:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=8+g/A+/kjGN56ZFh1+ep5oj2w2vMOngcsxKn9akP3hk=; b=WxtDNDvNES2XkJ231mMLHuh4D1PYD/+WYss5shD3dAAYGMN8U7Ey8ciuurCGGuiDgF nneaNvVGfpNqmg6Qpdo63uqIWD0ezCHyOUwfxzHdhteYqNjPwKlxMydwC1aMbRffr0Km z4z3gCSn9eS73siIKpOjYVMw5Og47/ufn+OtY= 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; b=o1tXk3rhPFCa1hCg0/hcf74Nld7WWM5E9sWa6UfbJ4ndZ5Cug5xz8VKQQYhOj3OJq6 p9Q2E/H0jBtO7NYcixJp+9g4VYlgs7AqteI1VBjXtfovrbIq9bjFDslUg6Cw7biOo26U f1HNr9ry7/YWA75z2WnNKMcDKja+SkVmKqt9o= MIME-Version: 1.0 Received: by 10.216.62.206 with SMTP id y56mr9393649wec.59.1281018315269; Thu, 05 Aug 2010 07:25:15 -0700 (PDT) Received: by 10.216.160.10 with HTTP; Thu, 5 Aug 2010 07:25:15 -0700 (PDT) In-Reply-To: References: <201008041412.o74ECAix092415@svn.freebsd.org> <4C5A569B.9090401@cs.rice.edu> Date: Thu, 5 Aug 2010 19:55:15 +0530 Message-ID: From: "Jayachandran C." To: Alan Cox Content-Type: multipart/mixed; boundary=000e0ce004aaa1eb91048d145184 Cc: "Jayachandran C." , mips@freebsd.org Subject: Re: svn commit: r210846 - in head/sys/mips: include mips X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Aug 2010 14:25:21 -0000 --000e0ce004aaa1eb91048d145184 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Thu, Aug 5, 2010 at 4:26 PM, Jayachandran C. wrote: > On Thu, Aug 5, 2010 at 11:43 AM, Alan Cox wrote: >> Just an observation ... >> >> Jayachandran C. wrote: >>> >>> Author: jchandra >>> Date: Wed Aug =A04 14:12:09 2010 >>> New Revision: 210846 >>> URL: http://svn.freebsd.org/changeset/base/210846 >>> >>> Log: >>> =A0Add 3 level page tables for MIPS in n64. >>> =A0 =A0- 32 bit compilation will still use old 2 level page tables >>> =A0- re-arrange pmap code so that adding another level is easier >>> =A0- pmap code for 3 level page tables for n64 >>> =A0- update TLB handler to traverse 3 levels in n64 >>> =A0 =A0Reviewed by: =A0 =A0 =A0 =A0jmallett >> >> MIPS doesn't really need to use atomic_cmpset_int() in situations like t= his >> because the software dirty bit emulation in trap.c acquires the pmap loc= k. >> =A0Atomics like this appear to be a carryover from i386 where the >> hardware-managed TLB might concurrently set the modified bit. > > Then I guess we should be able to use *pte directly, without pbits, > obits and the retry loop. > Will try this change... Can you have a look at the attached patch and see if it is okay? This has the above changes, and I have attempted to fix the other issue you had reported on wired mapping count too. There are a few calls for loadandclear() on pte too, with pmap lock held, can this be avoided too? Thanks, JC. --000e0ce004aaa1eb91048d145184 Content-Type: text/x-patch; charset=US-ASCII; name="pmap.diff" Content-Disposition: attachment; filename="pmap.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gchp6r170 SW5kZXg6IHN5cy9taXBzL2luY2x1ZGUvcG1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL2lu Y2x1ZGUvcG1hcC5oCShyZXZpc2lvbiAyMTA3OTYpCisrKyBzeXMvbWlwcy9pbmNsdWRlL3BtYXAu aAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw2IEBACiAJVEFJTFFfRU5UUlkocHZfZW50 cnkpIHB2X2xpc3Q7CiAJVEFJTFFfRU5UUlkocHZfZW50cnkpIHB2X3BsaXN0OwogCXZtX3BhZ2Vf dCBwdl9wdGVtOwkvKiBWTSBwYWdlIGZvciBwdGUgKi8KLQlib29sZWFuX3QgcHZfd2lyZWQ7CS8q IHdoZXRoZXIgdGhpcyBlbnRyeSBpcyB3aXJlZCAqLwogfSAgICAgICAqcHZfZW50cnlfdDsKIAog CkluZGV4OiBzeXMvbWlwcy9taXBzL3BtYXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbWlwcy9taXBz L3BtYXAuYwkocmV2aXNpb24gMjEwODQ2KQorKysgc3lzL21pcHMvbWlwcy9wbWFwLmMJKHdvcmtp bmcgY29weSkKQEAgLTE0NzMsNyArMTQ3Myw2IEBACiAJCXB2LT5wdl92YSA9IHZhOwogCQlwdi0+ cHZfcG1hcCA9IHBtYXA7CiAJCXB2LT5wdl9wdGVtID0gbXB0ZTsKLQkJcHYtPnB2X3dpcmVkID0g RkFMU0U7CiAJCVRBSUxRX0lOU0VSVF9UQUlMKCZwbWFwLT5wbV9wdmxpc3QsIHB2LCBwdl9wbGlz dCk7CiAJCVRBSUxRX0lOU0VSVF9UQUlMKCZtLT5tZC5wdl9saXN0LCBwdiwgcHZfbGlzdCk7CiAJ CW0tPm1kLnB2X2xpc3RfY291bnQrKzsKQEAgLTE3MTcsNyArMTcxNiw3IEBACiAJdm1fcGFnZV9s b2NrX3F1ZXVlcygpOwogCVBNQVBfTE9DSyhwbWFwKTsKIAlmb3IgKDsgc3ZhIDwgZXZhOyBzdmEg PSB2YV9uZXh0KSB7Ci0JCXB0X2VudHJ5X3QgcGJpdHMsIG9iaXRzOworCQlwdF9lbnRyeV90IHBi aXRzOwogCQl2bV9wYWdlX3QgbTsKIAkJdm1fcGFkZHJfdCBwYTsKIApAQCAtMTc0Niw4ICsxNzQ1 LDcgQEAKIAkJCS8qIFNraXAgaW52YWxpZCBQVEVzICovCiAJCQlpZiAoIXB0ZV90ZXN0KHB0ZSwg UFRFX1YpKQogCQkJCWNvbnRpbnVlOwotcmV0cnk6Ci0JCQlvYml0cyA9IHBiaXRzID0gKnB0ZTsK KwkJCXBiaXRzID0gKnB0ZTsKIAkJCXBhID0gVExCTE9fUFRFX1RPX1BBKHBiaXRzKTsKIAkJCWlm IChwYWdlX2lzX21hbmFnZWQocGEpICYmIHB0ZV90ZXN0KCZwYml0cywgUFRFX0QpKSB7CiAJCQkJ bSA9IFBIWVNfVE9fVk1fUEFHRShwYSk7CkBAIC0xNzU4LDggKzE3NTYsNyBAQAogCQkJcHRlX3Nl dCgmcGJpdHMsIFBURV9STyk7CiAJCQkKIAkJCWlmIChwYml0cyAhPSAqcHRlKSB7Ci0JCQkJaWYg KCFhdG9taWNfY21wc2V0X2ludCgodV9pbnQgKilwdGUsIG9iaXRzLCBwYml0cykpCi0JCQkJCWdv dG8gcmV0cnk7CisJCQkJKnB0ZSA9IHBiaXRzOwogCQkJCXBtYXBfdXBkYXRlX3BhZ2UocG1hcCwg c3ZhLCBwYml0cyk7CiAJCQl9CiAJCX0KQEAgLTE4OTcsNyArMTg5NCw2IEBACiAJCXB2LT5wdl92 YSA9IHZhOwogCQlwdi0+cHZfcG1hcCA9IHBtYXA7CiAJCXB2LT5wdl9wdGVtID0gbXB0ZTsKLQkJ cHYtPnB2X3dpcmVkID0gd2lyZWQ7CiAJCVRBSUxRX0lOU0VSVF9UQUlMKCZwbWFwLT5wbV9wdmxp c3QsIHB2LCBwdl9wbGlzdCk7CiAJCVRBSUxRX0lOU0VSVF9UQUlMKCZtLT5tZC5wdl9saXN0LCBw diwgcHZfbGlzdCk7CiAJCW0tPm1kLnB2X2xpc3RfY291bnQrKzsKQEAgLTI2NTUsMTUgKzI2NTEs MjIgQEAKIHBtYXBfcGFnZV93aXJlZF9tYXBwaW5ncyh2bV9wYWdlX3QgbSkKIHsKIAlwdl9lbnRy eV90IHB2OworCXBtYXBfdCBwbWFwOworCXB0X2VudHJ5X3QgKnB0ZTsKIAlpbnQgY291bnQ7CiAK IAljb3VudCA9IDA7CiAJaWYgKChtLT5mbGFncyAmIFBHX0ZJQ1RJVElPVVMpICE9IDApCiAJCXJl dHVybiAoY291bnQpOwogCXZtX3BhZ2VfbG9ja19xdWV1ZXMoKTsKLQlUQUlMUV9GT1JFQUNIKHB2 LCAmbS0+bWQucHZfbGlzdCwgcHZfbGlzdCkKLQkgICAgaWYgKHB2LT5wdl93aXJlZCkKLQkJY291 bnQrKzsKKwlUQUlMUV9GT1JFQUNIKHB2LCAmbS0+bWQucHZfbGlzdCwgcHZfbGlzdCkgeworCQlw bWFwID0gcHYtPnB2X3BtYXA7CisJCVBNQVBfTE9DSyhwbWFwKTsKKwkJcHRlID0gcG1hcF9wdGUo cG1hcCwgcHYtPnB2X3ZhKTsKKwkJaWYgKHB0ZV90ZXN0KHB0ZSwgUFRFX1cpKQorCQkJY291bnQr KzsKKwkJUE1BUF9VTkxPQ0socG1hcCk7CisJfQogCXZtX3BhZ2VfdW5sb2NrX3F1ZXVlcygpOwog CXJldHVybiAoY291bnQpOwogfQo= --000e0ce004aaa1eb91048d145184-- From owner-freebsd-mips@FreeBSD.ORG Fri Aug 6 05:41:38 2010 Return-Path: Delivered-To: mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 49DC81065677; Fri, 6 Aug 2010 05:41:38 +0000 (UTC) (envelope-from alc@cs.rice.edu) Received: from mail.cs.rice.edu (mail.cs.rice.edu [128.42.1.31]) by mx1.freebsd.org (Postfix) with ESMTP id 11A968FC08; Fri, 6 Aug 2010 05:41:38 +0000 (UTC) Received: from mail.cs.rice.edu (localhost.localdomain [127.0.0.1]) by mail.cs.rice.edu (Postfix) with ESMTP id 64AA12C2B58; Fri, 6 Aug 2010 00:41:37 -0500 (CDT) X-Virus-Scanned: by amavis-2.4.0 at mail.cs.rice.edu Received: from mail.cs.rice.edu ([127.0.0.1]) by mail.cs.rice.edu (mail.cs.rice.edu [127.0.0.1]) (amavisd-new, port 10024) with LMTP id XOguVj0GEfsM; Fri, 6 Aug 2010 00:41:29 -0500 (CDT) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.cs.rice.edu (Postfix) with ESMTP id 4C7282C2B02; Fri, 6 Aug 2010 00:41:29 -0500 (CDT) Message-ID: <4C5BA088.7060105@cs.rice.edu> Date: Fri, 06 Aug 2010 00:41:28 -0500 From: Alan Cox User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.11) Gecko/20100805 Thunderbird/3.0.6 MIME-Version: 1.0 To: "Jayachandran C." References: <201008041412.o74ECAix092415@svn.freebsd.org> <4C5A569B.9090401@cs.rice.edu> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "Jayachandran C." , mips@freebsd.org Subject: Re: svn commit: r210846 - in head/sys/mips: include mips X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Aug 2010 05:41:38 -0000 On 08/05/2010 09:25, Jayachandran C. wrote: > On Thu, Aug 5, 2010 at 4:26 PM, Jayachandran C. > wrote: > >> On Thu, Aug 5, 2010 at 11:43 AM, Alan Cox wrote: >> >>> Just an observation ... >>> >>> Jayachandran C. wrote: >>> >>>> Author: jchandra >>>> Date: Wed Aug 4 14:12:09 2010 >>>> New Revision: 210846 >>>> URL: http://svn.freebsd.org/changeset/base/210846 >>>> >>>> Log: >>>> Add 3 level page tables for MIPS in n64. >>>> - 32 bit compilation will still use old 2 level page tables >>>> - re-arrange pmap code so that adding another level is easier >>>> - pmap code for 3 level page tables for n64 >>>> - update TLB handler to traverse 3 levels in n64 >>>> Reviewed by: jmallett >>>> >>> MIPS doesn't really need to use atomic_cmpset_int() in situations like this >>> because the software dirty bit emulation in trap.c acquires the pmap lock. >>> Atomics like this appear to be a carryover from i386 where the >>> hardware-managed TLB might concurrently set the modified bit. >>> >> Then I guess we should be able to use *pte directly, without pbits, >> obits and the retry loop. >> Will try this change... >> > Can you have a look at the attached patch and see if it is okay? This > has the above changes, and I have attempted to fix the other issue you > had reported on wired mapping count too. > > The patch looks good. > There are a few calls for loadandclear() on pte too, with pmap lock > held, can this be avoided too? > > I haven't looked at them, but almost certainly yes. Alan From owner-freebsd-mips@FreeBSD.ORG Fri Aug 6 06:36:43 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 49FAB106566C for ; Fri, 6 Aug 2010 06:36:43 +0000 (UTC) (envelope-from waynegong83@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id E70F98FC19 for ; Fri, 6 Aug 2010 06:36:42 +0000 (UTC) Received: by vws7 with SMTP id 7so7053021vws.13 for ; Thu, 05 Aug 2010 23:36:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=wYOGY+xBWm4palACF1LqGz6B7c3XUAhzfoIJNjKA+gE=; b=QQKdMsUtKyfUbPccqRakUJPCtFzg3f7+v9qYUfT/ysOPNsNtdhTdW+FpGse5d8kREH 2mHZOuoYmh5Ntifg753pq0awTsoc3nXq4YMWJUcrA9puI/wcT57NofFgI64T/fFxLwYd FAF0IsuA4AuFASC7teL7hn8GcxZJc3UIf8s9o= 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; b=driMdJSFAV7JYmAg2GMpklfXmep8CUP8T6B4ibu7y9UDq3QOL3tTZtM6ZCGF8RwAh4 5CS57y/j1XNoC4gSANZKdc1aZyWBhXOBUEBFvTeGIrVmrhGYs2HF4uq8iknPm2dR7aA6 En+Nf+v2I13EHhEV/pumK+MnHe0j2+l/ZJNAw= MIME-Version: 1.0 Received: by 10.220.62.72 with SMTP id w8mr7975581vch.209.1281076602075; Thu, 05 Aug 2010 23:36:42 -0700 (PDT) Received: by 10.220.186.72 with HTTP; Thu, 5 Aug 2010 23:36:41 -0700 (PDT) In-Reply-To: References: Date: Fri, 6 Aug 2010 12:06:41 +0530 Message-ID: From: waynegong L To: "Jayachandran C." Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-mips@freebsd.org Subject: Re: HEADSUP : n64 changes in HEAD. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Aug 2010 06:36:43 -0000 Jayachandran, Please see my reply inline. On Thu, Aug 5, 2010 at 7:43 PM, Jayachandran C. wrote: > On Thu, Aug 5, 2010 at 6:43 PM, waynegong L wrote: > > Hi Jayachandran, > > > > I have been waiting for n64 support and happy to see this mail. > > But unfortunately i got a panic with the from HEAD(revision 210854) on my > > octeon board. Please find the information below. > > I have built rootfs in to the kernel and the rootfs is stripped one with > 30M > > size. Also SMP support is disabled in the config file. > > As i am building for OCTEON board, my config file OCTEON1 has the respective options options ISA_MIPS64 makeoptions LDSCRIPT_NAME=ldscript.mips.octeon1.64 makeoptions ARCH_FLAGS="-march=octeon -mabi=64" makeoptions KERNLOADADDR=0xffffffff80100000 There are few other changes to the config file too, to > > options ISA_MIPS64 > makeoptions LDSCRIPT_NAME=ldscript.mips.64 > makeoptions ARCH_FLAGS="-march=mips64 -mabi=64" > makeoptions KERNLOADADDR=0xffffffff80100000 > > ideally, we should get this setup when TARGET_ABI is set, but not yet. > > > -----------------panic > > info------------------------------------------------------------------ > > Trying to mount root from ufs:/dev/md0 > > warning: no time-of-day clock registered, system time will not be set > > accurately > > Lookup of /dev for devfs, error: 2 > > start_init: trying /sbin/init > > panic: userret: Returning with 1 locks held. > > KDB: enter: panic > > [ thread pid 1 tid 100001 ] > > Stopped at kdb_enter+0x90: lui at,0x0 > > > > > > A bit of debugging pointed has taken me to lockmgr. > > > > db> show alllocks > > Process 1 (init) thread 0xc000000007926000 (100001) > > exclusive lockmgr devfs (devfs) r = 0 (0xc000000007fb8cf0) locked @ > > /freebsd/testmainline/ > > head/sys/kern/vfs_subr.c:2101 > > > > db> show lockedvnods > > Locked vnodes > > > > db> show lock 0xc000000007fb8cf0 > > class: lockmgr > > name: devfs > > state: XLOCK: 0xc000000007926000 (tid 100001, pid 1, "init") > > waiters: none > > spinners: none > > > > db> show thread 100001 > > Thread 100001 at 0xc000000007926000: > > proc (pid 1): 0xc000000007923000 > > name: init > > stack: 0xc00000002589c000-0xc00000002589dfff > > flags: 0x1000004 pflags: 0 > > state: RUNNING (CPU 0) > > priority: 180 > > container lock: sched lock (0xffffffff8240a338) > > > > > > db> ps > > pid ppid pgrp uid state wmesg wchan cmd > > 15 0 0 0 DL mdwait 0xc0000000080a0800 [md0] > > 14 0 0 0 DL - 0xffffffff82404eb4 [schedcpu] > > 13 0 0 0 DL sdflush 0xffffffff825b00c8 > [softdepflush] > > 9 0 0 0 DL syncer 0xffffffff825ac2a0 [syncer] > > 8 0 0 0 DL vlruwt 0xc0000000080a9448 [vnlru] > > 7 0 0 0 DL psleep 0xffffffff825abe50 [bufdaemon] > > 6 0 0 0 RL [pagezero] > > 5 0 0 0 DL psleep 0xffffffff825b0e8c [pagedaemon] > > 12 0 0 0 DL - 0xffffffff82404eb4 [yarrow] > > 4 0 0 0 DL - 0xffffffff82401950 [g_down] > > 3 0 0 0 DL - 0xffffffff82401948 [g_up] > > 2 0 0 0 DL - 0xffffffff82401938 [g_event] > > 11 0 0 0 WL (threaded) [intr] > > 100015 I [swi0: uart > > uart] > > 100014 I [swi5: +] > > 100012 I [swi6: task > > queue] > > 100011 I [swi6: Giant > > taskq] > > 100005 I [swi3: vm] > > 100004 I [swi1: > netisr > > 0] > > 100003 I [swi4: > clock] > > 10 0 0 0 RL [idle] > > 1 0 0 0 RL CPU 0 [init] > > 0 0 0 0 DLs (threaded) [kernel] > > 100017 D deadlkre 0xffffffff82404eb4 [deadlkres] > > 100016 D - 0xc0000000079b4380 [octe taskq] > > 100013 D - 0xc000000007972e00 [kqueue > taskq] > > 100010 D - 0xc000000007955500 [thread > taskq] > > 100000 D sched 0xffffffff824019c8 [swapper] > > > > My env is as below. > > TARGET=mips > > TARGET_ABI=n64 > > TARGET_CPUTYPE=mips64 > > TARGET_BIG_ENDIAN=y > > > > My kernel build was successful, Also buildworld/install world was done > with > > the below components as suggested. > > -DWITHOUT_CDDL -DWITHOUT_USB -DWITHOUT_BLUETOOTH > > > > Please let me know if you need any more info. > > `show registers' output will be good, but I think the kernel is still > not 64 bit, so the 64 bit userspace crashed. > db> show reg at 0xffffffff82410000 sysctl__debug_witness_children+0x26d8 v0 0x12 _DYNAMIC_LINKING+0x11 v1 0x12 _DYNAMIC_LINKING+0x11 a0 0 a1 0xa _DYNAMIC_LINKING+0x9 a2 0xffffffff825d1fe0 a3 0x109 _DYNAMIC_LINKING+0x108 t0 0 t1 0 t2 0 t3 0 t4 0xc000000007987638 t5 0 t6 0 t7 0 s0 0xffffffff80408ab0 s1 0xc000000007926000 s2 0xc00000002589dd30 s3 0xc000000007923000 s4 0x22 _DYNAMIC_LINKING+0x21 s5 0xc000000007926000 s6 0xc000000007927c80 s7 0x1 _DYNAMIC_LINKING t8 0 t9 0x120004da0 k0 0 k1 0xa _DYNAMIC_LINKING+0x9 gp 0xffffffff82405684 _gp sp 0xc00000002589db70 s8 0x1 _DYNAMIC_LINKING ra 0xffffffff801ffd64 kdb_enter+0x74 sr 0x408084e3 lo 0 hi 0x111d _DYNAMIC_LINKING+0x111c bad 0xc0000000079ac600 cs 0x24 _DYNAMIC_LINKING+0x23 pc 0xffffffff801ffd80 kdb_enter+0x90 kdb_enter+0x90: lui at,0x0 Please let me know if u need any more info. Thanks, wayne. > > JC. > From owner-freebsd-mips@FreeBSD.ORG Fri Aug 6 10:29:11 2010 Return-Path: Delivered-To: mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F737106564A; Fri, 6 Aug 2010 10:29:11 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id E9B3A8FC19; Fri, 6 Aug 2010 10:29:10 +0000 (UTC) Received: by wwa36 with SMTP id 36so7764582wwa.31 for ; Fri, 06 Aug 2010 03:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=fxgcANPul4B8OBGNmU+uvJxRe8qg4WahEutT4MTLm20=; b=HD8k4LgNcDaO6E2/cRlWhYT18i0wXTfi7xoU/jGNF9mo5k2mEG/NDg6mncna0q/I8f suyjTn3LF1RiidpHhHormOjIsTNohhKWB+A2310ft5iTlVL+CyzEBntqYw4Dgan0hd+K 02ZLla7ankQ+x2y08VPxpSsff1QArk+3y5OtE= 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; b=ZTCtDEmJCrQA1EyoP/HO2iWXMvm+dbZQ1DoEzMJHDswXDGf+fPKJl/sYke9y2tk3Ek DTuBPUcy0U403k2fpW5BU7Q5ZMWm8cV4AAmdfOYQITH2/oIuWIOf1d7jrrQ/ZDwhr1Jm egZavw92lL0XlTKo8I9H9hR7U7bD7Q3rHP2vs= MIME-Version: 1.0 Received: by 10.216.155.206 with SMTP id j56mr2866183wek.67.1281090549833; Fri, 06 Aug 2010 03:29:09 -0700 (PDT) Received: by 10.216.160.10 with HTTP; Fri, 6 Aug 2010 03:29:09 -0700 (PDT) In-Reply-To: <4C5BA088.7060105@cs.rice.edu> References: <201008041412.o74ECAix092415@svn.freebsd.org> <4C5A569B.9090401@cs.rice.edu> <4C5BA088.7060105@cs.rice.edu> Date: Fri, 6 Aug 2010 15:59:09 +0530 Message-ID: From: "Jayachandran C." To: Alan Cox Content-Type: multipart/mixed; boundary=0016363ba3e225e292048d2523fa Cc: "Jayachandran C." , mips@freebsd.org Subject: Re: svn commit: r210846 - in head/sys/mips: include mips X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Aug 2010 10:29:11 -0000 --0016363ba3e225e292048d2523fa Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Fri, Aug 6, 2010 at 11:11 AM, Alan Cox wrote: > On 08/05/2010 09:25, Jayachandran C. wrote: >> >> On Thu, Aug 5, 2010 at 4:26 PM, Jayachandran C. >> =A0wrote: >> >>> >>> On Thu, Aug 5, 2010 at 11:43 AM, Alan Cox =A0wrote: >>> >>>> >>>> Just an observation ... >>>> >>>> Jayachandran C. wrote: >>>> >>>>> >>>>> Author: jchandra >>>>> Date: Wed Aug =A04 14:12:09 2010 >>>>> New Revision: 210846 >>>>> URL: http://svn.freebsd.org/changeset/base/210846 >>>>> >>>>> Log: >>>>> =A0Add 3 level page tables for MIPS in n64. >>>>> =A0 =A0- 32 bit compilation will still use old 2 level page tables >>>>> =A0- re-arrange pmap code so that adding another level is easier >>>>> =A0- pmap code for 3 level page tables for n64 >>>>> =A0- update TLB handler to traverse 3 levels in n64 >>>>> =A0 =A0Reviewed by: =A0 =A0 =A0 =A0jmallett >>>>> >>>> >>>> MIPS doesn't really need to use atomic_cmpset_int() in situations like >>>> this >>>> because the software dirty bit emulation in trap.c acquires the pmap >>>> lock. >>>> =A0Atomics like this appear to be a carryover from i386 where the >>>> hardware-managed TLB might concurrently set the modified bit. >>>> >>> >>> Then I guess we should be able to use *pte directly, without pbits, >>> obits and the retry loop. >>> Will try this change... >>> >> >> Can you have a look at the attached patch and see if it is okay? =A0This >> has the above changes, and I have attempted to fix the other issue you >> had reported on wired mapping count too. >> > > The patch looks good. > >> There are a few calls for loadandclear() on pte too, with pmap lock >> held, can this be avoided too? >> > > I haven't looked at them, but almost certainly yes. The calls are in pmap_remove_pte(), pmap_remove_all() and get_pv_entry(). the attached patch changes it normal pointer operations. Thought I would post it for review before checking in... Thanks, JC. --0016363ba3e225e292048d2523fa Content-Type: text/x-patch; charset=US-ASCII; name="loadandclear.patch" Content-Disposition: attachment; filename="loadandclear.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcivyj9w0 SW5kZXg6IHN5cy9taXBzL21pcHMvcG1hcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9taXBzL21pcHMv cG1hcC5jCShyZXZpc2lvbiAyMTA5MjIpCisrKyBzeXMvbWlwcy9taXBzL3BtYXAuYwkod29ya2lu ZyBjb3B5KQpAQCAtMTM1Miw5ICsxMzUyLDExIEBACiAJCQlwbWFwLT5wbV9zdGF0cy5yZXNpZGVu dF9jb3VudC0tOwogCQkJcHRlID0gcG1hcF9wdGUocG1hcCwgdmEpOwogCQkJS0FTU0VSVChwdGUg IT0gTlVMTCwgKCJwdGUiKSk7Ci0JCQlvbGRwdGUgPSBsb2FkYW5kY2xlYXIoKHVfaW50ICopcHRl KTsKKwkJCW9sZHB0ZSA9ICpwdGU7CiAJCQlpZiAoaXNfa2VybmVsX3BtYXAocG1hcCkpCiAJCQkJ KnB0ZSA9IFBURV9HOworCQkJZWxzZQorCQkJCSpwdGUgPSAwOwogCQkJS0FTU0VSVCghcHRlX3Rl c3QoJm9sZHB0ZSwgUFRFX1cpLAogCQkJICAgICgid2lyZWQgcHRlIGZvciB1bndpcmVkIHBhZ2Ui KSk7CiAJCQlpZiAobS0+bWQucHZfZmxhZ3MgJiBQVl9UQUJMRV9SRUYpCkBAIC0xNDk0LDkgKzE0 OTYsMTEgQEAKIAltdHhfYXNzZXJ0KCZ2bV9wYWdlX3F1ZXVlX210eCwgTUFfT1dORUQpOwogCVBN QVBfTE9DS19BU1NFUlQocG1hcCwgTUFfT1dORUQpOwogCi0Jb2xkcHRlID0gbG9hZGFuZGNsZWFy KCh1X2ludCAqKXB0cSk7CisJb2xkcHRlID0gKnB0cTsKIAlpZiAoaXNfa2VybmVsX3BtYXAocG1h cCkpCiAJCSpwdHEgPSBQVEVfRzsKKwllbHNlCisJCSpwdHEgPSAwOwogCiAJaWYgKHB0ZV90ZXN0 KCZvbGRwdGUsIFBURV9XKSkKIAkJcG1hcC0+cG1fc3RhdHMud2lyZWRfY291bnQgLT0gMTsKQEAg LTE2NTcsOSArMTY2MSwxMSBAQAogCiAJCXB0ZSA9IHBtYXBfcHRlKHB2LT5wdl9wbWFwLCBwdi0+ cHZfdmEpOwogCi0JCXRwdGUgPSBsb2FkYW5kY2xlYXIoKHVfaW50ICopcHRlKTsKKwkJdHB0ZSA9 ICpwdGU7CiAJCWlmIChpc19rZXJuZWxfcG1hcChwdi0+cHZfcG1hcCkpCiAJCQkqcHRlID0gUFRF X0c7CisJCWVsc2UKKwkJCSpwdGUgPSAwOwogCiAJCWlmIChwdGVfdGVzdCgmdHB0ZSwgUFRFX1cp KQogCQkJcHYtPnB2X3BtYXAtPnBtX3N0YXRzLndpcmVkX2NvdW50LS07Cg== --0016363ba3e225e292048d2523fa-- From owner-freebsd-mips@FreeBSD.ORG Fri Aug 6 16:36:36 2010 Return-Path: Delivered-To: mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82947106566C; Fri, 6 Aug 2010 16:36:36 +0000 (UTC) (envelope-from alc@cs.rice.edu) Received: from mail.cs.rice.edu (mail.cs.rice.edu [128.42.1.31]) by mx1.freebsd.org (Postfix) with ESMTP id 48E428FC1F; Fri, 6 Aug 2010 16:36:35 +0000 (UTC) Received: from mail.cs.rice.edu (localhost.localdomain [127.0.0.1]) by mail.cs.rice.edu (Postfix) with ESMTP id 5B9CC2C2C56; Fri, 6 Aug 2010 11:36:35 -0500 (CDT) X-Virus-Scanned: by amavis-2.4.0 at mail.cs.rice.edu Received: from mail.cs.rice.edu ([127.0.0.1]) by mail.cs.rice.edu (mail.cs.rice.edu [127.0.0.1]) (amavisd-new, port 10024) with LMTP id iI2Nv6s-w5yj; Fri, 6 Aug 2010 11:36:27 -0500 (CDT) Received: from adsl-216-63-78-18.dsl.hstntx.swbell.net (adsl-216-63-78-18.dsl.hstntx.swbell.net [216.63.78.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.cs.rice.edu (Postfix) with ESMTP id 1FF372C2C54; Fri, 6 Aug 2010 11:36:27 -0500 (CDT) Message-ID: <4C5C3A08.500@cs.rice.edu> Date: Fri, 06 Aug 2010 11:36:24 -0500 From: Alan Cox User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.11) Gecko/20100805 Thunderbird/3.0.6 MIME-Version: 1.0 To: "Jayachandran C." References: <201008041412.o74ECAix092415@svn.freebsd.org> <4C5A569B.9090401@cs.rice.edu> <4C5BA088.7060105@cs.rice.edu> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: "Jayachandran C." , Alan Cox , mips@freebsd.org Subject: Re: svn commit: r210846 - in head/sys/mips: include mips X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Aug 2010 16:36:36 -0000 On 08/06/2010 05:29, Jayachandran C. wrote: > On Fri, Aug 6, 2010 at 11:11 AM, Alan Cox wrote: > >> On 08/05/2010 09:25, Jayachandran C. wrote: >> >>> On Thu, Aug 5, 2010 at 4:26 PM, Jayachandran C. >>> wrote: >>> >>> >>>> On Thu, Aug 5, 2010 at 11:43 AM, Alan Cox wrote: >>>> >>>> >>>>> Just an observation ... >>>>> >>>>> Jayachandran C. wrote: >>>>> >>>>> >>>>>> Author: jchandra >>>>>> Date: Wed Aug 4 14:12:09 2010 >>>>>> New Revision: 210846 >>>>>> URL: http://svn.freebsd.org/changeset/base/210846 >>>>>> >>>>>> Log: >>>>>> Add 3 level page tables for MIPS in n64. >>>>>> - 32 bit compilation will still use old 2 level page tables >>>>>> - re-arrange pmap code so that adding another level is easier >>>>>> - pmap code for 3 level page tables for n64 >>>>>> - update TLB handler to traverse 3 levels in n64 >>>>>> Reviewed by: jmallett >>>>>> >>>>>> >>>>> MIPS doesn't really need to use atomic_cmpset_int() in situations like >>>>> this >>>>> because the software dirty bit emulation in trap.c acquires the pmap >>>>> lock. >>>>> Atomics like this appear to be a carryover from i386 where the >>>>> hardware-managed TLB might concurrently set the modified bit. >>>>> >>>>> >>>> Then I guess we should be able to use *pte directly, without pbits, >>>> obits and the retry loop. >>>> Will try this change... >>>> >>>> >>> Can you have a look at the attached patch and see if it is okay? This >>> has the above changes, and I have attempted to fix the other issue you >>> had reported on wired mapping count too. >>> >>> >> The patch looks good. >> >> >>> There are a few calls for loadandclear() on pte too, with pmap lock >>> held, can this be avoided too? >>> >>> >> I haven't looked at them, but almost certainly yes. >> > The calls are in pmap_remove_pte(), pmap_remove_all() and > get_pv_entry(). the attached patch changes it normal pointer > operations. Thought I would post it for review before checking in... > The patch looks good. While we're talking about software dirty bit emulation, I would encourage you to look at two things: 1. trap.c contains two copies of the same code for emulation. I would encourage you to eliminate this duplication by creating a pmap_emulate_modified(). 2. Software dirty bit emulation is using pmap_update_page() to invalidate the TLB entry on which the modified bit is being set. On a multiprocessor, this is going to make dirty bit emulation very costly because every processor will be interrupted. In principle, it should be possible and faster to only flush the TLB entry from the current processor. The other processors can handle this lazily. They either do not have that mapping in their TLB, in which case interrupting them was wasted effort, or they do have it in their TLB and when they fault on it they'll discover the dirty bit is already set. In fact, the emulation code already handles this case, on account of the fact that two processors could simultaneously write to the same clean page and only one will get the pmap lock first. From owner-freebsd-mips@FreeBSD.ORG Fri Aug 6 23:31:30 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AF93106564A for ; Fri, 6 Aug 2010 23:31:30 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-iw0-f182.google.com (mail-iw0-f182.google.com [209.85.214.182]) by mx1.freebsd.org (Postfix) with ESMTP id 37DAD8FC08 for ; Fri, 6 Aug 2010 23:31:29 +0000 (UTC) Received: by iwn10 with SMTP id 10so2106868iwn.13 for ; Fri, 06 Aug 2010 16:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:date:message-id :subject:from:to:content-type; bh=/QoVX39h+aHNBCQvHpjw46SXE2jatENxBCM8G7vojZM=; b=KnAQmj5YhaiReaVeGbgXVEzxV3iV7xUpynLKw6LkDJfzR+9cm3HYMTRsaDpVjb0YBn koxBn6rnDM/O6KnVQOU81iOl9dG3B8AMFxs/Fskd355zeKGKRJIKZQFgRrGoo9PpdfrO brCsvFIXsiJzpgpE6p4TzGTCA/cc4GoCsQ39U= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=a/AeVX0zDtMKvj3YDxlqXSiOqqvEMbH7mJVbNcxHJADB31YWUKfW88Th5aX3/jWv2n DtD0qFtNjZGD1FaCjIDNzgeSvCCHMf/HD/G5nMs2WQ7Gi+dH4XvcGdGNm7X4UXKwf63R a/wgQcdRqHlSCo1PQ9rB+H2JFyGw5ylDWpVuE= MIME-Version: 1.0 Received: by 10.231.14.200 with SMTP id h8mr13479792iba.188.1281137489278; Fri, 06 Aug 2010 16:31:29 -0700 (PDT) Received: by 10.231.158.71 with HTTP; Fri, 6 Aug 2010 16:31:29 -0700 (PDT) Date: Sat, 7 Aug 2010 07:31:29 +0800 Message-ID: From: Adrian Chadd To: freebsd-mips@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Subject: crunchide fixes for -mips X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Aug 2010 23:31:30 -0000 Hi, I've just fixed up crunchide to generate MIPS-happy hidden symbols. This is a port of the netbsd exec_elf32.c but using the byte order macros in ours. I've tested it compiling both locally-built crunch'ed binaries and cross-compile'd crunch binaries. I've generated both (functioning!) static and dynamic rescue binaries for MIPS. I haven't (yet) tested 32/64 bit x86 binaries or any other platforms. Because the change in symbol hiding was done for MIPS relocation-related reasons, I'd like a MIPS-centric review please. http://people.freebsd.org/~adrian/crunchide-mips32-fix-from-netbsd.diff Thanks! Adrian From owner-freebsd-mips@FreeBSD.ORG Sat Aug 7 04:17:41 2010 Return-Path: Delivered-To: freebsd-mips@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 02E67106566C for ; Sat, 7 Aug 2010 04:17:41 +0000 (UTC) (envelope-from c.jayachandran@gmail.com) Received: from mail-wy0-f182.google.com (mail-wy0-f182.google.com [74.125.82.182]) by mx1.freebsd.org (Postfix) with ESMTP id 84E878FC14 for ; Sat, 7 Aug 2010 04:17:40 +0000 (UTC) Received: by wyj26 with SMTP id 26so10544193wyj.13 for ; Fri, 06 Aug 2010 21:17:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=DThhDaVwqi7o3hWqnEXvHW8GaWAdJCBf0tUIfIJjtbs=; b=AwDmve4w60AOi3qTIShplObU3znP0SoBHjZpmHwwtLwlrWljWNBsRCQsoHCrWI/s06 D0ZX3zznCteovdpQucOTqcxmQQsB//UAJ7rgSXmBLklsykvcWJ/+iWt342n8xLh3HzCI 1BP1FRfMvhrxFYcQNAcVBYDRunaPoq5WgH15U= 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=oyvlwyudkvwtvrX6xuBSj3G8E9/nrU+1tttQJr94Iiy+LTthHMbSnGeppIAeonx9W6 x4IGj6FgcWPrnK2koo86I+ovavpzsq+A3Ipi/NPaPOp672qouIC/8eaZ01QYg98KnSCK UcL7ObT9RN3UvFNG8xqXujy7U0fRH+bgBHXyU= MIME-Version: 1.0 Received: by 10.227.151.83 with SMTP id b19mr11298919wbw.205.1281154659452; Fri, 06 Aug 2010 21:17:39 -0700 (PDT) Received: by 10.216.160.10 with HTTP; Fri, 6 Aug 2010 21:17:39 -0700 (PDT) In-Reply-To: References: Date: Sat, 7 Aug 2010 09:47:39 +0530 Message-ID: From: "Jayachandran C." To: waynegong L Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: base64 Cc: freebsd-mips@freebsd.org Subject: Re: HEADSUP : n64 changes in HEAD. X-BeenThere: freebsd-mips@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to MIPS List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 07 Aug 2010 04:17:41 -0000 T24gRnJpLCBBdWcgNiwgMjAxMCBhdCAxMjowNiBQTSwgd2F5bmVnb25nIEwgPHdheW5lZ29uZzgz QGdtYWlsLmNvbT4gd3JvdGU6Cj4gSmF5YWNoYW5kcmFuLAo+Cj4gUGxlYXNlIHNlZSBteSByZXBs eSBpbmxpbmUuCj4KPiBPbiBUaHUsIEF1ZyA1LCAyMDEwIGF0IDc6NDMgUE0sIEpheWFjaGFuZHJh biBDLiA8Yy5qYXlhY2hhbmRyYW5AZ21haWwuY29tPgo+IHdyb3RlOgo+Pgo+PiBPbiBUaHUsIEF1 ZyA1LCAyMDEwIGF0IDY6NDMgUE0sIHdheW5lZ29uZyBMIDx3YXluZWdvbmc4M0BnbWFpbC5jb20+ IHdyb3RlOgo+PiA+IEhpIEpheWFjaGFuZHJhbiwKPj4gPgo+PiA+IEkgaGF2ZSBiZWVuIHdhaXRp bmcgZm9yIG42NCBzdXBwb3J0IGFuZCBoYXBweSB0byBzZWUgdGhpcyBtYWlsLgo+PiA+IEJ1dCB1 bmZvcnR1bmF0ZWx5IGkgZ290IGEgcGFuaWMgd2l0aCB0aGUgZnJvbSBIRUFEKHJldmlzaW9uIDIx MDg1NCkgb24KPj4gPiBteQo+PiA+IG9jdGVvbiBib2FyZC4gUGxlYXNlIGZpbmQgdGhlIGluZm9y bWF0aW9uIGJlbG93Lgo+PiA+IEkgaGF2ZSBidWlsdCByb290ZnMgaW4gdG8gdGhlIGtlcm5lbCBh bmQgdGhlIHJvb3RmcyBpcyBzdHJpcHBlZCBvbmUgd2l0aAo+PiA+IDMwTQo+PiA+IHNpemUuIEFs c28gU01QIHN1cHBvcnQgaXMgZGlzYWJsZWQgaW4gdGhlIGNvbmZpZyBmaWxlLgo+Pgo+IEFzIGkg YW0gYnVpbGRpbmcgZm9yIE9DVEVPTiBib2FyZCwgbXkgY29uZmlnIGZpbGUgT0NURU9OMSBoYXMg dGhlIHJlc3BlY3RpdmUKPiBvcHRpb25zCj4KPiBvcHRpb25zoKCgoKCgoKAgSVNBX01JUFM2NAo+ IG1ha2VvcHRpb25zoKCgoCBMRFNDUklQVF9OQU1FPWxkc2NyaXB0Lm1pcHMub2N0ZW9uMS42NAo+ IG1ha2VvcHRpb25zoKCgoCBBUkNIX0ZMQUdTPSItbWFyY2g9b2N0ZW9uIC1tYWJpPTY0Igo+IG1h a2VvcHRpb25zoKCgoCBLRVJOTE9BREFERFI9MHhmZmZmZmZmZjgwMTAwMDAwCj4KPgo+PiBUaGVy ZSBhcmUgZmV3IG90aGVyIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIHRvbywgdG8KPj4KPj4g b3B0aW9ucyCgIKAgoCCgIElTQV9NSVBTNjQKPj4gbWFrZW9wdGlvbnMgoCCgIExEU0NSSVBUX05B TUU9bGRzY3JpcHQubWlwcy42NAo+PiBtYWtlb3B0aW9ucyCgIKAgQVJDSF9GTEFHUz0iLW1hcmNo PW1pcHM2NCAtbWFiaT02NCIKPj4gbWFrZW9wdGlvbnMgoCBLRVJOTE9BREFERFI9MHhmZmZmZmZm ZjgwMTAwMDAwCj4+Cj4+IGlkZWFsbHksIHdlIHNob3VsZCBnZXQgdGhpcyBzZXR1cCB3aGVuIFRB UkdFVF9BQkkgaXMgc2V0LCBidXQgbm90IHlldC4KPj4KPj4gPiAtLS0tLS0tLS0tLS0tLS0tLXBh bmljCj4+ID4gaW5mby0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiA+IFRyeWluZyB0byBtb3VudCByb290IGZyb20gdWZz Oi9kZXYvbWQwCj4+ID4gd2FybmluZzogbm8gdGltZS1vZi1kYXkgY2xvY2sgcmVnaXN0ZXJlZCwg c3lzdGVtIHRpbWUgd2lsbCBub3QgYmUgc2V0Cj4+ID4gYWNjdXJhdGVseQo+PiA+IExvb2t1cCBv ZiAvZGV2IGZvciBkZXZmcywgZXJyb3I6IDIKPj4gPiBzdGFydF9pbml0OiB0cnlpbmcgL3NiaW4v aW5pdAo+PiA+IHBhbmljOiB1c2VycmV0OiBSZXR1cm5pbmcgd2l0aCAxIGxvY2tzIGhlbGQuCj4+ ID4gS0RCOiBlbnRlcjogcGFuaWMKPj4gPiBbIHRocmVhZCBwaWQgMSB0aWQgMTAwMDAxIF0KPj4g PiBTdG9wcGVkIGF0oKCgoKAga2RiX2VudGVyKzB4OTA6IGx1aaCgoKAgYXQsMHgwCj4+ID4KPj4g Pgo+PiA+IEEgYml0IG9mIGRlYnVnZ2luZyBwb2ludGVkIGhhcyB0YWtlbiBtZSB0byBsb2NrbWdy Lgo+PiA+Cj4+ID4gZGI+IHNob3cgYWxsbG9ja3MKPj4gPiBQcm9jZXNzIDEgKGluaXQpIHRocmVh ZCAweGMwMDAwMDAwMDc5MjYwMDAgKDEwMDAwMSkKPj4gPiBleGNsdXNpdmUgbG9ja21nciBkZXZm cyAoZGV2ZnMpIHIgPSAwICgweGMwMDAwMDAwMDdmYjhjZjApIGxvY2tlZCBACj4+ID4gL2ZyZWVi c2QvdGVzdG1haW5saW5lLwo+PiA+IGhlYWQvc3lzL2tlcm4vdmZzX3N1YnIuYzoyMTAxCj4+ID4K Pj4gPiBkYj4gc2hvdyBsb2NrZWR2bm9kcwo+PiA+IExvY2tlZCB2bm9kZXMKPj4gPgo+PiA+IGRi PiBzaG93IGxvY2sgMHhjMDAwMDAwMDA3ZmI4Y2YwCj4+ID4goGNsYXNzOiBsb2NrbWdyCj4+ID4g oG5hbWU6IGRldmZzCj4+ID4goHN0YXRlOiBYTE9DSzogMHhjMDAwMDAwMDA3OTI2MDAwICh0aWQg MTAwMDAxLCBwaWQgMSwgImluaXQiKQo+PiA+IKB3YWl0ZXJzOiBub25lCj4+ID4goHNwaW5uZXJz OiBub25lCj4+ID4KPj4gPiBkYj4gc2hvdyB0aHJlYWQgMTAwMDAxCj4+ID4gVGhyZWFkIDEwMDAw MSBhdCAweGMwMDAwMDAwMDc5MjYwMDA6Cj4+ID4goHByb2MgKHBpZCAxKTogMHhjMDAwMDAwMDA3 OTIzMDAwCj4+ID4goG5hbWU6IGluaXQKPj4gPiCgc3RhY2s6IDB4YzAwMDAwMDAyNTg5YzAwMC0w eGMwMDAwMDAwMjU4OWRmZmYKPj4gPiCgZmxhZ3M6IDB4MTAwMDAwNKAgcGZsYWdzOiAwCj4+ID4g oHN0YXRlOiBSVU5OSU5HIChDUFUgMCkKPj4gPiCgcHJpb3JpdHk6IDE4MAo+PiA+IKBjb250YWlu ZXIgbG9jazogc2NoZWQgbG9jayAoMHhmZmZmZmZmZjgyNDBhMzM4KQo+PiA+Cj4+ID4KPj4gPiBk Yj6gIHBzCj4+ID4goCBwaWSgIHBwaWSgIHBncnCgoCB1aWSgoCBzdGF0ZaCgIHdtZXNnoKCgoKCg oKAgd2NoYW6goKCgoKCgIGNtZAo+PiA+IKCgIDE1oKCgoCAwoKCgoCAwoKCgoCAwoCBETKCgoKCg IG1kd2FpdKCgIDB4YzAwMDAwMDAwODBhMDgwMCBbbWQwXQo+PiA+IKCgIDE0oKCgoCAwoKCgoCAw oKCgoCAwoCBETKCgoKCgIC2goKCgoKCgIDB4ZmZmZmZmZmY4MjQwNGViNCBbc2NoZWRjcHVdCj4+ ID4goKAgMTOgoKCgIDCgoKCgIDCgoKCgIDCgIERMoKCgoKAgc2RmbHVzaKAgMHhmZmZmZmZmZjgy NWIwMGM4Cj4+ID4gW3NvZnRkZXBmbHVzaF0KPj4gPiCgoKAgOaCgoKAgMKCgoKAgMKCgoKAgMKAg REygoKCgoCBzeW5jZXKgoCAweGZmZmZmZmZmODI1YWMyYTAgW3N5bmNlcl0KPj4gPiCgoKAgOKCg oKAgMKCgoKAgMKCgoKAgMKAgREygoKCgoCB2bHJ1d3SgoCAweGMwMDAwMDAwMDgwYTk0NDggW3Zu bHJ1XQo+PiA+IKCgoCA3oKCgoCAwoKCgoCAwoKCgoCAwoCBETKCgoKCgIHBzbGVlcKCgIDB4ZmZm ZmZmZmY4MjVhYmU1MCBbYnVmZGFlbW9uXQo+PiA+IKCgoCA2oKCgoCAwoKCgoCAwoKCgoCAwoCBS TKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBbcGFnZXplcm9dCj4+ID4goKCgIDWg oKCgIDCgoKCgIDCgoKCgIDCgIERMoKCgoKAgcHNsZWVwoKAgMHhmZmZmZmZmZjgyNWIwZThjCj4+ ID4gW3BhZ2VkYWVtb25dCj4+ID4goKAgMTKgoKCgIDCgoKCgIDCgoKCgIDCgIERMoKCgoKAgLaCg oKCgoKAgMHhmZmZmZmZmZjgyNDA0ZWI0IFt5YXJyb3ddCj4+ID4goKCgIDSgoKCgIDCgoKCgIDCg oKCgIDCgIERMoKCgoKAgLaCgoKCgoKAgMHhmZmZmZmZmZjgyNDAxOTUwIFtnX2Rvd25dCj4+ID4g oKCgIDOgoKCgIDCgoKCgIDCgoKCgIDCgIERMoKCgoKAgLaCgoKCgoKAgMHhmZmZmZmZmZjgyNDAx OTQ4IFtnX3VwXQo+PiA+IKCgoCAyoKCgoCAwoKCgoCAwoKCgoCAwoCBETKCgoKCgIC2goKCgoKCg IDB4ZmZmZmZmZmY4MjQwMTkzOCBbZ19ldmVudF0KPj4gPiCgoCAxMaCgoKAgMKCgoKAgMKCgoKAg MKAgV0ygoKCgoCAodGhyZWFkZWQpoKCgoKCgoKCgoKCgoKCgoKAgW2ludHJdCj4+ID4gMTAwMDE1 oKCgoKCgoKCgoKCgoKCgoKCgIEmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtz d2kwOiB1YXJ0Cj4+ID4gdWFydF0KPj4gPiAxMDAwMTSgoKCgoKCgoKCgoKCgoKCgoKAgSaCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgW3N3aTU6ICtdCj4+ID4gMTAwMDEyoKCgoKCg oKCgoKCgoKCgoKCgIEmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtzd2k2OiB0 YXNrCj4+ID4gcXVldWVdCj4+ID4gMTAwMDExoKCgoKCgoKCgoKCgoKCgoKCgIEmgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtzd2k2Ogo+PiA+IEdpYW50Cj4+ID4gdGFza3FdCj4+ ID4gMTAwMDA1oKCgoKCgoKCgoKCgoKCgoKCgIEmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgIFtzd2kzOiB2bV0KPj4gPiAxMDAwMDSgoKCgoKCgoKCgoKCgoKCgoKAgSaCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgW3N3aTE6Cj4+ID4gbmV0aXNyCj4+ID4gMF0KPj4g PiAxMDAwMDOgoKCgoKCgoKCgoKCgoKCgoKAgSaCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKAgW3N3aTQ6Cj4+ID4gY2xvY2tdCj4+ID4goKAgMTCgoKCgIDCgoKCgIDCgoKCgIDCgIFJM oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIFtpZGxlXQo+PiA+IKCgoCAxoKCgoCAw oKCgoCAwoKCgoCAwoCBSTKCgoKCgIENQVSAwoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBbaW5pdF0K Pj4gPiCgoKAgMKCgoKAgMKCgoKAgMKCgoKAgMKAgRExzoKCgoCAodGhyZWFkZWQpoKCgoKCgoKCg oKCgoKCgoKAgW2tlcm5lbF0KPj4gPiAxMDAwMTegoKCgoKCgoKCgoKCgoKCgoKAgRKCgoKCgoCBk ZWFkbGtyZSAweGZmZmZmZmZmODI0MDRlYjQgW2RlYWRsa3Jlc10KPj4gPiAxMDAwMTagoKCgoKCg oKCgoKCgoKCgoKAgRKCgoKCgoCAtoKCgoKCgoCAweGMwMDAwMDAwMDc5YjQzODAgW29jdGUKPj4g PiB0YXNrcV0KPj4gPiAxMDAwMTOgoKCgoKCgoKCgoKCgoKCgoKAgRKCgoKCgoCAtoKCgoKCgoCAw eGMwMDAwMDAwMDc5NzJlMDAgW2txdWV1ZQo+PiA+IHRhc2txXQo+PiA+IDEwMDAxMKCgoKCgoKCg oKCgoKCgoKCgoCBEoKCgoKCgIC2goKCgoKCgIDB4YzAwMDAwMDAwNzk1NTUwMCBbdGhyZWFkCj4+ ID4gdGFza3FdCj4+ID4gMTAwMDAwoKCgoKCgoKCgoKCgoKCgoKCgIESgoKCgoKAgc2NoZWSgoKAg MHhmZmZmZmZmZjgyNDAxOWM4IFtzd2FwcGVyXQo+PiA+Cj4+ID4gTXkgZW52IGlzIGFzIGJlbG93 Lgo+PiA+IFRBUkdFVD1taXBzCj4+ID4gVEFSR0VUX0FCST1uNjQKPj4gPiBUQVJHRVRfQ1BVVFlQ RT1taXBzNjQKPj4gPiBUQVJHRVRfQklHX0VORElBTj15Cj4+ID4KPj4gPiBNeSBrZXJuZWwgYnVp bGQgd2FzIHN1Y2Nlc3NmdWwsIEFsc28gYnVpbGR3b3JsZC9pbnN0YWxsIHdvcmxkIHdhcyBkb25l Cj4+ID4gd2l0aAo+PiA+IHRoZSBiZWxvdyBjb21wb25lbnRzIGFzIHN1Z2dlc3RlZC4KPj4gPiAt RFdJVEhPVVRfQ0RETCAtRFdJVEhPVVRfVVNCIC1EV0lUSE9VVF9CTFVFVE9PVEgKPj4gPgo+PiA+ IFBsZWFzZSBsZXQgbWUga25vdyBpZiB5b3UgbmVlZCBhbnkgbW9yZSBpbmZvLgo+Pgo+PiBgc2hv dyByZWdpc3RlcnMnIG91dHB1dCB3aWxsIGJlIGdvb2QsIGJ1dCBJIHRoaW5rIHRoZSBrZXJuZWwg aXMgc3RpbGwKPj4gbm90IDY0IGJpdCwgc28gdGhlIDY0IGJpdCB1c2Vyc3BhY2UgY3Jhc2hlZC4K Pgo+IGRiPiBzaG93IHJlZwo+IGF0oKCgoKCgoKCgIDB4ZmZmZmZmZmY4MjQxMDAwMKAgc3lzY3Rs X19kZWJ1Z193aXRuZXNzX2NoaWxkcmVuKzB4MjZkOAo+IHYwoKCgoKCgoKCgoKCgoKCgIDB4MTKg IF9EWU5BTUlDX0xJTktJTkcrMHgxMQo+IHYxoKCgoKCgoKCgoKCgoKCgIDB4MTKgIF9EWU5BTUlD X0xJTktJTkcrMHgxMQo+IGEwoKCgoKCgoKCgoKCgoKCgoKCgIDAKPiBhMaCgoKCgoKCgoKCgoKCg oKAgMHhhoCBfRFlOQU1JQ19MSU5LSU5HKzB4OQo+IGEyoKCgoKCgoKCgIDB4ZmZmZmZmZmY4MjVk MWZlMAo+IGEzoKCgoKCgoKCgoKCgoKAgMHgxMDmgIF9EWU5BTUlDX0xJTktJTkcrMHgxMDgKPiB0 MKCgoKCgoKCgoKCgoKCgoKCgoCAwCj4gdDGgoKCgoKCgoKCgoKCgoKCgoKAgMAo+IHQyoKCgoKCg oKCgoKCgoKCgoKCgIDAKPiB0M6CgoKCgoKCgoKCgoKCgoKCgoCAwCj4gdDSgoKCgoKCgoKAgMHhj MDAwMDAwMDA3OTg3NjM4Cj4gdDWgoKCgoKCgoKCgoKCgoKCgoKAgMAo+IHQ2oKCgoKCgoKCgoKCg oKCgoKCgIDAKPiB0N6CgoKCgoKCgoKCgoKCgoKCgoCAwCj4gczCgoKCgoKCgoKAgMHhmZmZmZmZm ZjgwNDA4YWIwCj4gczGgoKCgoKCgoKAgMHhjMDAwMDAwMDA3OTI2MDAwCj4gczKgoKCgoKCgoKAg MHhjMDAwMDAwMDI1ODlkZDMwCj4gczOgoKCgoKCgoKAgMHhjMDAwMDAwMDA3OTIzMDAwCj4gczSg oKCgoKCgoKCgoKCgoKAgMHgyMqAgX0RZTkFNSUNfTElOS0lORysweDIxCj4gczWgoKCgoKCgoKAg MHhjMDAwMDAwMDA3OTI2MDAwCj4gczagoKCgoKCgoKAgMHhjMDAwMDAwMDA3OTI3YzgwCj4gczeg oKCgoKCgoKCgoKCgoKCgIDB4MaAgX0RZTkFNSUNfTElOS0lORwo+IHQ4oKCgoKCgoKCgoKCgoKCg oKCgIDAKPiB0OaCgoKCgoKCgoCAweDEyMDAwNGRhMAo+IGswoKCgoKCgoKCgoKCgoKCgoKCgIDAK PiBrMaCgoKCgoKCgoKCgoKCgoKAgMHhhoCBfRFlOQU1JQ19MSU5LSU5HKzB4OQo+IGdwoKCgoKCg oKCgIDB4ZmZmZmZmZmY4MjQwNTY4NKAgX2dwCj4gc3CgoKCgoKCgoKAgMHhjMDAwMDAwMDI1ODlk YjcwCj4gczigoKCgoKCgoKCgoKCgoKCgIDB4MaAgX0RZTkFNSUNfTElOS0lORwo+IHJhoKCgoKCg oKCgIDB4ZmZmZmZmZmY4MDFmZmQ2NKAga2RiX2VudGVyKzB4NzQKPiBzcqCgoKCgoKCgoCAweDQw ODA4NGUzCj4gbG+goKCgoKCgoKCgoKCgoKCgoKAgMAo+IGhpoKCgoKCgoKCgoKCgoCAweDExMWSg IF9EWU5BTUlDX0xJTktJTkcrMHgxMTFjCj4gYmFkoKCgoKCgoKAgMHhjMDAwMDAwMDA3OWFjNjAw Cj4gY3OgoKCgoKCgoKCgoKCgoKAgMHgyNKAgX0RZTkFNSUNfTElOS0lORysweDIzCj4gcGOgoKCg oKCgoKAgMHhmZmZmZmZmZjgwMWZmZDgwoCBrZGJfZW50ZXIrMHg5MAo+IGtkYl9lbnRlcisweDkw OiBsdWmgoKCgIGF0LDB4MAo+Cj4KPiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgdSBuZWVkIGFueSBt b3JlIGluZm8uCgpMb29rcyBsaWtlIHRoZSBrZXJuZWwgYW5kIHVzZXJzcGFjZSBhcmUgNjRiaXQs IGFuZCBpdCBjcmFzaGVkIG9uCmdldHRpbmcgaW50byB1c2Vyc3BhY2UgdGhlIGZpcnN0IHRpbWUu ICBJIGFtIHJlYWxseSBub3Qgc3VyZSB3aGF0CmNvdWxkIGhhdmUgY2F1c2VkIHRoYXQgbG9jayB0 byBiZSBoZWxkLi4uCgpIYXZlIHlvdSBjaGVja2VkIGlmIHRoZSBleGFjdCBzYW1lIHNvdXJjZSBj b21lcyB1cCBvbiAzMiBiaXQKY29tcGlsYXRpb24/ICBUaGlzIG1heSBiZSB3b3J0aCBjaGVja2lu ZyBmaXJzdC4gIEFmdGVyIHRoYXQsIG1heSBiZQplbmFibGluZyBkZWJ1ZyBpbiB0cmFwLmMgbWF5 IGJlIGEgZ29vZCB3YXkgdG8gc2VlIGlmIHRoZSBleGNlcHRpb25zCmdlbmVyYXRlZCB3aGlsZSBq dW1waW5nIHRvIHVzZXJzcGFjZSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCgpKQy4K