From owner-freebsd-amd64@FreeBSD.ORG Sun Jul 25 22:26:39 2010 Return-Path: Delivered-To: amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76B0F106568A; Sun, 25 Jul 2010 22:26:39 +0000 (UTC) (envelope-from tinderbox@freebsd.org) Received: from freebsd-current.sentex.ca (freebsd-current.sentex.ca [64.7.128.98]) by mx1.freebsd.org (Postfix) with ESMTP id 463278FC0C; Sun, 25 Jul 2010 22:26:38 +0000 (UTC) Received: from freebsd-current.sentex.ca (localhost [127.0.0.1]) by freebsd-current.sentex.ca (8.14.4/8.14.3) with ESMTP id o6PMQcEk016493; Sun, 25 Jul 2010 18:26:38 -0400 (EDT) (envelope-from tinderbox@freebsd.org) Received: (from tinderbox@localhost) by freebsd-current.sentex.ca (8.14.4/8.14.3/Submit) id o6PMQcTe016486; Sun, 25 Jul 2010 22:26:38 GMT (envelope-from tinderbox@freebsd.org) Date: Sun, 25 Jul 2010 22:26:38 GMT Message-Id: <201007252226.o6PMQcTe016486@freebsd-current.sentex.ca> X-Authentication-Warning: freebsd-current.sentex.ca: tinderbox set sender to FreeBSD Tinderbox using -f Sender: FreeBSD Tinderbox From: FreeBSD Tinderbox To: FreeBSD Tinderbox , , Precedence: bulk Cc: Subject: [releng_8_1 tinderbox] failure on amd64/amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 25 Jul 2010 22:26:39 -0000 TB --- 2010-07-25 22:03:44 - tinderbox 2.6 running on freebsd-current.sentex.ca TB --- 2010-07-25 22:03:44 - starting RELENG_8_1 tinderbox run for amd64/amd64 TB --- 2010-07-25 22:03:44 - cleaning the object tree TB --- 2010-07-25 22:04:07 - cvsupping the source tree TB --- 2010-07-25 22:04:07 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca /tinderbox/RELENG_8_1/amd64/amd64/supfile TB --- 2010-07-25 22:04:55 - building world TB --- 2010-07-25 22:04:55 - MAKEOBJDIRPREFIX=/obj TB --- 2010-07-25 22:04:55 - PATH=/usr/bin:/usr/sbin:/bin:/sbin TB --- 2010-07-25 22:04:55 - TARGET=amd64 TB --- 2010-07-25 22:04:55 - TARGET_ARCH=amd64 TB --- 2010-07-25 22:04:55 - TZ=UTC TB --- 2010-07-25 22:04:55 - __MAKE_CONF=/dev/null TB --- 2010-07-25 22:04:55 - cd /src TB --- 2010-07-25 22:04:55 - /usr/bin/make -B buildworld >>> World build started on Sun Jul 25 22:04:56 UTC 2010 >>> Rebuilding the temporary build tree >>> stage 1.1: legacy release compatibility shims >>> stage 1.2: bootstrap tools >>> stage 2.1: cleaning up the object tree >>> stage 2.2: rebuilding the object tree >>> stage 2.3: build tools >>> stage 3: cross tools >>> stage 4.1: building includes >>> stage 4.2: building libraries [...] cc -fpic -DPIC -O2 -pipe -DZFS_NO_ACL -I/src/cddl/lib/libzfs/../../../sbin/mount -I/src/cddl/lib/libzfs/../../../cddl/lib/libumem -I/src/cddl/lib/libzfs/../../../sys/cddl/compat/opensolaris -I/src/cddl/lib/libzfs/../../../cddl/compat/opensolaris/include -I/src/cddl/lib/libzfs/../../../cddl/compat/opensolaris/lib/libumem -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzpool/common -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/common/zfs -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common/fs/zfs -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common/sys -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/head -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libnvpair -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libuutil/common -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common -DNEE! D_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wno-unknown-pragmas -c /src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common/libzfs_changelist.c -o libzfs_changelist.So cc -fpic -DPIC -O2 -pipe -DZFS_NO_ACL -I/src/cddl/lib/libzfs/../../../sbin/mount -I/src/cddl/lib/libzfs/../../../cddl/lib/libumem -I/src/cddl/lib/libzfs/../../../sys/cddl/compat/opensolaris -I/src/cddl/lib/libzfs/../../../cddl/compat/opensolaris/include -I/src/cddl/lib/libzfs/../../../cddl/compat/opensolaris/lib/libumem -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzpool/common -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/common/zfs -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common/fs/zfs -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common/sys -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/head -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libnvpair -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libuutil/common -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common -DNEE! D_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wno-unknown-pragmas -c /src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common/libzfs_config.c -o libzfs_config.So cc -fpic -DPIC -O2 -pipe -DZFS_NO_ACL -I/src/cddl/lib/libzfs/../../../sbin/mount -I/src/cddl/lib/libzfs/../../../cddl/lib/libumem -I/src/cddl/lib/libzfs/../../../sys/cddl/compat/opensolaris -I/src/cddl/lib/libzfs/../../../cddl/compat/opensolaris/include -I/src/cddl/lib/libzfs/../../../cddl/compat/opensolaris/lib/libumem -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzpool/common -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/common/zfs -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common/fs/zfs -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common/sys -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/head -I/src/cddl/lib/libzfs/../../../sys/cddl/contrib/opensolaris/uts/common -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libnvpair -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libuutil/common -I/src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common -DNEE! D_SOLARIS_BOOLEAN -std=gnu89 -fstack-protector -Wno-unknown-pragmas -c /src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c -o libzfs_import.So /src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c: In function 'zpool_in_use': /src/cddl/lib/libzfs/../../../cddl/contrib/opensolaris/lib/libzfs/common/libzfs_import.c:1219: internal compiler error: in var_ann, at tree-flow-inline.h:127 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. *** Error code 1 Stop in /src/cddl/lib/libzfs. *** Error code 1 Stop in /src/cddl/lib. *** Error code 1 Stop in /src. *** Error code 1 Stop in /src. *** Error code 1 Stop in /src. *** Error code 1 Stop in /src. TB --- 2010-07-25 22:26:38 - WARNING: /usr/bin/make returned exit code 1 TB --- 2010-07-25 22:26:38 - ERROR: failed to build world TB --- 2010-07-25 22:26:38 - 957.16 user 236.79 system 1373.70 real http://tinderbox.freebsd.org/tinderbox-releng_8-RELENG_8_1-amd64-amd64.full From owner-freebsd-amd64@FreeBSD.ORG Mon Jul 26 11:06:57 2010 Return-Path: Delivered-To: freebsd-amd64@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 00C43106566B for ; Mon, 26 Jul 2010 11:06:57 +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 CE9E68FC24 for ; Mon, 26 Jul 2010 11:06:56 +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 o6QB6ux2080609 for ; Mon, 26 Jul 2010 11:06:56 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o6QB6u1j080607 for freebsd-amd64@FreeBSD.org; Mon, 26 Jul 2010 11:06:56 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 26 Jul 2010 11:06:56 GMT Message-Id: <201007261106.o6QB6u1j080607@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-amd64@FreeBSD.org Cc: Subject: Current problem reports assigned to freebsd-amd64@FreeBSD.org X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 11:06:57 -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 amd64/148805 amd64 [hang] FreeBSD 7.2, 8.0, and 9.0 hang during install a o amd64/148675 amd64 kernel panics - reboots o amd64/148537 amd64 IP respond to ping even if the attached interface is n o amd64/148526 amd64 [ahci] ahci driver does not boot on AMD chip s amd64/148489 amd64 [ata] Generic driver is used for Nvidia SATA (nforce? o amd64/148152 amd64 [boot] Run levels crash on boot up for dv7-1130US HP L f amd64/148106 amd64 [panic] nginx udplog causes kernel panic on 8.0-RELEAS f amd64/148002 amd64 [boot] panic / page fault while booting from install d f amd64/147963 amd64 cpu l2 cache error o amd64/147560 amd64 [boot] Booting 8.1-PRERELEASE raidz system take ages o amd64/145991 amd64 [patch] Add a requires line to /sys/amd64/conf/NOTES o amd64/145873 amd64 [build] cannot buildworld 8.0-STABLE o amd64/145761 amd64 [lor] rt2870 lock order reversal hold up system in 8.0 o amd64/145039 amd64 spin lock held too long amd64 mp_machdep.c o amd64/144756 amd64 [panic] Transferring files on samba causes the kernel f amd64/144503 amd64 [boot] 8.0-RELEASE does not boot on DL585 [regression] o amd64/144405 amd64 [build] [patch] include /usr/obj/lib32 in cleanworld t o amd64/144376 amd64 [panic] continuous reboot on motherboards with ATI SB7 f amd64/144151 amd64 [ata] Can not burn CD/DVD with AHCI enabled f amd64/144113 amd64 [ata] 8.0-RELEASE fails to detect SATA hard disks on a o amd64/143992 amd64 [panic] Random reboot o amd64/143854 amd64 [build] error in make world during upgrade from 7 to 8 s amd64/143173 amd64 [ata] Promise FastTrack TX4 + SATA DVD, installer can' o amd64/141413 amd64 [hang] Tyan 2881 m3289 SMDC freeze o amd64/141112 amd64 [ata] [panic] Kernel panic when booting with any sATA o amd64/141060 amd64 [install] Can't install 8.0-RELEASE on the server wher o amd64/140715 amd64 [boot] Dell M600 Blade fails to boot 7.2+ 64 bit o amd64/140596 amd64 [panic] Kernel panic/crash o amd64/140391 amd64 [hang] powerd(8) freezes computer on Phenom II compute o amd64/140145 amd64 [boot] Installation boot sequence freezes o amd64/139998 amd64 [panic] 7.2 amd64 panic in kern_mutex.c:339 o amd64/139924 amd64 [boot] cd or dvd not load o amd64/139614 amd64 [minidump] minidumps fail when many interrupts fire f amd64/138661 amd64 [panic] Kernel Panic after typing "reboot" o amd64/138029 amd64 [panic] periodically kernel panic and reboot o amd64/137942 amd64 [pci] 8.0-BETA2 having problems with Asus M2N-SLI-delu s i386/135447 amd64 [i386] [request] Intel Core i7 and Nehalem-EP new feat o amd64/135265 amd64 [install] Boot from install cd hangs on HP DL160 G5 wi o amd64/135040 amd64 [ata] FreeBSD/amd64 does not (always) detect disk on S o amd64/134978 amd64 [panic] g_up pmap amd64 panic o amd64/134757 amd64 32 bit processes on 64 bit platforms occasionally drop o amd64/133977 amd64 [panic] [ffs] "panic: ffs_blkfree: freeing free block" o amd64/133701 amd64 Recompiling the kernel with k8temp or smbios break GEO o amd64/132574 amd64 [boot] [hang] Freeze on bootstrap loader (CD) using AT f amd64/132019 amd64 [install] kernel trap 12 while installation o amd64/131906 amd64 [ata] SATA data corruption with Promise PDC20378 (amd6 o amd64/131456 amd64 ACPI & ATA problems o amd64/131314 amd64 [modules] [panic] large modules fail to load on amd64 o amd64/131209 amd64 [panic] [bce] 7.1-STABLE amd64 crash - m0 NULL f amd64/130885 amd64 sockstat(1) on amd64 does not work o amd64/130864 amd64 [hang] Problem with copying files to a large partition o amd64/130817 amd64 FreeBSD does not support HP DL160G5 [regression] o amd64/130494 amd64 [boot] netbooting BTX fails on amd64 f amd64/130483 amd64 [mxge] MSI must be disabled when Myricom 10Gbps Card i o amd64/130368 amd64 [hang] Switching from xorg to console locks up compute o amd64/129889 amd64 [boot] [hang] The booting process stops at the line mo o amd64/129721 amd64 [hang] Motherboard K9N2G Neo-FD hangs on boot of 7.0-R o amd64/129667 amd64 [ata] Elitegroup A780GM-A IDE controller not recognize o amd64/129426 amd64 [panic] FreeBSD 7.0 crash after subdiskXX: detached o amd64/129315 amd64 [boot] [reboot] amd64 motherboard: Intel DG965WH mothe o amd64/128978 amd64 [install] FreeBSD 6.3 64-bit panics at boot time duri o amd64/128765 amd64 [install] Install CD loads to Install choices but stop o amd64/128263 amd64 [panic] 2 amd64 dl380 g5 with dual quadcore xeons, 8 a o amd64/128259 amd64 csh(1): "`" crashes csh o amd64/127640 amd64 gcc(1) will not build shared libraries with -fprofile- o amd64/127451 amd64 [scheduler] incorrect load on quad core o amd64/127397 amd64 [amd64] 32bit application on FreeBSD-6.3 amd64 gets SI s amd64/127276 amd64 ldd(1) invokes linux yes o amd64/125873 amd64 [smbd] [panic] Repeated kernel panics, trap 12 page fa o amd64/125002 amd64 [install] amd64, SATA hard disks not detected o amd64/124432 amd64 [panic] 7.0-STABLE panic: invalbuf: dirty bufs o amd64/124134 amd64 [kernel] The kernel doesn't follow the calling convent o amd64/123562 amd64 [install] FreeBSD amd64 not installs o amd64/123520 amd64 [ahd] unable to boot from net while using ahd p amd64/123456 amd64 fstat(1): /usr/bin/fstat shows error messages and hang f amd64/123275 amd64 [cbb] [pcmcia] cbb/pcmcia drivers on amd64 failure [re o kern/122782 amd64 [modules] accf_http.ko kernel module is not loadable o amd64/122695 amd64 [cpufreq] Lack of cpufreq control using amd64 eith cor o amd64/122549 amd64 7.0-RELEASE-amd64-bootonly.iso doesn't work w/ serial o amd64/122468 amd64 Compile problems after upgrading to 7.0 o amd64/122174 amd64 [panic] 7.0 no longer includes "device atpic" so fails f amd64/121590 amd64 [est] [p4tcc] [acpi_perf] setting dev.cpu.0.freq somet o amd64/120202 amd64 [amd64] [patch] [panic] kernel panic at start_all_aps, o amd64/119591 amd64 [amd64] [patch] time_t on 64-bit architecture o amd64/117418 amd64 [hang] FreeBSD 6.2 crash on amd64 4400+ with ssh o amd64/117316 amd64 [acpi] ACPI lockups on SuperMicro motherboard o amd64/117296 amd64 [ata] I don`t see second SATA IDE on VIA VT8237A a amd64/117186 amd64 [modules] kldload Unsupported file type on STABLE amd6 s amd64/116689 amd64 [request] support for MSI K9MM-V o amd64/116620 amd64 [hang] ifconfig spins when creating carp(4) device on o amd64/116322 amd64 [panic] At start fsck on current, the system panics o amd64/116159 amd64 [panic] Panic while debugging on CURRENT s amd64/115815 amd64 [ata] [request] Gigabyte GA-M61P-S3 Motherboard unsupp o amd64/115581 amd64 [Makefile] [patch] -mfancy-math-387 has no effect o amd64/115194 amd64 LCD screen remains blank after Dell XPS M1210 lid is c o amd64/114270 amd64 [cpufreq] cpufreq doesnt work when compiled in to kern o amd64/110599 amd64 [geli] geli attach to gmirror device hangs and cannot s amd64/108861 amd64 [nve] nve(4) driver on FreeBSD 6.2 AMD64 does not work o amd64/106186 amd64 [panic] panic in swap_pager_swap_init (amd64/smp/6.2-p f amd64/105531 amd64 [ata] gigabyte GA-M51GM-S2G / nVidia nForce 430 - does f amd64/105514 amd64 [boot] FreeBSD/amd64 - Fails to boot on HP Pavilion dv f amd64/102716 amd64 ex with no argument in an xterm gets SIGSEGV o amd64/97337 amd64 [dri] xorg reboots system if dri module is enabled o amd64/95888 amd64 [ata] kernel: ad2: TIMEOUT - WRITE_DMA retrying on HP o amd64/94677 amd64 [panic] panic in amd64 install at non-root user creati o amd64/93961 amd64 [busdma] Problem in bounce buffer handling in sys/amd6 o amd64/92337 amd64 [em] FreeBSD 6.0 Release Intel Pro 1000 MT em1 no buff o amd64/91405 amd64 [asr] [panic] Kernel panic caused by asr on 6.0-amd64 o amd64/89501 amd64 [install] System crashes on install using ftp on local o amd64/88790 amd64 [panic] kernel panic on first boot (after the FreeBSD o amd64/88568 amd64 [panic] 6.0-RELEASE install cd does not boot with usb o amd64/87689 amd64 [powerd] [hang] powerd hangs SMP Opteron 244 5-STABLE o amd64/87305 amd64 [smp] Dual Opteron / FreeBSD 5 & 6 / powerd results in s amd64/85273 amd64 [install] FreeBSD (NetBSD or OpenBSD) not install on l o amd64/78406 amd64 [panic]AMD64 w/ SCSI: issue 'rm -r /usr/ports' and sys o amd64/76136 amd64 [hang] system halts before reboot o amd64/74747 amd64 [panic] System panic on shutdown when process will not 117 problems total. From owner-freebsd-amd64@FreeBSD.ORG Mon Jul 26 15:01:53 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A88371065674 for ; Mon, 26 Jul 2010 15:01:53 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 7E0328FC18 for ; Mon, 26 Jul 2010 15:01:53 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id ED50C46B39; Mon, 26 Jul 2010 11:01:52 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id E6EBF8A04E; Mon, 26 Jul 2010 11:01:51 -0400 (EDT) From: John Baldwin To: freebsd-amd64@freebsd.org Date: Mon, 26 Jul 2010 10:09:02 -0400 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100217; KDE/4.4.5; amd64; ; ) References: In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201007261009.02889.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 26 Jul 2010 11:01:51 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: David Samms Subject: Re: 8.1 RC2 Wireless Networking Broken X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 26 Jul 2010 15:01:53 -0000 On Friday, July 23, 2010 12:56:24 pm David Samms wrote: > I switched my Thinkpad T61p from FreeBSD 8.1 RC2 i386 to amd64 and > experienced a failure of the wireless networking. The setup is as follows: > > /etc/rc.conf > ----------------------- > wlans_ath0="wlan0" > ifconfig_wlan0="DHCP" > > On boot the "wlan0" interface was NOT created. If I manually ran > "ifconfig wlan0 create wlandev ath0", then everything was OK. > > The exact same setup (rc.conf, loader.conf, wpa_suplicant.conf) works > fine under FreeBSD 8.1 RC2 i386 Hmm, the rc scripts are identical between i386 and amd64, and many people are able to use wlan's with amd64. Can you provide more details and ensure you don't have any typos? -- John Baldwin From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 00:43:55 2010 Return-Path: Delivered-To: freebsd-amd64@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 031F31065676; Tue, 27 Jul 2010 00:43:55 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id CCF698FC1B; Tue, 27 Jul 2010 00:43:54 +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 o6R0hsdr087327; Tue, 27 Jul 2010 00:43:54 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o6R0hsYQ087323; Tue, 27 Jul 2010 00:43:54 GMT (envelope-from linimon) Date: Tue, 27 Jul 2010 00:43:54 GMT Message-Id: <201007270043.o6R0hsYQ087323@freefall.freebsd.org> To: fabrice.bruel@orange-ftgroup.com, linimon@FreeBSD.org, freebsd-amd64@FreeBSD.org, freebsd-net@FreeBSD.org From: linimon@FreeBSD.org Cc: Subject: Re: kern/148537: IP respond to ping even if the attached interface is no carrier X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 00:43:55 -0000 Synopsis: IP respond to ping even if the attached interface is no carrier State-Changed-From-To: open->closed State-Changed-By: linimon State-Changed-When: Tue Jul 27 00:42:38 UTC 2010 State-Changed-Why: Believed to be working as designed. Responsible-Changed-From-To: freebsd-amd64->freebsd-net Responsible-Changed-By: linimon Responsible-Changed-When: Tue Jul 27 00:42:38 UTC 2010 Responsible-Changed-Why: http://www.freebsd.org/cgi/query-pr.cgi?pr=148537 From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 02:36:49 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9622A106566C for ; Tue, 27 Jul 2010 02:36:49 +0000 (UTC) (envelope-from gofda-freebsd-amd64@m.gmane.org) Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by mx1.freebsd.org (Postfix) with ESMTP id 230028FC0A for ; Tue, 27 Jul 2010 02:36:48 +0000 (UTC) Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Oda2B-00066i-Vx for freebsd-amd64@freebsd.org; Tue, 27 Jul 2010 04:36:47 +0200 Received: from cpe-24-210-63-182.columbus.res.rr.com ([24.210.63.182]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 27 Jul 2010 04:36:47 +0200 Received: from dsamms by cpe-24-210-63-182.columbus.res.rr.com with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 27 Jul 2010 04:36:47 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: freebsd-amd64@freebsd.org From: David Samms Date: Mon, 26 Jul 2010 22:36:37 -0400 Lines: 50 Message-ID: References: <201007261009.02889.jhb@freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: cpe-24-210-63-182.columbus.res.rr.com User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.1.10) Gecko/20100630 Thunderbird/3.0.5 In-Reply-To: <201007261009.02889.jhb@freebsd.org> Subject: Re: 8.1 RC2 Wireless Networking Broken X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 02:36:49 -0000 On 07/26/10 10:09, John Baldwin wrote: > On Friday, July 23, 2010 12:56:24 pm David Samms wrote: >> I switched my Thinkpad T61p from FreeBSD 8.1 RC2 i386 to amd64 and >> experienced a failure of the wireless networking. The setup is as follows: >> >> /etc/rc.conf >> ----------------------- >> wlans_ath0="wlan0" >> ifconfig_wlan0="DHCP" >> >> On boot the "wlan0" interface was NOT created. If I manually ran >> "ifconfig wlan0 create wlandev ath0", then everything was OK. >> >> The exact same setup (rc.conf, loader.conf, wpa_suplicant.conf) works >> fine under FreeBSD 8.1 RC2 i386 > > Hmm, the rc scripts are identical between i386 and amd64, and many people are > able to use wlan's with amd64. Can you provide more details and ensure you > don't have any typos? Thank you for your reply. No typos, the files were copied from a working i386 to amd64 via flash drive. When retesting tonight with 8.1_release (new iso downloaded) there was no problem. It is safe to assume that I had a corrupted copy of RC2 which was not downloaded as an iso, rather upgraded from 8.0 via cvsup. Perhaps I received mismatched versions of some files. Unfortunately I no longer have the exact same code set to test. Below are the config files requested ----------------------------------------- # /boot/loader.conf #Nothing relevant... # /etc/rc.conf ifconfig_ath0="up" wlans_ath0="wlan0" ifconfig_wlan0="WPA DHCP" # /etc/wpa_supplicant.conf network={ ssid="nw-ds" bssid=00:02:6f:3a:d5:10 key_mgmt=NONE wep_tx_keyidx=0 wep_key0=xxxxxx } From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 13:05:31 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 39E61106568C for ; Tue, 27 Jul 2010 13:05:31 +0000 (UTC) (envelope-from pluknet@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 CB0C18FC1A for ; Tue, 27 Jul 2010 13:05:30 +0000 (UTC) Received: by wyj26 with SMTP id 26so3686440wyj.13 for ; Tue, 27 Jul 2010 06:05:30 -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=AdPpf3dckJHtMUuc2TdLA0UHe1yhMKMZcJ+FGy1SJBQ=; b=Ul30aYUAUL9QOpagAjejgxLYW4ZGkzqweVTKjSqn7JLlNkMd6epiLTZ+FsHK9vIpjQ +jWT6aZTpuAMhJwoK/j6bAnNJvU1oTdrPxK3cLzwUgp8eElpAZSParA9toV1+UVDP4f3 evf0DIWCGl8VylQQUK86YYVGIr4mg0KqxPvDE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=l0xw2Gdb0BGYnt8CkaaalLecbhS+lUWGEag2yyhMInGg6Y0ueYIkiOzyCkDMOhnf8G EQ8H4vmjYrAEo/uy+XyPaVteheNfdSAKCkoh/J3Y4I890pd2IfTuX8sOCIg8bambrqon Y4bmqO++OjRJLsvt7X1+Jwr5wkv/Fmbl2VsWA= MIME-Version: 1.0 Received: by 10.216.162.78 with SMTP id x56mr8880882wek.80.1280234580566; Tue, 27 Jul 2010 05:43:00 -0700 (PDT) Received: by 10.216.137.23 with HTTP; Tue, 27 Jul 2010 05:43:00 -0700 (PDT) Date: Tue, 27 Jul 2010 16:43:00 +0400 Message-ID: From: pluknet To: freebsd-amd64@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 Subject: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 13:05:31 -0000 Hi. What is a status of "options PERFMON" on amd64? AFAIK PERFMON opt. was inherited from i386 port and never worked. Does it make sense to wipe out perfmon part on amd64? buildkernel with PERFMON on results in error: /usr/src/sys/amd64/amd64/machdep.c:124:29: error: machine/perfmon.h: No such file or directory mkdep: compile failed *** Error code 1 Looking at cvs I see amd64/include/perfmon.h was never here. -- wbr, pluknet From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 13:48:45 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C401106566C for ; Tue, 27 Jul 2010 13:48:45 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id E97968FC15 for ; Tue, 27 Jul 2010 13:48:44 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o6RDNpdQ075404 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 27 Jul 2010 16:23:51 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o6RDNoAa058201; Tue, 27 Jul 2010 16:23:50 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o6RDNoR2058200; Tue, 27 Jul 2010 16:23:50 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Tue, 27 Jul 2010 16:23:50 +0300 From: Kostik Belousov To: pluknet Message-ID: <20100727132350.GN22295@deviant.kiev.zoral.com.ua> References: Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="QQNwO3VdVfodZayb" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_20, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: freebsd-amd64@freebsd.org Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 13:48:45 -0000 --QQNwO3VdVfodZayb Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Jul 27, 2010 at 04:43:00PM +0400, pluknet wrote: > Hi. >=20 > What is a status of "options PERFMON" on amd64? > AFAIK PERFMON opt. was inherited from i386 port and never worked. > Does it make sense to wipe out perfmon part on amd64? >=20 > buildkernel with PERFMON on results in error: > /usr/src/sys/amd64/amd64/machdep.c:124:29: error: machine/perfmon.h: > No such file or directory > mkdep: compile failed > *** Error code 1 >=20 > Looking at cvs I see amd64/include/perfmon.h was never here. I think perfmon should be removed from i386 too. Would you prepare the patch ? --QQNwO3VdVfodZayb Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkxO3eYACgkQC3+MBN1Mb4gypwCgnjXk7keVj6x3tCHhEiLbRRfE kcEAoOWS88hckUpp+PJme6LdYLsIupyb =EJUc -----END PGP SIGNATURE----- --QQNwO3VdVfodZayb-- From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 14:16:28 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 58964106566B for ; Tue, 27 Jul 2010 14:16:28 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 2AB428FC22 for ; Tue, 27 Jul 2010 14:16:28 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id BA03846B37; Tue, 27 Jul 2010 10:16:27 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id A2B918A03C; Tue, 27 Jul 2010 10:16:26 -0400 (EDT) From: John Baldwin To: freebsd-amd64@freebsd.org Date: Tue, 27 Jul 2010 09:28:24 -0400 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100217; KDE/4.4.5; amd64; ; ) References: In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201007270928.24959.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Tue, 27 Jul 2010 10:16:26 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 14:16:28 -0000 On Tuesday, July 27, 2010 8:43:00 am pluknet wrote: > Hi. > > What is a status of "options PERFMON" on amd64? > AFAIK PERFMON opt. was inherited from i386 port and never worked. > Does it make sense to wipe out perfmon part on amd64? > > buildkernel with PERFMON on results in error: > /usr/src/sys/amd64/amd64/machdep.c:124:29: error: machine/perfmon.h: > No such file or directory > mkdep: compile failed > *** Error code 1 > > Looking at cvs I see amd64/include/perfmon.h was never here. PERFMON in general is obsoleted by hwpmc(4) which is far more useful and featureful. It should probably just be axed. -- John Baldwin From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 15:14:33 2010 Return-Path: Delivered-To: freebsd-amd64@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CBAD21065694 for ; Tue, 27 Jul 2010 15:14:33 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from fallbackmx08.syd.optusnet.com.au (fallbackmx08.syd.optusnet.com.au [211.29.132.10]) by mx1.freebsd.org (Postfix) with ESMTP id 62B6C8FC31 for ; Tue, 27 Jul 2010 15:14:33 +0000 (UTC) Received: from mail06.syd.optusnet.com.au (mail06.syd.optusnet.com.au [211.29.132.187]) by fallbackmx08.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o6RE1hEG028760 for ; Wed, 28 Jul 2010 00:01:43 +1000 Received: from c122-106-147-41.carlnfd1.nsw.optusnet.com.au (c122-106-147-41.carlnfd1.nsw.optusnet.com.au [122.106.147.41]) by mail06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o6RE1djJ016851 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 28 Jul 2010 00:01:41 +1000 Date: Wed, 28 Jul 2010 00:01:39 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: pluknet In-Reply-To: Message-ID: <20100727234004.E887@delplex.bde.org> References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-amd64@FreeBSD.org Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 15:14:33 -0000 On Tue, 27 Jul 2010, pluknet wrote: > What is a status of "options PERFMON" on amd64? It is just a bug in the options file. > AFAIK PERFMON opt. was inherited from i386 port and never worked. > Does it make sense to wipe out perfmon part on amd64? The inheritance is 1 line in the options file. Wiping this would be easy, but it would be better to fix it. This should be easy. > buildkernel with PERFMON on results in error: > /usr/src/sys/amd64/amd64/machdep.c:124:29: error: machine/perfmon.h: > No such file or directory > mkdep: compile failed > *** Error code 1 > > Looking at cvs I see amd64/include/perfmon.h was never here. Neither was amd64/amd64/perfmon.c. perfmon hasn't been updated since Y2K, so even on i386 it is missing support for most CPUs less than 10 years old, in particular all (?) Athlons (AthlonXP and Athlon64 at least) :-(. However, this is easy to fix. I use the following hack since I didn't want to edit the include files and conditionalize the constants properly: % diff -c2 perfmon.c~ perfmon.c % *** perfmon.c~ Sun Jun 20 13:41:16 2004 % --- perfmon.c Sun Dec 9 07:01:58 2007 % *************** % *** 99,106 **** % case CPUCLASS_686: % perfmon_cpuok = 1; % ! msr_ctl[0] = MSR_EVNTSEL0; % ! msr_ctl[1] = MSR_EVNTSEL1; % ! msr_pmc[0] = MSR_PERFCTR0; % ! msr_pmc[1] = MSR_PERFCTR1; % writectl = writectl6; % break; % --- 99,106 ---- % case CPUCLASS_686: % perfmon_cpuok = 1; % ! msr_ctl[0] = 0xc0010000; % ! msr_ctl[1] = 0xc0010001; % ! msr_pmc[0] = 0xc0010004; % ! msr_pmc[1] = 0xc0010005; % writectl = writectl6; % break; This works for AthlonXP and Athlon64 in i386 mode, and should work for Athlon64 in amd64 mode. The MSR constants in the above are not generic like their name suggests. They are mainly for P6. specialreg.h has a another set of similar but better-named constants for P5, but no perfmon constants for any other CPUs. Athlons are classified as 686's, but this is almost useless and just wrong in the above. Bruce From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 16:47:35 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 480C11065676 for ; Tue, 27 Jul 2010 16:47:35 +0000 (UTC) (envelope-from pluknet@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 5CA148FC20 for ; Tue, 27 Jul 2010 16:47:34 +0000 (UTC) Received: by wyj26 with SMTP id 26so3973628wyj.13 for ; Tue, 27 Jul 2010 09:47:33 -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=JDZdF+e+nHVKvuk1HXBOdzdVhj9DBjUctPTowKdOqjg=; b=CJFB42tmSndV9hw695f7CwnuhHDONa9hneMxNFe2q6ueFtuuTH9YCziNWHegbPM2cA Zk15Yz2cO4dl0UlbBVDGc6bCjSraMMEAU1fS6hmJ66Ao2IHDDa3+UzjRopSijhwyUM4b 1TsVFmB764vqjqQf7H2VLo6rs3A+nirHzqfrk= 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=v7Ax9uWQlA3noevjaE7nUFL3UA0PzFcU62/s1i33WyMTUgswjZRnw8rul1J8lKoXVb chh1ERGrIkvCBP6NAZYX4cbALc9I8DYxmNe4Zxwz4fPGF7VLsB8QA4CZkV1kPWoEb2d7 cBYa+tyjcF+L4nwzbwPncoGusqVkJZhHOI+iQ= MIME-Version: 1.0 Received: by 10.227.136.17 with SMTP id p17mr3847261wbt.135.1280249253196; Tue, 27 Jul 2010 09:47:33 -0700 (PDT) Received: by 10.216.137.23 with HTTP; Tue, 27 Jul 2010 09:47:33 -0700 (PDT) In-Reply-To: <20100727132350.GN22295@deviant.kiev.zoral.com.ua> References: <20100727132350.GN22295@deviant.kiev.zoral.com.ua> Date: Tue, 27 Jul 2010 20:47:33 +0400 Message-ID: From: pluknet To: Kostik Belousov Content-Type: multipart/mixed; boundary=0016e659f3e6f5f5c7048c61417d Cc: freebsd-amd64@freebsd.org Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 16:47:35 -0000 --0016e659f3e6f5f5c7048c61417d Content-Type: text/plain; charset=ISO-8859-1 On 27 July 2010 17:23, Kostik Belousov wrote: > On Tue, Jul 27, 2010 at 04:43:00PM +0400, pluknet wrote: >> Hi. >> >> What is a status of "options PERFMON" on amd64? >> AFAIK PERFMON opt. was inherited from i386 port and never worked. >> Does it make sense to wipe out perfmon part on amd64? >> >> Looking at cvs I see amd64/include/perfmon.h was never here. > > I think perfmon should be removed from i386 too. Would you prepare > the patch ? > Ok, attached. -- wbr, pluknet --0016e659f3e6f5f5c7048c61417d Content-Type: application/octet-stream; name="perfmon.0.diff" Content-Disposition: attachment; filename="perfmon.0.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gc4yzwgv0 SW5kZXg6IHNoYXJlL21hbi9tYW40L21hbjQuaTM4Ni9wZXJmbW9uLjQKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g c2hhcmUvbWFuL21hbjQvbWFuNC5pMzg2L3BlcmZtb24uNAkocmV2aXNpb24gMjEwNTM2KQorKysg c2hhcmUvbWFuL21hbjQvbWFuNC5pMzg2L3BlcmZtb24uNAkod29ya2luZyBjb3B5KQpAQCAtMSwy MTMgKzAsMCBAQAotLlwiCi0uXCIgQ29weXJpZ2h0IDE5OTYgTWFzc2FjaHVzZXR0cyBJbnN0aXR1 dGUgb2YgVGVjaG5vbG9neQotLlwiCi0uXCIgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlm eSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKLS5cIiBpdHMgZG9jdW1lbnRhdGlv biBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQotLlwiIGdyYW50ZWQs IHByb3ZpZGVkIHRoYXQgYm90aCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcwot LlwiIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLCB0aGF0IGJvdGggdGhl IGFib3ZlCi0uXCIgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBh cHBlYXIgaW4gYWxsCi0uXCIgc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUg bmFtZSBvZiBNLkkuVC4gbm90IGJlIHVzZWQKLS5cIiBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNp dHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlCi0uXCIgc29mdHdhcmUgd2l0aG91 dCBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIG1ha2VzCi0uXCIg bm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJl IGZvciBhbnkKLS5cIiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4 cHJlc3Mgb3IgaW1wbGllZAotLlwiIHdhcnJhbnR5LgotLlwiCi0uXCIgVEhJUyBTT0ZUV0FSRSBJ UyBQUk9WSURFRCBCWSBNLkkuVC4gYGBBUyBJUycnLiAgTS5JLlQuIERJU0NMQUlNUwotLlwiIEFM TCBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRX QVJFLAotLlwiIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS QU5USUVTIE9GCi0uXCIgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gSU4gTk8gRVZFTlQKLS5cIiBTSEFMTCBNLkkuVC4gQkUgTElBQkxFIEZPUiBB TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS5cIiBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0uXCIgTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP RgotLlwiIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI T1dFVkVSIENBVVNFRCBBTkQKLS5cIiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLS5cIiBPUiBUT1JUIChJTkNMVURJTkcg TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKLS5cIiBPRiBU SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ VFkgT0YKLS5cIiBTVUNIIERBTUFHRS4KLS5cIgotLlwiICRGcmVlQlNEJAotLkRkIE1hcmNoIDI2 LCAxOTk2Ci0uRHQgUEVSRk1PTiA0IGkzODYKLS5PcwotLlNoIE5BTUUKLS5ObSBwZXJmbW9uCi0u TmQgQ1BVIHBlcmZvcm1hbmNlLW1vbml0b3JpbmcgaW50ZXJmYWNlCi0uU2ggU1lOT1BTSVMKLS5D ZCBjcHUgSTU4Nl9DUFUKLS5DZCBjcHUgSTY4Nl9DUFUKLS5DZCBvcHRpb25zIFBFUkZNT04KLS5T aCBERVNDUklQVElPTgotVGhlCi0uTm0KLWRyaXZlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGlu dGVybmFsIHBlcmZvcm1hbmNlLW1vbml0b3JpbmcKLWNhcGFiaWxpdGllcyBvZiB0aGUKLS5UbiBJ bnRlbAotLlRuIFBlbnRpdW0KLWFuZAotLlRuICJQZW50aXVtIFBybyIKLUNQVXMuCi1UaGVzZSBw cm9jZXNzb3JzIGltcGxlbWVudCB0d28gaW50ZXJuYWwgY291bnRlcnMgd2hpY2ggY2FuIGJlCi1j b25maWd1cmVkIHRvIG1lYXN1cmUgYSB2YXJpZXR5IG9mIGV2ZW50cyBmb3IgZWl0aGVyIGNvdW50 IG9yIGR1cmF0aW9uCi0oaW4gQ1BVIGN5Y2xlcyksIGFzIHdlbGwgYXMgYSBjeWNsZSBjb3VudGVy IHdoaWNoIGNvdW50cyBjbG9jayBjeWNsZXMuCi1UaGUKLS5ObQotZHJpdmVyIHByb3ZpZGVzIGEg ZGV2aWNlLXN0eWxlIGludGVyZmFjZSB0byB0aGVzZSBjYXBhYmlsaXRpZXMuCi0uUHAKLUFsbCBh Y2Nlc3MgdG8gdGhlIHBlcmZvcm1hbmNlLW1vbml0b3JpbmcgY291bnRlcnMgaXMgcGVyZm9ybWVk IHRocm91Z2gKLXRoZSBzcGVjaWFsIGRldmljZSBmaWxlCi0uRHEgUGEgL2Rldi9wZXJmbW9uIC4K LVRoaXMgZGV2aWNlIHN1cHBvcnRzIGEgbnVtYmVyIG9mCi0uWHIgaW9jdGwgMgotcmVxdWVzdHMs IGRlZmluZWQgaW4KLS5JbiBtYWNoaW5lL3BlcmZtb24uaAotYWxvbmcgd2l0aCB0aGUgZGVmaW5p dGlvbnMgb2YgdGhlIHZhcmlvdXMgY291bnRlcnMgZm9yIGJvdGgKLS5UbiBQZW50aXVtCi1hbmQK LS5UbiAiUGVudGl1bSBQcm8iCi1wcm9jZXNzb3JzLgotLlBwCi0uU3kgTk9UQSBCRU5FIDoKLVRo ZSBzZXQgb2YgYXZhaWxhYmxlIGV2ZW50cyBkaWZmZXJzIGZyb20gcHJvY2Vzc29yIHRvIHByb2Nl c3Nvci4KLUl0Ci1pcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIHByb2dyYW1tZXIgdG8gZW5z dXJlIHRoYXQgdGhlIGV2ZW50Ci1udW1iZXJzIHVzZWQgYXJlIHRoZSBjb3JyZWN0IG9uZXMgZm9y IHRoZSBDUFUgdHlwZSBiZWluZyBtZWFzdXJlZC4KLS5QcAotVGhlIGZvbGxvd2luZwotLlhyIGlv Y3RsIDIKLXJlcXVlc3RzIGFyZSBkZWZpbmVkOgotLkJsIC10YWcgLXdpZHRoIFBNSU9UU1RBTVAK LS5JdCBEdiBQTUlPU0VUVVAKLS5QcSBMaSAic3RydWN0IHBtYyIKLVNldCB1cCBhIGNvdW50ZXIg d2l0aCBwYXJhbWV0ZXJzIGFuZCBmbGFncyBkZWZpbmVkIGluIHRoZSBzdHJ1Y3R1cmUuCi1UaGUg Zm9sbG93aW5nIGZpZWxkcyBhcmUgZGVmaW5lZCBpbgotLkxpIHN0cnVjdCBwbWMgOgotLkJsIC10 YWcgLXdpZHRoICJ1X2NoYXIgcG1jX2V2ZW50eCIKLS5JdCBMaSAiaW50IHBtY19udW0iCi10aGUg bnVtYmVyIG9mIHRoZSBjb3VudGVyIGluIHF1ZXN0aW9uOyBtdXN0IGJlIGxlc3MgdGhhbgotLkR2 IE5QTUMKLShjdXJyZW50bHkgMikuCi0uSXQgTGkgInVfY2hhciBwbWNfZXZlbnQiCi10aGUgcGFy dGljdWxhciBldmVudCBudW1iZXIgdG8gYmUgbW9uaXRvcmVkLCBhcyBkZWZpbmVkIGluCi0uSW4g bWFjaGluZS9wZXJmbW9uLmggLgotLkl0IExpICJ1X2NoYXIgcG1jX3VuaXQiCi10aGUgdW5pdCBt YXNrIHZhbHVlLCBzcGVjaWZpYyB0byB0aGUgZXZlbnQgdHlwZSAoc2VlIHRoZQotLlRuIEludGVs Ci1kb2N1bWVudGF0aW9uKS4KLS5JdCBMaSAidV9jaGFyIHBtY19mbGFncyIKLWZsYWdzIG1vZGlm eWluZyB0aGUgb3BlcmF0aW9uIG9mIHRoZSBjb3VudGVyIChzZWUgYmVsb3cpLgotLkl0IExpICJ1 X2NoYXIgcG1jX21hc2siCi10aGUgY291bnRlciBtYXNrIHZhbHVlOyBlc3NlbnRpYWxseSwgdGhp cyBpcyBhIHRocmVzaG9sZCB1c2VkIHRvCi1yZXN0cmljdCB0aGUgY291bnQgdG8gZXZlbnRzIGxh c3RpbmcgbW9yZSAob3IgbGVzcykgdGhhbiB0aGUgc3BlY2lmaWVkCi1udW1iZXIgb2YgY2xvY2tz LgotLkVsCi0uUHAKLVRoZSBmb2xsb3dpbmcKLS5MaSBwbWNfZmxhZ3MKLXZhbHVlcyBhcmUgZGVm aW5lZDoKLS5CbCAtdGFnIC1jb21wYWN0IC13aWR0aCBQTUNGX1VTUnh4Ci0uSXQgRHYgUE1DRl9V U1IKLWNvdW50IGV2ZW50cyBpbiB1c2VyIG1vZGUKLS5JdCBEdiBQTUNGX09TCi1jb3VudCBldmVu dHMgaW4ga2VybmVsIG1vZGUKLS5JdCBEdiBQTUNGX0UKLWNvdW50IG51bWJlciBvZiBldmVudHMg cmF0aGVyIHRoYW4gdGhlaXIgZHVyYXRpb24KLS5JdCBEdiBQTUNGX0lOVgotaW52ZXJ0IHRoZSBz ZW5zZSBvZiB0aGUgY291bnRlciBtYXNrIGNvbXBhcmlzb24KLS5FbAotLkl0IER2IFBNSU9HRVQK LS5QcSBMaSAic3RydWN0IHBtYyIKLXJldHVybnMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBv ZiB0aGUgc3BlY2lmaWVkIGNvdW50ZXIuCi0uSXQgRHYgUE1JT1NUQVJUCi0uSXQgRHYgUE1JT1NU T1AKLS5QcSBMaSBpbnQKLXN0YXJ0cyAoc3RvcHMpIHRoZSBzcGVjaWZpZWQgY291bnRlci4KLUR1 ZSB0byBoYXJkd2FyZSBkZWZpY2llbmNpZXMsCi1jb3VudGVycyBtdXN0IGJlIHN0YXJ0ZWQgYW5k IHN0b3BwZWQgaW4gbnVtZXJpY2FsIG9yZGVyLgotKFRoYXQgaXMgdG8KLXNheSwgY291bnRlciAw IGNhbiBuZXZlciBiZSBzdG9wcGVkIHdpdGhvdXQgZmlyc3Qgc3RvcHBpbmcgY291bnRlciAxLikK LVRoZSBkcml2ZXIgd2lsbAotLkVtIG5vdAotZW5mb3JjZSB0aGlzIHJlc3RyaWN0aW9uIChzaW5j ZSBpdCBtYXkgbm90IGJlIHByZXNlbnQgaW4gZnV0dXJlIENQVXMpLgotLkl0IER2IFBNSU9SRVNF VAotLlBxIExpIGludAotcmVzZXQgdGhlIHNwZWNpZmllZCBjb3VudGVyIHRvIHplcm8uCi1UaGUg Y291bnRlciBzaG91bGQgYmUgc3RvcHBlZAotd2l0aAotLkR2IFBNSU9TVE9QCi1iZWZvcmUgaXQg aXMgcmVzZXQuCi1BbGwgY291bnRlcnMgYXJlIGF1dG9tYXRpY2FsbHkgcmVzZXQgYnkKLS5EdiBQ TUlPU0VUVVAgLgotLkl0IER2IFBNSU9SRUFECi0uUHEgTGkgInN0cnVjdCBwbWNfZGF0YSIKLWdl dCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY291bnRlci4KLVRoZQotLkxpIHBtY19kYXRhCi1z dHJ1Y3R1cmUgZGVmaW5lcyB0d28gZmllbGRzOgotLlBwCi0uQmwgLXRhZyAtY29tcGFjdCAtd2lk dGggInF1YWRfdCBwbWNkX3ZhbHVlIgotLkl0IExpICJpbnQgcG1jZF9udW0iCi10aGUgbnVtYmVy IG9mIHRoZSBjb3VudGVyIHRvIHJlYWQKLS5JdCBMaSAicXVhZF90IHBtY2RfdmFsdWUiCi10aGUg cmVzdWx0aW5nIHZhbHVlIGFzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCi0uRWwKLS5QcAotSW4g dGhlIGZ1dHVyZSwgaXQgbWF5IGJlIHBvc3NpYmxlIHRvIHVzZSB0aGUKLS5MaSBSRFBNQwotaW5z dHJ1Y3Rpb24gb24KLS5UbiAiUGVudGl1bSBQcm8iCi1wcm9jZXNzb3JzIHRvIHJlYWQgdGhlIGNv dW50ZXJzIGRpcmVjdGx5LgotLkl0IER2IFBNSU9UU1RBTVAKLS5QcSBMaSAic3RydWN0IHBtY190 c3RhbXAiCi1yZWFkIHRoZSB0aW1lIHN0YW1wIGNvdW50ZXIuCi1UaGUKLS5MaSBwbWNfdHN0YW1w Ci1zdHJ1Y3R1cmUgZGVmaW5lcyB0d28gZmllbGRzOgotLlBwCi0uQmwgLXRhZyAtY29tcGFjdCAt d2lkdGggInF1YWRfdCBwbWN0X3ZhbHVlIgotLkl0IExpICJpbnQgcG1jdF9yYXRlIgotdGhlIGFw cHJveGltYXRlIHJhdGUgb2YgdGhlIGNvdW50ZXIsIGluIE1IegotLkl0IExpICJxdWFkX3QgcG1j dF92YWx1ZSIKLXRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb3VudGVyIGFzIGEgNjQtYml0IGlu dGVnZXIKLS5FbAotLlBwCi1JdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBjb3VudGVy IHJhdGUsIGFzIHByb3ZpZGVkIGluIHRoZQotLkxpIHBtY3RfcmF0ZQotZmllbGQsIGlzIG9mdGVu IGluY29ycmVjdCBiZWNhdXNlIG9mIGNhbGlicmF0aW9uIGRpZmZpY3VsdGllcyBhbmQKLW5vbi1p bnRlZ3JhbCBjbG9jayByYXRlcy4KLVRoaXMgZmllbGQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgbW9y ZSBvZiBhCi1oaW50IG9yIHNhbml0eS1jaGVjayB0aGFuIGFuIGFjdHVhbCByZXByZXNlbnRhdGlv biBvZiB0aGUgcmF0ZSBvZgotY2xvY2sgdGlja3MuCi0uRWwKLS5TaCBGSUxFUwotLkJsIC10YWcg LWNvbXBhY3QgLXdpZHRoICIvdXNyL2luY2x1ZGUvbWFjaGluZS9wZXJmbW9uLmgiCi0uSXQgUGEg L2Rldi9wZXJmbW9uCi1jaGFyYWN0ZXIgZGV2aWNlIGludGVyZmFjZSB0byBjb3VudGVycwotLkl0 IFBhIC91c3IvaW5jbHVkZS9tYWNoaW5lL3BlcmZtb24uaAotaW5jbHVkZSBmaWxlIHdpdGggZGVm aW5pdGlvbnMgb2Ygc3RydWN0dXJlcyBhbmQgZXZlbnQgdHlwZXMKLS5JdCBQYSAvdXNyL3NoYXJl L2V4YW1wbGVzL3BlcmZtb24KLXNhbXBsZSBzb3VyY2UgY29kZSBkZW1vbnN0cmF0aW5nIHVzZSBv ZiBhbGwgdGhlCi0uRm4gaW9jdGwKLWNvbW1hbmRzCi0uRWwKLS5TaCBTRUUgQUxTTwotLlhyIGlv Y3RsIDIgLAotLlhyIGh3cG1jIDQKLS5ScwotLiVBIEludGVsIENvcnBvcmF0aW9uCi0uJUIgUGVu dGl1bSBQcm8gRmFtaWx5IERldmVsb3BlcidzIE1hbnVhbAotLiVEIEphbnVhcnkgMTk5NgotLiVW IHZvbC4gMwotLiVPIE9wZXJhdGluZyBTeXN0ZW0gV3JpdGVyJ3MgTWFudWFsCi0uUmUKLS5TaCBI SVNUT1JZCi1UaGUKLS5ObQotZGV2aWNlIGZpcnN0IGFwcGVhcmVkIGluCi0uRnggMi4yIC4KLS5T aCBBVVRIT1JTCi1UaGUKLS5ObQotZHJpdmVyIHdhcyB3cml0dGVuIGJ5Ci0uQW4gR2FycmV0dCBB LiBXb2xsbWFuICwKLU1JVCBMYWJvcmF0b3J5IGZvciBDb21wdXRlciBTY2llbmNlLgpJbmRleDog c2hhcmUvbWFuL21hbjQvbWFuNC5pMzg2L01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNoYXJlL21h bi9tYW40L21hbjQuaTM4Ni9NYWtlZmlsZQkocmV2aXNpb24gMjEwNTM2KQorKysgc2hhcmUvbWFu L21hbjQvbWFuNC5pMzg2L01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw2IEBA CiAJbnB4LjQgXAogCXBhZS40IFwKIAlwYmlvLjQgXAotCXBlcmZtb24uNCBcCiAJcG5wLjQgXAog CXBucGJpb3MuNCBcCiAJc2JuaS40IFwKSW5kZXg6IHNoYXJlL21hbi9tYW43L2Nsb2Nrcy43Cj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHNoYXJlL21hbi9tYW43L2Nsb2Nrcy43CShyZXZpc2lvbiAyMTA1MzYpCisr KyBzaGFyZS9tYW4vbWFuNy9jbG9ja3MuNwkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDEwICsxNDQs NiBAQAogLlZhIG1hY2hkZXAudHNjX2ZyZXEKIHN5c2N0bCwgaWYgaXQgaXMgYXZhaWxhYmxlLgog SXQgaXMgdXNlZCB0byBpbnRlcnBvbGF0ZSBiZXR3ZWVuIHZhbHVlcyBvZiB0aGUgc2NoZWR1bGlu ZyBjbG9jay4KLUl0IGNhbiBiZSBhY2Nlc3NlZCB1c2luZyB0aGUKLS5EdiBQTUlPVFNUQU1QCi1y ZXF1ZXN0IG9mCi0uWHIgcGVyZm1vbiA0IC4KIC5JdAogVGhlIEFDUEkgY2xvY2suCiBUaGlzIGlz IGEgcmVhbCBjbG9jay90aW1lciB3aXRoIGEgbm9taW5hbCBmcmVxdWVuY3kgb2YgMzU3OTU0NS4K SW5kZXg6IHNoYXJlL2V4YW1wbGVzL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNoYXJlL2V4YW1w bGVzL01ha2VmaWxlCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzaGFyZS9leGFtcGxlcy9NYWtlZmls ZQkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogCW1kb2MgXAogCW5ldGdyYXBoIFwK IAlud2NsaWVudCBcCi0JcGVyZm1vbiBcCiAJcG9ydGFsIFwKIAlwcGkgXAogCXBwcCBcCkBAIC0x MTgsOSArMTE3LDYgQEAKIAluZXRncmFwaC91ZHAudHVubmVsIFwKIAlud2NsaWVudC9kb3Qubndm c3JjIFwKIAlud2NsaWVudC9ud2ZzLnNoLnNhbXBsZSBcCi0JcGVyZm1vbi9NYWtlZmlsZSBcCi0J cGVyZm1vbi9SRUFETUUgXAotCXBlcmZtb24vcGVyZm1vbi5jIFwKIAlwb3J0YWwvUkVBRE1FIFwK IAlwb3J0YWwvcG9ydGFsLmNvbmYgXAogCXBwaS9NYWtlZmlsZSBcCkluZGV4OiBzaGFyZS9leGFt cGxlcy9wZXJmbW9uL3BlcmZtb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzaGFyZS9leGFtcGxlcy9wZXJm bW9uL3BlcmZtb24uYwkocmV2aXNpb24gMjEwNTM2KQorKysgc2hhcmUvZXhhbXBsZXMvcGVyZm1v bi9wZXJmbW9uLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKiBDb3B5 cmlnaHQgMTk5NiBNYXNzYWNodXNldHRzIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5Ci0gKgotICog UGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0 d2FyZSBhbmQKLSAqIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBhbmQgd2l0aG91 dCBmZWUgaXMgaGVyZWJ5Ci0gKiBncmFudGVkLCBwcm92aWRlZCB0aGF0IGJvdGggdGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMKLSAqIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBp biBhbGwgY29waWVzLCB0aGF0IGJvdGggdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwKLSAqIHN1cHBvcnRpbmcgZG9j dW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgTS5JLlQuIG5vdCBiZSB1c2VkCi0gKiBp biBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2Yg dGhlCi0gKiBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Np b24uICBNLkkuVC4gbWFrZXMKLSAqIG5vIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFi aWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55Ci0gKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlk ZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAotICogd2FycmFudHkuCi0gKiAK LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgTS5JLlQuIGBgQVMgSVMnJy4gIE0uSS5U LiBESVNDTEFJTVMKLSAqIEFMTCBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUyBXSVRIIFJF R0FSRCBUTyBUSElTIFNPRlRXQVJFLAotICogSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKLSAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIElOIE5PIEVWRU5UCi0gKiBTSEFMTCBNLkkuVC4g QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS VklDRVM7IExPU1MgT0YKLSAqIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICogT1IgVE9SVCAo SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU Ci0gKiBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg UE9TU0lCSUxJVFkgT0YKLSAqIFNVQ0ggREFNQUdFLgotICoKLSAqICRGcmVlQlNEJAotICovCi0K LSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLQotI2luY2x1 ZGUgPG1hY2hpbmUvY3B1Lmg+Ci0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0KLSNpbmNs dWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgot I2luY2x1ZGUgPGVyci5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+ Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLQotc3RhdGljIGludCBn ZXRudW0oY29uc3QgY2hhciAqLCBpbnQsIGludCk7Ci1zdGF0aWMgdm9pZCB1c2FnZShjb25zdCBj aGFyICopIF9fZGVhZDI7Ci0KLWludAotbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0J aW50IGMsIGZkLCBudW07Ci0JaW50IGxvb3BzLCBpLCBzbGVlcHRpbWU7Ci0JY2hhciAqY21kOwot CXN0cnVjdCBwbWMgcG1jOwotCXN0cnVjdCBwbWNfdHN0YW1wIHRoZW4sIG5vdzsKLQlzdHJ1Y3Qg cG1jX2RhdGEgdmFsdWU7Ci0JcXVhZF90ICpidWY7Ci0JZG91YmxlIHRvdGFsOwotCi0JcG1jLnBt Y19udW0gPSAwOwotCXBtYy5wbWNfZXZlbnQgPSAwOwotCXBtYy5wbWNfdW5pdCA9IDA7Ci0JcG1j LnBtY19mbGFncyA9IDA7Ci0JcG1jLnBtY19tYXNrID0gMDsKLQljbWQgPSBOVUxMOwotCWxvb3Bz ID0gNTA7Ci0Jc2xlZXB0aW1lID0gMDsKLQotCXdoaWxlICgoYyA9IGdldG9wdChhcmdjLCBhcmd2 LCAiczpsOnVvZWlVOm06YzoiKSkgIT0gLTEpIHsKLQkJc3dpdGNoKGMpIHsKLQkJY2FzZSAndSc6 Ci0JCQlwbWMucG1jX2ZsYWdzIHw9IFBNQ0ZfVVNSOwotCQkJYnJlYWs7Ci0JCWNhc2UgJ28nOgot CQkJcG1jLnBtY19mbGFncyB8PSBQTUNGX09TOwotCQkJYnJlYWs7Ci0JCWNhc2UgJ2UnOgotCQkJ cG1jLnBtY19mbGFncyB8PSBQTUNGX0U7Ci0JCQlicmVhazsKLQkJY2FzZSAnaSc6Ci0JCQlwbWMu cG1jX2ZsYWdzIHw9IFBNQ0ZfSU5WOwotCQkJYnJlYWs7Ci0JCWNhc2UgJ1UnOgotCQkJcG1jLnBt Y191bml0ID0gZ2V0bnVtKG9wdGFyZywgMCwgMjU2KTsKLQkJCWJyZWFrOwotCQljYXNlICdtJzoK LQkJCXBtYy5wbWNfbWFzayA9IGdldG51bShvcHRhcmcsIDAsIDI1Nik7Ci0JCQlicmVhazsKLQkJ Y2FzZSAnbCc6Ci0JCQlsb29wcyA9IGdldG51bShvcHRhcmcsIDEsIElOVF9NQVggLSAxKTsKLQkJ CWJyZWFrOwotCQljYXNlICdzJzoKLQkJCXNsZWVwdGltZSA9IGdldG51bShvcHRhcmcsIDAsIElO VF9NQVggLSAxKTsKLQkJCWJyZWFrOwotCQljYXNlICdjJzoKLQkJCWNtZCA9IG9wdGFyZzsKLQkJ CWJyZWFrOwotCQlkZWZhdWx0OgotCQkJdXNhZ2UoYXJndlswXSk7Ci0JCX0KLQl9Ci0KLQlpZiAo YXJnYyAtIG9wdGluZCAhPSAxKQotCQl1c2FnZShhcmd2WzBdKTsKLQotCXBtYy5wbWNfZXZlbnQg PSBnZXRudW0oYXJndltvcHRpbmRdLCAwLCAyNTUpOwotCi0JYnVmID0gbWFsbG9jKChsb29wcyAr IDEpICogc2l6ZW9mICpidWYpOwotCWlmICghYnVmKQotCQllcnIoMSwgIm1hbGxvYyglbHUpIiwg KHVuc2lnbmVkIGxvbmcpKGxvb3BzICsxKSAqIHNpemVvZiAqYnVmKTsKLQotCWZkID0gb3Blbihf UEFUSF9QRVJGTU9OLCBPX1JEV1IsIDApOwotCWlmIChmZCA8IDApCi0JCWVycigxLCAib3Blbjog IiBfUEFUSF9QRVJGTU9OKTsKLQotCWlmIChpb2N0bChmZCwgUE1JT1NFVFVQLCAmcG1jKSA8IDAp Ci0JCWVycigxLCAiaW9jdGwoUE1JT1NFVFVQKSIpOwotCi0JaWYgKGlvY3RsKGZkLCBQTUlPVFNU QU1QLCAmdGhlbikgPCAwKQotCQllcnIoMSwgImlvY3RsKFBNSU9UU1RBTVApIik7Ci0KLQludW0g PSAwOwotCWlmIChpb2N0bChmZCwgUE1JT1NUQVJULCAmbnVtKSA8IDApCi0JCWVycigxLCAiaW9j dGwoUE1JT1NUQVJUKSIpOwotCi0JdmFsdWUucG1jZF9udW0gPSAwOwotCWZvciAoaSA9IDA7IGkg PCBsb29wczsgaSsrKSB7Ci0JCWlmIChpb2N0bChmZCwgUE1JT1NUT1AsICZudW0pIDwgMCkKLQkJ CWVycigxLCAiaW9jdGwoUE1JT1NUT1ApIik7Ci0JCWlmIChpb2N0bChmZCwgUE1JT1JFQUQsICZ2 YWx1ZSkgPCAwKQotCQkJZXJyKDEsICJpb2N0bChQTUlPUkVBRCkiKTsKLQkJYnVmW2ldID0gdmFs dWUucG1jZF92YWx1ZTsKLQkJaWYgKGlvY3RsKGZkLCBQTUlPUkVTRVQsICZ2YWx1ZS5wbWNkX251 bSkgPCAwKQotCQkJZXJyKDEsICJpb2N0bChQTUlPUkVTRVQpIik7Ci0JCWlmIChpb2N0bChmZCwg UE1JT1NUQVJULCAmbnVtKSA8IDApCi0JCQllcnIoMSwgImlvY3RsKFBNSU9TVEFSVCkiKTsKLQkJ aWYgKHNsZWVwdGltZSkKLQkJCXNsZWVwKHNsZWVwdGltZSk7Ci0JCWlmIChjbWQpCi0JCQlzeXN0 ZW0oY21kKTsKLQl9Ci0KLQlpZiAoaW9jdGwoZmQsIFBNSU9TVE9QLCAmbnVtKSA8IDApCi0JCWVy cigxLCAiaW9jdGwoUE1JT1NUT1ApIik7Ci0JaWYgKGlvY3RsKGZkLCBQTUlPUkVBRCwgJnZhbHVl KSA8IDApCi0JCWVycigxLCAiaW9jdGwoUE1JT1JFQUQpIik7Ci0JYnVmW2ldID0gdmFsdWUucG1j ZF92YWx1ZTsKLQlpZiAoaW9jdGwoZmQsIFBNSU9UU1RBTVAsICZub3cpIDwgMCkKLQkJZXJyKDEs ICJpb2N0bChQTUlPVFNUQU1QKSIpOwotCi0JdG90YWwgPSAwOwotCWZvciAoaSA9IDE7IGkgPD0g bG9vcHM7IGkrKykgewotCQlwcmludGYoIiVkOiAlcWRcbiIsIGksIGJ1ZltpXSk7Ci0JCXRvdGFs ICs9IGJ1ZltpXTsKLQl9Ci0JcHJpbnRmKCJ0b3RhbDogJWZcbm1lYW46ICVmXG4iLCB0b3RhbCwg dG90YWwgLyBsb29wcyk7Ci0KLQlwcmludGYoImNsb2NrcyAoYXQgJWQtTUh6KTogJXFkXG4iLCBu b3cucG1jdF9yYXRlLAotCSAgICAgICBub3cucG1jdF92YWx1ZSAtIHRoZW4ucG1jdF92YWx1ZSk7 Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotZ2V0bnVtKGNvbnN0IGNoYXIgKmJ1Ziwg aW50IG1pbiwgaW50IG1heCkKLXsKLQljaGFyICplcDsKLQlsb25nIGw7Ci0KLQllcnJubyA9IDA7 Ci0JbCA9IHN0cnRvbChidWYsICZlcCwgMCk7Ci0JaWYgKCpidWYgJiYgISplcCAmJiAhZXJybm8p IHsKLQkJaWYgKGwgPCBtaW4gfHwgbCA+IG1heCkgewotCQkJZXJyeCgxLCAiJXM6IG11c3QgYmUg YmV0d2VlbiAlZCBhbmQgJWQiLCAKLQkJCSAgICAgYnVmLCBtaW4sIG1heCk7Ci0JCX0KLQkJcmV0 dXJuIChpbnQpbDsKLQl9IAotCi0JZXJyeCgxLCAiJXM6IHBhcmFtZXRlciBtdXN0IGJlIGFuIGlu dGVnZXIiLCBidWYpOwotfQotCi1zdGF0aWMgdm9pZAotdXNhZ2UoY29uc3QgY2hhciAqcG5hbWUp Ci17Ci0JZnByaW50ZihzdGRlcnIsIAotCSJ1c2FnZTogJXMgWy1laW91XSBbLWMgY29tbWFuZF0g Wy1sIG5sb29wc10gWy1tIG1hc2tdIFstcyBzbGVlcHRpbWVdXG4iCi0JIiAgICAgICBbLVUgdW5p dF0gY291bnRlclxuIiwKLQkJcG5hbWUpOwotCWV4aXQoMSk7Ci19CkluZGV4OiBzaGFyZS9leGFt cGxlcy9wZXJmbW9uL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNoYXJlL2V4YW1wbGVzL3BlcmZt b24vTWFrZWZpbGUJKHJldmlzaW9uIDIxMDUzNikKKysrIHNoYXJlL2V4YW1wbGVzL3BlcmZtb24v TWFrZWZpbGUJKHdvcmtpbmcgY29weSkKQEAgLTEsOCArMCwwIEBACi0jICRGcmVlQlNEJAotCi1Q Uk9HPQlwZXJmbW9uCi1OT19NQU49Ci0KLWluc3RhbGw6Ci0KLS5pbmNsdWRlIDxic2QucHJvZy5t az4KSW5kZXg6IHNoYXJlL2V4YW1wbGVzL3BlcmZtb24vUkVBRE1FCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNo YXJlL2V4YW1wbGVzL3BlcmZtb24vUkVBRE1FCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzaGFyZS9l eGFtcGxlcy9wZXJmbW9uL1JFQURNRQkod29ya2luZyBjb3B5KQpAQCAtMSwyNSArMCwwIEBACi1g cGVyZm1vbicgaXMgYSBzYW1wbGUgcHJvZ3JhbSB0byBhY2Nlc3MgdGhlIHBlcmZvcm1hbmNlLW1v bml0b3JpbmcKLWNvdW50ZXJzIG9uIFBlbnRpdW0gYW5kIFBlbnRpdW0gUHJvIENQVXMuICBTZWUg cGVyZm1vbig0KSBmb3IgYQotZGVzY3JpcHRpb24gb2YgdGhpcyBmYWNpbGl0eS4KLQotVGhlIHBy b2dyYW0gdGFrZXMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgotCi0JLXUJY291bnQgZXZlbnRzIGlu IHVzZXIgbW9kZQotCS1vCWNvdW50IGV2ZW50cyBpbiBrZXJuZWwgbW9kZQotCQkodGhlc2UgdHdv IGNhbiBiZSBjb21iaW5lZCkKLQotCS1lCWNvdW50IGV2ZW50cywgbm90IGR1cmF0aW9uCi0JLWwg bglydW4gYG4nIGxvb3BzIChkZWZhdWx0IDUwKQotCS1zIG4Jc2xlZXAgYG4nIHNlY29uZHMgYmV0 d2VlbiBsb29wIGl0ZXJhdGlvbnMgKGRlZmF1bHQgMCkKLQotVGhlIGZvbGxvd2luZyBvcHRpb25z IGFyZSBub3QgaW1wbGVtZW50ZWQgb24gUGVudGl1bSBDUFVzOgotCi0JLW0gbgl1c2UgY291bnQg bWFzayBgbicKLQktaQlpbnZlcnQgc2Vuc2Ugb2YgY291bnQgbWFzayBjb21wYXJpc29uCi0JLVUg bgl1c2UgdW5pdCBtYXNrIGBuJwotCi1UaGVyZSBpcyBvbmUgbWFuZGF0b3J5IGFyZ3VtZW50LCB3 aGljaCBpcyB0aGUgZXZlbnQgbnVtYmVyIHRvIGJlCi1tb25pdG9yZWQsIGRlZmluZWQgaW4gPG1h Y2hpbmUvcGVyZm1vbi5oPi4gIEFsbCBudW1iZXJzIGNhbiBiZQotc3BlY2lmaWVkIGluIGFueSBm b3JtYXQgYWNjZXB0YWJsZSB0byBzdHJ0b2woMykuCi0KLSRGcmVlQlNEJApJbmRleDogT2Jzb2xl dGVGaWxlcy5pbmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gT2Jzb2xldGVGaWxlcy5pbmMJKHJldmlzaW9uIDIx MDU0MikKKysrIE9ic29sZXRlRmlsZXMuaW5jCSh3b3JraW5nIGNvcHkpCkBAIC0xNCw2ICsxNCwx NSBAQAogIyBUaGUgZmlsZSBpcyBwYXJ0aXRpb25lZDogT0xEX0ZJTEVTIGZpcnN0LCB0aGVuIE9M RF9MSUJTIGFuZCBPTERfRElSUyBsYXN0LgogIwogCisjIDIwMTAwNzI3OiBwZXJmbW9uKDQpIHJl bW92YWwKKy5pZiAke1RBUkdFVF9BUkNIfSA9PSAiaTM4NiIKK09MRF9GSUxFUys9dXNyL3NoYXJl L21hbi9tYW40L2kzODYvcGVyZm1vbi40Lmd6CisuZW5kaWYKK09MRF9GSUxFUys9dXNyL2luY2x1 ZGUvbWFjaGluZS9wZXJmbW9uLmgKK09MRF9GSUxFUys9dXNyL3NoYXJlL2V4YW1wbGVzL3BlcmZt b24vTWFrZWZpbGUKK09MRF9GSUxFUys9dXNyL3NoYXJlL2V4YW1wbGVzL3BlcmZtb24vUkVBRE1F CitPTERfRklMRVMrPXVzci9zaGFyZS9leGFtcGxlcy9wZXJmbW9uL3BlcmZtb24uYworT0xEX0RJ UlMrPXVzci9zaGFyZS9leGFtcGxlcy9wZXJmbW9uCiAjIDIwMTAwNzI1OiBhY3BpX2FpYm9vc3Qo NCkgcmVtb3ZhbC4KIE9MRF9GSUxFUys9dXNyL3NoYXJlL21hbi9tYW40L2FjcGlfYWlib29zdC40 Lmd6CiAjIDIwMTAwNzIwOiBuZXcgY2xhbmcgaW1wb3J0IHdoaWNoIGJ1bXBzIHZlcnNpb24gZnJv bSAyLjAgdG8gMi44CkluZGV4OiBVUERBVElORwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVUERBVElORwkocmV2 aXNpb24gMjEwNTM2KQorKysgVVBEQVRJTkcJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDEw IEBACiAJbWFjaGluZXMgdG8gbWF4aW1pemUgcGVyZm9ybWFuY2UuICAoVG8gZGlzYWJsZSBtYWxs b2MgZGVidWdnaW5nLCBydW4KIAlsbiAtcyBhaiAvZXRjL21hbGxvYy5jb25mLikKIAorMjAxMDA3 Mjc6CisJVGhlIHBlcmZtb24oNCkgZHJpdmVyIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2Yg dGhlIG1vcmUgYWR2YW5jZWQKKwlod3BtYyg0KSBkcml2ZXIuCisKIDIwMTAwNzI1OgogCVRoZSBh Y3BpX2FpYm9vc3QoNCkgZHJpdmVyIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgdGhlIG5l dwogCWFpYnMoNCkgZHJpdmVyLiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIGtlcm5lbCBjb25maWd1 cmF0aW9uIGZpbGUuCkluZGV4OiBldGMvbXRyZWUvQlNELnVzci5kaXN0Cj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGV0Yy9tdHJlZS9CU0QudXNyLmRpc3QJKHJldmlzaW9uIDIxMDU0MikKKysrIGV0Yy9tdHJlZS9C U0QudXNyLmRpc3QJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw4ICsyNjMsNiBAQAogICAgICAgICAg ICAgLi4KICAgICAgICAgICAgIHBjLXN5c2luc3RhbGwKICAgICAgICAgICAgIC4uCi0gICAgICAg ICAgICBwZXJmbW9uCi0gICAgICAgICAgICAuLgogICAgICAgICAgICAgcGYKICAgICAgICAgICAg IC4uCiAgICAgICAgICAgICBwb3J0YWwKSW5kZXg6IHN5cy9wb3dlcnBjL2FpbS9tYWNoZGVwLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gc3lzL3Bvd2VycGMvYWltL21hY2hkZXAuYwkocmV2aXNpb24gMjEwNTM2 KQorKysgc3lzL3Bvd2VycGMvYWltL21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtMTkwLDkg KzE5MCw2IEBACiAJICovCiAJY3B1X3NldHVwKFBDUFVfR0VUKGNwdWlkKSk7CiAKLSNpZmRlZiBQ RVJGTU9OCi0JcGVyZm1vbl9pbml0KCk7Ci0jZW5kaWYKIAlwcmludGYoInJlYWwgbWVtb3J5ICA9 ICVsZCAoJWxkIE1CKVxuIiwgcHRvYShwaHlzbWVtKSwKIAkgICAgcHRvYShwaHlzbWVtKSAvIDEw NDg1NzYpOwogCXJlYWxtZW0gPSBwaHlzbWVtOwpJbmRleDogc3lzL2NvbmYvb3B0aW9ucy5pMzg2 Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIHN5cy9jb25mL29wdGlvbnMuaTM4NgkocmV2aXNpb24gMjEwNTM2KQor Kysgc3lzL2NvbmYvb3B0aW9ucy5pMzg2CSh3b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw2IEBA CiBNUFRBQkxFX0ZPUkNFX0hUVAogTVBfV0FUQ0hET0cKIE5LUFQJCQlvcHRfcG1hcC5oCi1QRVJG TU9OCiBQTUFQX1NIUEdQRVJQUk9DCW9wdF9wbWFwLmgKIFBPV0VSRkFJTF9OTUkJCW9wdF90cmFw LmgKIApJbmRleDogc3lzL2NvbmYvZmlsZXMucGM5OAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvY29uZi9m aWxlcy5wYzk4CShyZXZpc2lvbiAyMTA1MzYpCisrKyBzeXMvY29uZi9maWxlcy5wYzk4CSh3b3Jr aW5nIGNvcHkpCkBAIC0xNjAsNyArMTYwLDYgQEAKIGkzODYvaTM4Ni9tcHRhYmxlLmMJCW9wdGlv bmFsIGFwaWMKIGkzODYvaTM4Ni9tcHRhYmxlX3BjaS5jCQlvcHRpb25hbCBhcGljIHBjaQogaTM4 Ni9pMzg2L25leHVzLmMJCXN0YW5kYXJkCi1pMzg2L2kzODYvcGVyZm1vbi5jCQlvcHRpb25hbCBw ZXJmbW9uCiBpMzg2L2kzODYvcG1hcC5jCQlzdGFuZGFyZAogaTM4Ni9pMzg2L3B0cmFjZV9tYWNo ZGVwLmMJc3RhbmRhcmQKIGkzODYvaTM4Ni9zdGFja19tYWNoZGVwLmMJb3B0aW9uYWwgZGRiIHwg c3RhY2sKSW5kZXg6IHN5cy9jb25mL2ZpbGVzLmkzODYKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2NvbmYv ZmlsZXMuaTM4NgkocmV2aXNpb24gMjEwNTM2KQorKysgc3lzL2NvbmYvZmlsZXMuaTM4Ngkod29y a2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw2IEBACiBpMzg2L3hlbi9tcHRhYmxlLmMJCW9wdGlv bmFsIGFwaWMgeGVuCiBpMzg2L2kzODYvbXB0YWJsZV9wY2kuYwkJb3B0aW9uYWwgYXBpYyBwY2kK IGkzODYvaTM4Ni9uZXh1cy5jCQlzdGFuZGFyZAotaTM4Ni9pMzg2L3BlcmZtb24uYwkJb3B0aW9u YWwgcGVyZm1vbgogaTM4Ni9pMzg2L3BtYXAuYwkJb3B0aW9uYWwgbmF0aXZlCiBpMzg2L3hlbi9w bWFwLmMJCQlvcHRpb25hbCB4ZW4KIGkzODYvaTM4Ni9wdHJhY2VfbWFjaGRlcC5jCXN0YW5kYXJk CkluZGV4OiBzeXMvY29uZi9vcHRpb25zLmFtZDY0Cj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9jb25mL29w dGlvbnMuYW1kNjQJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9jb25mL29wdGlvbnMuYW1kNjQJ KHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw2IEBACiBDT1VOVF9YSU5WTFRMQl9ISVRTCW9wdF9z bXAuaAogQ09VTlRfSVBJUwkJb3B0X3NtcC5oCiBNQVhNRU0KLVBFUkZNT04KIFBNQVBfU0hQR1BF UlBST0MJb3B0X3BtYXAuaAogTVBfV0FUQ0hET0cKIApJbmRleDogc3lzL2NvbmYvb3B0aW9ucy5w Yzk4Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHN5cy9jb25mL29wdGlvbnMucGM5OAkocmV2aXNpb24gMjEwNTM2 KQorKysgc3lzL2NvbmYvb3B0aW9ucy5wYzk4CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw3ICsxMSw2 IEBACiBNQVhNRU0KIE1QVEFCTEVfRk9SQ0VfSFRUCiBNUF9XQVRDSERPRwotUEVSRk1PTgogUE1B UF9TSFBHUEVSUFJPQwlvcHRfcG1hcC5oCiBQT1dFUkZBSUxfTk1JCQlvcHRfdHJhcC5oCiAKSW5k ZXg6IHN5cy9pYTY0L2lhNjQvbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9pYTY0L2lhNjQv bWFjaGRlcC5jCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzeXMvaWE2NC9pYTY0L21hY2hkZXAuYwko d29ya2luZyBjb3B5KQpAQCAtMjY2LDkgKzI2Niw2IEBACiAJICovCiAJaWRlbnRpZnljcHUoKTsK IAotI2lmZGVmIFBFUkZNT04KLQlwZXJmbW9uX2luaXQoKTsKLSNlbmRpZgogCXByaW50ZigicmVh bCBtZW1vcnkgID0gJWxkICglbGQgTUIpXG4iLCBpYTY0X3B0b2IoTWF4bWVtKSwKIAkgICAgaWE2 NF9wdG9iKE1heG1lbSkgLyAxMDQ4NTc2KTsKIAlyZWFsbWVtID0gTWF4bWVtOwpJbmRleDogc3lz L3BjOTgvaW5jbHVkZS9wZXJmbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL3BjOTgvaW5jbHVkZS9w ZXJmbW9uLmgJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9wYzk4L2luY2x1ZGUvcGVyZm1vbi5o CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzAsMCBAQAotLyotCi0gKiBUaGlzIGZpbGUgaXMgaW4g dGhlIHB1YmxpYyBkb21haW4uCi0gKi8KLS8qICRGcmVlQlNEJCAqLwotCi0jaW5jbHVkZSA8aTM4 Ni9wZXJmbW9uLmg+CkluZGV4OiBzeXMvcGM5OC9wYzk4L21hY2hkZXAuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzeXMvcGM5OC9wYzk4L21hY2hkZXAuYwkocmV2aXNpb24gMjEwNTM2KQorKysgc3lzL3BjOTgv cGM5OC9tYWNoZGVwLmMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAKICNpbmNsdWRl ICJvcHRfbWF4bWVtLmgiCiAjaW5jbHVkZSAib3B0X21zZ2J1Zi5oIgogI2luY2x1ZGUgIm9wdF9u cHguaCIKLSNpbmNsdWRlICJvcHRfcGVyZm1vbi5oIgogCiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+ CiAjaW5jbHVkZSA8c3lzL3Byb2MuaD4KQEAgLTEyMiw5ICsxMjEsNiBAQAogI2luY2x1ZGUgPG1h Y2hpbmUvc2lnZnJhbWUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNpYWxyZWcuaD4KICNpbmNs dWRlIDxtYWNoaW5lL3ZtODYuaD4KLSNpZmRlZiBQRVJGTU9OCi0jaW5jbHVkZSA8bWFjaGluZS9w ZXJmbW9uLmg+Ci0jZW5kaWYKICNpZmRlZiBTTVAKICNpbmNsdWRlIDxtYWNoaW5lL3NtcC5oPgog I2VuZGlmCkBAIC0yMjIsOSArMjE4LDYgQEAKIAlzdGFydHJ0Y2xvY2soKTsKIAlwcmludGNwdWlu Zm8oKTsKIAlwYW5pY2lmY3B1dW5zdXBwb3J0ZWQoKTsKLSNpZmRlZiBQRVJGTU9OCi0JcGVyZm1v bl9pbml0KCk7Ci0jZW5kaWYKIAlyZWFsbWVtID0gTWF4bWVtOwogCiAJLyoKSW5kZXg6IHN5cy9w Yzk4L2NvbmYvTk9URVMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL3BjOTgvY29uZi9OT1RFUwkocmV2aXNp b24gMjEwNTM2KQorKysgc3lzL3BjOTgvY29uZi9OT1RFUwkod29ya2luZyBjb3B5KQpAQCAtMTU4 LDEyICsxNTgsNiBAQAogIyBEZWJ1ZyBvcHRpb25zCiBvcHRpb25zIAlOUFhfREVCVUcJIyBlbmFi bGUgbnB4IGRlYnVnZ2luZwogCi0jCi0jIFBFUkZNT04gY2F1c2VzIHRoZSBkcml2ZXIgZm9yIFBl bnRpdW0vUGVudGl1bSBQcm8gcGVyZm9ybWFuY2UgY291bnRlcnMKLSMgdG8gYmUgY29tcGlsZWQu ICBTZWUgcGVyZm1vbig0KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSMKLW9wdGlvbnMgCVBFUkZN T04KLQogDAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIE5FVFdPUktJTkcgT1BUSU9OUwpJbmRleDogc3lzL2kz ODYvaW5jbHVkZS9wZXJmbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2kzODYvaW5jbHVkZS9wZXJm bW9uLmgJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9pMzg2L2luY2x1ZGUvcGVyZm1vbi5oCSh3 b3JraW5nIGNvcHkpCkBAIC0xLDI1NSArMCwwIEBACi0vKi0KLSAqIENvcHlyaWdodCAxOTk2IE1h c3NhY2h1c2V0dHMgSW5zdGl0dXRlIG9mIFRlY2hub2xvZ3kKLSAqCi0gKiBQZXJtaXNzaW9uIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAotICog aXRzIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcyBoZXJl YnkKLSAqIGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgYm90aCB0aGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcwotICogcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMs IHRoYXQgYm90aCB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbAotICogc3VwcG9ydGluZyBkb2N1bWVudGF0aW9uLCBh bmQgdGhhdCB0aGUgbmFtZSBvZiBNLkkuVC4gbm90IGJlIHVzZWQKLSAqIGluIGFkdmVydGlzaW5n IG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUKLSAqIHNvZnR3 YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIE0uSS5ULiBt YWtlcwotICogbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlz IHNvZnR3YXJlIGZvciBhbnkKLSAqIHB1cnBvc2UuICBJdCBpcyBwcm92aWRlZCAiYXMgaXMiIHdp dGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkCi0gKiB3YXJyYW50eS4KLSAqIAotICogVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBNLkkuVC4gYGBBUyBJUycnLiAgTS5JLlQuIERJU0NMQUlNUwot ICogQUxMIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMg U09GVFdBUkUsCi0gKiBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQg V0FSUkFOVElFUyBPRgotICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gSU4gTk8gRVZFTlQKLSAqIFNIQUxMIE0uSS5ULiBCRSBMSUFCTEUgRk9S IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP RgotICogVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVH TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKLSAqIE9GIFRIRSBV U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP RgotICogU1VDSCBEQU1BR0UuCi0gKgotICogJEZyZWVCU0QkCi0gKi8KLQotLyoKLSAqIEludGVy ZmFjZSB0byBwZXJmb3JtYW5jZS1tb25pdG9yaW5nIGNvdW50ZXJzIGZvciBJbnRlbCBQZW50aXVt IGFuZAotICogUGVudGl1bSBQcm8gQ1BVcy4KLSAqLwotCi0jaWZuZGVmCV9NQUNISU5FX1BFUkZN T05fSF8KLSNkZWZpbmUJX01BQ0hJTkVfUEVSRk1PTl9IXwotIAotI2lmbmRlZiBfS0VSTkVMCi0j aW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvaW9jY29tLmg+Ci0K LSNkZWZpbmUJTlBNQwkyCi0KLSNkZWZpbmUJUE1JT1NFVFVQCV9JT1coJzUnLCAxLCBzdHJ1Y3Qg cG1jKQotI2RlZmluZQlQTUlPR0VUCQlfSU9XUignNScsIDcsIHN0cnVjdCBwbWMpCi0jZGVmaW5l CVBNSU9TVEFSVAlfSU9XKCc1JywgMiwgaW50KQotI2RlZmluZQlQTUlPU1RPUAlfSU9XKCc1Jywg MywgaW50KQotI2RlZmluZSBQTUlPUkVBRAlfSU9XUignNScsIDQsIHN0cnVjdCBwbWNfZGF0YSkK LSNkZWZpbmUJUE1JT1JFU0VUCV9JT1coJzUnLCA1LCBpbnQpCi0jZGVmaW5lCVBNSU9UU1RBTVAJ X0lPUignNScsIDYsIHN0cnVjdCBwbWNfdHN0YW1wKQotCi1zdHJ1Y3QgcG1jIHsKLQlpbnQgcG1j X251bTsKLQl1bmlvbiB7Ci0JCXN0cnVjdCB7Ci0JCQl1bnNpZ25lZCBjaGFyIHBtY3VzX2V2ZW50 OwotCQkJdW5zaWduZWQgY2hhciBwbWN1c191bml0OwotCQkJdW5zaWduZWQgY2hhciBwbWN1c19m bGFnczsKLQkJCXVuc2lnbmVkIGNoYXIgcG1jdXNfbWFzazsKLQkJfSBwbWN1X3M7Ci0JCXVuc2ln bmVkIGludCBwbWN1X3ZhbDsKLQl9IHBtY19wbWN1OwotfTsKLQotI2RlZmluZQlQTUNfQUxMCQko LTEpCi0KLSNkZWZpbmUJcG1jX2V2ZW50CXBtY19wbWN1LnBtY3Vfcy5wbWN1c19ldmVudAotI2Rl ZmluZQlwbWNfdW5pdAlwbWNfcG1jdS5wbWN1X3MucG1jdXNfdW5pdAotI2RlZmluZQlwbWNfZmxh Z3MJcG1jX3BtY3UucG1jdV9zLnBtY3VzX2ZsYWdzCi0jZGVmaW5lCXBtY19tYXNrCXBtY19wbWN1 LnBtY3Vfcy5wbWN1c19tYXNrCi0jZGVmaW5lCXBtY192YWwJCXBtY19wbWN1LnBtY3VfdmFsCi0K LSNkZWZpbmUJUE1DRl9VU1IJMHgwMQkvKiBjb3VudCBldmVudHMgaW4gdXNlciBtb2RlICovCi0j ZGVmaW5lCVBNQ0ZfT1MJCTB4MDIJLyogY291bnQgZXZlbnRzIGluIGtlcm5lbCBtb2RlICovCi0j ZGVmaW5lCVBNQ0ZfRQkJMHgwNAkvKiB1c2UgZWRnZS1kZXRlY3Rpb24gbW9kZSAqLwotI2RlZmlu ZQlQTUNGX1BDCQkweDA4CS8qIFBNeCBvdXRwdXQgcGluIGNvbnRyb2wgKi8KLSNkZWZpbmUJUE1D Rl9JTlQJMHgxMAkvKiBBUElDIGludGVycnVwdCBlbmFibGUgKGRvIG5vdCB1c2UpICovCi0jZGVm aW5lCVBNQ0ZfRU4JCTB4NDAJLyogZW5hYmxlIGNvdW50ZXJzICovCi0jZGVmaW5lCVBNQ0ZfSU5W CTB4ODAJLyogaW52ZXJ0IGNvdW50ZXIgbWFzayBjb21wYXJpc29uICovCi0KLSNkZWZpbmUJUE1D Rl9TWVNfRkxBR1MJKFBNQ0ZfSU5UIHwgUE1DRl9FTikgLyogdXNlciBjYW5ub3Qgc2V0ICovCi0K LXN0cnVjdCBwbWNfZGF0YSB7Ci0JaW50IHBtY2RfbnVtOwotCXF1YWRfdCBwbWNkX3ZhbHVlOwot fTsKLQotc3RydWN0IHBtY190c3RhbXAgewotCWludCBwbWN0X3JhdGU7Ci0JcXVhZF90IHBtY3Rf dmFsdWU7Ci19OwotCi0jaWZuZGVmIF9LRVJORUwKLQotI2RlZmluZQlfUEFUSF9QRVJGTU9OCSIv ZGV2L3BlcmZtb24iCi0KLSNlbHNlCi0KLS8qCi0gKiBJbnRyYS1rZXJuZWwgaW50ZXJmYWNlIHRv IHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgY291bnRlcnMKLSAqLwotdm9pZAlwZXJmbW9uX2luaXQo dm9pZCk7Ci1pbnQJcGVyZm1vbl9hdmFpbCh2b2lkKTsKLWludAlwZXJmbW9uX3NldHVwKGludCwg dW5zaWduZWQgaW50KTsKLWludAlwZXJmbW9uX2dldChpbnQsIHVuc2lnbmVkIGludCAqKTsKLWlu dAlwZXJmbW9uX2ZpbmkoaW50KTsKLWludAlwZXJmbW9uX3N0YXJ0KGludCk7Ci1pbnQJcGVyZm1v bl9zdG9wKGludCk7Ci1pbnQJcGVyZm1vbl9yZWFkKGludCwgcXVhZF90ICopOwotaW50CXBlcmZt b25fcmVzZXQoaW50KTsKLQotI2VuZGlmIC8qIF9LRVJORUwgKi8KLQotLyoKLSAqIFBlbnRpdW0g UHJvIHBlcmZvcm1hbmNlIGNvdW50ZXJzLCBmcm9tIEFwcGVuZGl4IEIuCi0gKi8KLS8qIERhdGEg Q2FjaGUgVW5pdCAqLwotI2RlZmluZQlQTUM2X0RBVEFfTUVNX1JFRlMJMHg0MwotI2RlZmluZQlQ TUM2X0RDVV9MSU5FU19JTgkweDQ1Ci0jZGVmaW5lCVBNQzZfRENVX01fTElORVNfSU4JMHg0Ngot I2RlZmluZQlQTUM2X0RDVV9NX0xJTkVTX09VVAkweDQ3Ci0jZGVmaW5lCVBNQzZfRENVX01JU1Nf T1VUU1RBTkRJTkcgMHg0OAotCi0vKiBJbnN0cnVjdGlvbiBGZXRjaCBVbml0ICovIAotI2RlZmlu ZQlQTUM2X0lGVV9JRkVUQ0gJCTB4ODAKLSNkZWZpbmUJUE1DNl9JRlVfSUZFVENIX01JU1MJMHg4 MQotI2RlZmluZQlQTUM2X0lUTEJfTUlTUwkJMHg4NQotI2RlZmluZQlQTUM2X0lGVV9NRU1fU1RB TEwJMHg4NgotI2RlZmluZQlQTUM2X0lMRF9TVEFMTAkJMHg4NwotCi0vKiBMMiBDYWNoZSAqLwot I2RlZmluZQlQTUM2X0wyX0lGRVRDSAkJMHgyOCAvKiBNRVNJICovCi0jZGVmaW5lCVBNQzZfTDJf TEQJCTB4MjkgLyogTUVTSSAqLwotI2RlZmluZQlQTUM2X0wyX1NUCQkweDJhIC8qIE1FU0kgKi8K LSNkZWZpbmUJUE1DNl9MMl9MSU5FU19JTgkweDI0Ci0jZGVmaW5lCVBNQzZfTDJfTElORVNfT1VU CTB4MjYKLSNkZWZpbmUJUE1DNl9MMl9NX0xJTkVTX0lOTQkweDI1Ci0jZGVmaW5lCVBNQzZfTDJf TV9MSU5FU19PVVRNCTB4MjcKLSNkZWZpbmUJUE1DNl9MMl9SUVNUUwkJMHgyZSAvKiBNRVNJICov Ci0jZGVmaW5lCVBNQzZfTDJfQURTCQkweDIxCi0jZGVmaW5lCVBNQzZfTDJfREJVU19CVVNZCTB4 MjIKLSNkZWZpbmUJUE1DNl9MMl9EQlVTX0JVU1lfUkQJMHgyMwotCi0vKiBFeHRlcm5hbCBCdXMg TG9naWMgKi8KLSNkZWZpbmUJUE1DNl9CVVNfRFJEWV9DTE9DS1MJMHg2MgotI2RlZmluZQlQTUM2 X0JVU19MT0NLX0NMT0NLUwkweDYzCi0jZGVmaW5lCVBNQzZfQlVTX1JFUV9PVVRTVEFORElORyAw eDYwCi0jZGVmaW5lCVBNQzZfQlVTX1RSQU5fQlJECTB4NjUKLSNkZWZpbmUJUE1DNl9CVVNfVFJB Tl9SRk8JMHg2NgotI2RlZmluZQlQTUM2X0JVU19UUkFOX1dCCTB4NjcKLSNkZWZpbmUJUE1DNl9C VVNfVFJBTl9JRkVUQ0gJMHg2OAotI2RlZmluZQlQTUM2X0JVU19UUkFOX0lOVkFMCTB4NjkKLSNk ZWZpbmUJUE1DNl9CVVNfVFJBTl9QV1IJMHg2YQotI2RlZmluZQlQTUM2X0JVU19UUkFOX1AJCTB4 NmIKLSNkZWZpbmUJUE1DNl9CVVNfVFJBTl9JTwkweDZjCi0jZGVmaW5lCVBNQzZfQlVTX1RSQU5f REVGCTB4NmQKLSNkZWZpbmUJUE1DNl9CVVNfVFJBTl9CVVJTVAkweDZlCi0jZGVmaW5lCVBNQzZf QlVTX1RSQU5fQU5ZCTB4NzAKLSNkZWZpbmUJUE1DNl9CVVNfVFJBTl9NRU0JMHg2ZgotI2RlZmlu ZQlQTUM2X0JVU19EQVRBX1JDVgkweDY0Ci0jZGVmaW5lCVBNQzZfQlVTX0JOUl9EUlYJMHg2MQot I2RlZmluZQlQTUM2X0JVU19ISVRfRFJWCTB4N2EKLSNkZWZpbmUJUE1DNl9CVVNfSElUTV9EUlYJ MHg3YgotI2RlZmluZQlQTUM2X0JVU19TTk9PUF9TVEFMTAkweDdlCi0KLS8qIEZsb2F0aW5nIFBv aW50IFVuaXQgKi8KLSNkZWZpbmUJUE1DNl9GTE9QUwkJMHhjMSAvKiBjb3VudGVyIDAgb25seSAq LwotI2RlZmluZQlQTUM2X0ZQX0NPTVBfT1BTX0VYRQkweDEwIC8qIGNvdW50ZXIgMCBvbmx5ICov Ci0jZGVmaW5lCVBNQzZfRlBfQVNTSVNUCQkweDExIC8qIGNvdW50ZXIgMSBvbmx5ICovCi0jZGVm aW5lCVBNQzZfTVVMCQkweDEyIC8qIGNvdW50ZXIgMSBvbmx5ICovCi0jZGVmaW5lCVBNQzZfRElW CQkweDEzIC8qIGNvdW50ZXIgMSBvbmx5ICovCi0jZGVmaW5lCVBNQzZfQ1lDTEVTX0RJVl9CVVNZ CTB4MTQgLyogY291bnRlciAwIG9ubHkgKi8KLQotLyogTWVtb3J5IE9yZGVyaW5nICovCi0jZGVm aW5lCVBNQzZfTERfQkxPQ0tTCQkweDAzCi0jZGVmaW5lCVBNQzZfU0JfRFJBSU5TCQkweDA0Ci0j ZGVmaW5lCVBNQzZfTUlTQUxJR05fTUVNX1JFRgkweDA1Ci0KLS8qIEluc3RydWN0aW9uIERlY29k aW5nIGFuZCBSZXRpcmVtZW50ICovCi0jZGVmaW5lCVBNQzZfSU5TVF9SRVRJUkVECTB4YzAKLSNk ZWZpbmUJUE1DNl9VT1BTX1JFVElSRUQJMHhjMgotI2RlZmluZQlQTUM2X0lOU1RfREVDT0RFUgkw eGQwIC8qIChzaWMpICovCi0KLS8qIEludGVycnVwdHMgKi8KLSNkZWZpbmUJUE1DNl9IV19JTlRf UlgJCTB4YzgKLSNkZWZpbmUJUE1DNl9DWUNMRVNfSU5UX01BU0tFRAkweGM2Ci0jZGVmaW5lCVBN QzZfQ1lDTEVTX0lOVF9QRU5ESU5HX0FORF9NQVNLRUQgMHhjNwotCi0vKiBCcmFuY2hlcyAqLwot I2RlZmluZQlQTUM2X0JSX0lOU1RfUkVUSVJFRAkweGM0Ci0jZGVmaW5lCVBNQzZfQlJfTUlTU19Q UkVEX1JFVElSRUQgMHhjNQotI2RlZmluZQlQTUM2X0JSX1RBS0VOX1JFVElSRUQJMHhjOQotI2Rl ZmluZQlQTUM2X0JSX01JU1NfUFJFRF9UQUtFTl9SRVQgMHhjYQotI2RlZmluZQlQTUM2X0JSX0lO U1RfREVDT0RFRAkweGUwCi0jZGVmaW5lCVBNQzZfQlRCX01JU1NFUwkJMHhlMgotI2RlZmluZQlQ TUM2X0JSX0JPR1VTCQkweGU0Ci0jZGVmaW5lCVBNQzZfQkFDTEVBUlMJCTB4ZTYKLQotLyogU3Rh bGxzICovCi0jZGVmaW5lCVBNQzZfUkVTT1VSQ0VfU1RBTExTCTB4YTIKLSNkZWZpbmUJUE1DNl9Q QVJUSUFMX1JBVF9TVEFMTFMJMHhkMgotCi0vKiBTZWdtZW50IFJlZ2lzdGVyIExvYWRzICovCi0j ZGVmaW5lCVBNQzZfU0VHTUVOVF9SRUdfTE9BRFMJMHgwNgotCi0vKiBDbG9ja3MgKi8KLSNkZWZp bmUJUE1DNl9DUFVfQ0xLX1VOSEFMVEVECTB4NzkKLQotLyoKLSAqIFBlbnRpdW0gUGVyZm9ybWFu Y2UgQ291bnRlcnMKLSAqIFRoaXMgbGlzdCBjb21lcyBmcm9tIHRoZSBIYXJ2YXJkIHBlb3BsZSwg bm90IEludGVsLgotICovCi0jZGVmaW5lCVBNQzVfREFUQV9SRUFECQkwCi0jZGVmaW5lCVBNQzVf REFUQV9XUklURQkJMQotI2RlZmluZQlQTUM1X0RBVEFfVExCX01JU1MJMgotI2RlZmluZQlQTUM1 X0RBVEFfUkVBRF9NSVNTCTMKLSNkZWZpbmUJUE1DNV9EQVRBX1dSSVRFX01JU1MJNAotI2RlZmlu ZQlQTUM1X1dSSVRFX01fRQkJNQotI2RlZmluZQlQTUM1X0RBVEFfTElORVNfV0JBQ0sJNgotI2Rl ZmluZQlQTUM1X0RBVEFfQ0FDSEVfU05PT1AJNwotI2RlZmluZQlQTUM1X0RBVEFfQ0FDSEVfU05P T1BfSElUIDgKLSNkZWZpbmUJUE1DNV9NRU1fQUNDRVNTX0JPVEgJOQotI2RlZmluZQlQTUM1X0JB TktfQ09ORkxJQ1RTCTEwCi0jZGVmaW5lCVBNQzVfTUlTQUxJR05FRF9EQVRBCTExCi0jZGVmaW5l CVBNQzVfSU5TVF9SRUFECQkxMgotI2RlZmluZQlQTUM1X0lOU1RfVExCX01JU1MJMTMKLSNkZWZp bmUJUE1DNV9JTlNUX0NBQ0hFX01JU1MJMTQKLSNkZWZpbmUJUE1DNV9TRUdNRU5UX1JFR19MT0FE CTE1Ci0jZGVmaW5lCVBNQzVfQlJBTkNIRVMJCTE4Ci0jZGVmaW5lCVBNQzVfQlRCX0hJVFMJCTE5 Ci0jZGVmaW5lCVBNQzVfQlJBTkNIX1RBS0VOCTIwCi0jZGVmaW5lCVBNQzVfUElQRUxJTkVfRkxV U0gJMjEKLSNkZWZpbmUJUE1DNV9JTlNUX0VYRUNVVEVECTIyCi0jZGVmaW5lIFBNQzVfSU5TVF9F WEVDVVRFRF9WCTIzCi0jZGVmaW5lCVBNQzVfQlVTX1VUSUxJWkFUSU9OCTI0Ci0jZGVmaW5lCVBN QzVfV1JJVEVfQkFDS1VQX1NUQUxMCTI1Ci0jZGVmaW5lCVBNQzVfREFUQV9SRUFEX1NUQUxMCTI2 Ci0jZGVmaW5lCVBNQzVfV1JJVEVfRV9NX1NUQUxMCTI3Ci0jZGVmaW5lCVBNQzVfTE9DS0VEX0JV UwkJMjgKLSNkZWZpbmUJUE1DNV9JT19DWUNMRQkJMjkKLSNkZWZpbmUJUE1DNV9OT05DQUNIRV9N RU1PUlkJMzAKLSNkZWZpbmUJUE1DNV9BRERSX0dFTl9JTlRFUkxPQ0sJMzEKLSNkZWZpbmUJUE1D NV9GTE9QUwkJMzQKLSNkZWZpbmUJUE1DNV9CUDBfTUFUQ0gJCTM1Ci0jZGVmaW5lCVBNQzVfQlAx X01BVENICQkzNgotI2RlZmluZQlQTUM1X0JQMl9NQVRDSAkJMzcKLSNkZWZpbmUJUE1DNV9CUDNf TUFUQ0gJCTM4Ci0jZGVmaW5lCVBNQzVfSFdfSU5UUgkJMzkKLSNkZWZpbmUJUE1DNV9EQVRBX1JX CQk0MAotI2RlZmluZQlQTUM1X0RBVEFfUldfTUlTUwk0MQotCi0jZW5kaWYgLyogIV9NQUNISU5F X1BFUkZNT05fSF8gKi8KSW5kZXg6IHN5cy9pMzg2L2NvbmYvTk9URVMKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g c3lzL2kzODYvY29uZi9OT1RFUwkocmV2aXNpb24gMjEwNTM2KQorKysgc3lzL2kzODYvY29uZi9O T1RFUwkod29ya2luZyBjb3B5KQpAQCAtMjExLDEyICsyMTEsNiBAQAogb3B0aW9ucyAJTlBYX0RF QlVHCSMgZW5hYmxlIG5weCBkZWJ1Z2dpbmcKIAogIwotIyBQRVJGTU9OIGNhdXNlcyB0aGUgZHJp dmVyIGZvciBQZW50aXVtL1BlbnRpdW0gUHJvIHBlcmZvcm1hbmNlIGNvdW50ZXJzCi0jIHRvIGJl IGNvbXBpbGVkLiAgU2VlIHBlcmZtb24oNCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0jCi1vcHRp b25zIAlQRVJGTU9OCi0KLSMKICMgWEJPWCBjYXVzZXMgdGhlIGtlcm5lbCB0byBiZSBib290YWJs ZSBvbiB0aGUgTWljcm9zb2Z0IFhCb3ggY29uc29sZSBzeXN0ZW0uCiAjIFRoZSByZXN1bHRpbmcg a2VybmVsIHdpbGwgYXV0by1kZXRlY3Qgd2hldGhlciBpdCBpcyBiZWluZyBib290ZWQgb24gYSBY Qm94LAogIyBzbyBrZXJuZWxzIGNvbXBpbGVkIHdpdGggdGhpcyBvcHRpb24gd2lsbCBhbHNvIHdv cmsgb24gYW4gb3JkaW5hcnkgUEMuCkluZGV4OiBzeXMvaTM4Ni9pMzg2L3BlcmZtb24uYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBzeXMvaTM4Ni9pMzg2L3BlcmZtb24uYwkocmV2aXNpb24gMjEwNTM2KQorKysg c3lzL2kzODYvaTM4Ni9wZXJmbW9uLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNDA0ICswLDAgQEAK LS8qLQotICogQ29weXJpZ2h0IDE5OTYgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5v bG9neQotICoKLSAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmli dXRlIHRoaXMgc29mdHdhcmUgYW5kCi0gKiBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBv c2UgYW5kIHdpdGhvdXQgZmVlIGlzIGhlcmVieQotICogZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCBi b3RoIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzCi0gKiBwZXJtaXNzaW9uIG5v dGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcywgdGhhdCBib3RoIHRoZSBhYm92ZQotICogY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsCi0gKiBz dXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIE0uSS5ULiBub3Qg YmUgdXNlZAotICogaW4gYWR2ZXJ0aXNpbmcgb3IgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlz dHJpYnV0aW9uIG9mIHRoZQotICogc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYywgd3JpdHRlbiBw cmlvciBwZXJtaXNzaW9uLiAgTS5JLlQuIG1ha2VzCi0gKiBubyByZXByZXNlbnRhdGlvbnMgYWJv dXQgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgZm9yIGFueQotICogcHVycG9zZS4g IEl0IGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQKLSAqIHdh cnJhbnR5LgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE0uSS5ULiBgYEFT IElTJycuICBNLkkuVC4gRElTQ0xBSU1TCi0gKiBBTEwgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB TlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKLSAqIElOQ0xVRElORywgQlVUIE5P VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCi0gKiBNRVJDSEFOVEFCSUxJ VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBJTiBOTyBFVkVOVAotICog U0hBTEwgTS5JLlQuIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U QUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GCi0gKiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwK LSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZIE9VVAotICogT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0QkIik7Ci0KLSNpbmNsdWRlIDxz eXMvcGFyYW0uaD4KLSNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KLSNpbmNsdWRlIDxzeXMvY29uZi5o PgotI2luY2x1ZGUgPHN5cy9mY250bC5oPgotI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KLQotI2lm bmRlZiBTTVAKLSNpbmNsdWRlIDxtYWNoaW5lL2NwdXR5cGVzLmg+Ci0jZW5kaWYKLSNpbmNsdWRl IDxtYWNoaW5lL2Nsb2NrLmg+Ci0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0jaW5jbHVk ZSA8bWFjaGluZS9zcGVjaWFscmVnLmg+Ci0KLXN0YXRpYyBpbnQgcGVyZm1vbl9pbnVzZTsKLXN0 YXRpYyBpbnQgcGVyZm1vbl9jcHVvazsKLSNpZm5kZWYgU01QCi1zdGF0aWMgaW50IG1zcl9jdGxb TlBNQ107Ci0jZW5kaWYKLXN0YXRpYyBpbnQgbXNyX3BtY1tOUE1DXTsKLXN0YXRpYyB1bnNpZ25l ZCBpbnQgY3RsX3NoYWRvd1tOUE1DXTsKLXN0YXRpYyBxdWFkX3QgcG1jX3NoYWRvd1tOUE1DXTsJ LyogdXNlZCB3aGVuIGN0ciBpcyBzdG9wcGVkIG9uIFA1ICovCi1zdGF0aWMgaW50ICgqd3JpdGVj dGwpKGludCk7Ci0jaWZuZGVmIFNNUAotc3RhdGljIGludCB3cml0ZWN0bDUoaW50KTsKLXN0YXRp YyBpbnQgd3JpdGVjdGw2KGludCk7Ci0jZW5kaWYKLQotc3RhdGljIGRfY2xvc2VfdCBwZXJmbW9u X2Nsb3NlOwotc3RhdGljIGRfb3Blbl90CXBlcmZtb25fb3BlbjsKLXN0YXRpYyBkX2lvY3RsX3Qg cGVyZm1vbl9pb2N0bDsKLQotLyoKLSAqIFhYWCBwZXJmbW9uX2luaXRfZGV2KHZvaWQgKikgaXMg YSBzcGxpdCBmcm9tIHRoZSBwZXJmbW9uX2luaXQoKSBmdW50aW9uLiAKLSAqIFRoaXMgc29sdmVz IGEgcHJvYmxlbSBmb3IgREVWRlMgdXNlcnMuICBJdCBsb2FkcyB0aGUgInBlcmZtb24iIGRyaXZl ciBhZnRlcgotICogdGhlIERFVkZTIHN1YnN5c3RlbSBoYXMgYmVlbiBraWNrZWQgaW50byBhY3Rp b24uICBUaGUgU0lfT1JERVJfQU5ZIGlzIHRvCi0gKiBhc3N1cmUgdGhhdCBpdCBpcyB0aGUgbW9z dCBsb3dlc3QgcHJpb3JpdHkgdGFzayB3aGljaCwgZ3VhcmFudGVlcyB0aGUKLSAqIGFib3ZlLgot ICovCi1zdGF0aWMgdm9pZCBwZXJmbW9uX2luaXRfZGV2KHZvaWQgKik7Ci1TWVNJTklUKGNwdSwg U0lfU1VCX0RSSVZFUlMsIFNJX09SREVSX0FOWSwgcGVyZm1vbl9pbml0X2RldiwgTlVMTCk7Ci0K LXN0YXRpYyBzdHJ1Y3QgY2RldnN3IHBlcmZtb25fY2RldnN3ID0gewotCS5kX3ZlcnNpb24gPQlE X1ZFUlNJT04sCi0JLmRfZmxhZ3MgPQlEX05FRURHSUFOVCwKLQkuZF9vcGVuID0JcGVyZm1vbl9v cGVuLAotCS5kX2Nsb3NlID0JcGVyZm1vbl9jbG9zZSwKLQkuZF9pb2N0bCA9CXBlcmZtb25faW9j dGwsCi0JLmRfbmFtZSA9CSJwZXJmbW9uIiwKLX07Ci0KLS8qCi0gKiBNdXN0IGJlIGNhbGxlZCBh ZnRlciBjcHVfY2xhc3MgaXMgc2V0IHVwLgotICovCi12b2lkCi1wZXJmbW9uX2luaXQodm9pZCkK LXsKLSNpZm5kZWYgU01QCi0Jc3dpdGNoKGNwdV9jbGFzcykgewotCWNhc2UgQ1BVQ0xBU1NfNTg2 OgotCQlwZXJmbW9uX2NwdW9rID0gMTsKLQkJbXNyX2N0bFswXSA9IE1TUl9QNV9DRVNSOwotCQlt c3JfY3RsWzFdID0gTVNSX1A1X0NFU1I7Ci0JCW1zcl9wbWNbMF0gPSBNU1JfUDVfQ1RSMDsKLQkJ bXNyX3BtY1sxXSA9IE1TUl9QNV9DVFIxOwotCQl3cml0ZWN0bCA9IHdyaXRlY3RsNTsKLQkJYnJl YWs7Ci0JY2FzZSBDUFVDTEFTU182ODY6Ci0JCXBlcmZtb25fY3B1b2sgPSAxOwotCQltc3JfY3Rs WzBdID0gTVNSX0VWTlRTRUwwOwotCQltc3JfY3RsWzFdID0gTVNSX0VWTlRTRUwxOwotCQltc3Jf cG1jWzBdID0gTVNSX1BFUkZDVFIwOwotCQltc3JfcG1jWzFdID0gTVNSX1BFUkZDVFIxOwotCQl3 cml0ZWN0bCA9IHdyaXRlY3RsNjsKLQkJYnJlYWs7Ci0KLQlkZWZhdWx0OgotCQlwZXJmbW9uX2Nw dW9rID0gMDsKLQkJYnJlYWs7Ci0JfQotI2VuZGlmIC8qIFNNUCAqLwotfQotCi1zdGF0aWMgdm9p ZAotcGVyZm1vbl9pbml0X2RldihkdW1teSkKLQl2b2lkICpkdW1teTsKLXsKLQltYWtlX2Rldigm cGVyZm1vbl9jZGV2c3csIDMyLCBVSURfUk9PVCwgR0lEX0tNRU0sIDA2NDAsICJwZXJmbW9uIik7 Ci19Ci0KLWludAotcGVyZm1vbl9hdmFpbCh2b2lkKQotewotCXJldHVybiBwZXJmbW9uX2NwdW9r OwotfQotCi1pbnQKLXBlcmZtb25fc2V0dXAoaW50IHBtYywgdW5zaWduZWQgaW50IGNvbnRyb2wp Ci17Ci0JcmVnaXN0ZXJfdAlzYXZlY3JpdDsKLQotCWlmIChwbWMgPCAwIHx8IHBtYyA+PSBOUE1D KQotCQlyZXR1cm4gRUlOVkFMOwotCi0JcGVyZm1vbl9pbnVzZSB8PSAoMSA8PCBwbWMpOwotCWNv bnRyb2wgJj0gfihQTUNGX1NZU19GTEFHUyA8PCAxNik7Ci0Jc2F2ZWNyaXQgPSBpbnRyX2Rpc2Fi bGUoKTsKLQljdGxfc2hhZG93W3BtY10gPSBjb250cm9sOwotCXdyaXRlY3RsKHBtYyk7Ci0Jd3Jt c3IobXNyX3BtY1twbWNdLCBwbWNfc2hhZG93W3BtY10gPSAwKTsKLQlpbnRyX3Jlc3RvcmUoc2F2 ZWNyaXQpOwotCXJldHVybiAwOwotfQotCi1pbnQKLXBlcmZtb25fZ2V0KGludCBwbWMsIHVuc2ln bmVkIGludCAqY29udHJvbCkKLXsKLQlpZiAocG1jIDwgMCB8fCBwbWMgPj0gTlBNQykKLQkJcmV0 dXJuIEVJTlZBTDsKLQotCWlmIChwZXJmbW9uX2ludXNlICYgKDEgPDwgcG1jKSkgewotCQkqY29u dHJvbCA9IGN0bF9zaGFkb3dbcG1jXTsKLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiBFQlVTWTsJ CS8qIFhYWCByZXZlcnNlZCBzZW5zZSAqLwotfQotCi1pbnQKLXBlcmZtb25fZmluaShpbnQgcG1j KQotewotCWlmIChwbWMgPCAwIHx8IHBtYyA+PSBOUE1DKQotCQlyZXR1cm4gRUlOVkFMOwotCi0J aWYgKHBlcmZtb25faW51c2UgJiAoMSA8PCBwbWMpKSB7Ci0JCXBlcmZtb25fc3RvcChwbWMpOwot CQljdGxfc2hhZG93W3BtY10gPSAwOwotCQlwZXJmbW9uX2ludXNlICY9IH4oMSA8PCBwbWMpOwot CQlyZXR1cm4gMDsKLQl9Ci0JcmV0dXJuIEVCVVNZOwkJLyogWFhYIHJldmVyc2VkIHNlbnNlICov Ci19Ci0KLWludAotcGVyZm1vbl9zdGFydChpbnQgcG1jKQotewotCXJlZ2lzdGVyX3QJc2F2ZWNy aXQ7Ci0KLQlpZiAocG1jIDwgMCB8fCBwbWMgPj0gTlBNQykKLQkJcmV0dXJuIEVJTlZBTDsKLQot CWlmIChwZXJmbW9uX2ludXNlICYgKDEgPDwgcG1jKSkgewotCQlzYXZlY3JpdCA9IGludHJfZGlz YWJsZSgpOwotCQljdGxfc2hhZG93W3BtY10gfD0gKFBNQ0ZfRU4gPDwgMTYpOwotCQl3cm1zciht c3JfcG1jW3BtY10sIHBtY19zaGFkb3dbcG1jXSk7Ci0JCXdyaXRlY3RsKHBtYyk7Ci0JCWludHJf cmVzdG9yZShzYXZlY3JpdCk7Ci0JCXJldHVybiAwOwotCX0KLQlyZXR1cm4gRUJVU1k7Ci19Ci0K LWludAotcGVyZm1vbl9zdG9wKGludCBwbWMpCi17Ci0JcmVnaXN0ZXJfdAlzYXZlY3JpdDsKLQot CWlmIChwbWMgPCAwIHx8IHBtYyA+PSBOUE1DKQotCQlyZXR1cm4gRUlOVkFMOwotCi0JaWYgKHBl cmZtb25faW51c2UgJiAoMSA8PCBwbWMpKSB7Ci0JCXNhdmVjcml0ID0gaW50cl9kaXNhYmxlKCk7 Ci0JCXBtY19zaGFkb3dbcG1jXSA9IHJkbXNyKG1zcl9wbWNbcG1jXSkgJiAweGZmZmZmZmZmZmZV TEw7Ci0JCWN0bF9zaGFkb3dbcG1jXSAmPSB+KFBNQ0ZfRU4gPDwgMTYpOwotCQl3cml0ZWN0bChw bWMpOwotCQlpbnRyX3Jlc3RvcmUoc2F2ZWNyaXQpOwotCQlyZXR1cm4gMDsKLQl9Ci0JcmV0dXJu IEVCVVNZOwotfQotCi1pbnQKLXBlcmZtb25fcmVhZChpbnQgcG1jLCBxdWFkX3QgKnZhbCkKLXsK LQlpZiAocG1jIDwgMCB8fCBwbWMgPj0gTlBNQykKLQkJcmV0dXJuIEVJTlZBTDsKLQotCWlmIChw ZXJmbW9uX2ludXNlICYgKDEgPDwgcG1jKSkgewotCQlpZiAoY3RsX3NoYWRvd1twbWNdICYgKFBN Q0ZfRU4gPDwgMTYpKQotCQkJKnZhbCA9IHJkbXNyKG1zcl9wbWNbcG1jXSkgJiAweGZmZmZmZmZm ZmZVTEw7Ci0JCWVsc2UKLQkJCSp2YWwgPSBwbWNfc2hhZG93W3BtY107Ci0JCXJldHVybiAwOwot CX0KLQotCXJldHVybiBFQlVTWTsKLX0KLQotaW50Ci1wZXJmbW9uX3Jlc2V0KGludCBwbWMpCi17 Ci0JaWYgKHBtYyA8IDAgfHwgcG1jID49IE5QTUMpCi0JCXJldHVybiBFSU5WQUw7Ci0KLQlpZiAo cGVyZm1vbl9pbnVzZSAmICgxIDw8IHBtYykpIHsKLQkJd3Jtc3IobXNyX3BtY1twbWNdLCBwbWNf c2hhZG93W3BtY10gPSAwKTsKLQkJcmV0dXJuIDA7Ci0JfQotCXJldHVybiBFQlVTWTsKLX0KLQot I2lmbmRlZiBTTVAKLS8qCi0gKiBVbmZvcnR1bmF0ZWx5LCB0aGUgcGVyZm9ybWFuY2UtbW9uaXRv cmluZyByZWdpc3RlcnMgYXJlIGxhaWQgb3V0Ci0gKiBkaWZmZXJlbnRseSBpbiB0aGUgUDUgYW5k IFA2LiAgV2Uga2VlcCBldmVyeXRoaW5nIGluIFA2IGZvcm1hdAotICogaW50ZXJuYWxseSAoZXhj ZXB0IGZvciB0aGUgZXZlbnQgY29kZSksIGFuZCBjb252ZXJ0IHRvIFA1Ci0gKiBmb3JtYXQgYXMg bmVlZGVkIG9uIHRob3NlIENQVXMuICBUaGUgd3JpdGVjdGwgZnVuY3Rpb24gcG9pbnRlcgotICog aXMgc2V0IHVwIHRvIHBvaW50IHRvIG9uZSBvZiB0aGVzZSBmdW5jdGlvbnMgYnkgcGVyZm1vbl9p bml0KCkuCi0gKi8KLWludAotd3JpdGVjdGw2KGludCBwbWMpCi17Ci0JaWYgKHBtYyA+IDAgJiYg IShjdGxfc2hhZG93W3BtY10gJiAoUE1DRl9FTiA8PCAxNikpKSB7Ci0JCXdybXNyKG1zcl9jdGxb cG1jXSwgMCk7Ci0JfSBlbHNlIHsKLQkJd3Jtc3IobXNyX2N0bFtwbWNdLCBjdGxfc2hhZG93W3Bt Y10pOwotCX0KLQlyZXR1cm4gMDsKLX0KLQotI2RlZmluZQlQNUZMQUdfUAkweDIwMAotI2RlZmlu ZQlQNUZMQUdfRQkweDEwMAotI2RlZmluZQlQNUZMQUdfVVNSCTB4ODAKLSNkZWZpbmUJUDVGTEFH X09TCTB4NDAKLQotaW50Ci13cml0ZWN0bDUoaW50IHBtYykKLXsKLQlxdWFkX3QgbmV3dmFsID0g MDsKLQotCWlmIChjdGxfc2hhZG93WzFdICYgKFBNQ0ZfRU4gPDwgMTYpKSB7Ci0JCWlmIChjdGxf c2hhZG93WzFdICYgKFBNQ0ZfVVNSIDw8IDE2KSkKLQkJCW5ld3ZhbCB8PSBQNUZMQUdfVVNSIDw8 IDE2OwotCQlpZiAoY3RsX3NoYWRvd1sxXSAmIChQTUNGX09TIDw8IDE2KSkKLQkJCW5ld3ZhbCB8 PSBQNUZMQUdfT1MgPDwgMTY7Ci0JCWlmICghKGN0bF9zaGFkb3dbMV0gJiAoUE1DRl9FIDw8IDE2 KSkpCi0JCQluZXd2YWwgfD0gUDVGTEFHX0UgPDwgMTY7Ci0JCW5ld3ZhbCB8PSAoY3RsX3NoYWRv d1sxXSAmIDB4M2YpIDw8IDE2OwotCX0KLQlpZiAoY3RsX3NoYWRvd1swXSAmIChQTUNGX0VOIDw8 IDE2KSkgewotCQlpZiAoY3RsX3NoYWRvd1swXSAmIChQTUNGX1VTUiA8PCAxNikpCi0JCQluZXd2 YWwgfD0gUDVGTEFHX1VTUjsKLQkJaWYgKGN0bF9zaGFkb3dbMF0gJiAoUE1DRl9PUyA8PCAxNikp Ci0JCQluZXd2YWwgfD0gUDVGTEFHX09TOwotCQlpZiAoIShjdGxfc2hhZG93WzBdICYgKFBNQ0Zf RSA8PCAxNikpKQotCQkJbmV3dmFsIHw9IFA1RkxBR19FOwotCQluZXd2YWwgfD0gY3RsX3NoYWRv d1swXSAmIDB4M2Y7Ci0JfQotCi0Jd3Jtc3IobXNyX2N0bFswXSwgbmV3dmFsKTsKLQlyZXR1cm4g MDsJCS8qIFhYWCBzaG91bGQgY2hlY2sgZm9yIHVuaW1wbGVtZW50ZWQgYml0cyAqLwotfQotI2Vu ZGlmIC8qICFTTVAgKi8KLQotLyoKLSAqIE5vdyB0aGUgdXNlci1tb2RlIGludGVyZmFjZSwgY2Fs bGVkIGZyb20gYSBzdWJkZXZpY2Ugb2YgbWVtLmMuCi0gKi8KLXN0YXRpYyBpbnQgd3JpdGVyOwot c3RhdGljIGludCB3cml0ZXJwbWM7Ci0KLXN0YXRpYyBpbnQKLXBlcmZtb25fb3BlbihzdHJ1Y3Qg Y2RldiAqZGV2LCBpbnQgZmxhZ3MsIGludCBmbXQsIHN0cnVjdCB0aHJlYWQgKnRkKQotewotCWlm ICghcGVyZm1vbl9jcHVvaykKLQkJcmV0dXJuIEVOWElPOwotCi0JaWYgKGZsYWdzICYgRldSSVRF KSB7Ci0JCWlmICh3cml0ZXIpIHsKLQkJCXJldHVybiBFQlVTWTsKLQkJfSBlbHNlIHsKLQkJCXdy aXRlciA9IDE7Ci0JCQl3cml0ZXJwbWMgPSAwOwotCQl9Ci0JfQotCXJldHVybiAwOwotfQotCi1z dGF0aWMgaW50Ci1wZXJmbW9uX2Nsb3NlKHN0cnVjdCBjZGV2ICpkZXYsIGludCBmbGFncywgaW50 IGZtdCwgc3RydWN0IHRocmVhZCAqdGQpCi17Ci0JaWYgKGZsYWdzICYgRldSSVRFKSB7Ci0JCWlu dCBpOwotCi0JCWZvciAoaSA9IDA7IGkgPCBOUE1DOyBpKyspIHsKLQkJCWlmICh3cml0ZXJwbWMg JiAoMSA8PCBpKSkKLQkJCQlwZXJmbW9uX2ZpbmkoaSk7Ci0JCX0KLQkJd3JpdGVyID0gMDsKLQl9 Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLXBlcmZtb25faW9jdGwoc3RydWN0IGNkZXYg KmRldiwgdV9sb25nIGNtZCwgY2FkZHJfdCBwYXJhbSwgaW50IGZsYWdzLCBzdHJ1Y3QgdGhyZWFk ICp0ZCkKLXsKLQlzdHJ1Y3QgcG1jICpwbWM7Ci0Jc3RydWN0IHBtY19kYXRhICpwbWNkOwotCXN0 cnVjdCBwbWNfdHN0YW1wICpwbWN0OwotCWludCAqaXA7Ci0JaW50IHJ2OwotCi0Jc3dpdGNoKGNt ZCkgewotCWNhc2UgUE1JT1NFVFVQOgotCQlpZiAoIShmbGFncyAmIEZXUklURSkpCi0JCQlyZXR1 cm4gRVBFUk07Ci0JCXBtYyA9IChzdHJ1Y3QgcG1jICopcGFyYW07Ci0KLQkJcnYgPSBwZXJmbW9u X3NldHVwKHBtYy0+cG1jX251bSwgcG1jLT5wbWNfdmFsKTsKLQkJaWYgKCFydikgewotCQkJd3Jp dGVycG1jIHw9ICgxIDw8IHBtYy0+cG1jX251bSk7Ci0JCX0KLQkJYnJlYWs7Ci0KLQljYXNlIFBN SU9HRVQ6Ci0JCXBtYyA9IChzdHJ1Y3QgcG1jICopcGFyYW07Ci0JCXJ2ID0gcGVyZm1vbl9nZXQo cG1jLT5wbWNfbnVtLCAmcG1jLT5wbWNfdmFsKTsKLQkJYnJlYWs7Ci0KLQljYXNlIFBNSU9TVEFS VDoKLQkJaWYgKCEoZmxhZ3MgJiBGV1JJVEUpKQotCQkJcmV0dXJuIEVQRVJNOwotCi0JCWlwID0g KGludCAqKXBhcmFtOwotCQlydiA9IHBlcmZtb25fc3RhcnQoKmlwKTsKLQkJYnJlYWs7Ci0KLQlj YXNlIFBNSU9TVE9QOgotCQlpZiAoIShmbGFncyAmIEZXUklURSkpCi0JCQlyZXR1cm4gRVBFUk07 Ci0KLQkJaXAgPSAoaW50ICopcGFyYW07Ci0JCXJ2ID0gcGVyZm1vbl9zdG9wKCppcCk7Ci0JCWJy ZWFrOwotCi0JY2FzZSBQTUlPUkVTRVQ6Ci0JCWlmICghKGZsYWdzICYgRldSSVRFKSkKLQkJCXJl dHVybiBFUEVSTTsKLQotCQlpcCA9IChpbnQgKilwYXJhbTsKLQkJcnYgPSBwZXJmbW9uX3Jlc2V0 KCppcCk7Ci0JCWJyZWFrOwotCi0JY2FzZSBQTUlPUkVBRDoKLQkJcG1jZCA9IChzdHJ1Y3QgcG1j X2RhdGEgKilwYXJhbTsKLQkJcnYgPSBwZXJmbW9uX3JlYWQocG1jZC0+cG1jZF9udW0sICZwbWNk LT5wbWNkX3ZhbHVlKTsKLQkJYnJlYWs7Ci0KLQljYXNlIFBNSU9UU1RBTVA6Ci0JCWlmICghdHNj X2ZyZXEpIHsKLQkJCXJ2ID0gRU5PVFRZOwotCQkJYnJlYWs7Ci0JCX0KLQkJcG1jdCA9IChzdHJ1 Y3QgcG1jX3RzdGFtcCAqKXBhcmFtOwotCQkvKiBYWFggaW50ZXJmYWNlIGxvc2VzIHByZWNpc2lv bi4gKi8KLQkJcG1jdC0+cG1jdF9yYXRlID0gdHNjX2ZyZXEgLyAxMDAwMDAwOwotCQlwbWN0LT5w bWN0X3ZhbHVlID0gcmR0c2MoKTsKLQkJcnYgPSAwOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQly diA9IEVOT1RUWTsKLQl9Ci0KLQlyZXR1cm4gcnY7Ci19CkluZGV4OiBzeXMvaTM4Ni9pMzg2L21h Y2hkZXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvaTM4Ni9pMzg2L21hY2hkZXAuYwkocmV2aXNpb24g MjEwNTM2KQorKysgc3lzL2kzODYvaTM4Ni9tYWNoZGVwLmMJKHdvcmtpbmcgY29weSkKQEAgLTUy LDcgKzUyLDYgQEAKICNpbmNsdWRlICJvcHRfbWF4bWVtLmgiCiAjaW5jbHVkZSAib3B0X21zZ2J1 Zi5oIgogI2luY2x1ZGUgIm9wdF9ucHguaCIKLSNpbmNsdWRlICJvcHRfcGVyZm1vbi5oIgogI2lu Y2x1ZGUgIm9wdF94Ym94LmgiCiAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTEyNSw5ICsx MjQsNiBAQAogI2luY2x1ZGUgPG1hY2hpbmUvc2lnZnJhbWUuaD4KICNpbmNsdWRlIDxtYWNoaW5l L3NwZWNpYWxyZWcuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3ZtODYuaD4KLSNpZmRlZiBQRVJGTU9O Ci0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0jZW5kaWYKICNpZmRlZiBTTVAKICNpbmNs dWRlIDxtYWNoaW5lL3NtcC5oPgogI2VuZGlmCkBAIC0yNzgsOSArMjc0LDYgQEAKIAlzdGFydHJ0 Y2xvY2soKTsKIAlwcmludGNwdWluZm8oKTsKIAlwYW5pY2lmY3B1dW5zdXBwb3J0ZWQoKTsKLSNp ZmRlZiBQRVJGTU9OCi0JcGVyZm1vbl9pbml0KCk7Ci0jZW5kaWYKIAlyZWFsbWVtID0gTWF4bWVt OwogCiAJLyoKSW5kZXg6IHN5cy9pMzg2L2lzYS9wcm9mX21hY2hkZXAuYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzeXMvaTM4Ni9pc2EvcHJvZl9tYWNoZGVwLmMJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9p Mzg2L2lzYS9wcm9mX21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAog CiAjaWZkZWYgR1VQUk9GCiAjaW5jbHVkZSAib3B0X2k1ODZfZ3Vwcm9mLmgiCi0jaW5jbHVkZSAi b3B0X3BlcmZtb24uaCIKIAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9z eXN0bS5oPgpAQCAtNDIsNyArNDEsNiBAQAogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KIAogI2lu Y2x1ZGUgPG1hY2hpbmUvY2xvY2suaD4KLSNpbmNsdWRlIDxtYWNoaW5lL3BlcmZtb24uaD4KICNp bmNsdWRlIDxtYWNoaW5lL3RpbWVycmVnLmg+CiAKICNkZWZpbmUJQ1BVVElNRV9DTE9DS19VTklO SVRJQUxJWkVECTAKQEAgLTU0LDExICs1Miw2IEBACiBpbnQJY3B1dGltZV9iaWFzID0gMTsJLyog aW5pdGlhbGl6ZSBmb3IgbG9jYWxpdHkgb2YgcmVmZXJlbmNlICovCiAKIHN0YXRpYyBpbnQJY3B1 dGltZV9jbG9jayA9IENQVVRJTUVfQ0xPQ0tfVU5JTklUSUFMSVpFRDsKLSNpZiBkZWZpbmVkKFBF UkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNfR1VQUk9GKQotc3RhdGljIHVfaW50CWNwdXRpbWVf Y2xvY2tfcG1jX2NvbmYgPSBJNTg2X1BNQ19HVVBST0Y7Ci1zdGF0aWMgaW50CWNwdXRpbWVfY2xv Y2tfcG1jX2luaXQ7Ci1zdGF0aWMgc3RydWN0IGdtb25wYXJhbSBzYXZlZF9nbXA7Ci0jZW5kaWYK ICNpZiBkZWZpbmVkKEk1ODZfQ1BVKSB8fCBkZWZpbmVkKEk2ODZfQ1BVKQogc3RhdGljIGludAlj cHV0aW1lX3Byb2ZfYWN0aXZlOwogI2VuZGlmCkBAIC0xNzAsMTAgKzE2Myw2IEBACiB7CiAJdV9p bnQgY291bnQ7CiAJaW50IGRlbHRhOwotI2lmIChkZWZpbmVkKEk1ODZfQ1BVKSB8fCBkZWZpbmVk KEk2ODZfQ1BVKSkgJiYgIWRlZmluZWQoU01QKSAmJiBcCi0gICAgZGVmaW5lZChQRVJGTU9OKSAm JiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikKLQl1X3F1YWRfdCBldmVudF9jb3VudDsKLSNlbmRp ZgogCXVfY2hhciBoaWdoLCBsb3c7CiAJc3RhdGljIHVfaW50IHByZXZfY291bnQ7CiAKQEAgLTE5 MSwyMSArMTgwLDYgQEAKIAkJcHJldl9jb3VudCA9IGNvdW50OwogCQlyZXR1cm4gKGRlbHRhKTsK IAl9Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikgJiYg IWRlZmluZWQoU01QKQotCWlmIChjcHV0aW1lX2Nsb2NrID09IENQVVRJTUVfQ0xPQ0tfSTU4Nl9Q TUMpIHsKLQkJLyoKLQkJICogWFhYIHBlcm1vbl9yZWFkKCkgc2hvdWxkIGJlIGlubGluZWQgc28g dGhhdCB0aGUKLQkJICogcGVyZm1vbiBtb2R1bGUgZG9lc24ndCBuZWVkIHRvIGJlIGNvbXBpbGVk IHdpdGgKLQkJICogcHJvZmlsaW5nIGRpc2FibGVkIGFuZCBzbyB0aGF0IGl0IGlzIGZhc3QuCi0J CSAqLwotCQlwZXJmbW9uX3JlYWQoMCwgJmV2ZW50X2NvdW50KTsKLQotCQljb3VudCA9ICh1X2lu dClldmVudF9jb3VudDsKLQkJZGVsdGEgPSAoaW50KShjb3VudCAtIHByZXZfY291bnQpOwotCQlw cmV2X2NvdW50ID0gY291bnQ7Ci0JCXJldHVybiAoZGVsdGEpOwotCX0KLSNlbmRpZiAvKiBQRVJG TU9OICYmIEk1ODZfUE1DX0dVUFJPRiAmJiAhU01QICovCiAjZW5kaWYgLyogSTU4Nl9DUFUgfHwg STY4Nl9DUFUgKi8KIAogCS8qCkBAIC0yMzcsMzkgKzIxMSwxMyBAQAogewogCWludCBjbG9jazsK IAlpbnQgZXJyb3I7Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dV UFJPRikKLQlpbnQgZXZlbnQ7Ci0Jc3RydWN0IHBtYyBwbWM7Ci0jZW5kaWYKIAogCWNsb2NrID0g Y3B1dGltZV9jbG9jazsKLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNf R1VQUk9GKQotCWlmIChjbG9jayA9PSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1DKSB7Ci0JCXBtYy5w bWNfdmFsID0gY3B1dGltZV9jbG9ja19wbWNfY29uZjsKLQkJY2xvY2sgKz0gcG1jLnBtY19ldmVu dDsKLQl9Ci0jZW5kaWYKIAllcnJvciA9IHN5c2N0bF9oYW5kbGVfb3BhcXVlKG9pZHAsICZjbG9j aywgc2l6ZW9mIGNsb2NrLCByZXEpOwogCWlmIChlcnJvciA9PSAwICYmIHJlcS0+bmV3cHRyICE9 IE5VTEwpIHsKLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNfR1VQUk9G KQotCQlpZiAoY2xvY2sgPj0gQ1BVVElNRV9DTE9DS19JNTg2X1BNQykgewotCQkJZXZlbnQgPSBj bG9jayAtIENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUM7Ci0JCQlpZiAoZXZlbnQgPj0gMjU2KQotCQkJ CXJldHVybiAoRUlOVkFMKTsKLQkJCXBtYy5wbWNfbnVtID0gMDsKLQkJCXBtYy5wbWNfZXZlbnQg PSBldmVudDsKLQkJCXBtYy5wbWNfdW5pdCA9IDA7Ci0JCQlwbWMucG1jX2ZsYWdzID0gUE1DRl9F IHwgUE1DRl9PUyB8IFBNQ0ZfVVNSOwotCQkJcG1jLnBtY19tYXNrID0gMDsKLQkJCWNwdXRpbWVf Y2xvY2tfcG1jX2NvbmYgPSBwbWMucG1jX3ZhbDsKLQkJCWNwdXRpbWVfY2xvY2sgPSBDUFVUSU1F X0NMT0NLX0k1ODZfUE1DOwotCQl9IGVsc2UKLSNlbmRpZgotCQl7Ci0JCQlpZiAoY2xvY2sgPCAw IHx8IGNsb2NrID49IENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUMpCi0JCQkJcmV0dXJuIChFSU5WQUwp OwotCQkJY3B1dGltZV9jbG9jayA9IGNsb2NrOwotCQl9CisJCWlmIChjbG9jayA8IDAgfHwgY2xv Y2sgPj0gQ1BVVElNRV9DTE9DS19JNTg2X1BNQykKKwkJCXJldHVybiAoRUlOVkFMKTsKKwkJY3B1 dGltZV9jbG9jayA9IGNsb2NrOwogCX0KIAlyZXR1cm4gKGVycm9yKTsKIH0KQEAgLTI5OSwzMiAr MjQ3LDYgQEAKIAkJZ3AtPnByb2ZyYXRlID0gdHNjX2ZyZXEgPj4gMTsKIAkJY3B1dGltZV9wcm9m X2FjdGl2ZSA9IDE7CiAJfQotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BN Q19HVVBST0YpCi0JZWxzZSBpZiAoY3B1dGltZV9jbG9jayA9PSBDUFVUSU1FX0NMT0NLX0k1ODZf UE1DKSB7Ci0JCWlmIChwZXJmbW9uX2F2YWlsKCkgJiYKLQkJICAgIHBlcmZtb25fc2V0dXAoMCwg Y3B1dGltZV9jbG9ja19wbWNfY29uZikgPT0gMCkgewotCQkJaWYgKHBlcmZtb25fc3RhcnQoMCkg IT0gMCkKLQkJCQlwZXJmbW9uX2ZpbmkoMCk7Ci0JCQllbHNlIHsKLQkJCQkvKiBYWFggMSBldmVu dCA9PSAxIHVzLiAqLwotCQkJCWdwLT5wcm9mcmF0ZSA9IDEwMDAwMDA7Ci0KLQkJCQlzYXZlZF9n bXAgPSAqZ3A7Ci0KLQkJCQkvKiBaYXAgb3ZlcmhlYWRzLiAgVGhleSBhcmUgaW52YWxpZC4gKi8K LQkJCQlncC0+Y3B1dGltZV9vdmVyaGVhZCA9IDA7Ci0JCQkJZ3AtPm1jb3VudF9vdmVyaGVhZCA9 IDA7Ci0JCQkJZ3AtPm1jb3VudF9wb3N0X292ZXJoZWFkID0gMDsKLQkJCQlncC0+bWNvdW50X3By ZV9vdmVyaGVhZCA9IDA7Ci0JCQkJZ3AtPm1leGl0Y291bnRfb3ZlcmhlYWQgPSAwOwotCQkJCWdw LT5tZXhpdGNvdW50X3Bvc3Rfb3ZlcmhlYWQgPSAwOwotCQkJCWdwLT5tZXhpdGNvdW50X3ByZV9v dmVyaGVhZCA9IDA7Ci0KLQkJCQljcHV0aW1lX2Nsb2NrX3BtY19pbml0ID0gVFJVRTsKLQkJCX0K LQkJfQotCX0KLSNlbmRpZiAvKiBQRVJGTU9OICYmIEk1ODZfUE1DX0dVUFJPRiAqLwogI2VuZGlm IC8qIEk1ODZfQ1BVIHx8IEk2ODZfQ1BVICovCiAJY3B1dGltZV9iaWFzID0gMDsKIAljcHV0aW1l KCk7CkBAIC0zMzQsMTMgKzI1Niw2IEBACiBzdG9wZ3Vwcm9mKGdwKQogCXN0cnVjdCBnbW9ucGFy YW0gKmdwOwogewotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BNQ19HVVBS T0YpCi0JaWYgKGNwdXRpbWVfY2xvY2tfcG1jX2luaXQpIHsKLQkJKmdwID0gc2F2ZWRfZ21wOwot CQlwZXJmbW9uX2ZpbmkoMCk7Ci0JCWNwdXRpbWVfY2xvY2tfcG1jX2luaXQgPSBGQUxTRTsKLQl9 Ci0jZW5kaWYKICNpZiBkZWZpbmVkKEk1ODZfQ1BVKSB8fCBkZWZpbmVkKEk2ODZfQ1BVKQogCWlm IChjcHV0aW1lX2Nsb2NrID09IENQVVRJTUVfQ0xPQ0tfVFNDKQogCQljcHV0aW1lX3Byb2ZfYWN0 aXZlID0gMDsKSW5kZXg6IHN5cy9hbWQ2NC9jb25mL05PVEVTCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9h bWQ2NC9jb25mL05PVEVTCShyZXZpc2lvbiAyMTA1MzYpCisrKyBzeXMvYW1kNjQvY29uZi9OT1RF Uwkod29ya2luZyBjb3B5KQpAQCAtNTcsMTIgKzU3LDYgQEAKICMgT3B0aW9ucyBmb3IgQ1BVIGZl YXR1cmVzLgogIwogCi0jCi0jIFBFUkZNT04gY2F1c2VzIHRoZSBkcml2ZXIgZm9yIFBlbnRpdW0v UGVudGl1bSBQcm8gcGVyZm9ybWFuY2UgY291bnRlcnMKLSMgdG8gYmUgY29tcGlsZWQuICBTZWUg cGVyZm1vbig0KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLSMKLSNYWFgjb3B0aW9ucyAJUEVSRk1P TgotCiAMCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgTkVUV09SS0lORyBPUFRJT05TCkluZGV4OiBzeXMvYW1k NjQvYW1kNjQvbWFjaGRlcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9hbWQ2NC9hbWQ2NC9tYWNoZGVw LmMJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9hbWQ2NC9hbWQ2NC9tYWNoZGVwLmMJKHdvcmtp bmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRlICJvcHRfa3N0YWNrX3BhZ2VzLmgi CiAjaW5jbHVkZSAib3B0X21heG1lbS5oIgogI2luY2x1ZGUgIm9wdF9tc2didWYuaCIKLSNpbmNs dWRlICJvcHRfcGVyZm1vbi5oIgogI2luY2x1ZGUgIm9wdF9zY2hlZC5oIgogCiAjaW5jbHVkZSA8 c3lzL3BhcmFtLmg+CkBAIC0xMjAsOSArMTE5LDYgQEAKICNpbmNsdWRlIDxtYWNoaW5lL3JlZy5o PgogI2luY2x1ZGUgPG1hY2hpbmUvc2lnZnJhbWUuaD4KICNpbmNsdWRlIDxtYWNoaW5lL3NwZWNp YWxyZWcuaD4KLSNpZmRlZiBQRVJGTU9OCi0jaW5jbHVkZSA8bWFjaGluZS9wZXJmbW9uLmg+Ci0j ZW5kaWYKICNpbmNsdWRlIDxtYWNoaW5lL3Rzcy5oPgogI2lmZGVmIFNNUAogI2luY2x1ZGUgPG1h Y2hpbmUvc21wLmg+CkBAIC0yMzYsOSArMjMyLDYgQEAKIAlzdGFydHJ0Y2xvY2soKTsKIAlwcmlu dGNwdWluZm8oKTsKIAlwYW5pY2lmY3B1dW5zdXBwb3J0ZWQoKTsKLSNpZmRlZiBQRVJGTU9OCi0J cGVyZm1vbl9pbml0KCk7Ci0jZW5kaWYKIAlyZWFsbWVtID0gTWF4bWVtOwogCiAJLyoKSW5kZXg6 IHN5cy9hbWQ2NC9hbWQ2NC9wcm9mX21hY2hkZXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvYW1kNjQv YW1kNjQvcHJvZl9tYWNoZGVwLmMJKHJldmlzaW9uIDIxMDUzNikKKysrIHN5cy9hbWQ2NC9hbWQ2 NC9wcm9mX21hY2hkZXAuYwkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2lmZGVm IEdVUFJPRgogI2lmIDAKICNpbmNsdWRlICJvcHRfaTU4Nl9ndXByb2YuaCIKLSNpbmNsdWRlICJv cHRfcGVyZm1vbi5oIgogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KQEAgLTQ0LDkg KzQzLDYgQEAKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAKICNpbmNsdWRlIDxtYWNoaW5lL2Ns b2NrLmg+Ci0jaWYgMAotI2luY2x1ZGUgPG1hY2hpbmUvcGVyZm1vbi5oPgotI2VuZGlmCiAjaW5j bHVkZSA8bWFjaGluZS90aW1lcnJlZy5oPgogCiAjZGVmaW5lCUNQVVRJTUVfQ0xPQ0tfVU5JTklU SUFMSVpFRAkwCkBAIC01OCwxMSArNTQsNiBAQAogaW50CWNwdXRpbWVfYmlhcyA9IDE7CS8qIGlu aXRpYWxpemUgZm9yIGxvY2FsaXR5IG9mIHJlZmVyZW5jZSAqLwogCiBzdGF0aWMgaW50CWNwdXRp bWVfY2xvY2sgPSBDUFVUSU1FX0NMT0NLX1VOSU5JVElBTElaRUQ7Ci0jaWYgZGVmaW5lZChQRVJG TU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikKLXN0YXRpYyB1X2ludAljcHV0aW1lX2Ns b2NrX3BtY19jb25mID0gSTU4Nl9QTUNfR1VQUk9GOwotc3RhdGljIGludAljcHV0aW1lX2Nsb2Nr X3BtY19pbml0Owotc3RhdGljIHN0cnVjdCBnbW9ucGFyYW0gc2F2ZWRfZ21wOwotI2VuZGlmCiAj aWYgZGVmaW5lZChJNTg2X0NQVSkgfHwgZGVmaW5lZChJNjg2X0NQVSkKIHN0YXRpYyBpbnQJY3B1 dGltZV9wcm9mX2FjdGl2ZTsKICNlbmRpZgpAQCAtMjAwLDEwICsxOTEsNiBAQAogewogCXVfaW50 IGNvdW50OwogCWludCBkZWx0YTsKLSNpZiAoZGVmaW5lZChJNTg2X0NQVSkgfHwgZGVmaW5lZChJ Njg2X0NQVSkpICYmICFkZWZpbmVkKFNNUCkgJiYgXAotICAgIGRlZmluZWQoUEVSRk1PTikgJiYg ZGVmaW5lZChJNTg2X1BNQ19HVVBST0YpCi0JdV9xdWFkX3QgZXZlbnRfY291bnQ7Ci0jZW5kaWYK IAl1X2NoYXIgaGlnaCwgbG93OwogCXN0YXRpYyB1X2ludCBwcmV2X2NvdW50OwogCkBAIC0yMjEs MjEgKzIwOCw2IEBACiAJCXByZXZfY291bnQgPSBjb3VudDsKIAkJcmV0dXJuIChkZWx0YSk7CiAJ fQotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BNQ19HVVBST0YpICYmICFk ZWZpbmVkKFNNUCkKLQlpZiAoY3B1dGltZV9jbG9jayA9PSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1D KSB7Ci0JCS8qCi0JCSAqIFhYWCBwZXJtb25fcmVhZCgpIHNob3VsZCBiZSBpbmxpbmVkIHNvIHRo YXQgdGhlCi0JCSAqIHBlcmZtb24gbW9kdWxlIGRvZXNuJ3QgbmVlZCB0byBiZSBjb21waWxlZCB3 aXRoCi0JCSAqIHByb2ZpbGluZyBkaXNhYmxlZCBhbmQgc28gdGhhdCBpdCBpcyBmYXN0LgotCQkg Ki8KLQkJcGVyZm1vbl9yZWFkKDAsICZldmVudF9jb3VudCk7Ci0KLQkJY291bnQgPSAodV9pbnQp ZXZlbnRfY291bnQ7Ci0JCWRlbHRhID0gKGludCkoY291bnQgLSBwcmV2X2NvdW50KTsKLQkJcHJl dl9jb3VudCA9IGNvdW50OwotCQlyZXR1cm4gKGRlbHRhKTsKLQl9Ci0jZW5kaWYgLyogUEVSRk1P TiAmJiBJNTg2X1BNQ19HVVBST0YgJiYgIVNNUCAqLwogI2VuZGlmIC8qIEk1ODZfQ1BVIHx8IEk2 ODZfQ1BVICovCiAKIAkvKgpAQCAtMjY3LDM5ICsyMzksMTMgQEAKIHsKIAlpbnQgY2xvY2s7CiAJ aW50IGVycm9yOwotI2lmIGRlZmluZWQoUEVSRk1PTikgJiYgZGVmaW5lZChJNTg2X1BNQ19HVVBS T0YpCi0JaW50IGV2ZW50OwotCXN0cnVjdCBwbWMgcG1jOwotI2VuZGlmCiAKIAljbG9jayA9IGNw dXRpbWVfY2xvY2s7Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dV UFJPRikKLQlpZiAoY2xvY2sgPT0gQ1BVVElNRV9DTE9DS19JNTg2X1BNQykgewotCQlwbWMucG1j X3ZhbCA9IGNwdXRpbWVfY2xvY2tfcG1jX2NvbmY7Ci0JCWNsb2NrICs9IHBtYy5wbWNfZXZlbnQ7 Ci0JfQotI2VuZGlmCiAJZXJyb3IgPSBzeXNjdGxfaGFuZGxlX29wYXF1ZShvaWRwLCAmY2xvY2ss IHNpemVvZiBjbG9jaywgcmVxKTsKIAlpZiAoZXJyb3IgPT0gMCAmJiByZXEtPm5ld3B0ciAhPSBO VUxMKSB7Ci0jaWYgZGVmaW5lZChQRVJGTU9OKSAmJiBkZWZpbmVkKEk1ODZfUE1DX0dVUFJPRikK LQkJaWYgKGNsb2NrID49IENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUMpIHsKLQkJCWV2ZW50ID0gY2xv Y2sgLSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1DOwotCQkJaWYgKGV2ZW50ID49IDI1NikKLQkJCQly ZXR1cm4gKEVJTlZBTCk7Ci0JCQlwbWMucG1jX251bSA9IDA7Ci0JCQlwbWMucG1jX2V2ZW50ID0g ZXZlbnQ7Ci0JCQlwbWMucG1jX3VuaXQgPSAwOwotCQkJcG1jLnBtY19mbGFncyA9IFBNQ0ZfRSB8 IFBNQ0ZfT1MgfCBQTUNGX1VTUjsKLQkJCXBtYy5wbWNfbWFzayA9IDA7Ci0JCQljcHV0aW1lX2Ns b2NrX3BtY19jb25mID0gcG1jLnBtY192YWw7Ci0JCQljcHV0aW1lX2Nsb2NrID0gQ1BVVElNRV9D TE9DS19JNTg2X1BNQzsKLQkJfSBlbHNlCi0jZW5kaWYKLQkJewotCQkJaWYgKGNsb2NrIDwgMCB8 fCBjbG9jayA+PSBDUFVUSU1FX0NMT0NLX0k1ODZfUE1DKQotCQkJCXJldHVybiAoRUlOVkFMKTsK LQkJCWNwdXRpbWVfY2xvY2sgPSBjbG9jazsKLQkJfQorCQlpZiAoY2xvY2sgPCAwIHx8IGNsb2Nr ID49IENQVVRJTUVfQ0xPQ0tfSTU4Nl9QTUMpCisJCQlyZXR1cm4gKEVJTlZBTCk7CisJCWNwdXRp bWVfY2xvY2sgPSBjbG9jazsKIAl9CiAJcmV0dXJuIChlcnJvcik7CiB9CkBAIC0zMjksMzIgKzI3 NSw2IEBACiAJCWdwLT5wcm9mcmF0ZSA9IHRzY19mcmVxID4+IDE7CiAJCWNwdXRpbWVfcHJvZl9h Y3RpdmUgPSAxOwogCX0KLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNf R1VQUk9GKQotCWVsc2UgaWYgKGNwdXRpbWVfY2xvY2sgPT0gQ1BVVElNRV9DTE9DS19JNTg2X1BN QykgewotCQlpZiAocGVyZm1vbl9hdmFpbCgpICYmCi0JCSAgICBwZXJmbW9uX3NldHVwKDAsIGNw dXRpbWVfY2xvY2tfcG1jX2NvbmYpID09IDApIHsKLQkJCWlmIChwZXJmbW9uX3N0YXJ0KDApICE9 IDApCi0JCQkJcGVyZm1vbl9maW5pKDApOwotCQkJZWxzZSB7Ci0JCQkJLyogWFhYIDEgZXZlbnQg PT0gMSB1cy4gKi8KLQkJCQlncC0+cHJvZnJhdGUgPSAxMDAwMDAwOwotCi0JCQkJc2F2ZWRfZ21w ID0gKmdwOwotCi0JCQkJLyogWmFwIG92ZXJoZWFkcy4gIFRoZXkgYXJlIGludmFsaWQuICovCi0J CQkJZ3AtPmNwdXRpbWVfb3ZlcmhlYWQgPSAwOwotCQkJCWdwLT5tY291bnRfb3ZlcmhlYWQgPSAw OwotCQkJCWdwLT5tY291bnRfcG9zdF9vdmVyaGVhZCA9IDA7Ci0JCQkJZ3AtPm1jb3VudF9wcmVf b3ZlcmhlYWQgPSAwOwotCQkJCWdwLT5tZXhpdGNvdW50X292ZXJoZWFkID0gMDsKLQkJCQlncC0+ bWV4aXRjb3VudF9wb3N0X292ZXJoZWFkID0gMDsKLQkJCQlncC0+bWV4aXRjb3VudF9wcmVfb3Zl cmhlYWQgPSAwOwotCi0JCQkJY3B1dGltZV9jbG9ja19wbWNfaW5pdCA9IFRSVUU7Ci0JCQl9Ci0J CX0KLQl9Ci0jZW5kaWYgLyogUEVSRk1PTiAmJiBJNTg2X1BNQ19HVVBST0YgKi8KICNlbmRpZiAv KiBJNTg2X0NQVSB8fCBJNjg2X0NQVSAqLwogCWNwdXRpbWVfYmlhcyA9IDA7CiAJY3B1dGltZSgp OwpAQCAtMzY0LDEzICsyODQsNiBAQAogc3RvcGd1cHJvZihncCkKIAlzdHJ1Y3QgZ21vbnBhcmFt ICpncDsKIHsKLSNpZiBkZWZpbmVkKFBFUkZNT04pICYmIGRlZmluZWQoSTU4Nl9QTUNfR1VQUk9G KQotCWlmIChjcHV0aW1lX2Nsb2NrX3BtY19pbml0KSB7Ci0JCSpncCA9IHNhdmVkX2dtcDsKLQkJ cGVyZm1vbl9maW5pKDApOwotCQljcHV0aW1lX2Nsb2NrX3BtY19pbml0ID0gRkFMU0U7Ci0JfQot I2VuZGlmCiAjaWYgZGVmaW5lZChJNTg2X0NQVSkgfHwgZGVmaW5lZChJNjg2X0NQVSkKIAlpZiAo Y3B1dGltZV9jbG9jayA9PSBDUFVUSU1FX0NMT0NLX1RTQykKIAkJY3B1dGltZV9wcm9mX2FjdGl2 ZSA9IDA7Cg== --0016e659f3e6f5f5c7048c61417d-- From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 18:55:23 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A3FFE106564A for ; Tue, 27 Jul 2010 18:55:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 733D78FC08 for ; Tue, 27 Jul 2010 18:55:23 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 06F0746B4C; Tue, 27 Jul 2010 14:55:23 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 463A38A050; Tue, 27 Jul 2010 14:55:22 -0400 (EDT) From: John Baldwin To: freebsd-amd64@freebsd.org Date: Tue, 27 Jul 2010 14:54:12 -0400 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100217; KDE/4.4.5; amd64; ; ) References: <20100727132350.GN22295@deviant.kiev.zoral.com.ua> In-Reply-To: MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201007271454.12244.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Tue, 27 Jul 2010 14:55:22 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 18:55:23 -0000 On Tuesday, July 27, 2010 12:47:33 pm pluknet wrote: > On 27 July 2010 17:23, Kostik Belousov wrote: > > On Tue, Jul 27, 2010 at 04:43:00PM +0400, pluknet wrote: > >> Hi. > >> > >> What is a status of "options PERFMON" on amd64? > >> AFAIK PERFMON opt. was inherited from i386 port and never worked. > >> Does it make sense to wipe out perfmon part on amd64? > >> > >> Looking at cvs I see amd64/include/perfmon.h was never here. > > > > I think perfmon should be removed from i386 too. Would you prepare > > the patch ? > > > > Ok, attached. I think you want to remove CPUTIME_CLOCK_I586_PMC as well. -- John Baldwin From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 19:06:53 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DB27F1065679; Tue, 27 Jul 2010 19:06:53 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail08.syd.optusnet.com.au (mail08.syd.optusnet.com.au [211.29.132.189]) by mx1.freebsd.org (Postfix) with ESMTP id 5DFBB8FC2C; Tue, 27 Jul 2010 19:06:52 +0000 (UTC) Received: from c122-106-147-41.carlnfd1.nsw.optusnet.com.au (c122-106-147-41.carlnfd1.nsw.optusnet.com.au [122.106.147.41]) by mail08.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o6RJ6oTM016119 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 28 Jul 2010 05:06:51 +1000 Date: Wed, 28 Jul 2010 05:06:50 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: John Baldwin In-Reply-To: <201007270928.24959.jhb@freebsd.org> Message-ID: <20100728044151.Y1330@delplex.bde.org> References: <201007270928.24959.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-amd64@freebsd.org Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 19:06:53 -0000 On Tue, 27 Jul 2010, John Baldwin wrote: > On Tuesday, July 27, 2010 8:43:00 am pluknet wrote: >> Hi. >> >> What is a status of "options PERFMON" on amd64? >> ... >> Looking at cvs I see amd64/include/perfmon.h was never here. > > PERFMON in general is obsoleted by hwpmc(4) which is far more useful and > featureful. It should probably just be axed. Nothing should just be axed. hwpmc(4) is far too featureful for me, yet perfmon(4) still does things for me that hwpmc cannot do: - from userland, without using the library, try undocumented unnamed counters. There are a few useful ones for k7. E.g.: 0xc8 (k8-fr-retired-near-returns) and 0xc9 (k8-fr-retired-near-returns-mispredicted) are k8-only according to hwpmc and amd docs, but also work on my k7 (after a 4-line fix for perfmon on kx). - in the kernel count, events at the level of individual functions, non- statistically using high resolution kernel profiling. This may result in more time spent counting than doing useful work, but provides high resolution. Bruce From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 19:42:15 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C750E1065688; Tue, 27 Jul 2010 19:42:15 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 839978FC22; Tue, 27 Jul 2010 19:42:15 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 16C2B46B2D; Tue, 27 Jul 2010 15:42:15 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 6ACE88A03C; Tue, 27 Jul 2010 15:42:13 -0400 (EDT) From: John Baldwin To: Bruce Evans Date: Tue, 27 Jul 2010 15:40:30 -0400 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100217; KDE/4.4.5; amd64; ; ) References: <201007270928.24959.jhb@freebsd.org> <20100728044151.Y1330@delplex.bde.org> In-Reply-To: <20100728044151.Y1330@delplex.bde.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201007271540.30774.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Tue, 27 Jul 2010 15:42:13 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: jkoshy@freebsd.org, freebsd-amd64@freebsd.org Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 19:42:15 -0000 On Tuesday, July 27, 2010 3:06:50 pm Bruce Evans wrote: > On Tue, 27 Jul 2010, John Baldwin wrote: > > > On Tuesday, July 27, 2010 8:43:00 am pluknet wrote: > >> Hi. > >> > >> What is a status of "options PERFMON" on amd64? > >> ... > >> Looking at cvs I see amd64/include/perfmon.h was never here. > > > > PERFMON in general is obsoleted by hwpmc(4) which is far more useful and > > featureful. It should probably just be axed. > > Nothing should just be axed. > > hwpmc(4) is far too featureful for me, yet perfmon(4) still does things > for me that hwpmc cannot do: > - from userland, without using the library, try undocumented unnamed > counters. There are a few useful ones for k7. E.g.: > 0xc8 (k8-fr-retired-near-returns) and > 0xc9 (k8-fr-retired-near-returns-mispredicted) > are k8-only according to hwpmc and amd docs, but also work on my k7 > (after a 4-line fix for perfmon on kx). I believe this is not too terribly hard to fix. For the two above I think this will suffice (manpage would also need to be updated for a full patch): (I think the misordering in pmc_events.h is required to preserve userland ABI.) Index: hwpmc_amd.c =================================================================== --- hwpmc_amd.c (revision 210547) +++ hwpmc_amd.c (working copy) @@ -137,6 +137,8 @@ { PMC_EV_K7_RETIRED_TAKEN_BRANCHES_MISPREDICTED, 0xC5, 0 }, { PMC_EV_K7_RETIRED_FAR_CONTROL_TRANSFERS, 0xC6, 0 }, { PMC_EV_K7_RETIRED_RESYNC_BRANCHES, 0xC7, 0 }, + { PMC_EV_K7_RETIRED_NEAR_RETURNS, 0xC8, 0 }, + { PMC_EV_K7_RETIRED_NEAR_RETURNS_MISPREDICTED, 0xC9, 0 }, { PMC_EV_K7_INTERRUPTS_MASKED_CYCLES, 0xCD, 0 }, { PMC_EV_K7_INTERRUPTS_MASKED_WHILE_PENDING_CYCLES, 0xCE, 0 }, { PMC_EV_K7_HARDWARE_INTERRUPTS, 0xCF, 0 }, Index: pmc_events.h =================================================================== --- pmc_events.h (revision 210547) +++ pmc_events.h (working copy) @@ -74,10 +74,12 @@ __PMC_EV(K7, RETIRED_RESYNC_BRANCHES) \ __PMC_EV(K7, INTERRUPTS_MASKED_CYCLES) \ __PMC_EV(K7, INTERRUPTS_MASKED_WHILE_PENDING_CYCLES) \ -__PMC_EV(K7, HARDWARE_INTERRUPTS) +__PMC_EV(K7, HARDWARE_INTERRUPTS) \ +__PMC_EV(K7, RETIRED_NEAR_RETURNS) \ +__PMC_EV(K7, RETIRED_NEAR_RETURNS_MISPREDICTED) #define PMC_EV_K7_FIRST PMC_EV_K7_DC_ACCESSES -#define PMC_EV_K7_LAST PMC_EV_K7_HARDWARE_INTERRUPTS +#define PMC_EV_K7_LAST PMC_EV_K7_RETIRED_NEAR_RETURNS_MISPREDICTED /* > - in the kernel count, events at the level of individual functions, non- > statistically using high resolution kernel profiling. This may result > in more time spent counting than doing useful work, but provides > high resolution. I would rather us provide this via hwpmc(4). perfmon(4) does not support programmable events on modern Intel CPUs nor does it support non-x86 CPUs. -- John Baldwin From owner-freebsd-amd64@FreeBSD.ORG Tue Jul 27 20:44:11 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B8117106567A; Tue, 27 Jul 2010 20:44:11 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail04.syd.optusnet.com.au (mail04.syd.optusnet.com.au [211.29.132.185]) by mx1.freebsd.org (Postfix) with ESMTP id 3C02A8FC17; Tue, 27 Jul 2010 20:44:10 +0000 (UTC) Received: from besplex.bde.org (c122-106-147-41.carlnfd1.nsw.optusnet.com.au [122.106.147.41]) by mail04.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o6RKi75Y024773 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 28 Jul 2010 06:44:08 +1000 Date: Wed, 28 Jul 2010 06:44:07 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: John Baldwin In-Reply-To: <201007271540.30774.jhb@freebsd.org> Message-ID: <20100728054627.T11937@besplex.bde.org> References: <201007270928.24959.jhb@freebsd.org> <20100728044151.Y1330@delplex.bde.org> <201007271540.30774.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: jkoshy@freebsd.org, freebsd-amd64@freebsd.org Subject: Re: PERFMON isn't operational on amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jul 2010 20:44:11 -0000 On Tue, 27 Jul 2010, John Baldwin wrote: > On Tuesday, July 27, 2010 3:06:50 pm Bruce Evans wrote: >> hwpmc(4) is far too featureful for me, yet perfmon(4) still does things >> for me that hwpmc cannot do: >> - from userland, without using the library, try undocumented unnamed >> counters. There are a few useful ones for k7. E.g.: >> 0xc8 (k8-fr-retired-near-returns) and >> 0xc9 (k8-fr-retired-near-returns-mispredicted) >> are k8-only according to hwpmc and amd docs, but also work on my k7 >> (after a 4-line fix for perfmon on kx). > > I believe this is not too terribly hard to fix. Indeed. Just remove restrictions. > For the two above I think > this will suffice (manpage would also need to be updated for a full patch): > > (I think the misordering in pmc_events.h is required to preserve userland > ABI.) > > Index: hwpmc_amd.c > =================================================================== > --- hwpmc_amd.c (revision 210547) > +++ hwpmc_amd.c (working copy) > @@ -137,6 +137,8 @@ > { PMC_EV_K7_RETIRED_TAKEN_BRANCHES_MISPREDICTED, 0xC5, 0 }, > { PMC_EV_K7_RETIRED_FAR_CONTROL_TRANSFERS, 0xC6, 0 }, > { PMC_EV_K7_RETIRED_RESYNC_BRANCHES, 0xC7, 0 }, > + { PMC_EV_K7_RETIRED_NEAR_RETURNS, 0xC8, 0 }, > + { PMC_EV_K7_RETIRED_NEAR_RETURNS_MISPREDICTED, 0xC9, 0 }, > { PMC_EV_K7_INTERRUPTS_MASKED_CYCLES, 0xCD, 0 }, > { PMC_EV_K7_INTERRUPTS_MASKED_WHILE_PENDING_CYCLES, 0xCE, 0 }, > { PMC_EV_K7_HARDWARE_INTERRUPTS, 0xCF, 0 }, I think the undocumented ones should require a special flag or something to use. Maybe they depend on the stepping. Here is my complete list (54 items), from a case statement that is supposed to convert magic numbers to the hwpmc/amd names. This needs to be verified. I don't remember checking all of it. In fact, I probably didn't, but just duplicated the k8 names with s/k8/kx/ iff the counter is sometimes nonzero for both k7 and k8, then checked the more interesting ones. IIRC, checking consisted mainly of running normal utilites on k7 and k8 to see if the counts were similar. This wouldn't work if the CPU reasources were too different. % 0x21) src=kx-ls-microarchitectural-resync-by-self-mod-code;; % 0x23) src=kx-ls-buffer2-full;; I couldn't have verified the more arcane and/or lower-level ones like these if I tried. These are documented for k8, and nonzero for k7. The 202 cases not in this list are left out because they are either documented for k7 and identical with k8, or never observed to have nonzero counts. % 0x26) src=kx-ls-retired-cflush-instructions;; % 0x27) src=kx-ls-retired-cpuid-instructions;; Probably verifiable. % 0x2a) src=kx-ls-unknown-$ctr1;; % 0x2b) src=kx-ls-unknown-$ctr1;; % 0x2e) src=k7-ls-unknown-$ctr1;; % 0x2f) src=k7-ls-unknown-$ctr1;; % 0x32) src=kx-ls-unknown-$ctr1;; % 0x33) src=kx-ls-unknown-$ctr1;; % 0x36) src=k7-ls-unknown-$ctr1;; % 0x37) src=k7-ls-unknown-$ctr1;; % 0x3a) src=kx-ls-unknown-$ctr1;; % 0x3b) src=kx-ls-unknown-$ctr1;; % 0x3e) src=k7-ls-unknown-$ctr1;; % 0x3f) src=k7-ls-unknown-$ctr1;; Unknown means it's undocumented but observed to have a nonzero count (kx-*-unkown if nonzero on both, etc.). % 0x48) src=kx-dc-microarchitectural-late-cancel-of-an-access;; % 0x49) src=kx-dc-microarchitectural-early-cancel-of-an-access;; % 0x4d) src=k7-dc-unknown-$ctr1;; % 0x4e) src=k7-dc-unknown-$ctr1;; % 0x4f) src=k7-dc-unknown-$ctr1;; % 0x50) src=kx-dc-unknown-$ctr1;; % 0x51) src=kx-dc-unknown-$ctr1;; % 0x55) src=kx-dc-unknown-$ctr1;; % 0x56) src=kx-dc-unknown-$ctr1;; % 0x57) src=kx-dc-unknown-$ctr1;; % 0x58) src=kx-dc-unknown-$ctr1;; % 0x59) src=kx-dc-unknown-$ctr1;; % 0x5d) src=k7-dc-unknown-$ctr1;; % 0x5e) src=k7-dc-unknown-$ctr1;; % 0x5f) src=k7-dc-unknown-$ctr1;; % 0x64) src=kx-bu-unknown-$ctr1;; % 0x68) src=kx-bu-unknown-$ctr1;; % 0x69) src=kx-bu-unknown-$ctr1;; % 0x76) src=kx-bu-cpu-clk-unhalted;; % 0x82) src=kx-ic-refill-from-l2;; % 0x83) src=kx-ic-refill-from-system;; % 0x87) src=kx-ic-instruction-fetch-stall;; % 0x88) src=kx-ic-return-stack-hit;; % 0x89) src=kx-ic-return-stack-overflow;; Above 2 are even more interesting than the next 2. I should have checked these. % 0xc8) src=kx-fr-retired-near-returns;; % 0xc9) src=kx-fr-retired-near-returns-mispredicted;; % 0xca) src=kx-fr-retired-taken-branches-mispred-by-addr-miscompare;; % 0xd0) src=kx-fr-decoder-empty;; % 0xd1) src=kx-fr-dispatch-stalls;; % 0xd2) src=kx-fr-dispatch-stall-from-branch-abort-to-retire;; % 0xd3) src=kx-fr-dispatch-stall-for-serialization;; % 0xd4) src=kx-fr-dispatch-stall-for-segment-load;; % 0xd5) src=kx-fr-dispatch-stall-when-reorder-buffer-is-full;; % 0xd6) src=kx-fr-dispatch-stall-when-reservation-stations-are-full;; % 0xd7) src=kx-fr-dispatch-stall-when-fpu-is-full;; % 0xd8) src=kx-fr-dispatch-stall-when-ls-is-full;; % 0xd9) src=kx-fr-dispatch-stall-when-waiting-for-all-to-be-quiet;; % 0xda) src=kx-fr-dispatch-stall-when-far-xfer-or-resync-br-pending;; >> - in the kernel count, events at the level of individual functions, non- >> statistically using high resolution kernel profiling. This may result >> in more time spent counting than doing useful work, but provides >> high resolution. > > I would rather us provide this via hwpmc(4). perfmon(4) does not support > programmable events on modern Intel CPUs nor does it support non-x86 CPUs. Sure, but don't remove sort-of-working code until you have a replacement. Profiling just needs to call non-profiling-routine functions to read the counters (for perfmon, the whole module is hackishly configued as profiling-routine so that its normal functions can be called). The functions need to be callable in the "any" context without deadlocking or corrupting the context. This is nontrivial if the context is hwpmc or perfmon. This is especially nontrivial for hwpmc, since it uses NMIs. For perfmon, problems are supposed to be avoided by acquiring exclusive access everything in perfmon while profiling. I can only see it acquiring exclusive access to the counter being used. Bruce From owner-freebsd-amd64@FreeBSD.ORG Wed Jul 28 08:41:45 2010 Return-Path: Delivered-To: amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4CBEF1065676; Wed, 28 Jul 2010 08:41:45 +0000 (UTC) (envelope-from tinderbox@freebsd.org) Received: from freebsd-current.sentex.ca (freebsd-current.sentex.ca [64.7.128.98]) by mx1.freebsd.org (Postfix) with ESMTP id 0670A8FC1E; Wed, 28 Jul 2010 08:41:44 +0000 (UTC) Received: from freebsd-current.sentex.ca (localhost [127.0.0.1]) by freebsd-current.sentex.ca (8.14.4/8.14.3) with ESMTP id o6S8fiV2049832; Wed, 28 Jul 2010 04:41:44 -0400 (EDT) (envelope-from tinderbox@freebsd.org) Received: (from tinderbox@localhost) by freebsd-current.sentex.ca (8.14.4/8.14.3/Submit) id o6S8fiXe049828; Wed, 28 Jul 2010 08:41:44 GMT (envelope-from tinderbox@freebsd.org) Date: Wed, 28 Jul 2010 08:41:44 GMT Message-Id: <201007280841.o6S8fiXe049828@freebsd-current.sentex.ca> X-Authentication-Warning: freebsd-current.sentex.ca: tinderbox set sender to FreeBSD Tinderbox using -f Sender: FreeBSD Tinderbox From: FreeBSD Tinderbox To: FreeBSD Tinderbox , , Precedence: bulk Cc: Subject: [releng_8_0 tinderbox] failure on amd64/amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 08:41:45 -0000 TB --- 2010-07-28 08:04:01 - tinderbox 2.6 running on freebsd-current.sentex.ca TB --- 2010-07-28 08:04:01 - starting RELENG_8_0 tinderbox run for amd64/amd64 TB --- 2010-07-28 08:04:01 - cleaning the object tree TB --- 2010-07-28 08:04:26 - cvsupping the source tree TB --- 2010-07-28 08:04:26 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca /tinderbox/RELENG_8_0/amd64/amd64/supfile TB --- 2010-07-28 08:41:44 - WARNING: /usr/bin/csup returned exit code 1 TB --- 2010-07-28 08:41:44 - ERROR: unable to cvsup the source tree TB --- 2010-07-28 08:41:44 - 0.90 user 12.84 system 2262.79 real http://tinderbox.freebsd.org/tinderbox-releng_8-RELENG_8_0-amd64-amd64.full From owner-freebsd-amd64@FreeBSD.ORG Wed Jul 28 15:10:27 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0907C1065674 for ; Wed, 28 Jul 2010 15:10:27 +0000 (UTC) (envelope-from tijl@coosemans.org) Received: from mailrelay003.isp.belgacom.be (mailrelay003.isp.belgacom.be [195.238.6.53]) by mx1.freebsd.org (Postfix) with ESMTP id 468B48FC08 for ; Wed, 28 Jul 2010 15:10:25 +0000 (UTC) X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvsEAGzdT0xbsa8V/2dsb2JhbACfbHLBLIU2BA Received: from 21.175-177-91.adsl-dyn.isp.belgacom.be (HELO kalimero.tijl.coosemans.org) ([91.177.175.21]) by relay.skynet.be with ESMTP; 28 Jul 2010 16:40:52 +0200 Received: from kalimero.tijl.coosemans.org (kalimero.tijl.coosemans.org [127.0.0.1]) by kalimero.tijl.coosemans.org (8.14.4/8.14.4) with ESMTP id o6SEepPN004924 for ; Wed, 28 Jul 2010 16:40:51 +0200 (CEST) (envelope-from tijl@coosemans.org) From: Tijl Coosemans To: freebsd-amd64@freebsd.org Date: Wed, 28 Jul 2010 16:40:43 +0200 User-Agent: KMail/1.13.5 (FreeBSD/8.1-PRERELEASE; KDE/4.4.5; i386; ; ) MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart4105206.OkeMhxk1Mv"; protocol="application/pgp-signature"; micalg=pgp-sha256 Content-Transfer-Encoding: 7bit Message-Id: <201007281640.51097.tijl@coosemans.org> Subject: sys/boot includes amd64 headers X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 15:10:27 -0000 --nextPart4105206.OkeMhxk1Mv Content-Type: multipart/mixed; boundary="Boundary-01=_rFEUMYCha2Qc4Zt" Content-Transfer-Encoding: 7bit --Boundary-01=_rFEUMYCha2Qc4Zt Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline While working on cc -m32 support I added the following to all headers in sys/amd64/include to make sure none of my changes have an effect on building world+kernel: #ifndef __x86_64__ #error bla #endif This exposed some problems in sys/boot. The Makefiles there create a symlink .OBJDIR/machine -> sys/i386/includes and add -I. to the CFLAGS such that including includes the i386 header. The problem is that is also included and is a symlink in WORLDTMP/usr/include to the machine/stdarg.h there, which is for amd64. There should be a symlink .OBJDIR/stdarg.h -> machine/stdarg.h to fix this. Another case is sys/boot/i386/kgzldr which includes and that in turn includes headers from machine, so it needs the machine symlink. Could somebody review the attached patch to make sure it does the right thing? --Boundary-01=_rFEUMYCha2Qc4Zt Content-Type: text/plain; charset="us-ascii"; name="sys.boot-amd64.diff" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="sys.boot-amd64.diff" diff --git a/sys/boot/ficl/Makefile b/sys/boot/ficl/Makefile index cdc8f7e..bb9c04c 100644 =2D-- a/sys/boot/ficl/Makefile +++ b/sys/boot/ficl/Makefile @@ -57,12 +57,15 @@ softcore.c: ${SOFTWORDS} softcore.awk | awk -f softcore.awk -v datestamp=3D"`LC_ALL=3DC date`") > ${.TARGET} =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2D${SRCS:M*.c:R:S/$/.o/g}: machine +${SRCS:M*.c:R:S/$/.o/g}: machine stdarg.h =20 =2Dbeforedepend ${OBJS}: machine +beforedepend ${OBJS}: machine stdarg.h =20 machine: ln -sf ${.CURDIR}/../../i386/include machine =20 =2DCLEANFILES+=3D machine +stdarg.h: + ln -sf machine/stdarg.h stdarg.h + +CLEANFILES+=3D machine stdarg.h .endif diff --git a/sys/boot/i386/boot2/Makefile b/sys/boot/i386/boot2/Makefile index ab5a69a..4196115 100644 =2D-- a/sys/boot/i386/boot2/Makefile +++ b/sys/boot/i386/boot2/Makefile @@ -95,10 +95,12 @@ boot2.h: boot1.out REL1=3D`printf "%d" ${REL1}` > ${.TARGET} =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2Dbeforedepend boot2.s: machine =2DCLEANFILES+=3D machine +beforedepend boot2.s: machine stdarg.h +CLEANFILES+=3D machine stdarg.h machine: ln -sf ${.CURDIR}/../../../i386/include machine +stdarg.h: + ln -sf machine/stdarg.h stdarg.h .endif =20 .include diff --git a/sys/boot/i386/gptboot/Makefile b/sys/boot/i386/gptboot/Makefile index cc71b35..4532035 100644 =2D-- a/sys/boot/i386/gptboot/Makefile +++ b/sys/boot/i386/gptboot/Makefile @@ -68,10 +68,12 @@ gptboot.out: ${BTXCRT} gptboot.o sio.o gptboot.o: ${.CURDIR}/../../common/ufsread.c =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2Dbeforedepend gptboot.o: machine =2DCLEANFILES+=3D machine +beforedepend gptboot.o: machine stdarg.h +CLEANFILES+=3D machine stdarg.h machine: ln -sf ${.CURDIR}/../../../i386/include machine +stdarg.h: + ln -sf machine/stdarg.h stdarg.h .endif =20 .include diff --git a/sys/boot/i386/kgzldr/Makefile b/sys/boot/i386/kgzldr/Makefile index a124474..54e8482 100644 =2D-- a/sys/boot/i386/kgzldr/Makefile +++ b/sys/boot/i386/kgzldr/Makefile @@ -7,7 +7,7 @@ BINDIR=3D ${LIBDIR} NO_MAN=3D =20 SRCS=3D start.s boot.c inflate.c lib.c crt.s sio.s =2DCFLAGS=3D -Os +CFLAGS=3D -Os -I. CFLAGS+=3D-DKZIP NO_SHARED=3D LDFLAGS=3D-Wl,-r @@ -16,4 +16,11 @@ LDFLAGS=3D-Wl,-r BOOT_COMCONSOLE_PORT?=3D 0x3f8 AFLAGS+=3D--defsym SIO_PRT=3D${BOOT_COMCONSOLE_PORT} =20 +.if ${MACHINE_ARCH} =3D=3D "amd64" +beforedepend boot.o lib.o: machine +CLEANFILES+=3D machine +machine: + ln -sf ${.CURDIR}/../../../i386/include machine +.endif + .include diff --git a/sys/boot/i386/libfirewire/Makefile b/sys/boot/i386/libfirewire= /Makefile index 28f7630..785d282 100644 =2D-- a/sys/boot/i386/libfirewire/Makefile +++ b/sys/boot/i386/libfirewire/Makefile @@ -17,14 +17,16 @@ CFLAGS+=3D -I${.CURDIR}/../libi386 CFLAGS+=3D -Wformat -Wall =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2DCLEANFILES+=3D machine +CLEANFILES+=3D machine stdarg.h machine: ln -sf ${.CURDIR}/../../../i386/include machine +stdarg.h: + ln -sf machine/stdarg.h stdarg.h .endif =20 .include =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2Dbeforedepend ${OBJS}: machine +beforedepend ${OBJS}: machine stdarg.h .endif =20 diff --git a/sys/boot/i386/libi386/Makefile b/sys/boot/i386/libi386/Makefile index f1a461a..b43cec7 100644 =2D-- a/sys/boot/i386/libi386/Makefile +++ b/sys/boot/i386/libi386/Makefile @@ -54,13 +54,15 @@ CFLAGS+=3D -I${.CURDIR}/../../common -I${.CURDIR}/../bt= x/lib \ CFLAGS+=3D -I${.CURDIR}/../../../../lib/libstand/ =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2DCLEANFILES+=3D machine +CLEANFILES+=3D machine stdarg.h machine: ln -sf ${.CURDIR}/../../../i386/include machine +stdarg.h: + ln -sf machine/stdarg.h stdarg.h .endif =20 .include =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2Dbeforedepend ${OBJS}: machine +beforedepend ${OBJS}: machine stdarg.h .endif diff --git a/sys/boot/zfs/Makefile b/sys/boot/zfs/Makefile index b48804b..31794c7 100644 =2D-- a/sys/boot/zfs/Makefile +++ b/sys/boot/zfs/Makefile @@ -27,13 +27,15 @@ CFLAGS+=3D -m32 -march=3Di386 CFLAGS+=3D -Wformat -Wall =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2DCLEANFILES+=3D machine +CLEANFILES+=3D machine stdarg.h machine: ln -sf ${.CURDIR}/../../i386/include machine +stdarg.h: + ln -sf machine/stdarg.h stdarg.h .endif =20 .include =20 .if ${MACHINE_ARCH} =3D=3D "amd64" =2Dbeforedepend ${OBJS}: machine +beforedepend ${OBJS}: machine stdarg.h .endif --Boundary-01=_rFEUMYCha2Qc4Zt-- --nextPart4105206.OkeMhxk1Mv Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.15 (FreeBSD) iF4EABEIAAYFAkxQQXIACgkQfoCS2CCgtit2LQD/T8mJS1KTX17Jhaa8W/+jehnQ 8MwXYqo3IVKD+R73QzEA/1xE+Vum3av5++pC6YaN/njiI6/n5oZxdj/taGCeMiWD =xI1F -----END PGP SIGNATURE----- --nextPart4105206.OkeMhxk1Mv-- From owner-freebsd-amd64@FreeBSD.ORG Wed Jul 28 15:42:39 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6F02E106566C for ; Wed, 28 Jul 2010 15:42:39 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 02C288FC1E for ; Wed, 28 Jul 2010 15:42:37 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o6SFgWSP001586 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Wed, 28 Jul 2010 18:42:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o6SFgWln075014 for ; Wed, 28 Jul 2010 18:42:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o6SFgWQw075013 for freebsd-amd64@freebsd.org; Wed, 28 Jul 2010 18:42:32 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Wed, 28 Jul 2010 18:42:32 +0300 From: Kostik Belousov To: freebsd-amd64@freebsd.org Message-ID: <20100728154232.GV22295@deviant.kiev.zoral.com.ua> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Q43QQdzFtqSKgsg+" Content-Disposition: inline User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-2.2 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_50, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Subject: a.out/i386 support on amd64 kernels X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 15:42:39 -0000 --Q43QQdzFtqSKgsg+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, today is definitely not the April 1, but waiting for the date would be too long. Please find below the patch that adds support for executing old FreeBSD binaries on amd64. By old I mean: - support for i386 a.out image activator; - support for lcall 7,0 system call entry; - bunch of the compat syscalls that I found neccessary to run ls(1) from FreeBSD 1.0 CD; - signal delivery and sigreturn compat bits (untested). The lcall entry is somewhat tricky to implement on amd64, since call gates do not disable interrupts, and entry sequence must do swapgs atomically. I ended up with another trampoline to translate lcall to int 0x80 in the userspace. If you are going to try the patch, you would need to set sysctl security.bsd.map_at_zero to 1, and kldload aout. Do not forget to regenerate syscall tables in compat/freebsd32 after patching. Kernel config should include COMPAT_FREEBSD32 and COMPAT_43 options. diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c index a218ff2..dba5163 100644 --- a/sys/amd64/ia32/ia32_signal.c +++ b/sys/amd64/ia32/ia32_signal.c @@ -295,6 +295,109 @@ freebsd32_swapcontext(struct thread *td, struct freeb= sd32_swapcontext_args *uap) * frame pointer, it returns to the user * specified pc, psl. */ + +#ifdef COMPAT_43 +static void +ia32_osendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) +{ + struct ia32_sigframe3 sf, *fp; + struct proc *p; + struct thread *td; + struct sigacts *psp; + struct trapframe *regs; + int sig; + int oonstack; + + td =3D curthread; + p =3D td->td_proc; + PROC_LOCK_ASSERT(p, MA_OWNED); + sig =3D ksi->ksi_signo; + psp =3D p->p_sigacts; + mtx_assert(&psp->ps_mtx, MA_OWNED); + regs =3D td->td_frame; + oonstack =3D sigonstack(regs->tf_rsp); + + /* Allocate space for the signal handler context. */ + if ((td->td_pflags & TDP_ALTSTACK) && !oonstack && + SIGISMEMBER(psp->ps_sigonstack, sig)) { + fp =3D (struct ia32_sigframe3 *)(td->td_sigstk.ss_sp + + td->td_sigstk.ss_size - sizeof(sf)); + td->td_sigstk.ss_flags |=3D SS_ONSTACK; + } else + fp =3D (struct ia32_sigframe3 *)regs->tf_rsp - 1; + + /* Translate the signal if appropriate. */ + if (p->p_sysent->sv_sigtbl && sig <=3D p->p_sysent->sv_sigsize) + sig =3D p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; + + /* Build the argument list for the signal handler. */ + sf.sf_signum =3D sig; + sf.sf_scp =3D (register_t)&fp->sf_siginfo.si_sc; + if (SIGISMEMBER(psp->ps_siginfo, sig)) { + /* Signal handler installed with SA_SIGINFO. */ + sf.sf_arg2 =3D (register_t)&fp->sf_siginfo; + sf.sf_siginfo.si_signo =3D sig; + sf.sf_siginfo.si_code =3D ksi->ksi_code; + sf.sf_ah =3D (uintptr_t)catcher; + } else { + /* Old FreeBSD-style arguments. */ + sf.sf_arg2 =3D ksi->ksi_code; + sf.sf_addr =3D (register_t)ksi->ksi_addr; + sf.sf_ah =3D (uintptr_t)catcher; + } + mtx_unlock(&psp->ps_mtx); + PROC_UNLOCK(p); + + /* Save most if not all of trap frame. */ + sf.sf_siginfo.si_sc.sc_eax =3D regs->tf_rax; + sf.sf_siginfo.si_sc.sc_ebx =3D regs->tf_rbx; + sf.sf_siginfo.si_sc.sc_ecx =3D regs->tf_rcx; + sf.sf_siginfo.si_sc.sc_edx =3D regs->tf_rdx; + sf.sf_siginfo.si_sc.sc_esi =3D regs->tf_rsi; + sf.sf_siginfo.si_sc.sc_edi =3D regs->tf_rdi; + sf.sf_siginfo.si_sc.sc_cs =3D regs->tf_cs; + sf.sf_siginfo.si_sc.sc_ds =3D regs->tf_ds; + sf.sf_siginfo.si_sc.sc_ss =3D regs->tf_ss; + sf.sf_siginfo.si_sc.sc_es =3D regs->tf_es; + sf.sf_siginfo.si_sc.sc_fs =3D regs->tf_fs; + sf.sf_siginfo.si_sc.sc_gs =3D regs->tf_gs; + sf.sf_siginfo.si_sc.sc_isp =3D regs->tf_rsp; + + /* Build the signal context to be used by osigreturn(). */ + sf.sf_siginfo.si_sc.sc_onstack =3D (oonstack) ? 1 : 0; + SIG2OSIG(*mask, sf.sf_siginfo.si_sc.sc_mask); + sf.sf_siginfo.si_sc.sc_esp =3D regs->tf_rsp; + sf.sf_siginfo.si_sc.sc_ebp =3D regs->tf_rbp; + sf.sf_siginfo.si_sc.sc_eip =3D regs->tf_rip; + sf.sf_siginfo.si_sc.sc_eflags =3D regs->tf_rflags; + sf.sf_siginfo.si_sc.sc_trapno =3D regs->tf_trapno; + sf.sf_siginfo.si_sc.sc_err =3D regs->tf_err; + + /* + * Copy the sigframe out to the user's stack. + */ + if (copyout(&sf, fp, sizeof(*fp)) !=3D 0) { +#ifdef DEBUG + printf("process %ld has trashed its stack\n", (long)p->p_pid); +#endif + PROC_LOCK(p); + sigexit(td, SIGILL); + } + + regs->tf_rsp =3D (uintptr_t)fp; + regs->tf_rip =3D p->p_sysent->sv_psstrings - sz_ia32_osigcode; + regs->tf_rflags &=3D ~(PSL_T | PSL_D); + regs->tf_cs =3D _ucode32sel; + regs->tf_ds =3D _udatasel; + regs->tf_es =3D _udatasel; + regs->tf_fs =3D _udatasel; + regs->tf_ss =3D _udatasel; + td->td_pcb->pcb_full_iret =3D 1; + PROC_LOCK(p); + mtx_lock(&psp->ps_mtx); +} +#endif + #ifdef COMPAT_FREEBSD4 static void freebsd4_ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) @@ -391,7 +494,7 @@ freebsd4_ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, s= igset_t *mask) } =20 regs->tf_rsp =3D (uintptr_t)sfp; - regs->tf_rip =3D FREEBSD32_PS_STRINGS - sz_freebsd4_ia32_sigcode; + regs->tf_rip =3D p->p_sysent->sv_psstrings - sz_freebsd4_ia32_sigcode; regs->tf_rflags &=3D ~(PSL_T | PSL_D); regs->tf_cs =3D _ucode32sel; regs->tf_ss =3D _udatasel; @@ -429,6 +532,12 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t = *mask) return; } #endif +#ifdef COMPAT_43 + if (SIGISMEMBER(psp->ps_osigset, sig)) { + ia32_osendsig(catcher, ksi, mask); + return; + } +#endif mtx_assert(&psp->ps_mtx, MA_OWNED); regs =3D td->td_frame; oonstack =3D sigonstack(regs->tf_rsp); @@ -512,7 +621,7 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *= mask) } =20 regs->tf_rsp =3D (uintptr_t)sfp; - regs->tf_rip =3D FREEBSD32_PS_STRINGS - *(p->p_sysent->sv_szsigcode); + regs->tf_rip =3D p->p_sysent->sv_psstrings - *(p->p_sysent->sv_szsigcode); regs->tf_rflags &=3D ~(PSL_T | PSL_D); regs->tf_cs =3D _ucode32sel; regs->tf_ss =3D _udatasel; @@ -533,6 +642,64 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t = *mask) * make sure that the user has not modified the * state to gain improper privileges. */ + +#ifdef COMPAT_43 +int +ofreebsd32_sigreturn(struct thread *td, struct ofreebsd32_sigreturn_args *= uap) +{ + struct ia32_sigcontext3 sc, *scp; + struct trapframe *regs; + int eflags, error; + ksiginfo_t ksi; + + regs =3D td->td_frame; + error =3D copyin(uap->sigcntxp, &sc, sizeof(sc)); + if (error !=3D 0) + return (error); + scp =3D ≻ + eflags =3D scp->sc_eflags; + if (!EFL_SECURE(eflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) { + return (EINVAL); + } + if (!CS_SECURE(scp->sc_cs)) { + ksiginfo_init_trap(&ksi); + ksi.ksi_signo =3D SIGBUS; + ksi.ksi_code =3D BUS_OBJERR; + ksi.ksi_trapno =3D T_PROTFLT; + ksi.ksi_addr =3D (void *)regs->tf_rip; + trapsignal(td, &ksi); + return (EINVAL); + } + regs->tf_ds =3D scp->sc_ds; + regs->tf_es =3D scp->sc_es; + regs->tf_fs =3D scp->sc_fs; + regs->tf_gs =3D scp->sc_gs; + + regs->tf_rax =3D scp->sc_eax; + regs->tf_rbx =3D scp->sc_ebx; + regs->tf_rcx =3D scp->sc_ecx; + regs->tf_rdx =3D scp->sc_edx; + regs->tf_rsi =3D scp->sc_esi; + regs->tf_rdi =3D scp->sc_edi; + regs->tf_cs =3D scp->sc_cs; + regs->tf_ss =3D scp->sc_ss; + regs->tf_rbp =3D scp->sc_ebp; + regs->tf_rsp =3D scp->sc_esp; + regs->tf_rip =3D scp->sc_eip; + regs->tf_rflags =3D eflags; + + if (scp->sc_onstack & 1) + td->td_sigstk.ss_flags |=3D SS_ONSTACK; + else + td->td_sigstk.ss_flags &=3D ~SS_ONSTACK; + + kern_sigprocmask(td, SIG_SETMASK, (sigset_t *)&scp->sc_mask, NULL, + SIGPROCMASK_OLD); + td->td_pcb->pcb_full_iret =3D 1; + return (EJUSTRETURN); +} +#endif + #ifdef COMPAT_FREEBSD4 /* * MPSAFE @@ -720,6 +887,9 @@ ia32_setregs(struct thread *td, struct image_params *im= gp, u_long stack) user_ldt_free(td); else mtx_unlock(&dt_lock); +#ifdef COMPAT_43 + setup_lcall_gate(); +#endif =20 pcb->pcb_fsbase =3D 0; pcb->pcb_gsbase =3D 0; diff --git a/sys/amd64/ia32/ia32_sigtramp.S b/sys/amd64/ia32/ia32_sigtramp.S index 9455169..7d64470 100644 --- a/sys/amd64/ia32/ia32_sigtramp.S +++ b/sys/amd64/ia32/ia32_sigtramp.S @@ -66,6 +66,35 @@ freebsd4_ia32_sigcode: jmp 1b #endif =20 +#ifdef COMPAT_43 + ALIGN_TEXT +ia32_osigcode: + calll *IA32_SIGF_HANDLER(%esp)/* call signal handler */ + leal IA32_SIGF_SC(%esp),%eax /* get sigcontext */ + pushl %eax + movl $103,%eax /* 3.x SYS_sigreturn */ + pushl %eax /* junk to fake return addr. */ + int $0x80 /* enter kernel with args */ +1: + jmp 1b + + + ALIGN_TEXT +lcall_tramp: + pushl %ebp + movl %esp,%ebp + pushl 0x24(%ebp) /* arg 6 */ + pushl 0x20(%ebp) + pushl 0x1c(%ebp) + pushl 0x18(%ebp) + pushl 0x14(%ebp) + pushl 0x10(%ebp) /* arg 1 */ + pushl 0xc(%ebp) /* gap */ + int $0x80 + leave + lretl +#endif + ALIGN_TEXT esigcode: =20 @@ -78,3 +107,11 @@ sz_ia32_sigcode: sz_freebsd4_ia32_sigcode: .long esigcode-freebsd4_ia32_sigcode #endif +#ifdef COMPAT_43 + .globl sz_ia32_osigcode +sz_ia32_osigcode: + .long esigcode-ia32_osigcode + .globl sz_lcall_tramp +sz_lcall_tramp: + .long esigcode-lcall_tramp +#endif diff --git a/sys/amd64/ia32/ia32_syscall.c b/sys/amd64/ia32/ia32_syscall.c index 6a649ae..0fd9016 100644 --- a/sys/amd64/ia32/ia32_syscall.c +++ b/sys/amd64/ia32/ia32_syscall.c @@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$"); */ =20 #include "opt_clock.h" +#include "opt_compat.h" #include "opt_cpu.h" #include "opt_isa.h" #include "opt_ktrace.h" @@ -82,7 +83,17 @@ __FBSDID("$FreeBSD$"); #include #include =20 +#include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include =20 #define IDTVEC(name) __CONCAT(X,name) =20 @@ -202,3 +213,45 @@ ia32_syscall_disable(void *dummy) =20 SYSINIT(ia32_syscall, SI_SUB_EXEC, SI_ORDER_ANY, ia32_syscall_enable, NULL= ); SYSUNINIT(ia32_syscall, SI_SUB_EXEC, SI_ORDER_ANY, ia32_syscall_disable, N= ULL); + +#ifdef COMPAT_43 +int +setup_lcall_gate(void) +{ + struct i386_ldt_args uap; + struct user_segment_descriptor descs[2]; + struct gate_descriptor *ssd; + uint32_t lcall_addr; + int error; + + bzero(&uap, sizeof(uap)); + uap.start =3D 0; + uap.num =3D 2; + + /* + * This is the easiest way to cut the space for system + * descriptor in ldt. Manually adjust the descriptor type to + * the call gate later. + */ + bzero(&descs[0], sizeof(descs)); + descs[0].sd_type =3D SDT_SYSNULL; + descs[1].sd_type =3D SDT_SYSNULL; + error =3D amd64_set_ldt(curthread, &uap, descs); + if (error !=3D 0) + return (error); + + lcall_addr =3D curproc->p_sysent->sv_psstrings - sz_lcall_tramp; + mtx_lock(&dt_lock); + ssd =3D (struct gate_descriptor *)(curproc->p_md.md_ldt->ldt_base); + bzero(ssd, sizeof(*ssd)); + ssd->gd_looffset =3D lcall_addr; + ssd->gd_hioffset =3D lcall_addr >> 16; + ssd->gd_selector =3D _ucode32sel; + ssd->gd_type =3D SDT_SYSCGT; + ssd->gd_dpl =3D SEL_UPL; + ssd->gd_p =3D 1; + mtx_unlock(&dt_lock); + + return (0); +} +#endif diff --git a/sys/compat/freebsd32/freebsd32.h b/sys/compat/freebsd32/freebs= d32.h index aad550e..eebaae6 100644 --- a/sys/compat/freebsd32/freebsd32.h +++ b/sys/compat/freebsd32/freebsd32.h @@ -157,6 +157,24 @@ struct stat32 { unsigned int :(8 / 2) * (16 - (int)sizeof(struct timespec32)); }; =20 +struct ostat32 { + __uint16_t st_dev; + ino_t st_ino; + mode_t st_mode; + nlink_t st_nlink; + __uint16_t st_uid; + __uint16_t st_gid; + __uint16_t st_rdev; + __int32_t st_size; + struct timespec32 st_atim; + struct timespec32 st_mtim; + struct timespec32 st_ctim; + __int32_t st_blksize; + __int32_t st_blocks; + u_int32_t st_flags; + __uint32_t st_gen; +}; + struct jail32_v0 { u_int32_t version; uint32_t path; diff --git a/sys/compat/freebsd32/freebsd32_misc.c b/sys/compat/freebsd32/f= reebsd32_misc.c index 3dfed77..c1bcc30 100644 --- a/sys/compat/freebsd32/freebsd32_misc.c +++ b/sys/compat/freebsd32/freebsd32_misc.c @@ -1451,6 +1451,29 @@ freebsd32_ftruncate(struct thread *td, struct freebs= d32_ftruncate_args *uap) return (ftruncate(td, &ap)); } =20 +#ifdef COMPAT_43 +int +ofreebsd32_getdirentries(struct thread *td, + struct ofreebsd32_getdirentries_args *uap) +{ + struct ogetdirentries_args ap; + int error; + long loff; + int32_t loff_cut; + + ap.fd =3D uap->fd; + ap.buf =3D uap->buf; + ap.count =3D uap->count; + ap.basep =3D NULL; + error =3D kern_ogetdirentries(td, &ap, &loff); + if (error =3D=3D 0) { + loff_cut =3D loff; + error =3D copyout(&loff_cut, uap->basep, sizeof(int32_t)); + } + return (error); +} +#endif + int freebsd32_getdirentries(struct thread *td, struct freebsd32_getdirentries_args *uap) @@ -1614,8 +1637,9 @@ freebsd32_sendfile(struct thread *td, struct freebsd3= 2_sendfile_args *uap) } =20 static void -copy_stat( struct stat *in, struct stat32 *out) +copy_stat(struct stat *in, struct stat32 *out) { + CP(*in, *out, st_dev); CP(*in, *out, st_ino); CP(*in, *out, st_mode); @@ -1631,8 +1655,32 @@ copy_stat( struct stat *in, struct stat32 *out) CP(*in, *out, st_blksize); CP(*in, *out, st_flags); CP(*in, *out, st_gen); + TS_CP(*in, *out, st_birthtim); } =20 +#ifdef COMPAT_43 +static void +copy_ostat(struct stat *in, struct ostat32 *out) +{ + + CP(*in, *out, st_dev); + CP(*in, *out, st_ino); + CP(*in, *out, st_mode); + CP(*in, *out, st_nlink); + CP(*in, *out, st_uid); + CP(*in, *out, st_gid); + CP(*in, *out, st_rdev); + CP(*in, *out, st_size); + TS_CP(*in, *out, st_atim); + TS_CP(*in, *out, st_mtim); + TS_CP(*in, *out, st_ctim); + CP(*in, *out, st_blksize); + CP(*in, *out, st_blocks); + CP(*in, *out, st_flags); + CP(*in, *out, st_gen); +} +#endif + int freebsd32_stat(struct thread *td, struct freebsd32_stat_args *uap) { @@ -1648,6 +1696,23 @@ freebsd32_stat(struct thread *td, struct freebsd32_s= tat_args *uap) return (error); } =20 +#ifdef COMPAT_43 +int +ofreebsd32_stat(struct thread *td, struct ofreebsd32_stat_args *uap) +{ + struct stat sb; + struct ostat32 sb32; + int error; + + error =3D kern_stat(td, uap->path, UIO_USERSPACE, &sb); + if (error) + return (error); + copy_ostat(&sb, &sb32); + error =3D copyout(&sb32, uap->ub, sizeof (sb32)); + return (error); +} +#endif + int freebsd32_fstat(struct thread *td, struct freebsd32_fstat_args *uap) { @@ -1663,6 +1728,23 @@ freebsd32_fstat(struct thread *td, struct freebsd32_= fstat_args *uap) return (error); } =20 +#ifdef COMPAT_43 +int +ofreebsd32_fstat(struct thread *td, struct ofreebsd32_fstat_args *uap) +{ + struct stat ub; + struct ostat32 ub32; + int error; + + error =3D kern_fstat(td, uap->fd, &ub); + if (error) + return (error); + copy_ostat(&ub, &ub32); + error =3D copyout(&ub32, uap->ub, sizeof(ub32)); + return (error); +} +#endif + int freebsd32_fstatat(struct thread *td, struct freebsd32_fstatat_args *uap) { @@ -1693,9 +1775,23 @@ freebsd32_lstat(struct thread *td, struct freebsd32_= lstat_args *uap) return (error); } =20 -/* - * MPSAFE - */ +#ifdef COMPAT_43 +int +ofreebsd32_lstat(struct thread *td, struct ofreebsd32_lstat_args *uap) +{ + struct stat sb; + struct ostat32 sb32; + int error; + + error =3D kern_lstat(td, uap->path, UIO_USERSPACE, &sb); + if (error) + return (error); + copy_ostat(&sb, &sb32); + error =3D copyout(&sb32, uap->ub, sizeof (sb32)); + return (error); +} +#endif + int freebsd32_sysctl(struct thread *td, struct freebsd32_sysctl_args *uap) { @@ -2537,7 +2633,8 @@ freebsd32_copyout_strings(struct image_params *imgp) execpath_len =3D strlen(imgp->execpath) + 1; else execpath_len =3D 0; - arginfo =3D (struct freebsd32_ps_strings *)FREEBSD32_PS_STRINGS; + arginfo =3D (struct freebsd32_ps_strings *)curproc->p_sysent-> + sv_psstrings; szsigcode =3D *(imgp->proc->p_sysent->sv_szsigcode); destp =3D (caddr_t)arginfo - szsigcode - SPARE_USRSPACE - roundup(execpath_len, sizeof(char *)) - @@ -2636,4 +2733,3 @@ freebsd32_copyout_strings(struct image_params *imgp) =20 return ((register_t *)stack_base); } - diff --git a/sys/compat/freebsd32/syscalls.master b/sys/compat/freebsd32/sy= scalls.master index 4f1fc28..1457a4f 100644 --- a/sys/compat/freebsd32/syscalls.master +++ b/sys/compat/freebsd32/syscalls.master @@ -117,9 +117,11 @@ 35 AUE_FCHFLAGS NOPROTO { int fchflags(int fd, int flags); } 36 AUE_SYNC NOPROTO { int sync(void); } 37 AUE_KILL NOPROTO { int kill(int pid, int signum); } -38 AUE_STAT UNIMPL ostat +38 AUE_STAT COMPAT { int freebsd32_stat(char *path, \ + struct ostat *ub); } 39 AUE_GETPPID NOPROTO { pid_t getppid(void); } -40 AUE_LSTAT UNIMPL olstat +40 AUE_LSTAT COMPAT { int freebsd32_lstat(char *path, \ + struct ostat *ub); } 41 AUE_DUP NOPROTO { int dup(u_int fd); } 42 AUE_PIPE NOPROTO { int pipe(void); } 43 AUE_GETEGID NOPROTO { gid_t getegid(void); } @@ -153,9 +155,11 @@ 60 AUE_UMASK NOPROTO { int umask(int newmask); } umask \ umask_args int 61 AUE_CHROOT NOPROTO { int chroot(char *path); } -62 AUE_FSTAT OBSOL ofstat +62 AUE_FSTAT COMPAT { int freebsd32_fstat(int fd, \ + struct ostat *ub); } 63 AUE_NULL OBSOL ogetkerninfo -64 AUE_NULL OBSOL ogetpagesize +64 AUE_NULL COMPAT|NOPROTO { int getpagesize(void); } getpagesize \ + getpagesize_args int 65 AUE_MSYNC NOPROTO { int msync(void *addr, size_t len, \ int flags); } 66 AUE_VFORK NOPROTO { int vfork(void); } @@ -210,7 +214,8 @@ 100 AUE_GETPRIORITY NOPROTO { int getpriority(int which, int who); } 101 AUE_NULL OBSOL osend 102 AUE_NULL OBSOL orecv -103 AUE_NULL OBSOL osigreturn +103 AUE_NULL COMPAT { int freebsd32_sigreturn( \ + struct ia32_sigcontext3 *sigcntxp); } 104 AUE_BIND NOPROTO { int bind(int s, caddr_t name, \ int namelen); } 105 AUE_SETSOCKOPT NOPROTO { int setsockopt(int s, int level, \ @@ -292,7 +297,8 @@ ; 155 is initialized by the NFS code, if present. ; XXX this is a problem!!! 155 AUE_NFS_SVC UNIMPL nfssvc -156 AUE_GETDIRENTRIES OBSOL ogetdirentries +156 AUE_GETDIRENTRIES COMPAT { int freebsd32_getdirentries(int fd, \ + char *buf, u_int count, uint32_t *basep); } 157 AUE_STATFS COMPAT4 { int freebsd32_statfs(char *path, \ struct statfs32 *buf); } 158 AUE_FSTATFS COMPAT4 { int freebsd32_fstatfs(int fd, \ diff --git a/sys/compat/ia32/ia32_genassym.c b/sys/compat/ia32/ia32_genassy= m.c index 84fb648..5462a8b 100644 --- a/sys/compat/ia32/ia32_genassym.c +++ b/sys/compat/ia32/ia32_genassym.c @@ -13,6 +13,9 @@ __FBSDID("$FreeBSD$"); =20 ASSYM(IA32_SIGF_HANDLER, offsetof(struct ia32_sigframe, sf_ah)); ASSYM(IA32_SIGF_UC, offsetof(struct ia32_sigframe, sf_uc)); +#ifdef COMPAT_43 +ASSYM(IA32_SIGF_SC, offsetof(struct ia32_sigframe3, sf_siginfo.si_sc)); +#endif ASSYM(IA32_UC_GS, offsetof(struct ia32_ucontext, uc_mcontext.mc_gs)); ASSYM(IA32_UC_FS, offsetof(struct ia32_ucontext, uc_mcontext.mc_fs)); ASSYM(IA32_UC_ES, offsetof(struct ia32_ucontext, uc_mcontext.mc_es)); diff --git a/sys/compat/ia32/ia32_signal.h b/sys/compat/ia32/ia32_signal.h index 717ae74..e282a9b 100644 --- a/sys/compat/ia32/ia32_signal.h +++ b/sys/compat/ia32/ia32_signal.h @@ -109,7 +109,7 @@ struct ia32_ucontext4 { }; #endif =20 -#ifdef COMPAT_FREEBSD3 +#ifdef COMPAT_43 struct ia32_sigcontext3 { u_int32_t sc_onstack; u_int32_t sc_mask; @@ -162,7 +162,7 @@ struct ia32_sigframe { struct siginfo32 sf_si; /* =3D *sf_siginfo (SA_SIGINFO case) */ }; =20 -#ifdef COMPAT_FREEBSD3 +#ifdef COMPAT_43 struct ia32_siginfo3 { struct ia32_sigcontext3 si_sc; int si_signo; @@ -183,8 +183,13 @@ struct ksiginfo; struct image_params; extern char ia32_sigcode[]; extern char freebsd4_ia32_sigcode[]; +extern char ia32_osigcode[]; +extern char lcall_tramp; extern int sz_ia32_sigcode; extern int sz_freebsd4_ia32_sigcode; -extern void ia32_sendsig(sig_t, struct ksiginfo *, sigset_t *); -extern void ia32_setregs(struct thread *td, struct image_params *imgp, +extern int sz_ia32_osigcode; +extern int sz_lcall_tramp; +void ia32_sendsig(sig_t, struct ksiginfo *, sigset_t *); +void ia32_setregs(struct thread *td, struct image_params *imgp, u_long stack); +int setup_lcall_gate(void); diff --git a/sys/compat/ia32/ia32_sysvec.c b/sys/compat/ia32/ia32_sysvec.c index d7ac5d0..36a4927 100644 --- a/sys/compat/ia32/ia32_sysvec.c +++ b/sys/compat/ia32/ia32_sysvec.c @@ -95,14 +95,12 @@ CTASSERT(sizeof(struct ia32_sigframe4) =3D=3D 408); =20 extern const char *freebsd32_syscallnames[]; =20 -static void ia32_fixlimit(struct rlimit *rl, int which); - SYSCTL_NODE(_compat, OID_AUTO, ia32, CTLFLAG_RW, 0, "ia32 mode"); =20 static u_long ia32_maxdsiz =3D IA32_MAXDSIZ; SYSCTL_ULONG(_compat_ia32, OID_AUTO, maxdsiz, CTLFLAG_RW, &ia32_maxdsiz, 0= , ""); TUNABLE_ULONG("compat.ia32.maxdsiz", &ia32_maxdsiz); -static u_long ia32_maxssiz =3D IA32_MAXSSIZ; +u_long ia32_maxssiz =3D IA32_MAXSSIZ; SYSCTL_ULONG(_compat_ia32, OID_AUTO, maxssiz, CTLFLAG_RW, &ia32_maxssiz, 0= , ""); TUNABLE_ULONG("compat.ia32.maxssiz", &ia32_maxssiz); static u_long ia32_maxvmem =3D IA32_MAXVMEM; @@ -198,7 +196,7 @@ elf32_dump_thread(struct thread *td __unused, void *dst= __unused, { } =20 -static void +void ia32_fixlimit(struct rlimit *rl, int which) { =20 diff --git a/sys/compat/ia32/ia32_util.h b/sys/compat/ia32/ia32_util.h index d91bfde..f5b1412 100644 --- a/sys/compat/ia32/ia32_util.h +++ b/sys/compat/ia32/ia32_util.h @@ -51,3 +51,4 @@ struct syscall_args; int ia32_fetch_syscall_args(struct thread *td, struct syscall_args *sa); void ia32_set_syscall_retval(struct thread *, int); +void ia32_fixlimit(struct rlimit *rl, int which); diff --git a/sys/conf/options b/sys/conf/options index 9563cc8..d81edb4 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -66,6 +66,7 @@ AUDIT opt_global.h CODA_COMPAT_5 opt_coda.h COMPAT_43 opt_compat.h COMPAT_43TTY opt_compat.h +COMPAT_FREEBSD3 opt_compat.h COMPAT_FREEBSD4 opt_compat.h COMPAT_FREEBSD5 opt_compat.h COMPAT_FREEBSD6 opt_compat.h diff --git a/sys/kern/imgact_aout.c b/sys/kern/imgact_aout.c index 6710135..42745e0 100644 --- a/sys/kern/imgact_aout.c +++ b/sys/kern/imgact_aout.c @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -52,9 +53,18 @@ __FBSDID("$FreeBSD$"); #include #include =20 +#ifdef __amd64__ +#include +#include +#include +#include +#include +#endif + static int exec_aout_imgact(struct image_params *imgp); static int aout_fixup(register_t **stack_base, struct image_params *imgp); =20 +#if defined(__i386__) struct sysentvec aout_sysvec =3D { .sv_size =3D SYS_MAXSYSCALL, .sv_table =3D sysent, @@ -83,30 +93,68 @@ struct sysentvec aout_sysvec =3D { .sv_setregs =3D exec_setregs, .sv_fixlimit =3D NULL, .sv_maxssiz =3D NULL, - .sv_flags =3D SV_ABI_FREEBSD | SV_AOUT | -#if defined(__i386__) - SV_IA32 | SV_ILP32 -#else -#error Choose SV_XXX flags for the platform -#endif - , + .sv_flags =3D SV_ABI_FREEBSD | SV_AOUT | SV_IA32 | SV_ILP32, .sv_set_syscall_retval =3D cpu_set_syscall_retval, .sv_fetch_syscall_args =3D cpu_fetch_syscall_args, .sv_syscallnames =3D syscallnames, }; =20 +#elif defined(__amd64__) + +#define AOUT32_USRSTACK 0xbfc0000 +#define AOUT32_PS_STRINGS \ + (AOUT32_USRSTACK - sizeof(struct freebsd32_ps_strings)) + +extern const char *freebsd32_syscallnames[]; +extern u_long ia32_maxssiz; + +struct sysentvec aout_sysvec =3D { + .sv_size =3D FREEBSD32_SYS_MAXSYSCALL, + .sv_table =3D freebsd32_sysent, + .sv_mask =3D 0, + .sv_sigsize =3D 0, + .sv_sigtbl =3D NULL, + .sv_errsize =3D 0, + .sv_errtbl =3D NULL, + .sv_transtrap =3D NULL, + .sv_fixup =3D aout_fixup, + .sv_sendsig =3D ia32_sendsig, + .sv_sigcode =3D ia32_sigcode, + .sv_szsigcode =3D &sz_ia32_sigcode, + .sv_prepsyscall =3D NULL, + .sv_name =3D "FreeBSD a.out", + .sv_coredump =3D NULL, + .sv_imgact_try =3D NULL, + .sv_minsigstksz =3D MINSIGSTKSZ, + .sv_pagesize =3D IA32_PAGE_SIZE, + .sv_minuser =3D 0, + .sv_maxuser =3D AOUT32_USRSTACK, + .sv_usrstack =3D AOUT32_USRSTACK, + .sv_psstrings =3D AOUT32_PS_STRINGS, + .sv_stackprot =3D VM_PROT_ALL, + .sv_copyout_strings =3D freebsd32_copyout_strings, + .sv_setregs =3D ia32_setregs, + .sv_fixlimit =3D ia32_fixlimit, + .sv_maxssiz =3D &ia32_maxssiz, + .sv_flags =3D SV_ABI_FREEBSD | SV_AOUT | SV_IA32 | SV_ILP32, + .sv_set_syscall_retval =3D ia32_set_syscall_retval, + .sv_fetch_syscall_args =3D ia32_fetch_syscall_args, + .sv_syscallnames =3D freebsd32_syscallnames, +}; +#else +#error "Port me" +#endif + static int -aout_fixup(stack_base, imgp) - register_t **stack_base; - struct image_params *imgp; +aout_fixup(register_t **stack_base, struct image_params *imgp) { =20 - return (suword(--(*stack_base), imgp->args->argc)); + *(char **)stack_base -=3D sizeof(uint32_t); + return (suword(*stack_base, imgp->args->argc)); } =20 static int -exec_aout_imgact(imgp) - struct image_params *imgp; +exec_aout_imgact(struct image_params *imgp) { const struct exec *a_out =3D (const struct exec *) imgp->image_header; struct vmspace *vmspace; @@ -174,7 +222,14 @@ exec_aout_imgact(imgp) a_out->a_entry >=3D virtual_offset + a_out->a_text || =20 /* text and data size must each be page rounded */ - a_out->a_text & PAGE_MASK || a_out->a_data & PAGE_MASK) + a_out->a_text & PAGE_MASK || a_out->a_data & PAGE_MASK + +#ifdef __amd64__ + || + /* overflows */ + virtual_offset + a_out->a_text + a_out->a_data + bss_size > UINT_MAX +#endif + ) return (-1); =20 /* text + data can't exceed file size */ diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 4fd9dfa..068a966 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -3898,14 +3898,20 @@ struct ogetdirentries_args { }; #endif int -ogetdirentries(td, uap) - struct thread *td; - register struct ogetdirentries_args /* { - int fd; - char *buf; - u_int count; - long *basep; - } */ *uap; +ogetdirentries(struct thread *td, struct ogetdirentries_args *uap) +{ + long loff; + int error; + + error =3D kern_ogetdirentries(td, uap, &loff); + if (error =3D=3D 0) + error =3D copyout(&loff, uap->basep, sizeof(long)); + return (error); +} + +int +kern_ogetdirentries(struct thread *td, struct ogetdirentries_args *uap, + long *ploff) { struct vnode *vp; struct file *fp; @@ -4024,9 +4030,10 @@ unionread: } VOP_UNLOCK(vp, 0); VFS_UNLOCK_GIANT(vfslocked); - error =3D copyout(&loff, uap->basep, sizeof(long)); fdrop(fp, td); td->td_retval[0] =3D uap->count - auio.uio_resid; + if (error =3D=3D 0) + *ploff =3D loff; return (error); } #endif /* COMPAT_43 */ diff --git a/sys/modules/Makefile b/sys/modules/Makefile index d033a34..d1e389b 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -498,6 +498,7 @@ _snc=3D snc =20 .if ${MACHINE_ARCH} =3D=3D "amd64" _aac=3D aac +_aout=3D aout _acpi=3D acpi .if ${MK_CRYPT} !=3D "no" || defined(ALL_MODULES) _aesni=3D aesni diff --git a/sys/sys/syscallsubr.h b/sys/sys/syscallsubr.h index 7524cf5..d1da39b 100644 --- a/sys/sys/syscallsubr.h +++ b/sys/sys/syscallsubr.h @@ -51,6 +51,7 @@ struct kevent_copyops; struct ksiginfo; struct sendfile_args; struct thr_param; +struct ogetdirentries_args; =20 int kern___getcwd(struct thread *td, u_char *buf, enum uio_seg bufseg, u_int buflen); @@ -141,6 +142,8 @@ int kern_msgsnd(struct thread *, int, const void *, siz= e_t, int, long); int kern_msgrcv(struct thread *, int, void *, size_t, long, int, long *); int kern_nanosleep(struct thread *td, struct timespec *rqt, struct timespec *rmt); +int kern_ogetdirentries(struct thread *td, struct ogetdirentries_args *uap, + long *ploff); int kern_open(struct thread *td, char *path, enum uio_seg pathseg, int flags, int mode); int kern_openat(struct thread *td, int fd, char *path, --Q43QQdzFtqSKgsg+ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkxQT+gACgkQC3+MBN1Mb4j+BgCgwrAihFcjZoEKYDFalf74FyC6 ikkAnRcdk1OsqfAZ0XPi3WooJm49vKip =GTgq -----END PGP SIGNATURE----- --Q43QQdzFtqSKgsg+-- From owner-freebsd-amd64@FreeBSD.ORG Wed Jul 28 15:40:02 2010 Return-Path: Delivered-To: freebsd-amd64@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 56EBD106566B for ; Wed, 28 Jul 2010 15:40:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 1A9DC8FC0A for ; Wed, 28 Jul 2010 15:40:02 +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 o6SFe1i9044370 for ; Wed, 28 Jul 2010 15:40:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o6SFe1aQ044369; Wed, 28 Jul 2010 15:40:01 GMT (envelope-from gnats) Resent-Date: Wed, 28 Jul 2010 15:40:01 GMT Resent-Message-Id: <201007281540.o6SFe1aQ044369@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-amd64@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Jeff Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DD2411065670 for ; Wed, 28 Jul 2010 15:39:46 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id CC9DD8FC08 for ; Wed, 28 Jul 2010 15:39:46 +0000 (UTC) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.3/8.14.3) with ESMTP id o6SFdk7I099693 for ; Wed, 28 Jul 2010 15:39:46 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.3/8.14.3/Submit) id o6SFdk5R099674; Wed, 28 Jul 2010 15:39:46 GMT (envelope-from nobody) Message-Id: <201007281539.o6SFdk5R099674@www.freebsd.org> Date: Wed, 28 Jul 2010 15:39:46 GMT From: Jeff To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 X-Mailman-Approved-At: Wed, 28 Jul 2010 15:44:38 +0000 Cc: Subject: amd64/149038: Upgrading to 8.1 causes kernel panic when removing file: linux-f10-atk-1.240 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 15:40:02 -0000 >Number: 149038 >Category: amd64 >Synopsis: Upgrading to 8.1 causes kernel panic when removing file: linux-f10-atk-1.240 >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-amd64 >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jul 28 15:40:01 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Jeff >Release: 8.1 >Organization: >Environment: n/a >Description: I was upgrading PCBSD-8.0 to 8.1 (FREEBSD 8.1) and when the installer was uninstalling the file: linux-f10-atk-1.240, it hung for 10 seconds and then rebooted, consistently many times in a row. Gave up upgrading and started install from scratch. Another user reported the exact same problem. ---------------------------- Fatal trap 9: general protection fault while in kernel mode. cpuid = 0; apic id = 00 instruction pointer = 0x20:0xffffffff82e395a3 stack pointer = 0x28:0xffffff80b163a7d0 frame pointer = 0x28:0xffffff80b163a810 code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 6687 (ldfonfig) trap number = 9 panic: general protection fault cpuid = 0 Uptime: 8m4s Cannot dump. Device not defined or unavailable. >How-To-Repeat: With PCBSD-8.0 installed, upgrade to version 8.1 Doesn't happen to everyone. >Fix: >Release-Note: >Audit-Trail: >Unformatted: From owner-freebsd-amd64@FreeBSD.ORG Wed Jul 28 16:25:15 2010 Return-Path: Delivered-To: freebsd-amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 71E67106566B for ; Wed, 28 Jul 2010 16:25:15 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail09.syd.optusnet.com.au (mail09.syd.optusnet.com.au [211.29.132.190]) by mx1.freebsd.org (Postfix) with ESMTP id 0F7DA8FC23 for ; Wed, 28 Jul 2010 16:25:14 +0000 (UTC) Received: from c122-106-147-41.carlnfd1.nsw.optusnet.com.au (c122-106-147-41.carlnfd1.nsw.optusnet.com.au [122.106.147.41]) by mail09.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o6SGP7cF013182 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 29 Jul 2010 02:25:09 +1000 Date: Thu, 29 Jul 2010 02:25:07 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Tijl Coosemans In-Reply-To: <201007281640.51097.tijl@coosemans.org> Message-ID: <20100729012909.M957@delplex.bde.org> References: <201007281640.51097.tijl@coosemans.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-amd64@freebsd.org Subject: Re: sys/boot includes amd64 headers X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 16:25:15 -0000 On Wed, 28 Jul 2010, Tijl Coosemans wrote: > While working on cc -m32 support I added the following to all headers > in sys/amd64/include to make sure none of my changes have an effect on > building world+kernel: > > #ifndef __x86_64__ > #error bla > #endif > > This exposed some problems in sys/boot. The Makefiles there create a > symlink .OBJDIR/machine -> sys/i386/includes and add -I. to the CFLAGS > such that including includes the i386 header. > > The problem is that is also included and is a symlink in > WORLDTMP/usr/include to the machine/stdarg.h there, which is for amd64. > There should be a symlink .OBJDIR/stdarg.h -> machine/stdarg.h to fix > this. No, means the host machine's stdarg.h, while means the target's. It may be wrong for boot code to ever use the former. Only things like assemblers of boot code should use it. btxld is an example, but it isn't under /sys/boot. It is under usr.sbin and thus necessarily uses the host's includes unless it does something nasty to get the target's. Maybe it needs both. I think it doesn't actually work as a cross-tool, except possibly for x86_32 under x86_64. It is certainly a bug for the to be used as much as it is. There are 72 lines matching include.*stdarg.h in files in /sys/boot, and only 26 lines matching the usually-correct include.*machine/stdarg.h. svn files complicate recursive searches so the above counts are more than double the correct counts. > Another case is sys/boot/i386/kgzldr which includes and > that in turn includes headers from machine, so it needs the machine > symlink. I think it is a a bug to ever be missing the machine symlink. > Could somebody review the attached patch to make sure it does the right > thing? > diff --git a/sys/boot/ficl/Makefile b/sys/boot/ficl/Makefile > index cdc8f7e..bb9c04c 100644 > --- a/sys/boot/ficl/Makefile > +++ b/sys/boot/ficl/Makefile > @@ -57,12 +57,15 @@ softcore.c: ${SOFTWORDS} softcore.awk > | awk -f softcore.awk -v datestamp="`LC_ALL=C date`") > ${.TARGET} > > .if ${MACHINE_ARCH} == "amd64" > -${SRCS:M*.c:R:S/$/.o/g}: machine > +${SRCS:M*.c:R:S/$/.o/g}: machine stdarg.h > > -beforedepend ${OBJS}: machine > +beforedepend ${OBJS}: machine stdarg.h > > machine: > ln -sf ${.CURDIR}/../../i386/include machine > > -CLEANFILES+= machine > +stdarg.h: > + ln -sf machine/stdarg.h stdarg.h > + > +CLEANFILES+= machine stdarg.h > .endif > diff --git a/sys/boot/i386/boot2/Makefile b/sys/boot/i386/boot2/Makefile > index ab5a69a..4196115 100644 > --- a/sys/boot/i386/boot2/Makefile > +++ b/sys/boot/i386/boot2/Makefile > @@ -95,10 +95,12 @@ boot2.h: boot1.out > REL1=`printf "%d" ${REL1}` > ${.TARGET} > > .if ${MACHINE_ARCH} == "amd64" > -beforedepend boot2.s: machine > -CLEANFILES+= machine > +beforedepend boot2.s: machine stdarg.h > +CLEANFILES+= machine stdarg.h > machine: > ln -sf ${.CURDIR}/../../../i386/include machine > +stdarg.h: > + ln -sf machine/stdarg.h stdarg.h > .endif > > .include > ... Old i386 boot Makefiles are of much higher quality than the current ones and don't repeat the rules for the machine symlink like the current ones. There are currently 11 Makefiles under /sys/boot that creates the symlink, and you just found another one that should have the rules. Here is the old top-level i386 boot Makefile[.inc] where the rules are centralized: % # $FreeBSD: src/sys/i386/boot/Makefile.inc,v 1.6 1999/08/28 00:43:08 peter Exp $ % % BINDIR?= /usr/mdec % CFLAGS+= -aout % .if exists(${.CURDIR}/../../../../include) % CFLAGS+= -nostdinc -I${.CURDIR}/../../../../include It also prevents use of , as in kernel and module makefiles. These also use "-I." and used to use -I- to enforce non-ambiguous include paths. Now they have tons of -Ifoo's to break this and make make output unreadable. % .endif % CFLAGS+= -I${.CURDIR}/../../.. -I${.OBJDIR} ...except when built outside of the sys tree. This case is a hack to make that sort of work. % CLEANFILES+= machine % % .if defined(SRCS) % ${SRCS:M*.[sS]:R:S/$/.o/g} ${SRCS:M*.c:R:S/$/.o/g}: machine % ${SRCS:M*.cc:R:S/$/.o/g} ${SRCS:M*.C:R:S/$/.o/g}: machine % ${SRCS:M*.cxx:R:S/$/.o/g} ${SRCS:N*.h:R:S/$/.o/g}: machine % .endif % .if defined(OBJS) % ${OBJS}: machine % .endif Everything except man pages might depend on machine. % % beforedepend: machine % machine: % ln -s ${.CURDIR}/../../include ${.OBJDIR}/machine There is not much that is so general that it can be centralized here. But modules makefiles use kmod.mk which does quite a bit more than this. It also handles the @ symlink and puts -I@ in CFLAGS so that includes work right, and has better support than the above for building outside of the sys tree. Bruce From owner-freebsd-amd64@FreeBSD.ORG Fri Jul 30 16:34:46 2010 Return-Path: Delivered-To: amd64@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A8C08106568C; Fri, 30 Jul 2010 16:34:46 +0000 (UTC) (envelope-from tinderbox@freebsd.org) Received: from freebsd-current.sentex.ca (freebsd-current.sentex.ca [64.7.128.98]) by mx1.freebsd.org (Postfix) with ESMTP id 4C7A88FC13; Fri, 30 Jul 2010 16:34:46 +0000 (UTC) Received: from freebsd-current.sentex.ca (localhost [127.0.0.1]) by freebsd-current.sentex.ca (8.14.4/8.14.3) with ESMTP id o6UGYjIu018941; Fri, 30 Jul 2010 12:34:45 -0400 (EDT) (envelope-from tinderbox@freebsd.org) Received: (from tinderbox@localhost) by freebsd-current.sentex.ca (8.14.4/8.14.3/Submit) id o6UGYj6c018940; Fri, 30 Jul 2010 16:34:45 GMT (envelope-from tinderbox@freebsd.org) Date: Fri, 30 Jul 2010 16:34:45 GMT Message-Id: <201007301634.o6UGYj6c018940@freebsd-current.sentex.ca> X-Authentication-Warning: freebsd-current.sentex.ca: tinderbox set sender to FreeBSD Tinderbox using -f Sender: FreeBSD Tinderbox From: FreeBSD Tinderbox To: FreeBSD Tinderbox , , Precedence: bulk Cc: Subject: [head tinderbox] failure on amd64/amd64 X-BeenThere: freebsd-amd64@freebsd.org X-Mailman-Version: 2.1.5 List-Id: Porting FreeBSD to the AMD64 platform List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Jul 2010 16:34:46 -0000 TB --- 2010-07-30 16:15:00 - tinderbox 2.6 running on freebsd-current.sentex.ca TB --- 2010-07-30 16:15:00 - starting HEAD tinderbox run for amd64/amd64 TB --- 2010-07-30 16:15:00 - cleaning the object tree TB --- 2010-07-30 16:15:46 - cvsupping the source tree TB --- 2010-07-30 16:15:46 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca /tinderbox/HEAD/amd64/amd64/supfile TB --- 2010-07-30 16:32:21 - building world TB --- 2010-07-30 16:32:21 - MAKEOBJDIRPREFIX=/obj TB --- 2010-07-30 16:32:21 - PATH=/usr/bin:/usr/sbin:/bin:/sbin TB --- 2010-07-30 16:32:21 - TARGET=amd64 TB --- 2010-07-30 16:32:21 - TARGET_ARCH=amd64 TB --- 2010-07-30 16:32:21 - TZ=UTC TB --- 2010-07-30 16:32:21 - __MAKE_CONF=/dev/null TB --- 2010-07-30 16:32:21 - cd /src TB --- 2010-07-30 16:32:21 - /usr/bin/make -B buildworld >>> World build started on Fri Jul 30 16:32:21 UTC 2010 >>> Rebuilding the temporary build tree >>> stage 1.1: legacy release compatibility shims >>> stage 1.2: bootstrap tools [...] ===> games/fortune/strfile (obj,depend,all,install) /obj/src/tmp/src/games/fortune/strfile created for /src/games/fortune/strfile rm -f .depend mkdep -f .depend -a -I/obj/src/tmp/legacy/usr/include /src/games/fortune/strfile/strfile.c echo strfile: /usr/lib/libc.a /obj/src/tmp/legacy/usr/lib/libegacy.a >> .depend cc -O2 -pipe -std=gnu99 -I/obj/src/tmp/legacy/usr/include -c /src/games/fortune/strfile/strfile.c cc -O2 -pipe -std=gnu99 -I/obj/src/tmp/legacy/usr/include -static -L/obj/src/tmp/legacy/usr/lib -o strfile strfile.o -legacy Syntax error: end of file unexpected (expecting ")") *** Error code 2 Stop in /src/games/fortune/strfile. *** Error code 1 Stop in /src. *** Error code 1 Stop in /src. *** Error code 1 Stop in /src. TB --- 2010-07-30 16:34:45 - WARNING: /usr/bin/make returned exit code 1 TB --- 2010-07-30 16:34:45 - ERROR: failed to build world TB --- 2010-07-30 16:34:45 - 135.21 user 30.68 system 1185.31 real http://tinderbox.freebsd.org/tinderbox-head-HEAD-amd64-amd64.full